18.3. Options utilis�es avec les commandes iptables
Les r�gles permettant le filtrage de paquets sont mises en oeuvre en ex�cutant la commande iptables. Les aspects suivants du paquet sont le plus souvent utilis�s comme crit�re�:
Type de paquet — Sp�cifie le type de paquets que la commande filtre.
Origine/Destination du paquet — Sp�cifie les paquets que la commande filtre en fonction de l'origine ou de la destination du paquet.
Cible — Sp�cifie l'action � appliquer sur les paquets r�pondant aux crit�res �voqu�s ci-dessus.
Pour obtenir de plus amples informations sur des options sp�cifiques qui traitent ces aspects des paquets, reportez-vous � la Section 18.3.4 et � la Section 18.3.5.
Les options utilis�es avec des r�gles iptables donn�es doivent �tre regroup�es logiquement en fonction du but et des conditions de la r�gle globale, afin que la r�gle soit valide. Le reste de cette section examine des options couramment utilis�es avec la commande iptables.
18.3.1. Structure des options d'iptables
Beaucoup de commandes iptables ont la structure suivante�:
L'option <table-name> permet � l'utilisateur de s�lectionner une autre table que la table filter par d�faut devant �tre utilis�e avec cette commande. L'option <command> stipule une action sp�cifique � accomplir, telle que l'ajout ou l'�limination d'une r�gle sp�cifi�e par <chain-name>. Apr�s l'option <chain-name> figurent des paires de param�tres et d'options qui d�finissent comment traiter un paquet r�pondant aux crit�res de la r�gle.
En examinant la structure d'une commande iptables, il est important de se rappeler que contrairement � la plupart autres commandes, la longueur et la complexit� d'une commande iptables varie en fonction de son but. Une commande destin�es � �liminer une r�gle d'une cha�ne peut �tre tr�s courte, alors qu'une commande visant � filtrer les paquets d'un sous-r�seau � l'aide d'un certain nombre de param�tres et d'options peut �tre plut�t longue. Lors de la cr�ation de commandes iptables, il est important de savoir que nombre de param�tres et d'options peuvent n�cessiter des param�tres et d'options suppl�mentaires pour mieux rafiner la requ�te de l'option pr�c�dente. Pour �laborer une r�gle valide, cette cha�ne d'actions doit continuer jusqu'� ce que chaque param�tre et option n�cessitant un autre ensemble d'options ait �t� trait�.
Saisissez la commande iptables -h pour obtenir une liste exhaustive de structures de la commande iptables.
18.3.2. Options de commande
Les options de commande donnent � iptables l'instruction d'ex�cuter une action sp�cifique. Une seule option de commande est autoris�e pour chaque commande iptables. � l'exception de la commande d'aide, toutes les autres commandes doivent �tre �crites en majuscules.
Les options de commande disponibles avec iptables sont les suivantes�:
-A — Ajoute la r�gle iptables � la fin d'une cha�ne donn�e. On utilise cette option pour ajouter simplement une r�gle lorsque l'ordre des r�gles � l'int�rieur de la cha�ne n'est pas primordial.
-C — Contr�le une r�gle donn�e avant de l'ajouter � la cha�ne sp�cifi�e par l'utilisateur. Cette commande peut vous aider � �crire des r�gles iptables compliqu�es en vous indiquant les param�tres et options suppl�mentaires � �tablir.
-D — �limine une r�gle � l'int�rieur d'une cha�ne donn�e de fa�on num�rique (comme par exemple en utilisant 5 pour la cinqui�me r�gle d'une cha�ne). Il est �galement possible de taper la r�gle compl�te et iptables efface la r�gle dans la cha�ne correspondante.
-E — Change le nom d'une cha�ne sp�cifi�e par un utilisateur. Cette option n'affecte en aucun cas la structure de la table.
-F — Supprime la cha�ne s�lectionn�e, entra�nant par l�-m�me l'�limination de toutes les r�gles de la cha�ne. Si aucune cha�ne n'est sp�cifi�e, cette commande supprime chaque r�gle contenue dans chaque cha�ne.
-h — Fournit une liste des structures de scommande, ainsi qu'un bref r�sum� des param�tres et options des commandes.
-I — Ins�re une r�gle � l'int�rieur d'une cha�ne, � un point pr�cis, sp�cifi� par une valeur enti�re d�finie par l'utilisateur. Si aucun num�ro n'est sp�cifi�, iptables place la commande au tout d�but de la cha�ne.
Attention
Lors de l'utilisation de l'option -A ou de l'option -I, pr�tez une attention toute particuli�re � l'ordre dans lequel les r�gles apparaissent dans une cha�ne. En effet, ce dernier est tr�s important car il permet de d�terminer les r�gles pr�cises devant s'appliquer � des paquets sp�cifiques.
-L — �tablit la liste compl�te des r�gles dans la cha�ne indiqu�e apr�s la commande. Pour dresser une liste de toutes les r�gles pr�sentes dans toutes les cha�nes contenues dans la table defilter par d�faut, ne pr�cisez ni cha�ne, ni table. Sinon, la syntaxe � utiliser pour �tablir la liste des r�gles contenues dans une cha�ne donn�e d'une table pr�cise, doit �tre la suivante�:
iptables -L <chain-name> -t <table-name>
Pour toute information sur les options suppl�mentaires utilis�es avec l'option de commande -L qui fournit le nombre de r�gles et permet une description plus d�taill�e de ces derni�res, consultez la Section 18.3.6.
-N — Cr�e une nouvelle cha�ne avec un nom sp�cifi� par l'utilisateur.
-P — D�finit la politique par d�faut d'une cha�ne donn�e, de sorte que des paquets traversant une cha�ne enti�re sans satisfaire les crit�res d'une r�gle soient envoy�s vers la cible sp�cifi�e, telle que ACCEPT ou DROP.
-R — Remplace une r�gle dans une cha�ne donn�e. Il est imp�ratif d'utiliser un num�ro de r�gle apr�s le nom de cha�ne. La premi�re r�gle dans une cha�ne correspond � la r�gle num�ro un.
-X — Supprime une cha�ne sp�cifi�e par un utilisateur. L'�limination d'une cha�ne int�gr�e appartenant � une table quelconque n'est pas permise.
-Z — Remet � z�ro les compteurs d'octets et de paquets dans toutes les cha�nes pour une table sp�cifique.
18.3.3. Options de param�tre d'iptables
Une fois que certaines commandes iptables ont �t� sp�cifi�es (y compris celles utilis�es pour l'ajout, l'�limination, l'insertion ou le remplacement de r�gles � l'int�rieur d'une cha�ne donn�e), il est n�cessaire d'ajouter d'autres param�tres pour la construction d'une r�gle de filtrage de paquets.
-c — Effectue une remise � z�ro des compteurs pour une r�gle donn�e. Ce param�tre accepte les options PKTS (paquets) et BYTES (octets) pour sp�cifier le compteur � remettre � z�ro.
-d — D�finit le nom d'h�te du destinataire, l'adresse IP ou le r�seau du paquetage qui correspond � la r�gle. Lorsqu'un r�seau r�pond aux crit�res de la r�gle, les formats suivants sont pris en charge pour l'adresse IP/masque r�seau�:
N.N.N.N/M.M.M.M — o� N.N.N.N correspond � la plage d'adresses IP et M.M.M.M au masque r�seau.
N.N.N.N/M — o� N.N.N.N correspond � la plage d'adresses IP et M au masque r�seau.
-f — Applique cette r�gle uniquement aux paquets fragment�s.
En utilisant le point d'exclamation comme option (!) apr�s ce param�tre, seuls les paquets non-fragment�s seront compar�s aux crit�res des r�gles.
-i — R�gle l'interface r�seau entrante, telle que eth0 ou ppp0. Avec iptables, ce param�tre optionnel ne peut �tre utilis� qu'avec des cha�nes INPUT et FORWARD lorsqu'elles sont utilis�es avec la table filter et la cha�ne PREROUTING lorsqu'elle est utilis�e avec les tables nat et mangle.
Ce param�tre prend �galement en charge les options sp�ciales ci-dessous�:
Point d'exclamation (!) — Inverse la directive, c'est-�-dire que toutes les interfaces sp�cifi�es sont exclues de cette r�gle.
Le symbole plus (+) — Repr�sente un caract�re g�n�rique utilis� pour comparer toutes les interfaces qui correspondent � la cha�ne sp�cifi�e. Par exemple, le param�tre -i eth+ appliquerait cette r�gle � toutes les interfaces Ethernet, mais ne prendrait pas en compte les autres interfaces, comme ppp0.
Si le param�tre -i est utilis� sans qu'aucune interface ne soit sp�cifi�e, toutes les interfaces sont affect�es par la r�gle.
-j — Passe directement � la cible sp�cifi�e lorsqu'un paquetage correspond � une r�gle particuli�re. Les cibles valides pouvant �tre utilis�es apr�s l'option -j incluent des options standard (� savoir ACCEPT, DROP, QUEUE et RETURN), ainsi que des options �tendues qui sont disponibles gr�ce aux modules charg�s par d�faut avec le paquetage RPM iptables de Red Hat Enterprise Linux, comme par exemple LOG, MARK et REJECT. Consultez la page de manuel d'iptables pour obtenir plus d'informations sur les cibles mentionn�es ici et sur d'autres cibles.
Il est �galement possible de diriger un paquet correspondant � une r�gle vers une cha�ne d�finie par l'utilisateur, situ�e en dehors de la cha�ne actuelle, afin que d'autres r�gles puissent �tre appliqu�es � ce paquet.
Si aucune cible n'est sp�cifi�e, le paquet continue sans qu'aucune autre action ne soit entreprise. Ceci �tant, le compteur de cette r�gle avance tout de m�me d'une unit�.
-o — Param�tre l'interface sortante pour une r�gle donn�e et ne peut �tre utilis�e qu'avec des cha�nes OUTPUT et FORWARD dans la table filter et la cha�ne POSTROUTING dans les tables nat et mangle. Les options de ce param�tre sont les m�mes que pour les param�tres relatifs aux interfaces r�seau entrantes (-i).
-p — Param�tre le protocole IP pour la r�gle, qui peut �tre icmp, tcp, udp ou all, afin qu'il corresponde � tous les protocoles possibles. De plus, il est possible d'utiliser tout protocole inclus dans /etc/protocols. Si l'option est omise lors de la cr�ation de la r�gle, l'option all est consid�r�e comme �tant la valeur par d�faut.
-s — D�finit l'origine d'un paquet particulier en utilisant la m�me syntaxe que pour le param�tre de destination (-d).
18.3.4. Options de concordance d'iptables
Diff�rents protocoles r�seau offrent des options de contr�le de concordance sp�cifiques qui peuvent �tre configur�es de mani�re � comparer un paquet donn� en utilisant ce protocole. �videmment, il est n�cessaire d'identifier pr�alablement le protocole en question dans la commande iptables. Par exemple, -p tcp <protocol-name> (o� <protocol-name> correspond au protocole cible) fait en sorte que des options soient disponibles pour le protocole sp�cifi�.
18.3.4.1. Protocole TCP
Les options de concordance disponibles pour le protocole TCP (-p tcp) sont les suivantes�:
--dport — Param�tre le port de destination pour le paquet. Vous pouvez utiliser le nom d'un service r�seau (comme www ou smtp), un num�ro de port ou une plage de num�ros de port pour configurer cette option. Pour parcourir les noms et alias de services r�seau et les num�ros de port utilis�s, affichez le fichier /etc/services. L'option de concordance --destination-port est identique � l'option --dport.
Pour indiquer une plage de num�ros de port, il suffit de s�parer les num�ros par le symbole des deux points (:), comme dans l'exemple suivant�: -p tcp --dport 3000:3200. La plus grande plage valide est 0:65535.
Utilisez un point d'exclamation (!) apr�s l'option --dport pour comparer tous les paquets qui n'utilisent pas ce service r�seau ou port.
--sport — Param�tre le port d'origine du paquet, en utilisant les m�mes options que --dport. L'option de concordance --source-port est identique � l'option --sport.
--syn — S'applique � tous les paquets TCP, appel�s commun�ment paquets SYN, con�us pour initier la communication. Aucun paquet transportant des donn�es de charge utile n'est touch�. En pla�ant un point d'exclamation (!) comme indicateur apr�s l'option --syn, tous les paquets non-SYN seront compar�s.
--tcp-flags — Permet � des paquets TCP avec des bits ou des indicateurs d�finis, d'�tre compar�s � une r�gle. L'option de concordance --tcp-flags accepte deux param�tres. Le premier est le masque, qui d�finit l'indicateur � examiner dans le paquet. Le second se rapporte � l'indicateur qui doit �tre d�fini pour la concordance.
Les indicateurs disponibles sont les suivants�:
ACK
FIN
PSH
RST
SYN
URG
ALL
NONE
Par exemple, une r�gle iptables contenant -p tcp --tcp-flags ACK,FIN,SYN SYN ne comparera que les paquets TCP ayant l'indicateur SYN d�fini et les indicateurs ACK et FIN non-d�finis.
L'utilisation d'un point d'exclamation (!) apr�s --tcp-flags inverse l'effet de l'option de concordance.
--tcp-option — Essaie de comparer des options sp�cifiques � TCP qui peuvent �tre d�finies dans un paquet donn�. Cette option de concordance peut aussi �tre invers�e en utilisant un point d'exclamation (!).
18.3.4.2. Protocole UDP
Les options de concordance suivantes s'appliquent au protocole UDP (-p udp) :
--dport — Sp�cifie le port de destination du paquet UDP, utilisant le nom du service, le num�ro de port ou une plage de num�ros de ports. L'option de concordance --destination-port est identique � l'option --dport.
--sport — Sp�cifie le port d'origine du paquet UDP, utilisant le nom du service, le num�ro de port ou une plage de num�ros de ports. L'option de concordance --source-port est identique � l'option --sport.
18.3.4.3. Protocole ICMP
Les options de concordance suivantes sont disponibles pour le protocole Internet Control Message Protocol (ICMP) (-p icmp)�:
--icmp-type — D�termine le nom ou le num�ro du type d'ICMP � comparer avec cette r�gle. Une liste de noms ICMP valides est disponible en tapant la commande iptables -p icmp -h.
18.3.4.4. Modules avec options de concordance suppl�mentaires
Des options de concordance suppl�mentaires sont �galement disponibles par l'entremise des modules charg�s par la commande iptables. Pour utiliser un module d'option de concordance, chargez le module en l'appelant par son nom � l'aide de l'option -m, comme par exemple�: -m <module-name> (o� <module-name> correspond au nom du module).
Un nombre important de modules est disponible par d�faut. Il est m�me possible de cr�er des modules qui fournissent des fonctionnalit�s suppl�mentaires.
Ci-dessous figure une liste partielle des modules les plus couramment utilis�s�:
Module limit — Permet de limiter le nombre de paquets qui sont compar�s � une r�gle donn�e. Cette option se r�v�le tout particuli�rement utile lorsqu'elle est utilis�e avec la cible LOG car elle permet d'�viter que les paquets concordants n'inondent le journal du syst�me avec des messages r�p�titifs ou qu'ils ne consomment trop de ressources syst�me. Reportez-vous � la Section 18.3.5 pour obtenir de plus amples informations sur la cible LOG.
Le module limit active les options suivantes�:
--limit — D�termine le nombre de concordances pour un espace-temps donn�, gr�ce � un modificateur nombre (number) et temps (time) param�tr� selon le fomrat suivant�: <number>/<time>. Par exemple, en �crivant --limit 5/hour, une r�gle effectue son contr�le de concordance seulement cinq fois en une heure.
Si aucun modificateur nombre ou temps n'est pr�cis�, une valeur par d�faut de 3/hour (3 fois en une heure) sera retenue.
--limit-burst — D�termine le nombre de paquets pouvant �tre compar�s � une r�gle, � un moment donn�. Cette option qui devrait �tre utilis�e conjointement avec l'option --limit, accepte un num�ro pour d�finir le seuil maximal.
Si aucun num�ro n'est indiqu�, cinq paquets seulement sont au d�part compar�s � la r�gle.
module state — Active la concordance d'�tat.
Le module state active les options suivantes�:
--state — �tablit la correspondance d'un paquet avec les �tats de connexion suivants�:
ESTABLISHED — Le paquet concordant est associ� � d'autres paquets dans une connexion �tablie.
INVALID — Ce paquet concordant ne peut �tre pas li� � une connexion connue.
NEW — Le paquet concordant cr�e une nouvelle connexion ou fait partie d'une connexion � double sens qui n'a pas �t� vue pr�c�demment.
RELATED — Le paquet concordant �tablit une nouvelle connexion qui est d'une mani�re ou d'une autre apparent�e � une connexion existante.
Ces �tats de connexion peuvent �tre employ�s de concert avec d'autres � condition qu'ils soient s�par�s par des virgules, comme par exemple�: -m state --state INVALID,NEW.
mac module — Active la concordance d'une adresse MAC mat�rielle.
Le module mac active l'option suivante�:
--mac-source — �tablit la correspondance avec une adresse MAC de la carte d'interface r�seau qui a envoy� le paquet. Pour exclure une adresse MAC d'une r�gle, placez un point d'exclamation (!) apr�s l'option de concordance --mac-source.
Pour obtenir des informations sur les autres options de concordance disponibles � l'aide des modules, reportez-vous � la page de manuel de iptables.
18.3.5. Options de cible
Une fois qu'un paquet concorde avec une r�gle sp�cifique, cette derni�re peut diriger le paquet vers un certain nombre de cibles qui d�cideront de son traitement et, si possible, effectueront des actions suppl�mentaires. Chaque cha�ne poss�de une cible par d�faut qui est utilis�e si aucune des r�gles de cette cha�ne ne correspond � un paquet ou si aucune des r�gles qui correspondent au paquet ne sp�cifie de cible particuli�re.
Ci-dessous figurent les cibles standard�:
<user-defined-chain> — Remplacez <user-defined-chain> par le nom d'une cha�ne d�finie par l'utilisateur au sein de cette table. Cette cible transmet le paquet � la cha�ne cible.
ACCEPT — Autorise le paquet � continuer sa progression vers sa destination ou une autre cha�ne.
DROP — Abandonne le paquet sans r�pondre au demandeur. Le syst�me ayant exp�di� ce paquet n'est pas inform� de l'�chec de l'op�ration.
QUEUE — Met le paquet en attente pour un traitement par une application de l'espace-utilisateur (user-space).
RETURN — Arr�te le contr�le du paquet en fonction des r�gles en vigueur dans la cha�ne actuelle. Si le paquet avec la cible RETURN correspond � une certaine r�gle appel�e depuis une autre cha�ne, le paquet est renvoy� � la premi�re cha�ne pour que le contr�le de la r�gle reprenne au point o� il s'�tait arr�t�. Dans le cas o� la r�gle RETURN est utilis�e dans une cha�ne int�gr�e et que le paquet ne peut pas aller vers sa cha�ne pr�c�dente, la cible par d�faut pour la cha�ne actuelle d�termine l'action � entreprendre.
Outre ces cibles standard, d'autres cibles peuvent �tre utilis�es avec des extensions appel�es modules cibles. Pour obtenir de plus amples informations sur les modules d'options pour la concordance, reportez-vous � la Section 18.3.4.4.
Il existe de nombreux modules cibles �tendus�; la plupart d'entre eux s'appliquent � des tables ou � des situations sp�cifiques. Ci-dessous figurent certains des modules cibles les plus r�pandus, inclus par d�faut dans Red Hat Enterprise Linux�:
LOG — Journalise tous les paquets correspondant � cette r�gle. �tant donn� que les paquets sont journalis�s par le noyau, le fichier /etc/syslog.conf d�termine l'emplacement o� ces entr�es de journal sont enregistr�es. Par d�faut, elles sont plac�es dans le fichier /var/log/messages.
D'autres options peuvent �tre utilis�es apr�s la cible LOG pour sp�cifier le processus de journalisation, telles que�:
--log-level — D�termine le niveau de priorit� d'un �v�nement de journalisation. Une liste des niveaux de priorit� est disponible dans la page de manuel de syslog.conf.
--log-ip-options — Journalise toute option indiqu�e dans l'en-t�te d'un paquet IP.
--log-prefix — Ajoute une cha�ne d'un maximum de 29 caract�res avant la ligne de journal, lorsqu'elle est �crite. Cette option est utile lors de l'�criture de filtres syslog utilis�s conjointement avec la journalisation de paquets.
--log-tcp-options — Journalise toute option pr�cis�e dans l'en-t�te d'un paquet TCP.
--log-tcp-sequence — �crit le num�ro de s�quence TCP relatif au paquet dans le journal.
REJECT — Renvoie un paquet d'erreur au syst�me distant et abandonne le paquet.
La cible REJECT accepte une option --reject-with <type> (o� <type> correspond au type de rejet) qui permet d'inclure des informations plus d�taill�es avec le paquet d'erreur. Le message d'erreur port-unreachable (impossible d'atteindre le port) repr�sente l'erreur <type> par d�faut envoy�e si aucune autre option n'est utilis�e. Pour obtenir une liste compl�te des options disponibles pour <type>, consultez la page de manuel d'iptables.
D'autres extensions de cibles, dont bon nombre sont tr�s utiles pour le masquage d'IP � l'aide de la table nat ou avec la modification de paquets � l'aide de la table mangle, figurent dans la page de manuel d'iptables.
18.3.6. Options de listage
La commande de listage par d�faut, iptables -L, fournit un aper�u tr�s �l�mentaire des cha�nes actuelles contenues dans la table de filtres par d�faut. L'utilisation d'options suppl�mentaires telles que celles �num�r�es ci-dessous, permettent d'obtenir davantage d'informations�:
-v — Affiche une sortie d�taill�e, incluuant le nombre de paquets et d'octets lus par chaque cha�ne, le nombre de paquets et d'octets contr�l�s par chaque r�gle et l'identit� des interfaces li�es � une r�gle particuli�re.
-x — Pr�sente les nombres selon leur valeur exacte. Sur un syst�me tr�s charg�, le nombre de paquets et d'octets vus par une cha�ne donn�e peut �tre abr�g� en utilisant K (milliers), M (millions) et G (milliards) � la fin du nombre. Cette option force l'affichage du nombre complet.
-n — Affiche les adresses IP et les num�ros de port dand un format num�rique, plut�t que d'utiliser le format par d�faut constitu� du nom d'h�te et du service r�seau.
--line-numbers — �num�re les r�gles dans chaque cha�ne � c�t� de leur ordre num�rique dans la cha�ne. Cette option est utile lors de la tentative de suppression d'une r�gle donn�e dans une cha�ne ou lors dela localisation de l'emplacement d'une r�gle � ins�rer dans une cha�ne.