Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

NetFilter : connexion refusee gestion de la connexion

6 réponses
Avatar
Jeannot Lelapin
Bonjour,

J'ai modifié la configuration du serveur SSH pour que le serveurs écoute
sur le port 443. Dans le fichier /etc/ssh/sshd_config :
...
Port 443
...

Quand j'essaye depuis ma machine la connection suivante :
ssh -2 -p 443 theusername@themachinename
Ca marche nickel mais ce ne marche depuis internet.

En logguant netfilter, je vois mes packets de connexions droppés dans
/var/log/messages :
....
Sep 8 13:24:48 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC=00:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC=145.248.192.4
DST=81.57.11.43 LEN=64 TOS=0x00 PREC=0x00 TTL=53 ID=42043 DF PROTO=TCP
SPT=29333 DPT=443 WINDOW=32850 RES=0x00 SYN URGP=0
Sep 8 13:24:51 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC=00:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC=145.248.192.4
DST=81.57.11.43 LEN=64 TOS=0x00 PREC=0x00 TTL=53 ID=42044 DF PROTO=TCP
SPT=29333 DPT=443 WINDOW=32850 RES=0x00 SYN URGP=0
....

Je lis une bonne documentation sur :
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les suivantes :
/sbin/iptables -A INPUT -p tcp --sport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT

idées, conseils sont vraiment les bienvenus.

Cordialement,

Jeannot Lelapin

==================================================================
L'ensemble des règles : /etc/iptables.rules
==================================================================

## ============================================================
#!/bin/bash
## ===========================================================
## Load modules

IPTABLES="/sbin/iptables"
DEPMOD="/sbin/depmod"
MODPROBE="/sbin/modprobe"

# Load all required IPTables modules
# Needed to initially load modules
$DEPMOD -a
# Load appropriate modules.
$MODPROBE ip_tables
# Support for connection tracking
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp

# MODIF BEGIN
$MODPROBE ip_conntrack_irc
# Adds some $IPTABLES targets like LOG, REJECT and MASQUARADE.
$MODPROBE ipt_LOG
$MODPROBE ipt_REJECT
$MODPROBE ipt_MASQUERADE
# Support for owner matching
$MODPROBE ipt_owner
# MODIF END

## ===========================================================
## Reset all configurations

$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z

## ===========================================================
## Default Policy

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

## ===========================================================
## Some definitions:

## ============================================================
## Kernel flags
#
/bin/echo "1" > /proc/sys/net/ipv4/ip_dynaddr
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
/bin/echo "1" > ${interface}
done
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward

## ============================================================
# RULES

## LOOPBACK
# Allow unlimited traffic on the loopback interface.
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

## SYN-FLOODING PROTECTION
$IPTABLES -N syn-flood
$IPTABLES -A INPUT -p tcp --syn -j syn-flood
$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A syn-flood -j DROP

## FRAGMENTS
$IPTABLES -A INPUT -f -j LOG --log-prefix "IPTABLES FRAGMENTS: "
$IPTABLES -A INPUT -f -j DROP

## Make sure NEW tcp connections are SYN packets
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

## DNS
# Allow UDP packets in for DNS client from nameservers.
$IPTABLES -A INPUT -p udp -s 212.27.32.5 --sport 53 -m state --state
ESTABLISHED -j ACCEPT
# Allow UDP packets to DNS servers from client.
$IPTABLES -A OUTPUT -p udp -d 212.27.32.5 --dport 53 -m state --state
NEW,ESTABLISHED -j ACCEPT

## WWW
# Allow www outbound to 80.
$IPTABLES -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j
ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED
-j ACCEPT

## SSH
# Allow ssh outbound.
$IPTABLES -A INPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT

# ICMP
# We accept icmp in if it is "related" to other connections
$IPTABLES -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# We always allow icmp out.
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j
ACCEPT

