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

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

Donc je peut traduire ce script IPV4

#!/bin/sh

iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t raw -P OUTPUT ACCEPT
iptables -t raw -P PREROUTING ACCEPT

############################ INPUT ############################
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#A-Requêtes de ping entrantes
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#B-Réponses entrantes aux requêtes de ping sortantes
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

#### SSH ####
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
### HTTP
#iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
### HTTPS
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables -P INPUT DROP
############################ OUTPUT ###########################
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#### ICMP (PING) ####
#A-Réponses sortantes aux requêtes de ping entrantes
iptables -A OUTPUT -p icmp  --icmp-type 0 -j ACCEPT
#B-Requêtes de ping sortantes
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

### SSH
#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
### HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

### HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT #UDP serveur de nom

iptables -P OUTPUT DROP
############################ FORWARD ##########################
iptables -P FORWARD DROP
############################ FIN ##############################

Par ce script IPV6 ???

#!/bin/sh
ip6tables -t filter -F
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -t raw -F
ip6tables -t filter -P INPUT ACCEPT
ip6tables -t filter -P OUTPUT ACCEPT
ip6tables -t filter -P FORWARD ACCEPT
ip6tables -t nat -P PREROUTING ACCEPT
ip6tables -t nat -P POSTROUTING ACCEPT
ip6tables -t nat -P INPUT ACCEPT
ip6tables -t nat -P OUTPUT ACCEPT
ip6tables -t mangle -P PREROUTING ACCEPT
ip6tables -t mangle -P OUTPUT ACCEPT
ip6tables -t mangle -P POSTROUTING ACCEPT
ip6tables -t mangle -P FORWARD ACCEPT
ip6tables -t mangle -P INPUT ACCEPT
ip6tables -t raw -P OUTPUT ACCEPT
ip6tables -t raw -P PREROUTING ACCEPT
############################ INPUT ############################
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#### ICMP (PING) ####
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT

#### SSH ####
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
### HTTP
#ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT
### HTTPS
#ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

ip6tables -P INPUT DROP
############################ OUTPUT ###########################
ip6tables -A OUTPUT -o lo -j ACCEPT
ip6tables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#### ICMP (PING) ####
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT

### SSH
#ip6tables -A OUTPUT -p tcp --dport 22 -j ACCEPT
### HTTP
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT

### HTTPS
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#ip6tables -A OUTPUT -p tcp --dport 25 -j ACCEPT
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT #UDP serveur de nom

ip6tables -P OUTPUT DROP
############################ FORWARD ##########################
ip6tables -P FORWARD DROP
############################ FIN ##############################

Il manque la traduction des règles autorisant le ping.

Je pensais que c’était ca la traduction

Du coup elles servent à quoi les lignes ci-dessus?

Si certains codes ne sont pas disponible en IPV6 je dois traduire comment?

iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

Je peux juste faire :

ip6tables -A OUTPUT -p icmpv6 --icmp-type 0 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmp-type 8 -j ACCEPT

?

Elles servent à autoriser le protocole NDP de résolution d’adresse, qui joue le même rôle pour IPv6 que le protocole ARP pour IPv4 (mais ARP n’étant pas basé sur IP, il n’est pas filtré par iptables ; par contre on peut le filtrer avec arptables) et gère aussi l’autoconfiguration sans état (SLAAC). Sans cela, aucune communication IPv6 possible sur un LAN.

Les numéros de types et codes ne sont pas forcément identiques en ICMP(v4) et ICMPv6 pour une même fonction. En plus c’est plus difficile à retenir que les noms. Donc il vaut mieux utiliser les noms, que l’on peut afficher comme pour iptables avec la commande suivante :

ip6tables -p icmpv6 -h

On peut voir que les noms des types ICMPv6 utilisés par le ping sont les mêmes qu’en ICMP : echo-request et echo-reply.

donc traduction :

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -j DROP
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j DROP
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j DROP

un de ces jours je vais faire un générateur de règles iptables pour débutant.

dernière question, ipv6 de nos jours n’est pas utilisé ?
Je veux dire que les internautes utilisent tous ipv4, la majorité des DNS ne répertorient pas l’IPV6 et quand bien même ils le feraient l’IPV4 est utilisée par défaut si disponible? ou bien il y a vraiment des internautes qui naviguent sans ipv4?

Dans le script original il y avait ACCEPT, pas DROP.

Si. Je l’utilise pour accéder à ce forum.

Et aussi IPv6 de plus en plus.

D’où tiens-tu cela ?

Non, c’est l’inverse : IPv6 est utilisé par défaut si disponible.

D’une part, utiliser IPv6 n’exclut pas utiliser IPv4.
Mais oui, dans certains pays il y aurait des internautes qui n’ont qu’une connectivité IPv6 à cause de la pénurie d’adresses IPv4. Pour accéder à des services qui ne sont disponibles qu’en IPv4 ils doivent passer par des passerelles qui font la traduction IPv6-IPv4.

1 J'aime

La hollande par exemple, a une forte proportion de la population en ipv6 only

1 J'aime

une erreur de copier coller

le nombre de tuto qui mentionnent les enregistrements AAAA :smile:
Il y a même des tuto sur la désactivation de l’IPv6

je te remercie pour les précisions.