Pour exécuter les fonctions les plus élémentaires d'iptables, vous devez configurer les options suivantes dans le noyau, pendant la phase make config ou une autre commande apparentée:
CONFIG_PACKET - Cette option
autorise les applications et les utilitaires à accéder directement aux
périphériques réseau. Ces utilitaires sont par exemple tcpdump ou snort.
CONFIG_NETFILTER - Cette option est
nécessaire si vous comptez utiliser votre ordinateur en tant que pare-feu
ou passerelle vers Internet. En définitive, c'est indispensable pour faire
fonctionner tout ce qui se trouve dans ce didacticiel. Je présume que vous
le souhaitez, puisque vous lisez ceci.
Bien sûr, vous devez ajouter les pilotes spécifiques à votre interface
pour obtenir un fonctionnement correct, i.e. pour les interfaces de
type adaptateur Ethernet, PPP ou
SLIP. Cette option ajoute seulement quelques-uns
des organes élémentaires présents dans iptables. Pour être honnête, vous
ne pourrez pas être véritablement productif car ceci n'ajoute qu'une
architecture au noyau.
Si vous voulez utiliser des options plus évoluées d'iptables, il vous
faudra configurer les options adéquates dans votre noyau. Voici celles
disponibles pour un simple noyau 2.4.9 accompagnées d'une courte
explication:
CONFIG_IP_NF_CONNTRACK - Ce module
permet de faire du traçage de connexion. Entre autres, le traçage de
connexion est utilisé par le NAT et le
camouflage. Si vous voulez protéger les machines
d'un LAN derrière un pare-feu, vous devriez à
coup sûr sélectionner cette option. Par exemple, ce module est obligatoire
pour que le script
Section 14.2, « rc.firewall.txt »
puisse fonctionner.
CONFIG_IP_NF_FTP - Ce module permet
de faire du traçage de connexion sur du FTP.
Comme il est habituellement difficile
d'effectuer du traçage de connexion sur des connexions
FTP, le module conntrack requiert le bien-nommé
module d'assistance « helper ». Et cette option compile
justement le module helper. Si vous n'ajoutez pas ce module vous ne pourrez
pas faire du FTP proprement à travers un pare-feu ou une passerelle.
CONFIG_IP_NF_IPTABLES - Cette
option est nécessaire pour effectuer n'importe quel type de filtrage, du
camouflage ou du NAT.
Elle insère dans le noyau toute l'architecture d'identification
d'iptables. Sans cela, vous ne pourrez rien faire avec iptables.
CONFIG_IP_NF_MATCH_LIMIT - Ce
module est facultatif, mais il est utilisé dans l'exemple
Section 14.2, « rc.firewall.txt ».
Cette option fournit la correspondance LIMIT. Elle donne la possibilité de
contrôler le nombre de paquets par minute pour lesquels autoriser la
correspondance, suivant la définition d'une règle.
Par exemple, la commande -m limit --limit 3/minute
autorise une correspondance avec un maximum de 3 paquets par minute.
Ce module permet aussi d'éviter certaines attaques de type déni de
service (DoS).
CONFIG_IP_NF_MATCH_MAC - Ceci
permet de faire correspondre des paquets à partir des adresses
MAC. Chaque adaptateur Ethernet possède sa propre
adresse MAC. Il est possible de bloquer
des paquets en identifiant l'adresse MAC
utilisée et par conséquent, bloquer efficacement un ordinateur
particulier, puisque l'adresse MAC est rarement
modifiée. Cette option n'est utilisée ni dans l'exemple
Section 14.2, « rc.firewall.txt », ni
ailleurs.
CONFIG_IP_NF_MATCH_MARK - Ceci
permet d'utiliser la correspondance MARK. A titre
d'exemple, on peut utiliser la cible MARK afin de
marquer un paquet, et s'appuyer sur ce marquage plus loin dans la table
pour éventuellement établir une correspondance.
Cette option est la correspondance MARK, elle sera
décrite un peu plus loin.
CONFIG_IP_NF_MATCH_MULTIPORT - Ce
module permet de faire correspondre des paquets sur un intervalle étendu
de ports source ou destination. Normalement, c'est impossible, mais pas
avec cette correspondance.
CONFIG_IP_NF_MATCH_TOS - Ce module
peut faire correspondre des paquets à partir du champ
TOS qu'ils contiennent.
TOS signifie Type de Service
(« Type Of Service »). Elle peut être définie par certaines règles
dans la table mangle et grâce aux commandes
ip/tc.
CONFIG_IP_NF_MATCH_TCPMSS - Cette
option introduit la possibilité de faire correspondre les paquets
TCP en fonction de leur champ
MSS.
CONFIG_IP_NF_MATCH_STATE - Il
s'agit d'une des plus importantes nouveautés vis-à-vis
d'ipchains. Ce module permet de faire de la
correspondance d'état sur les paquets. Par exemple, si vous avez déjà
observé un trafic dans les deux directions sur une connexion
TCP, les paquets concernés seront repérés par la
mention ESTABLISHED. Ce module est employé de manière
intensive dans l'exemple
Section 14.2, « rc.firewall.txt ».
CONFIG_IP_NF_MATCH_UNCLEAN - Ce module
introduit la possibilité d'établir une correspondance avec les paquets
IP, TCP,
UDP et ICMP,
qui s'avèrent non-conformes à leur spécification ou invalides. Ces paquets
pourront être détruits, mais il sera impossible alors de vérifier leur
légitimité. Sachez que cette correspondance est encore expérimentale, donc
qu'elle peut ne pas fonctionner parfaitement dans toutes les situations.
CONFIG_IP_NF_MATCH_OWNER - Cette option
offre la possibilité d'établir une correspondance en se référant au
propriétaire d'un connecteur réseau. A titre d'exemple, on peut autoriser
l'accès Internet uniquement à l'utilisateur root. Ce module a été écrit
à l'origine pour illustrer les possibilités du nouvel outil
iptables. Notez que cette correspondance est encore
expérimentale, donc qu'elle pourrait ne pas fonctionner pour tout le monde.
CONFIG_IP_NF_FILTER - Ce module ajoute la
table fondamentale filter qui permet d'effectuer
le moindre filtrage IP. Dans la table
filter, on trouve les chaînes
INPUT, FORWARD et
OUTPUT. Ce module est indispensable si vous
envisagez de faire n'importe quel type de filtrage sur des paquets reçus
ou envoyés.
CONFIG_IP_NF_TARGET_REJECT - Cette cible
permet de spécifier qu'un message d'erreur ICMP
doit être expédié en réponse à des paquets entrants, plutôt que de
simplement les détruire. Gardez à l'esprit que les connexions
TCP, à contrario des connexions
ICMP et UDP, sont
toujours réinitialisées ou refusées avec un paquet de type
TCP RST.
CONFIG_IP_NF_TARGET_MIRROR - Ceci permet
de renvoyer des paquets à leur expéditeur. Par exemple, si vous configurez
une cible MIRROR sur le port destination
HTTP dans votre chaîne
INPUT, et que quelqu'un tente d'accéder à ce port,
vous lui renverrez ses paquets, et il devrait probablement visualiser
au final sa propre page web.
|
Avertissement |
|---|---|
|
La cible |
CONFIG_IP_NF_NAT - Ce module permet
d'effectuer de la traduction d'adresse réseau, ou
NAT, dans ses différentes formes. Il vous donne
accès à la table nat d'iptables. Cette option est nécessaire pour réaliser
de la redirection de port, du camouflage d'adresse IP, etc. Notez que cette
option n'est pas indispensable pour installer un pare-feu et camoufler un
réseau local, mais elle devrait vous être utile sauf si vous pouvez fournir
une adresse IP unique pour chacun des hôtes.
Par conséquent, cette option est nécessaire d'une part pour que le script
d'exemple
Section 14.2, « rc.firewall.txt »
puisse fonctionner correctement, et d'autre part pour votre réseau si vous
n'êtes pas en mesure d'ajouter des adresses IP uniques.
CONFIG_IP_NF_TARGET_MASQUERADE - Ce module
ajoute la cible MASQUERADE. Par exemple, si vous ne
connaissez pas l'adresse IP de votre connexion Internet, cette méthode
permet de la récupérer en évitant le recours à du
DNAT ou du SNAT.
En d'autres termes, si vous utilisez DHCP,
PPP, SLIP ou un autre
moyen de connexion qui attribue lui-même l'adresse IP, vous aurez besoin
d'utiliser cette cible plutôt que du SNAT.
Le camouflage génère sur la machine une charge légèrement supérieure à du
NAT, mais fonctionne sans connaître à l'avance
l'adresse IP.
CONFIG_IP_NF_TARGET_REDIRECT - Cette cible
est utile associée avec des proxies d'application
par exemple. Au lieu de laisser passer un paquet directement,
on peut le rediriger vers une machine locale. Autrement dit, on a la
possibilité de réaliser un proxy transparent
de cette manière.
CONFIG_IP_NF_TARGET_LOG - Ceci ajoute à
iptables la cible LOG avec ses
fonctionnalités. Ce module peut être employé pour journaliser des paquets
dans syslogd, et découvrir ainsi ce qu'il advient d'eux. Cette possibilité
se révèle inestimable dans le cas d'audits de sécurité, d'expertises ou
pour déboguer un script en cours d'écriture.
CONFIG_IP_NF_TARGET_TCPMSS - Cette option
permet de contrecarrer les Fournisseurs d'Accès à Internet (FAI) et les
serveurs qui bloquent les paquets ICMP de type Fragmentation
Nécessaire (« Fragmentation Needed »).
La conséquence de ceci est que des pages web ne passeront pas,
des petits messages sont envoyés mais pas les gros, ssh fonctionne mais scp
s'arrête après l'établissement de la liaison (« handshake »), etc.
Dans cette situation, on peut utiliser la cible
TCPMSS pour contourner cette difficulté en limitant
le MSS (« Maximum Segment Size » ou
taille maximum de segment) à la valeur du
PMTU (« Path Maximum Transmit Unit »
ou unité de transfert maximum de liaison).
De cette façon, il est possible de surmonter ce que les auteurs de
Netfilter appellent eux-mêmes les « FAI ou serveurs à tendance
criminelle » dans l'aide de la configuration du noyau.
CONFIG_IP_NF_COMPAT_IPCHAINS -
Ajoute un mode de compatibilité avec l'outil ipchains
qui est devenu obsolète. Ne considérez pas ceci comme une solution
sérieuse à long terme pour dénouer les problèmes de migration des noyaux
Linux 2.2 vers 2.4, puisque ce mode pourrait bien disparaître dans le
noyau 2.6.
CONFIG_IP_NF_COMPAT_IPFWADM -
Ajoute un mode de compatibilité avec l'outil ipfwadm,
qui est également obsolète. Encore une fois, ne considérez pas ceci comme
une solution sérieuse à long terme.
Comme vous le constatez, il existe un large éventail d'options.
J'ai expliqué brièvement leur intérêt et ce qu'on pouvait attendre de
chaque module. Cependant, seules sont décrites ici les options disponibles
pour un noyau Linux 2.4.9 standard (saveur « vanilla »).
Si vous souhaitez connaître d'autres options, je vous suggère de vous
orienter vers les fonctions de patch-o-matic
(POM)
présentes dans l'espace utilisateur de Netfilter,
qui apportent d'innombrables options supplémentaires.
Les correctifs de POM sont des ajouts qu'il est
envisagé d'intégrer au noyau à l'avenir, mais qui ne le sont pas encore.
Les raisons sont variées - entre le patch qui n'est pas tout à
fait stable, l'impossibilité pour Linus Torvalds de le maintenir, ou son
refus de l'ajouter à la branche principale de développement du noyau
puisqu'il semble encore expérimental.
La liste d'options suivante devra être compilée dans votre noyau, ou ajoutée en tant que module, pour que le script Section 14.2, « rc.firewall.txt » fonctionne. Si vous avez besoin d'aide pour les options requises par les autres scripts, lisez la section sur les exemples de scripts de pare-feux.
CONFIG_PACKET
CONFIG_NETFILTER
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_FTP
CONFIG_IP_NF_IRC
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_NAT
CONFIG_IP_NF_MATCH_STATE
CONFIG_IP_NF_TARGET_LOG
CONFIG_IP_NF_MATCH_LIMIT
CONFIG_IP_NF_TARGET_MASQUERADE
Une dernière fois, tout ceci est indispensable pour le script Section 14.2, « rc.firewall.txt ». Pour les autres scripts d'exemple, leurs conditions d'utilisation sont précisées dans leurs sections respectives. Pour l'instant, concentrez-vous sur le script principal que vous devriez déjà être en train d'étudier.
Vous êtes ici :