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.