IpTables - Mémento : protocoles et ports à ouvrir

Construction de base de la Règle IpTable

La règle IpTable de base pour ouvrir une connexion vers votre machine est :
iptables -A INPUT -i eth0 -p nom_du_protocole --dport nom_du_port -j ACCEPT

 

nom_du_protocole est à remplacer par TCP, UDP, all ;
et nom_du_port est le nom du service, tels FTP, DNS ... ou le numéro qui leur correspond tels 21, 53.

 

Remarque : S'il faut spécifier les deux protocoles TCP et UDP ensemble, on peut le faire en implémentant deux règles, une pour le protocole TCP, l'autre pour l'UDP.

Pour information, chaque service a son propre nom et numéro de services ;
ils sont visibles sous GNU/Linux à /etc/services (et sous MSWindows : C:\Windows\services ) dont vous trouverez un exemplaire en fin de cette page.

Règle Iptables plus précises

La règle peut - doit - être plus précise, plus critique ;
iptables -A INPUT -i eth0 -s votre_reseau_local/masque_de_reseau -d votre_ip_locale -p nom_du_protocole --dport nom_du_port -m state --state NEW -j ACCEPT

 

Ainsi, tout ce qui ne correspond pas à cette forme de règle, autrement dit Qui rentre sur votre carte ethernet, dont la source est seulement votre réseau local/son masque de réseau et seulement à destination de votre adresse IP, dont l'état est une nouvelle connexion par tel protocole et sur tel port, sera rejeté accepté.

Avouez que cette forme précise de règle purge du traffic est un tant soit peu plus sécuritaire... À utiliser de préférence !!!

 

L'inverse étant (soit la sortie bien sûr !) :
iptables -A OUTPUT -o eth0 -s votre_ip_locale -d votre_reseau_local/masque_de_reseau -p nom_du_protocole --sport nom_du_port -m state --state NEW -j ACCEPT

Règles Iptables plus critiques

Ne tergiversons pas, appliquons un filtre plus critique, en raisonnant plus finement :

En entrée : iptables -A INPUT -i eth0 -s votre_reseau_local/masque_de_reseau -d votre_ip_locale -p nom_du_protocole --dport nom_du_port -m state --state ! INVALID -j ACCEPT

En sortie : iptables -A OUTPUT -o eth0 -s votre_ip_locale -d votre_reseau_local/masque_de_reseau -p nom_du_protocole --sport nom_du_port -m state --state RELATED,ESTABLISHED -j ACCEPT

 

Autrement dit, on précise que l'on accepte, en entrée sur notre interface réseau, tout ce qui vient de notre réseau local à destination de l'adresse ip, correspondant à notre interface réseau utilisant tel protocole, vers tel numero de port - ou service - dont l'état du paquet n'est pas invalide, c'est-à-dire un paquet ayant l'état 'nouveau', 'établi', 'relatif' ou 'non traqué'.
et que l'on accepte de laisser sortir de notre 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, bien sûr -.

Tous les paquets qui ne correspondent pas à ces critères d'entrée ou sortie n'entrent pas ou ne sortent pas !

 

Comprenez bien qu'il existe des arguments qui permettent de cibler encore plus les définitions ... - ne maîtrisant pas du tout plus le sujet, je vous redirige vers la documentation appropriée -

 

Exemples de règles

Service Cups

Pour émettre un service Cupsys (je rappelle que c'est ce qui nous sert souvent à imprimer sous GNU/Linux), il faut ouvrir le protocole TCP sur le port 631.

Remarque : il est très possible que pour imprimer par le biais de SaMBa sur un imprimante partagée Windows, il faille ajouter le protocole UDP.

Règle simple
iptables -A INPUT -p TCP --dport 631 -m state --state NEW -j ACCEPT
Règle critique
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 631 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 631 -m state --state ! INVALID -j ACCEPT

 

Service DNS

Contacter un DNS, surtout si le réseau local en comporte un, est important, même pour les services DNS sur Internet, entres autres avec votre FAI ; il faut donc ouvrir les protocoles TCP et UDP.

Règles simples
iptables -A INPUT -m state --state NEW -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 53 -j ACCEPT
Règles critiques
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p UDP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 53 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p UDP --sport 53 --dport 1024: -m state --state ESTABLISHED -j ACCEPT

 

Service SaMBa

Utiliser le service SMB est un peu plus délicat ; en effet, celui-ci se base sur les services netbios de MSWindows pour discuter en environnement réseau multi-plateformes, et sur le service smb/ip pour l'impression (dont Cups a besoin !).

Comme nous le montre cette page sur les winports, il faut donc ouvrir les ports 135,137 en TCP et UDP, 138 en UDP, 139 en TCP, et le 445 en TCP et UDP, aussi !

Règles simples

# EPMAP => définit toutes les RPC !

iptables -A INPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT,
iptables -A INPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT,

# NetBios-NS

iptables -A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT,
iptables -A INPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT,

# NetBios-DGM => exploration du réseau (basé sur SMB browser service)

iptables -A INPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT,

# NetBios-SSN => partage fichiers, imprimantes par Microsoft

iptables -A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT, et

# SMB/IP => partage fichiers, imprimantes par SaMBa

iptables -A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT,
iptables -A INPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT.
Règles critiques

# EPMAP => définit toutes les RPC !

iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 135 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p UDP --dport 135 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 135 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p UDP --sport 135 -m state --state NEW -j ACCEPT

# NetBios-NS

iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 137 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p UDP --dport 137 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 137 -m state --state ! INVALID           -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p UDP --sport 137 -m state --state NEW -j ACCEPT

# NetBios-DGM => exploration du réseau (basé sur SMB browser service)

iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p UDP --dport 138 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p UDP --sport 138 -m state --state NEW -j ACCEPT

# NetBios-SSN => partage fichiers, imprimantes par Microsoft

iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 139 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 139 -m state --state ! INVALID           -j ACCEPT

# SMB/IP => partage fichiers, imprimantes par SaMBa

iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 445 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p UDP --dport 445 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 445 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p UDP --sport 445 -m state --state NEW -j ACCEPT

 

Service SSH

Le service d'encapsulation de données pour contacter un serveur de manière protégée se fait sur le port 22 et protocole TCP.

Règle simple
iptables -A INPUT -p TCP --dport 22 -m state --state NEW -j ACCEPT
Règle critique
iptables -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 -p TCP --dport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.0/24 -p TCP --sport 22 -m state --state ! INVALID           -j ACCEPT

 

Fichier /etc/services

Fichier des services réseaux, de leurs noms et numéros de ports.

 

Voilà ! Bonne construction...

 

 

Pagination

<<| Page : IpTables : ports : |>>

 

 

^ Haut de page ^

Plan du site :: Date de mise-à-jour de cette page : 18-06-2007 :: Atom :: RSS :: Sitemap :: e-mail ::

Copyright 2004-2008 © EBNH Conception - CNIL : 841395 -

XHTML 1.0, CSS 2.1, WAI

HowTo 'Mémoire Grise Libérée' :
Hormis la documentation propre à nVidia ...
tout ce site est placé sous Licence Libre GNU/FDL...

Partenaires : aGeNUx : Evinux : Knoppix-fr : Linucie : Diaporama "Ad~Myre" : Odt2Xhtml : Xhtml2Pdf :