## LOGGING
# Any udp not already allowed is logged and then dropped.
$IPTABLES -A INPUT -p udp -j LOG --log-prefix "IPTABLES UDP-IN: "
$IPTABLES -A INPUT -p udp -j DROP
$IPTABLES -A OUTPUT -p udp -j LOG --log-prefix "IPTABLES UDP-OUT: "
$IPTABLES -A OUTPUT -p udp -j DROP
# Any icmp not already allowed is logged and then dropped.
$IPTABLES -A INPUT -p icmp -j LOG --log-prefix "IPTABLES ICMP-IN: "
$IPTABLES -A INPUT -p icmp -j DROP
$IPTABLES -A OUTPUT -p icmp -j LOG --log-prefix "IPTABLES ICMP-OUT: "
$IPTABLES -A OUTPUT -p icmp -j DROP
# Any tcp not already allowed is logged and then dropped.
$IPTABLES -A INPUT -p tcp -j LOG --log-prefix "IPTABLES TCP-IN: "
$IPTABLES -A INPUT -p tcp -j DROP
$IPTABLES -A OUTPUT -p tcp -j LOG --log-prefix "IPTABLES TCP-OUT: "
$IPTABLES -A OUTPUT -p tcp -j DROP
# Anything else not already allowed is logged and then dropped.
$IPTABLES -A INPUT -j LOG --log-prefix "IPTABLES PROTOCOL-X-IN: "
$IPTABLES -A INPUT -j DROP
$IPTABLES -A OUTPUT -j LOG --log-prefix "IPTABLES PROTOCOL-X-OUT: "
$IPTABLES -A OUTPUT -j DROP

6 réponses

Avatar
TiChou
Dans l'article news:,
Jeannot Lelapin écrivait :
Bonjour,


Bonsoir,

J'ai modifié la configuration du serveur SSH pour que le serveurs
écoute sur le port 443. Dans le fichier /etc/ssh/sshd_config :
...
Port 443
...

Quand j'essaye depuis ma machine la connection suivante :
ssh -2 -p 443
Ca marche nickel mais ce ne marche depuis internet.

Je lis une bonne documentation sur :
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les
suivantes : /sbin/iptables -A INPUT -p tcp --sport 443 -m state
--state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT


On est bien d'accord que les règles Netfilter sont appliquées sur la machine
où se trouve le serveur SSH ?
Si oui, alors il y a confusion entre les ports source et destination.

En entrée arrivent les paquets de la connexion SSH à destination du port 443
donc :

iptables -A INPUT -i eth1 -p tcp --dport 443 --sport 1024:
-m state --state NEW,ESTABLISHED -j ACCEPT

En sortie les paquets de la connexion SSH sortent depuis le port source 443
donc :

iptables -A OUTPUT -o eth1 -p tcp --sport 443 --dport 1024:
-m state --state ESTABLISHED -j ACCEPT

--
TiChou

Avatar
Gael Mauleon
Jeannot Lelapin wrote in
news::

Bonjour,

J'ai modifié la configuration du serveur SSH pour que le serveurs
écoute sur le port 443. Dans le fichier /etc/ssh/sshd_config :
...
Port 443
...

Quand j'essaye depuis ma machine la connection suivante :
ssh -2 -p 443
Ca marche nickel mais ce ne marche depuis internet.

En logguant netfilter, je vois mes packets de connexions droppés dans
/var/log/messages :
....
Sep 8 13:24:48 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC5.248.192.4
DST.57.11.43 LENd TOS=0x00 PREC=0x00 TTLS IDB043 DF PROTO=TCP
SPT)333 DPTD3 WINDOW2850 RES=0x00 SYN URGP=0
Sep 8 13:24:51 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC5.248.192.4
DST.57.11.43 LENd TOS=0x00 PREC=0x00 TTLS IDB044 DF PROTO=TCP
SPT)333 DPTD3 WINDOW2850 RES=0x00 SYN URGP=0
....

Je lis une bonne documentation sur :
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les
suivantes : /sbin/iptables -A INPUT -p tcp --sport 443 -m state
--state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT


Bon je suppose que la config firewall se fait sur le serveur...

J'ai pas lu toutes tes regles mais si tu regardes bien juste tes regles
pour ton ssh tu devrais avoir un truc qui te sautes aux yeux... Ton
client SSH ne sait pas quel port il va utiliser pour se connecter a ton
serveur, et c'est certainement pas le 443, c'est seulement le serveur
qui utilise ce port dans ton cas :)

En gros voila les flux (sans compter les eventuels RELATED d'icmp ou
autres)


Client (Port > 1024) ------- NEW -------> Serveur (Port 443)
Client (Port > 1024) <--- ESTABLISHED --- Serveur (Port 443)
Client (Port > 1024) --- ESTABLISHED ---> Serveur (Port 443)


Donc du coté serveur au minimum :

/sbin/iptables -A INPUT -p tcp --dport 443 -m state
--state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 443 -m state --state
ESTABLISHED -j ACCEPT


Apres si tu veux tuner tes regles avec plus de precisions du style :

/sbin/iptables -A INPUT -p tcp --syn --sport 1024: --dport 443 -m
state --state NEW -j ACCEPT

