#Reinitialiser iptables #-F pour -flush : Delete all rules in chain or all chains #-X pour a priori --delete-chain : Delete a user-defined chain sudo iptables -F sudo iptables -X sudo ip6tables -F #permettre à une connexion déjà ouverte de recevoir du trafic : # notez que pour les nouvelles versions la commande peut être : # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT #Authoriser l'interface locale (loopback). iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo "traffic sur l interface locale ok" #Création d'une new user-defined chain pour pouvoir autoriser ET logger un flux avec le préfixe iptables iptables -N LOGACCEPT iptables -A LOGACCEPT -j LOG --log-prefix 'iptables:' -m limit --limit 2/min iptables -A LOGACCEPT -j ACCEPT #Création d'une new user-defined chain pour pouvoir explicitement bloquer et logger un flux avec le préfixe iptables iptables -N LOGDROP iptables -A LOGDROP -j LOG --log-prefix 'iptables:' -m limit --limit 2/min iptables -A LOGDROP -j DROP #On aurait pu préciser dans chaque règle de rejet qu'elle interface était concernée, comme par exemple eth0 en specifiant -i eth0, mais avouez que c'est nettement plus compliqué. #Si vous n'avez pas authorisé le traffic de loopback dans les première règles et donc que vous le faites après coup, il faut s'assurer que cette règle soit dans les premières. Pour cela on va faire un Insert en seconde position avec cette commande #iptables -t filter -I INPUT 2 -i lo -j ACCEPT #iptables -t filter -I OUTPUT 2 -i lo -j ACCEPT #Permettre le trafic entrant et sortant pour le port SSH, cad le port 22 iptables -t filter -A INPUT -p tcp --dport 22 -j LOGACCEPT #-i eth0 iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT echo "ssh ok" #Permettre le trafic entrant pour un éventuel serveur openVpn, cad le port 1194 iptables -t filter -A INPUT -p udp --dport 1194 -j LOGACCEPT echo "OpenVpn ok" #Pour éventuellement autoriser les ping en entrée, dé-commentez ces lignes #iptables -t filter -A INPUT -p icmp -j LOGACCEPT #Autoriser le ping en sortie iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo "ping en sortie ok" #Autoriser les requètes DNS en sortie iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT echo "dns ok" #Pour éventuellement autoriser les requêtes DNS en entrée, dé-commentez ces lignes #iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT #iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT #Autoriser les requêtes NTP en sortie pour pouvoir se synchroniser ai niveau temps iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo "ntp ok" #Autoriser tout le trafic en entrée depuis le réseau local qui commencera ici par une ip en 192.168 iptables -t filter -A INPUT -s 192.168.0.0/16 -j ACCEPT echo "reseau local ok" #Changer la politique par défaut sur les paquets entrants pour que, sans règle appliquée, le paquet soit rejeté. Attention donc à avoir au préalable autoriser le SSH par exemple. #On aurait pu laisser la politique par défaut à ACCEPT et avoir placé en toute dernière règle une qui refuse tout. Les paquets autorisés par les règles précédentes n'atteindraient pas celle-ci. #Modification de la politique par défaut pour iptables de ipV6. On bloque en entrée et en transfert ip6tables -P INPUT DROP ip6tables -P FORWARD DROP #Modification pour ipv4 #iptables -A INPUT -j DROP iptables -P INPUT DROP #Modification de la politique par défaut sur les paquets transférés afin que par défaut ils soient bloqués iptables -P FORWARD DROP #On peut modifier la politique par défaut pour bloquer de base les paquets sortants mais je ne le fais pas car je trouve cela trop violent #iptables -P OUTPUT DROP echo "Script de configuration de iptables terminé"