User Tools

Site Tools


formationsecurite:iptables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

formationsecurite:iptables [2013/01/30 17:52] (current)
Line 1: Line 1:
 +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:
 +<​code>​ifconfig eth1 192.168.0.1</​code>​
 +
 +Pour activer la translation d'​adresses:​
 +<​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​
 +
 +Pour voir les règles dans la table nat:
 +<​code>​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</​code>​
 +
 +Quelle est la différence entre source NAT et masquerading?​
 +Source nat:
 +<​code>​iptables -t nat -A POSTROUTING -o eth0 -j snat --to-source adresse_ip_externe</​code>​
 +
 +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:
 +<​code>​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</​code>​
 +
 +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:
 +<​code>​iptables -P FORWARD DROP</​code>​
 +
 +-P = politique par défaut (n'est pas compté comme une règle).
 +
 +Si on met plutôt
 +<​code>​iptables -A FORWARD -j DROP</​code>​
 +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
 +<​code>​iptables -L --line-number</​code>​
 +
 +Pareil pour les chaînes INTPUT et OUTPUT:
 +<​code>​iptables -P INPUT DROP
 +iptables -P OUPUT DROP</​code>​
 +
 +Faire une règle qui permet aux machines du réseau local puissent sortir à travers le firewall:
 +<​code>​iptables -A FORWARD -s 192.168.0.0/​24 -j ACCEPT</​code>​
 +Pour le chemin de retour:
 +<​code>​iptables -A FORWARD -d 192.168.0.0/​24 -j ACCEPT</​code>​
 +
 +Dimitri doit avoir accès uniquement en ssh et uniquement depuis la machine 192.168.0.11:​
 +<​code>​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</​code>​
 +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).
 +<​code>​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</​code>​
 +
 +-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 ===
 +  * ((http://​lea-linux.org/​reseau/​secu/​iptables.html IpTables par l'​exemple))
 +  * ((http://​christian.caleca.free.fr/​netfilter/​ [[NetFilter]]))
formationsecurite/iptables.txt · Last modified: 2013/01/30 17:52 (external edit)