Digression Installation parefeu (iptables & ip6tables) "pour les nuls"

Salut,

Ne te dévalorise pas comme ça, on est tous ici le débutant d’un autre ;-).

Pour afficher les règles qui ont cours actuellement sur ta machine, tu as le choix entre deux commandes :

iptables -vL
iptables-save

Les deux à exécuter avec des droits administrateur, évidemment.

L’avantage de la seconde, c’est qu’elle t’affiche les règles dans un format directement copiable/collable dans ton fichier de config.

Je me dévalorise car souvent on me fait comprendre RTFM :wink:
iptables-save me donne ceci:

# Generated by iptables-save v1.4.21 on Mon Feb 20 17:56:22 2017
*mangle
:PREROUTING ACCEPT [163016733:170021909383]
:INPUT ACCEPT [113254778:126298917366]
:FORWARD ACCEPT [49972135:43758426347]
:OUTPUT ACCEPT [75604085:28596757558]
:POSTROUTING ACCEPT [125588807:72358707366]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Mon Feb 20 17:56:22 2017
# Generated by iptables-save v1.4.21 on Mon Feb 20 17:56:22 2017
*nat
:PREROUTING ACCEPT [2876969:187643385]
:INPUT ACCEPT [1118266:67079320]
:OUTPUT ACCEPT [563363:34428802]
:POSTROUTING ACCEPT [2321971:154986131]
-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Mon Feb 20 17:56:22 2017
# Generated by iptables-save v1.4.21 on Mon Feb 20 17:56:22 2017
*filter
:INPUT ACCEPT [4770117:2945093141]
:FORWARD ACCEPT [4134973:3766262484]
:OUTPUT ACCEPT [4450965:1935854642]
:spoofing - [0:0]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -j LOG
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j LOG
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A spoofing -j DROP
-A spoofing -j LOG --log-prefix "Spoofed source IP"
COMMIT
# Completed on Mon Feb 20 17:56:22 2017

Puis-je faire un copier-coller de tout cela ?

On peut obtenir le même format de sortie avec iptables -S. Mais ce n’est pas le seul avantage d’iptables-save.
iptables -nvL ou ìptables -S`ont l’inconvénient de n’afficher que le contenu de la table “filter” (alors qu’ici on voit qu’il y a aussi des règles dans les tables “mangle” et “nat”) et de provoquer inutilement
le chargement de cette table en mémoire si elle n’était pas chargée.

En fait on n’a pas vraiment le choix. Il faut utiliser iptables-saveet rien d’autre.

Les lignes commençant avec “:” me troublent, il n’y en a pas dans le tutorial.
Peut-on dire que le tutorial est toujours à jour car de nombreuses personnes ont fait des remarques ?

Dans la syntaxe de la sortie d’iptables-save, “:” permet à la fois de définir la politique par défaut des chaînes de base (équivalent de iptables -P) et de créer les chaînes utilisateur (équivalent de iptables -N).

2 messages ont été déplacés vers un nouveau sujet : Problème firewall

Bonsoir, ca fonctionne toujours avec stretch?
J’ai l’impression que le parefeu ne boot plus au redémarrage.

Il y a une partie obsolète, c’est la partie configuration du service pour qu’il s’execute au reboot.
Il faudrait reprendre toute la partie qui parle d’init.d et la transformer pour systemd.

cela signifie qu’il faut simplement remplacer init.d par systemd? je suis pas sûr de comprendre les implications

Systemd dans Stretch a abandonné la compatibilité avec les initscripts SystemV ?

Je ne sais pas, ça fait 10 ans que je n’ai pas fait de script init, donc bon.
Mais il y a quelques jours, quelqu’un sur le forum était dans le cas ou il avait droppé le script iptables dans init.d et ça ne fonctionnait pas.
Je n’ai malheureusement plus en tête le fil, ni noté comment le pb s’était résolu, mais ça a nécessité un ajustement entre la config sysv et systemd.

tu parles de ce fil? Iptables non appelé au démarrage

Oui, c’est celui là.

En effet je pouvais lancer le script manuellement mais il n’était pas exécuté au démarrage.
J’ai donc fait comme proposé par @grandtoubab, c’est-à-dire installer ufw. La syntaxe des règles est simplifiée, exemple :

$ sudo ufw allow 50886/tcp

$ sudo ufw allow out 50886/tcp

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
50886/tcp                  ALLOW       Anywhere                  
50886/tcp (v6)             ALLOW       Anywhere (v6)             

50886/tcp                  ALLOW OUT   Anywhere                  
50886/tcp (v6)             ALLOW OUT   Anywhere (v6)   

Je ne sais pas comment travaille ufw avec le système d’init, mais en tout cas le firewall est actif au reboot.

1 J'aime

et moi j’ai finalement opté pour iptables-persistent ^^

Pure digression je ne suis toujours pas arrivé à faire fonctionner networkd et firewalld (gérer avec systemd en gros) en double stack V4/V6 sur du Debian alors que c’est fonctionnel sur du système Redhat et consorts :confused:

Si d’ici là quelqu’un à une méthode fonctionnel sur Stretch je suis preneur :smiley:

A l’heure de l’IPV6 ce serait bien d’avoir aussi les instructions de bases en IPV6 si vous avez le temps
vu que là soit je désactive l’IPV6 soit mon parefeu ne sert pas a grand chose :confused:

ufw le fait très bien

 grep -i ipv6 /etc/default/ufw
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
IPV6=yes
 ufw status
Status: active

To                         Action      From
--                         ------      ----
192.168.0.22               ALLOW       192.168.0.15              
192.168.0.15               ALLOW       192.168.0.22              
6566/tcp                   ALLOW       Anywhere                  
1718/udp                   ALLOW       Anywhere                  
1900/udp                   ALLOW       Anywhere                  
8200/tcp                   ALLOW       Anywhere                  
6566/tcp (v6)              ALLOW       Anywhere (v6)             
1718/udp (v6)              ALLOW       Anywhere (v6)             
1900/udp (v6)              ALLOW       Anywhere (v6)             
8200/tcp (v6)              ALLOW       Anywhere (v6)             

192.168.0.22               ALLOW OUT   192.168.0.15              
192.168.0.15               ALLOW OUT   192.168.0.22              
1718/udp                   ALLOW OUT   Anywhere                  
1900/udp                   ALLOW OUT   Anywhere                  
8200/tcp                   ALLOW OUT   Anywhere                  
1718/udp (v6)              ALLOW OUT   Anywhere (v6)             
1900/udp (v6)              ALLOW OUT   Anywhere (v6)             
8200/tcp (v6)              ALLOW OUT   Anywhere (v6)             

1 J'aime