User Tools

Site Tools


formationsecurite:iptables

07/06/2005

Flux des données

  • mangle PREROUTING
  • nat PREROUTING
  • routing
  • est-ce que c'est à destination de la machine?
    • oui:
      • filter INPUT
      • linux processes: géré au niveau de la machine
      • mangle OUTPUT
      • nat OUTPUT
      • filter OUTPUT
    • non:
      • filter FORWARD
  • nat POSTROUTING

NAT

Remplacer l'adresse source par son adresse (du routeur). On remplace l'adresse source du paquet par celle de la machine (dans les 2 sens). Donc, quand le paquet réponse revient, il est redispatché au bon endroit avec une table de conversion.

Booter avec un noyau 2.6 (pour avoir le pilote rtl8150 de la carte réseau USB). Configurer cette interface:

ifconfig eth1 192.168.0.1

Pour activer la translation d'adresses:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Pour voir les règles dans la table nat:

iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Quelle est la différence entre source NAT et masquerading? Source nat:

iptables -t nat -A POSTROUTING -o eth0 -j snat --to-source adresse_ip_externe

Ici, source NAT et masquerade sont équivalents tant que l'adresse IP externe (donc publique) ne change pas. Pour partager une connexion ADSL home, il est donc préférable d'utiliser le masquerading.

Dans ce cas, nous avons un routeur, pas un firewall, puisqu'on ne filtre rien:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

L'option -L pour list donne la liste des règles pour la table (la table par défaut est filter). Ici, aucune règle de filtrage n'a été spécifiée, donc tout passe dans les 2 sens.

Filtrage

Sans toucher à la table nat, aucun paquet ne doit passer:

iptables -P FORWARD DROP

-P = politique par défaut (n'est pas compté comme une règle).

Si on met plutôt

iptables -A FORWARD -j DROP

on ne pourra ajouter une règle en-dessous qui ouvre; il faudra la rajouter avant la première. On peut le faire avec l'option -I, après avoir repéré le numéro de règle avec

iptables -L --line-number

Pareil pour les chaînes INTPUT et OUTPUT:

iptables -P INPUT DROP
iptables -P OUPUT DROP

Faire une règle qui permet aux machines du réseau local puissent sortir à travers le firewall:

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

Pour le chemin de retour:

iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT

Dimitri doit avoir accès uniquement en ssh et uniquement depuis la machine 192.168.0.11:

iptables -A INPUT -p tcp -s 192.168.0.11 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -d 192.168.0.11 --sport 22 -j ACCEPT

L'option -p permet de spécifier le protocole primaire (tcp, udp, icmp). Sans cette option, nous ne pouvons pas utiliser –dport (destination port- ni –sport (source port).

Dans la chaîne FORWARD, on ne va autoriser les machines de l'extérieur à accéder aux machines du LAN seulement pour répondre (= faire du stateful).

iptables -D FORWARD -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT

-m state pour charger le module (d'iptables, pas du noyau) qui permet de gérer le connexion tracking –state ESTABLISHED,RELATED: pour les connexions établies et les nouvelles connexions associées aux connexions existantes De cette manière, l'extérieur n'a accès au réseau local que s'il est sollicité.

Lectures

formationsecurite/iptables.txt · Last modified: 2013/01/30 17:52 (external edit)