====== iptables ====== ===== Liens utiles ===== * http://lea-linux.org/documentations/Reseau-secu-iptables * http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ===== Commandes ===== Les plus courant, consulter le [[http://www.delafond.org/traducmanfr/man/man8/iptables.8.html|man]] pour en savoir plus. Les tables ( -t table ) * ''filter'' table par défaut contenant les chaînes INPUT, FORWARD et OUTPUT * ''nat'' pour le routage de port contenant les chaines PREROUTING, OUTPUT et POSTROUTING * ''mangle'' (voir doc) Les options * ''-A'' ajoute une règle à la fin * ''-I'' insert une règle au début * ''-D'' supprimer une règle * ''-R'' remplace une règle * ''-L'' liste les règles Suivi de la chaîne * ''INPUT'', ''FORWARD'', ''OUTPUT'' * ''PREROUTING'', ''OUTPUT'', ''POSTROUTING'' Les paramètres * ''-p'' le protocole : tcp, udp, icmp, all (par défaut) * ''-s'' la source : adresse ip + le masque si on veut * ''--sport(s)'' : le ou les ports source (séparé par une virgule) * ''-d'' la destination : adresse ip + le masque si on veut * ''--dport(s)'' : le ou les ports destination (séparé par une virgule) * ''-i'' interface qui reçoit le paquet * ''-o'' interface qui envoi le paquet * ''-j'' cible du paquet * ''ACCEPT'' * ''DROP'' * ''REJECT'' * ''DNAT/SNAT/MASQUERADE/REDIRECT'' si on fait du nat ( --to-destination ip:port ) * ''LOG/MARK'' si on veut loguer/marquer des paquets On peut maintenant construire facilement une ligne de commandes Pour bloquer une adresse ip en entrée iptables -I INPUT -s 192.168.1.2 -j DROP ===== Commande utile ===== Pour savoir ce qu'il y a comme règle iptables iptables-save Pour sauvegarder ses règles iptables iptables-save > fichier Pour restaurer ses règles iptables iptables-restore < fichier Pour voir ce qu'il se passe en temps réel sur le nat iptables -v -L -t nat Vérifier si le routage dans le noyau est actif cat /proc/sys/net/ipv4/ip_forward Si on obtient 1 c'est qu'il est actif, si on obtient 0 c'est qu'il est inactif Activer le routage dans le noyau sysctl -w net.ipv4.ip_forward=1 Modifiez le fichier **/etc/sysctl.conf** pour que cette option soit activé lors d'un redémarrage. Recherchez la ligne net.ipv4.ip_forward = 1 ===== Commande pratique ===== Bloquer une adresse ip iptables -I INPUT -s 111.111.111.111 -j DROP -I place la règle au début et donc coupe la connexion, si on met -A la règle s'ajoute à la fin et ne coupe pas la connexion en cours. Supprimer cette règle iptables -D INPUT -s 111.111.111.111 -j DROP Ou en affichant les numéros de règles et en supprimant via le numéro de la règle iptables -L --line-number iptables -D [table] [numéro de la règle] ===== Exemple simple d'une redirection d'un port ===== Accepter les paquets retransmis via le périphérique d'IP interne du pare-feu permet aux noeuds du LAN de communiquer entre eux. Cependant, ils ne peuvent toujours pas communiquer vers l'extérieur (par exemple, vers l'internet). Pour permettre aux noeuds du LAN avec des adresses IP privées de communiquer avec les réseaux public externes, configurez le pare-feu pour le masquage d'IP, qui masque les requêtes provenant des noeuds du LAN avec l'adresse IP du périphérique externe du pare-feu (dans ce cas, eth0) : iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Rediriger ce qui rentre sur le port 25 vers une autre machine sur le port 25 iptables -A PREROUTING -t nat -p tcp --dport 25 -j DNAT --to xx.xx.xx.xx:25 ===== Exemple ===== Un serveur 81.81.81.81 Un serveur web A 12.12.12.12 Un serveur web B 12.12.12.34 (non visible de l'extérieur mais visible par le serveur web A) Le but recherché, tout le monde qui va sur le serveur web A voit le site web du serveur web A. Si le serveur 81.81.81.81 va sur le serveur web A il doit voir le site web du serveur web B. Voici le fichier généré par iptables-save, règle sur le firewall du serveur web A # Generated by iptables-save v1.3.6 on Fri Apr 24 15:14:15 2009 *nat :PREROUTING ACCEPT [54:6109] :POSTROUTING ACCEPT [31:2383] :OUTPUT ACCEPT [31:2383] -A PREROUTING -s 81.81.81.81 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 12.12.12.34:80 -A POSTROUTING -s 81.81.81.81 -d 12.12.12.34 -o eth0 -p tcp -m tcp --dport 80 -j MASQUERADE COMMIT # Completed on Fri Apr 24 15:14:15 2009 # Generated by iptables-save v1.3.6 on Fri Apr 24 15:14:15 2009 *filter :INPUT ACCEPT [1687:427004] :FORWARD ACCEPT [429:174368] :OUTPUT ACCEPT [1222:756966] COMMIT # Completed on Fri Apr 24 15:14:15 2009 Biensur ces règles sont données de la facon la plus simple possible, aucune sécurité n'est mis en place. ==== Liens utiles ==== Question/réponse de forum : http://linuxfr.org/forums/12/19544.html http://www.commentcamarche.net/forum/affich-11350173-iptables-et-traffic-entrant Tuto : http://www.linux-pour-lesnuls.com/iptables.php http://formation-debian.via.ecp.fr/firewall.html http://www.lea-linux.org/documentations/index.php/Reseau-secu-iptables