/sbin/iptables -A INPUT -p tcp --sport 1024: --dport 443 -m state --
state ESTABLISHED,RELATED -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --sport 443 --dport 1024: -m state --
state ESTABLISHED,RELATED -j ACCEPT


Etc... a toi de voir le niveau de filtrage que tu veux....



idées, conseils sont vraiment les bienvenus.

Cordialement,

Jeannot Lelapin




--
PS : Pour info est une _vrai_ adresse
donc n'hesitez pas :)

Avatar
YBM
Jeannot Lelapin wrote:
[...]
Je lis une bonne documentation sur :
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les suivantes :
/sbin/iptables -A INPUT -p tcp --sport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT


Ça ne devrait pas plutôt être :

iptable -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT

à savoir "dport" en entrée, et "sport" en sortie ?

Avatar
Julien Salgado
Jeannot Lelapin a écrit :
Bonjour,


bonjour,

J'ai modifié la configuration du serveur SSH pour que le serveurs écoute
sur le port 443. Dans le fichier /etc/ssh/sshd_config :
...
Port 443
...


Si c'est pour des raisons de sécurité ce n'est pas très utile, vu que
ssh ne réagit pas exactement comme une connexion SSL normale. Il est
donc possible par un scan de savoir qu'on a pas un serveur https mais un
un serveur ssh.
De plus, il y a les entêtes ssh (que l'on peut supprimer en modifiant le
source et en recompilant).

Quand j'essaye depuis ma machine la connection suivante :
ssh -2 -p 443
Ca marche nickel mais ce ne marche depuis internet.

En logguant netfilter, je vois mes packets de connexions droppés dans
/var/log/messages :
....
Sep 8 13:24:48 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC5.248.192.4
DST.57.11.43 LENd TOS=0x00 PREC=0x00 TTLS IDB043 DF PROTO=TCP
SPT)333 DPTD3 WINDOW2850 RES=0x00 SYN URGP=0
Sep 8 13:24:51 paradise kernel: IPTABLES TCP-IN: IN=eth1 OUT=
MAC:60:4c:14:d8:2e:00:60:4c:14:d8:2f:08:00 SRC5.248.192.4
DST.57.11.43 LENd TOS=0x00 PREC=0x00 TTLS IDB044 DF PROTO=TCP
SPT)333 DPTD3 WINDOW2850 RES=0x00 SYN URGP=0
....


Là on lit que le drop est en INPUT vers le port 443


Je lis une bonne documentation sur :
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les suivantes :
/sbin/iptables -A INPUT -p tcp --sport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT


Donc là c'est inversé :

/sbin/iptables -A INPUT -p tcp --sport 1024: --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 --dport 1024: -m state --state
ESTABLISHED -j ACCEPT

Explications :
- C'est le port 443 qui en écoute sur ta machine, c'est le port
destination sur ta machine pour les paquets entrants.
- La connexion d'un client viendra toujours d'un port supérieur à 1024
(sauf certains scan donc autant les éviter).
- le premier paquet entrant sera NEW tous les autres seront en
ESTABLISHED.




--
Julien

Avatar
Bertrand Masius
Bonjour

Le 08 Sep 2003 20:53:25 GMT, Jeannot Lelapin

Bonjour,
J'ai modifié la configuration du serveur SSH pour que le serveurs écoute
sur le port 443. Dans le fichier /etc/ssh/sshd_config :
...
Port 443
...

Quand j'essaye depuis ma machine la connection suivante :
ssh -2 -p 443
Ca marche nickel mais ce ne marche depuis internet.

En logguant netfilter, je vois mes packets de connexions droppés dans
/var/log/messages :

mais je n'arrive toujours pas à trouver un bon ensemble de règles pour
permettre ma connectionSSH. Les règles concernant SSH sont les suivantes :
/sbin/iptables -A INPUT -p tcp --sport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m state --state
NEW,ESTABLISHED -j ACCEPT

Les règles à mettre sur le serveur exécutant sshd :

iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j
ACCEPT

Les règles à mettre sur le poste client ssh :
iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED
-j ACCEPT
iptables -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j
ACCEPT
--
"Tout ce qui se conçoit bien s'énonce clairement,
Et les mots pour le dire viennent aisément."

(Nicolas Boileau, l'Art poétique)

Avatar
Jeannot Lelapin
Je vous remercie tous pour ces explications claires.
J'avais oublié d'inverser le raisonnement. Ma machine est désormais un
serveur ssh.

Jeannot Lelapin