Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:iptables-pare-feu-pour-un-client [23/08/2018 21:05] Beta-Pictoris |
doc:reseau:iptables-pare-feu-pour-un-client [08/09/2018 16:05] Beta-Pictoris |
||
---|---|---|---|
Ligne 228: | Ligne 228: | ||
</code> | </code> | ||
- | <note> | ||
- | **Signification de ces commandes** :\\ | ||
- | Autorise un paquet passant par la chaîne (OUTPUT|INPUT), par protocole de transport udp sur le port 53 (''--dport'' : port de destination | ''--sport'' : port source ), et pour udp utilisation du module "conntrack", selon l'état de la connexion (NEW, demande de nouvelle connexion, RELATED, nouvelle demande mais en rapport avec une connexion déjà initiée et ESTABLISHED, en relation à une demande pour une connexion déjà initiée). | ||
- | __**options ** :__\\ | + | ===Signification de ces commandes=== |
+ | Les commandes précédentes autorisent un paquet sortant (chaine OUTPUT) et entrant (CHAINE INPUT), via le protocole udp sur le port 53 et selon l'état de la connexion (NEW ou ESTABLISHED). | ||
+ | |||
+ | ===Les options=== | ||
''-t filter'' : pour préciser la table (facultatif avec la table filter).\\ | ''-t filter'' : pour préciser la table (facultatif avec la table filter).\\ | ||
- | ''-A chain'' : ajouter une règle à la fin de la chaîne (OUTPUT, puis INPUT)\\ | + | ''-A chain'' : ajouter une règle à la fin de la chaîne (OUTPUT, puis INPUT)\\ |
- | ''-p'' : pour indiquer le type de trames utilisé dans le paquet. ([!] "all", "tcp", "udp", "icmp", ou un numéro)\\ | + | ''-p'' : pour indiquer le type de trames utilisé dans le paquet ([!] "all", "tcp", "udp", "icmp", ou un numéro).\\ |
- | ''-m //module//'' : Demande d'utiliser un module particulier\\ | + | ''--dport'' : port de destination.\\ |
- | ''conntrack'' : c'est un module de netfilter il est installé sur wheezy pour l'activer : | + | ''--sport'' : port source.\\ |
- | * ''/sbin/modprobe ip_conntrack'';\\ | + | ''-m module'' : Demande d'utiliser un module particulier.\\ |
- | ''--ctstate //liste des états//'' : liste les états de connexion : | + | ''conntrack'' : c'est un module de netfilter.\\ |
+ | ''--ctstate'' : liste des états conntrack. | ||
+ | |||
+ | ===La liste des états de connexion conntrack=== | ||
* INVALID : signifie que le paquet est associé à aucune connexion connue | * INVALID : signifie que le paquet est associé à aucune connexion connue | ||
* NEW : signifie que le paquet a commencé une nouvelle connexion | * NEW : signifie que le paquet a commencé une nouvelle connexion | ||
* ESTABLISHED : ce qui signifie que le paquet est associé à une connexion qui a vu les paquets dans les deux sens. | * ESTABLISHED : ce qui signifie que le paquet est associé à une connexion qui a vu les paquets dans les deux sens. | ||
- | * RELATED : signifie que le paquet commence une nouvelle connexion, mais est associé à une connexion existante, telle qu'un transfère de données FTP, ou une erreur ICMP. | + | * RELATED : signifie que le paquet commence une nouvelle connexion (comme l'état NEW), mais est associé à une connexion existante, commencée, en général, sur un autre port ou avec un autre protocole réseau. L'état RELATED ne s'applique que pour des protocoles réseaux bien précis (amanda, ftp, h323, irc, netbios, pptp, sane, sip, tftp). |
* UNTRACKED : signifie que le paquet n'est pas suivi du tout. | * UNTRACKED : signifie que le paquet n'est pas suivi du tout. | ||
* SNAT : Un état virtuel, le paquet correspond si l'adresse source diffère la réponse de destination. | * SNAT : Un état virtuel, le paquet correspond si l'adresse source diffère la réponse de destination. | ||
Ligne 252: | Ligne 255: | ||
* CONFIRMED : Connexion est confirmée | * CONFIRMED : Connexion est confirmée | ||
+ | <note important>Depuis debian **Stretch**, **conntrack** ne va plus étiqueter les paquets en **RELATED**, sauf pour le protocole **icmp**.\\ | ||
+ | |||
+ | Pour les autres protocoles, il faudra déclencher l'activation du module **conntrack** adéquat, appelé module helper, en pré-routant les nouvelles connexions vers une cible **CT**. Pour cela, il faudra créer une règle particulière dans la table **raw**.\\ | ||
+ | |||
+ | Par exemple, pour le protocole **ftp**, si on veut qu'une nouvelle connexion **tcp** entrante, vers le port 21 du serveur, active le module **nf_conntrack_ftp**:\\ | ||
+ | <code root>iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp</code> | ||
+ | |||
+ | En conséquence, **conntrack** étiquètera en **RELATED** le premier paquet, d'une nouvelle connexion **tcp**, sortant du port 20 du serveur (cas d'un serveur ftp actif).\\ | ||
+ | On pourra, donc, utiliser la règle suivante coté serveur:\\ | ||
+ | <code root>iptables -A OUTPUT -p tcp --sport 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT</code> | ||
+ | |||
+ | Si le module helper, qui gère l'état **RELATED**, n'est pas activé, **conntrack** étiquètera les paquets en **NEW**. | ||
+ | </note> | ||
Vous n'avez rien compris ? C'est normal, voyons ce qu'est //conntrack// ! | Vous n'avez rien compris ? C'est normal, voyons ce qu'est //conntrack// ! | ||
Ligne 298: | Ligne 314: | ||
iptables -t filter -A OUTPUT -p tcp -m multiport\ | iptables -t filter -A OUTPUT -p tcp -m multiport\ | ||
--dports 80,443,8000 -m conntrack --ctstate\ | --dports 80,443,8000 -m conntrack --ctstate\ | ||
- | NEW,RELATED,ESTABLISHED -j ACCEPT | + | NEW,ESTABLISHED -j ACCEPT |
| | ||
iptables -t filter -A INPUT -p tcp -m multiport\ | iptables -t filter -A INPUT -p tcp -m multiport\ | ||
--sports 80,443,8000 -m conntrack --ctstate\ | --sports 80,443,8000 -m conntrack --ctstate\ | ||
- | RELATED,ESTABLISHED -j ACCEPT | + | ESTABLISHED -j ACCEPT |
</code> | </code> | ||
===Pour IMAP et SMTP (utilisation de messagerie icedove) === | ===Pour IMAP et SMTP (utilisation de messagerie icedove) === | ||
- | <code root>iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | <code root>iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state ESTABLISHED -j ACCEPT |
- | iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT </code> | + | iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,ESTABLISHED -j ACCEPT </code> |
Pour la liste des ports selon les serveurs de messagerie utilisés voir : [[https://www.arclab.com/en/amlc/list-of-smtp-and-imap-servers-mailserver-list.html|list of smtp and imap servers mailserver]] | Pour la liste des ports selon les serveurs de messagerie utilisés voir : [[https://www.arclab.com/en/amlc/list-of-smtp-and-imap-servers-mailserver-list.html|list of smtp and imap servers mailserver]] | ||
Ligne 316: | Ligne 332: | ||
<code root>iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp\ | <code root>iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp\ | ||
- | --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp\ | iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp\ | ||
Ligne 326: | Ligne 342: | ||
<code root>iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.0.22 -p tcp\ | <code root>iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.0.22 -p tcp\ | ||
- | --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/24 -p tcp\ | iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/24 -p tcp\ | ||
Ligne 336: | Ligne 352: | ||
Par exemple : | Par exemple : | ||
- | iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
- | iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
Ligne 663: | Ligne 679: | ||
/sbin/iptables -A INPUT -i eth0 -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT | /sbin/iptables -A INPUT -i eth0 -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT | ||
#Get web | #Get web | ||
- | /sbin/iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT |
- | /sbin/iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
#Allow mailing protocols (IMAP and SMTP) | #Allow mailing protocols (IMAP and SMTP) | ||
- | /sbin/iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state ESTABLISHED -j ACCEPT |
- | /sbin/iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,ESTABLISHED -j ACCEPT |
#Allow cups | #Allow cups | ||
- | iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT | iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT | ||
#Allow cups from sub-net | #Allow cups from sub-net | ||
- | /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
/sbin/iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT | /sbin/iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT | ||
#Set up a user chain for ssh outgoing | #Set up a user chain for ssh outgoing | ||
Ligne 868: | Ligne 884: | ||
* En sortie : | * En sortie : | ||
- | iptables -A OUTPUT -o eth0 -s <ip_locale> -d <reseau_local/masque_de_reseau> -p <nom_du_protocole> --sport <nom_du_port> -m state --state RELATED,ESTABLISHED -j ACCEPT | + | iptables -A OUTPUT -o eth0 -s <ip_locale> -d <reseau_local/masque_de_reseau> -p <nom_du_protocole> --sport <nom_du_port> -m state --state ESTABLISHED -j ACCEPT |
> On précise que l'on accepte de laisser sortir de l'interface réseau, tout paquet dont la source est l'adresse ip correspondant à notre interface réseau, à destination de notre réseau local utilisant tel protocole, vers tel numero de port (ou service) dont l'état est 'relatif' ou 'établi' - en rapport avec la règle d'entrée. | > On précise que l'on accepte de laisser sortir de l'interface réseau, tout paquet dont la source est l'adresse ip correspondant à notre interface réseau, à destination de notre réseau local utilisant tel protocole, vers tel numero de port (ou service) dont l'état est 'relatif' ou 'établi' - en rapport avec la règle d'entrée. |