logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 Re : Réseau » Gestion d’interfaces de connections 4G via bash » 13-05-2020 20:38:39

dudux2
Eh bien je vais mettre en pratique et je reviendrais avec des questions plus précises...

#2 Re : Réseau » Gestion d’interfaces de connections 4G via bash » 12-05-2020 12:48:02

dudux2
Les questions sont numérotées: 1) 2) 3) 4)

Sans description de ce que je souhaite, je vois pas très bien comment je pourrais avoir des réponses... scratchhead.gifscratchhead.gif

#3 Réseau » Gestion d’interfaces de connections 4G via bash » 11-05-2020 23:07:23

dudux2
Réponses : 4
Bonjour,

Pour présenter un peut mon système sous Rasbian (rpi), j’ai configuré un petit routeur 4g, dont je partage ma connexion en wifi et en filaire.
J’ai bien entendu configurer un pont réseau pour le réseau wifi et le réseau filaire.

J’utilise les fichiers (logiciels) suivants:
interfaces Pour la gestion des interfaces
Hostapd pour le hostpot wifi
dnsmasq Pour la gestion des dns de mon réseau local (wifi et filaire)
Dhcpd désinstallé

Je suis plutôt satisfait de ma connexion 4G et de mon réseau local, je voudrais donc aller  plus loin dans mon système.

Je voudrais rajouté 2 autres interfaces pour la réception d’internet.
Voici le fonctionnement que je voudrais avoir:
- wlan0 réseau wifi (local)
- eth0 réseau filaire (local)
- br0 pont réseau (pour les interfaces local)

Mes 3 connections internet:
- wlan1 interface prioritaire si le réseau paramètré dans wpa_supplicant.conf est présent.
- wwan0 (1ère interface 4G) abonnement utilisé en semaine
- wwan1 (2ème interface 4G) Abonnement utilisé le week-end (car illimité week-end)

Question:
1) Comment gérer mon interface wifi wlan1 qui se connecte à un réseau 4g (partage de connections téléphone) s’il est présent? Et comment gérer la reconnection automatiquement ou redémarrage automatique si la connection est plantée. Les tests à effectuée? Privilégier des tests qui ne consomment pas de data (car j’utilise que des connections 4G, et économisez les ressources du système tant qu’à faire. Je devrais donc désactivé mes 2 connections 4G wwan0 et wwan1 lorsque wlan1 sera connecté (via une commande AT envoyé au dongle 4g [test ok], sans désactivé mes interfaces.

2) j’ai remarqué lorsque l’on a plusieurs sources de connections 4G, la première connectée est la connexion qui est utilisé, donc comment réinitialiser tout mon réseau lorsque j’ai décidé d’utiliser une interface précise... là je ne sais pas du tout comment cela est gérer, qui décide de la route utilisé?

3) Je devrais sans doute redémarrer mon pont réseau du réseau local, voir également wlan0 et eth0? Et peut-être éteindre mes interfaces durant la permutation des connections internet?

4) Pour mes connexions 4G, on est d’accord ce sont des IP dynamique. Je ne sais même pas trop comment sont gérer les renouvellements des adresses IP, mise à part au redémarrage... Il coupe la connexion et c’est à moi de reconnecter? Je suis à mes débuts dans mes essais et je retrouve parfois mon d’ongle 4G déconnecté, je lance une commande AT et mon dongle est reconnecté. Les déconnexions ne sont pas intervalles régulière, donc je ne connais pas encore la source du problème...

J’espère que l’on trouvera une solution assez simple pour gérer une permutation rapide et fiable entre mes interfaces. La fiabilité demandera sans doute, de réaliser des tests sur chaque interface dont je souhaite actif à intervalles réguliers.

Je rajouterais mes fichiers de configuration dans la semaine, dès que je repasse à la casa...

Merci d’avance

#4 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 26-04-2020 15:13:44

dudux2
Ok très bien.
Je vais comparé mes essais avec le réseau filaire, j'ai peut être une connexion wifi instable, qui empêcherait le bon cheminement des paquets.
Affaire à suivre.

Et sinon tu aurais une idées du pourquoi je DROP avec cette règle, sachant que FAIL2BAN n'est pas installer?


# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"
 

#5 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 26-04-2020 13:30:31

dudux2
Ohhhh, mais pourquoi cela me saute pas aux yeux kernal_panic.gif

Merci raleur.


# Generated by xtables-save v1.8.2 on Sun Apr 26 13:13:27 2020
*mangle
:PREROUTING ACCEPT [1132:461364]
:INPUT ACCEPT [184:20714]
:FORWARD ACCEPT [912:436436]
:OUTPUT ACCEPT [1145:131531]
:POSTROUTING ACCEPT [2018:531923]
:MANGLE_LOG_N_DROP - [0:0]
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP
-A MANGLE_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION2=DROP-MANGLE"
-A MANGLE_LOG_N_DROP -j DROP
COMMIT
# Completed on Sun Apr 26 13:13:27 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 13:13:27 2020
*raw
:PREROUTING ACCEPT [1134:461504]
:OUTPUT ACCEPT [1153:132011]
:RAW_LOG_N_DROP - [0:0]
-A RAW_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION1=DROP-RAW"
-A RAW_LOG_N_DROP -j DROP
COMMIT
# Completed on Sun Apr 26 13:13:27 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 13:13:27 2020
*nat
:PREROUTING ACCEPT [135:10355]
:INPUT ACCEPT [46:3681]
:POSTROUTING ACCEPT [1:328]
:OUTPUT ACCEPT [267:16772]
:LOG_N_MASQ - [0:0]
-A POSTROUTING -o wwan0 -j LOG_N_MASQ
-A LOG_N_MASQ -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION3=MASQ-NAT"
-A LOG_N_MASQ -j MASQUERADE
COMMIT
# Completed on Sun Apr 26 13:13:27 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 13:13:27 2020
*filter
:INPUT DROP [4:306]
:FORWARD DROP [0:0]
:OUTPUT DROP [39:36052]
:LOG_N_ACCEPT - [0:0]
:LOG_N_DROP - [0:0]
:LOG_N_REJECT - [0:0]
:STATUS_RELATED - [0:0]
:LOG_ACCEPT_ICMP - [0:0]
:Fail2Ban-SSH - [0:0]
-A INPUT -i lo -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i br0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i wwan0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 587 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 11371 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -j LOG_N_DROP
-A FORWARD -i br0 -o wwan0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i wwan0 -o br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i br0 -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A FORWARD -i wwan0 -o br0 -m state --state RELATED -j STATUS_RELATED
-A FORWARD -j LOG_N_DROP
-A OUTPUT -o lo -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o br0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o wwan0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 587 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 11371 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -j LOG_N_DROP
-A LOG_N_ACCEPT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION4=ACCEPT-FILTER"
-A LOG_N_ACCEPT -j ACCEPT
-A LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION5=DROP-FILTER"
-A LOG_N_DROP -j DROP
-A LOG_N_REJECT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION6=REJECT-FILTER"
-A LOG_N_REJECT -j REJECT --reject-with icmp-port-unreachable
-A STATUS_RELATED -p icmp -m icmp --icmp-type 3 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 11 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 12 -j LOG_ACCEPT_ICMP
-A LOG_ACCEPT_ICMP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
-A LOG_ACCEPT_ICMP -j ACCEPT
COMMIT
# Completed on Sun Apr 26 13:13:27 2020
 




Eh bien mon wifi fonctionne beaucoup mieux maintenant, mais j'ai toujours des DROP, c'est pas impossible que le problème provienne de déconnection de ma carte wifi, c'est mieux mais ce n'est pas encore assez stable...

Lorsque je fais un test de débit depuis un pc sur mon réseau local en wifi, via speedtest, je vois bien qu'il bloque en fin des 3 tests (il marque "fermeture" et c'est long)
voici ce que j'ai en DROP:


Apr 26 13:20:28 dudubox kernel: [ 1530.857356] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=89.84.1.226 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=4674 DF PROTO=TCP SPT=443 DPT=54935 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 13:20:28 dudubox kernel: [ 1530.857462] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=89.84.1.226 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=4675 DF PROTO=TCP SPT=443 DPT=54932 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 13:20:28 dudubox kernel: [ 1530.862486] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=89.84.1.226 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=4773 DF PROTO=TCP SPT=443 DPT=54932 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 13:21:17 dudubox kernel: [ 1579.211989] ACTION5=DROP-FILTERIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=89.84.1.226 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=17284 DF PROTO=TCP SPT=54947 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
Apr 26 13:21:17 dudubox kernel: [ 1579.239626] ACTION5=DROP-FILTERIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=89.84.1.226 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=17285 DF PROTO=TCP SPT=54947 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
Apr 26 13:21:33 dudubox kernel: [ 1595.079547] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=89.84.1.226 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=29308 DF PROTO=TCP SPT=443 DPT=54951 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 13:22:06 dudubox kernel: [ 1628.743484] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=95.101.149.193 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=60615 DF PROTO=TCP SPT=443 DPT=51920 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 13:22:09 dudubox kernel: [ 1631.506489] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=95.101.149.193 DST=10.139.204.41 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=62259 DF PROTO=TCP SPT=443 DPT=51928 WINDOW=0 RES=0x00 ACK RST URGP=0

 




Je ne vois pas les raisons de ces blocages.

#6 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 26-04-2020 11:11:53

dudux2
Oui en effet, j'ai tout recharger et on voit bien les DROP.


# Generated by xtables-save v1.8.2 on Sun Apr 26 11:58:26 2020
*mangle
:PREROUTING ACCEPT [312:81272]
:INPUT ACCEPT [66:4546]
:FORWARD ACCEPT [205:63295]
:OUTPUT ACCEPT [520:67328]
:POSTROUTING ACCEPT [697:112439]
:MANGLE_LOG_N_DROP - [0:0]
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP
-A MANGLE_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION2=DROP-MANGLE"
-A MANGLE_LOG_N_DROP -j DROP
COMMIT
# Completed on Sun Apr 26 11:58:26 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 11:58:26 2020
*raw
:PREROUTING ACCEPT [312:81272]
:OUTPUT ACCEPT [523:67508]
:RAW_LOG_N_DROP - [0:0]
-A RAW_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION1=DROP-RAW"
-A RAW_LOG_N_DROP -j DROP
COMMIT
# Completed on Sun Apr 26 11:58:26 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 11:58:26 2020
*nat
:PREROUTING ACCEPT [73:15275]
:INPUT ACCEPT [6:632]
:POSTROUTING ACCEPT [2:418]
:OUTPUT ACCEPT [96:6076]
:LOG_N_MASQ - [0:0]
-A POSTROUTING -o wwan0 -j LOG_N_MASQ
-A LOG_N_MASQ -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION3=MASQ-NAT"
-A LOG_N_MASQ -j MASQUERADE
COMMIT
# Completed on Sun Apr 26 11:58:26 2020
# Generated by xtables-save v1.8.2 on Sun Apr 26 11:58:26 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [25:18004]
:LOG_N_ACCEPT - [0:0]
:LOG_N_DROP - [0:0]
:LOG_N_REJECT - [0:0]
:STATUS_RELATED - [0:0]
:LOG_ACCEPT_ICMP - [0:0]
:Fail2Ban-SSH - [0:0]
-A INPUT -i lo -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i br0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i wwan0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 587 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 11371 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -j LOG_N_DROP
-A FORWARD -i br0 -o wwan0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i wwan0 -o br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i br0 -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A FORWARD -i wwan0 -o br0 -m state --state RELATED -j STATUS_RELATED
-A FORWARD -j LOG_N_DROP
-A OUTPUT -o lo -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o br0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o wwan0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 587 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 11371 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -j LOG_N_DROP
-A LOG_N_ACCEPT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION4=ACCEPT-FILTER"
-A LOG_N_ACCEPT -j ACCEPT
-A LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION5=DROP-FILTER"
-A LOG_N_DROP -j DROP
-A LOG_N_REJECT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION6=REJECT-FILTER"
-A LOG_N_REJECT -j REJECT --reject-with icmp-port-unreachable
-A STATUS_RELATED -p icmp -m icmp --icmp-type 3 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 11 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 12 -j LOG_ACCEPT_ICMP
-A LOG_ACCEPT_ICMP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
COMMIT
# Completed on Sun Apr 26 11:58:26 2020

 




et des logs tout frais:


Apr 26 11:58:53 dudubox kernel: [53483.137973] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=118 TOS=0x00 PREC=0xC0 TTL=64 ID=1965 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=90 TOS=0x00 PREC=0x80 TTL=253 ID=56976 DF PROTO=UDP SPT=53 DPT=27355 LEN=70 ]
Apr 26 11:59:48 dudubox kernel: [53537.858146] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=106 TOS=0x00 PREC=0xC0 TTL=64 ID=4896 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=78 TOS=0x00 PREC=0x80 TTL=253 ID=48016 DF PROTO=UDP SPT=53 DPT=16309 LEN=58 ]
Apr 26 12:00:19 dudubox kernel: [53569.140267] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=154 TOS=0x00 PREC=0xC0 TTL=64 ID=5415 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=126 TOS=0x00 PREC=0x80 TTL=253 ID=33576 DF PROTO=UDP SPT=53 DPT=6607 LEN=106 ]
Apr 26 12:00:45 dudubox kernel: [53594.660377] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=195 TOS=0x00 PREC=0xC0 TTL=64 ID=7588 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=167 TOS=0x00 PREC=0x80 TTL=253 ID=61110 DF PROTO=UDP SPT=53 DPT=26553 LEN=147 ]
Apr 26 12:00:45 dudubox kernel: [53594.669384] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.202 LEN=195 TOS=0x00 PREC=0xC0 TTL=64 ID=50989 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.228.41.172 LEN=167 TOS=0x00 PREC=0x80 TTL=253 ID=61175 DF PROTO=UDP SPT=53 DPT=26553 LEN=147 ]
Apr 26 12:00:56 dudubox kernel: [53605.389488] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=107 TOS=0x00 PREC=0xC0 TTL=64 ID=8526 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=79 TOS=0x00 PREC=0x80 TTL=253 ID=13249 DF PROTO=UDP SPT=53 DPT=9236 LEN=59 ]
Apr 26 12:01:42 dudubox kernel: [53651.722008] ACTION5=DROP-FILTERIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=23.23.237.63 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=14860 DF PROTO=TCP SPT=53798 DPT=443 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 12:02:39 dudubox kernel: [53708.748925] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.202 LEN=195 TOS=0x00 PREC=0xC0 TTL=64 ID=60644 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.228.41.172 LEN=167 TOS=0x00 PREC=0x80 TTL=253 ID=2109 DF PROTO=UDP SPT=53 DPT=48286 LEN=147 ]
Apr 26 12:02:39 dudubox kernel: [53708.749074] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=195 TOS=0x00 PREC=0xC0 TTL=64 ID=15159 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=167 TOS=0x00 PREC=0x80 TTL=253 ID=2108 DF PROTO=UDP SPT=53 DPT=48286 LEN=147 ]
Apr 26 12:02:39 dudubox kernel: [53708.749218] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=195 TOS=0x00 PREC=0xC0 TTL=64 ID=15160 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=167 TOS=0x00 PREC=0x80 TTL=253 ID=2110 DF PROTO=UDP SPT=53 DPT=48286 LEN=147 ]
Apr 26 12:03:03 dudubox kernel: [53733.080756] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=248 TOS=0x00 PREC=0xC0 TTL=64 ID=17158 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=220 TOS=0x00 PREC=0x80 TTL=253 ID=59721 DF PROTO=UDP SPT=53 DPT=56812 LEN=200 ]
Apr 26 12:03:54 dudubox kernel: [53783.160915] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=118 TOS=0x00 PREC=0xC0 TTL=64 ID=20602 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=90 TOS=0x00 PREC=0x80 TTL=253 ID=51270 DF PROTO=UDP SPT=53 DPT=28084 LEN=70 ]
Apr 26 12:04:14 dudubox kernel: [53803.329079] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=106 TOS=0x00 PREC=0xC0 TTL=64 ID=20655 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=78 TOS=0x00 PREC=0x80 TTL=253 ID=24949 DF PROTO=UDP SPT=53 DPT=17650 LEN=58 ]
Apr 26 12:04:26 dudubox kernel: [53815.564219] ACTION5=DROP-FILTERIN=br0 OUT= MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=192.168.2.254 LEN=147 TOS=0x00 PREC=0x00 TTL=128 ID=16307 PROTO=ICMP TYPE=3 CODE=3 [SRC=192.168.2.254 DST=192.168.2.35 LEN=119 TOS=0x00 PREC=0x00 TTL=64 ID=42084 DF PROTO=UDP SPT=53 DPT=53072 LEN=99 ]
Apr 26 12:04:28 dudubox kernel: [53817.566066] ACTION5=DROP-FILTERIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=13.225.31.53 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=16785 DF PROTO=TCP SPT=53923 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
Apr 26 12:04:51 dudubox kernel: [53840.628109] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=89.84.1.226 DST=10.228.41.172 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=43272 DF PROTO=TCP SPT=443 DPT=53964 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 12:05:00 dudubox kernel: [53849.457313] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=217 TOS=0x00 PREC=0xC0 TTL=64 ID=23977 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=189 TOS=0x00 PREC=0x80 TTL=253 ID=12819 DF PROTO=UDP SPT=53 DPT=54082 LEN=169 ]
Apr 26 12:05:54 dudubox kernel: [53903.487712] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=133 TOS=0x10 PREC=0xC0 TTL=64 ID=50296 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=105 TOS=0x10 PREC=0x40 TTL=50 ID=35087 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH URGP=0 ]
Apr 26 12:06:05 dudubox kernel: [53914.207383] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=133 TOS=0x10 PREC=0xC0 TTL=64 ID=50864 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=105 TOS=0x10 PREC=0x40 TTL=50 ID=35088 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH URGP=0 ]
Apr 26 12:06:12 dudubox kernel: [53921.462343] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=107 TOS=0x00 PREC=0xC0 TTL=64 ID=26915 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=79 TOS=0x00 PREC=0x80 TTL=253 ID=50562 DF PROTO=UDP SPT=53 DPT=35267 LEN=59 ]
Apr 26 12:06:26 dudubox kernel: [53935.647228] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=133 TOS=0x10 PREC=0xC0 TTL=64 ID=51005 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=105 TOS=0x10 PREC=0x40 TTL=50 ID=35089 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH URGP=0 ]
Apr 26 12:07:09 dudubox kernel: [53978.446635] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=133 TOS=0x10 PREC=0xC0 TTL=64 ID=54436 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=105 TOS=0x10 PREC=0x40 TTL=49 ID=35090 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH URGP=0 ]
Apr 26 12:07:18 dudubox kernel: [53987.881406] ACTION5=DROP-FILTERIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=179.60.192.7 DST=10.228.41.172 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=47044 DF PROTO=TCP SPT=443 DPT=53913 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 26 12:07:19 dudubox kernel: [53988.769766] ACTION5=DROP-FILTERIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:29:af:7b:9c:4d:08:00 SRC=192.168.2.35 DST=179.60.192.36 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=6706 DF PROTO=TCP SPT=53930 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
Apr 26 12:08:34 dudubox kernel: [54064.045884] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=133 TOS=0x10 PREC=0xC0 TTL=64 ID=58819 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=105 TOS=0x10 PREC=0x40 TTL=49 ID=35091 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH URGP=0 ]
Apr 26 12:08:53 dudubox kernel: [54083.139949] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=118 TOS=0x00 PREC=0xC0 TTL=64 ID=38786 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=90 TOS=0x00 PREC=0x80 TTL=253 ID=3877 DF PROTO=UDP SPT=53 DPT=18937 LEN=70 ]
Apr 26 12:08:54 dudubox kernel: [54083.164901] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.202 LEN=118 TOS=0x00 PREC=0xC0 TTL=64 ID=60925 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.228.41.172 LEN=90 TOS=0x00 PREC=0x80 TTL=253 ID=4190 DF PROTO=UDP SPT=53 DPT=18937 LEN=70 ]
Apr 26 12:08:55 dudubox kernel: [54085.095501] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=17.57.146.52 LEN=576 TOS=0x10 PREC=0xC0 TTL=64 ID=59091 PROTO=ICMP TYPE=3 CODE=1 [SRC=17.57.146.52 DST=192.168.2.139 LEN=632 TOS=0x10 PREC=0x40 TTL=49 ID=35092 DF PROTO=TCP SPT=5223 DPT=51321 WINDOW=342 RES=0x00 ACK PSH FIN URGP=0 ]
Apr 26 12:09:26 dudubox kernel: [54115.691180] ACTION5=DROP-FILTERIN= OUT=wwan0 SRC=10.228.41.172 DST=62.201.129.201 LEN=219 TOS=0x00 PREC=0xC0 TTL=64 ID=38857 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.228.41.172 LEN=191 TOS=0x00 PREC=0x80 TTL=253 ID=33661 DF PROTO=UDP SPT=53 DPT=17940 LEN=171 ]

 

#7 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 25-04-2020 20:06:28

dudux2
Voici mes règles avec la correction du nom du fichier, en DROP-FILTER


# Generated by xtables-save v1.8.2 on Sat Apr 25 21:03:16 2020
*mangle
:PREROUTING ACCEPT [104:9635]
:INPUT ACCEPT [67:4510]
:FORWARD ACCEPT [35:3757]
:OUTPUT ACCEPT [423:60319]
:POSTROUTING ACCEPT [422:45786]
:MANGLE_LOG_N_DROP - [0:0]
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP
-A MANGLE_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION2=DROP-MANGLE"
-A MANGLE_LOG_N_DROP -j DROP
COMMIT
# Completed on Sat Apr 25 21:03:16 2020
# Generated by xtables-save v1.8.2 on Sat Apr 25 21:03:16 2020
*raw
:PREROUTING ACCEPT [105:9675]
:OUTPUT ACCEPT [427:60559]
:RAW_LOG_N_DROP - [0:0]
-A RAW_LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION1=DROP-RAW"
-A RAW_LOG_N_DROP -j DROP
COMMIT
# Completed on Sat Apr 25 21:03:16 2020
# Generated by xtables-save v1.8.2 on Sat Apr 25 21:03:16 2020
*nat
:PREROUTING ACCEPT [25:2734]
:INPUT ACCEPT [4:522]
:POSTROUTING ACCEPT [1:328]
:OUTPUT ACCEPT [97:6182]
:LOG_N_MASQ - [0:0]
-A POSTROUTING -o wwan0 -j LOG_N_MASQ
-A LOG_N_MASQ -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION3=MASQ-NAT"
-A LOG_N_MASQ -j MASQUERADE
COMMIT
# Completed on Sat Apr 25 21:03:16 2020
# Generated by xtables-save v1.8.2 on Sat Apr 25 21:03:16 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [1:44]
:OUTPUT DROP [37:18366]
:LOG_N_ACCEPT - [0:0]
:LOG_N_DROP - [0:0]
:LOG_N_REJECT - [0:0]
:STATUS_RELATED - [0:0]
:LOG_ACCEPT_ICMP - [0:0]
:Fail2Ban-SSH - [0:0]
-A INPUT -i lo -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i br0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -m state --state RELATED -j STATUS_RELATED
-A INPUT -i wwan0 -p icmp -m icmp --icmp-type 0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 123 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 587 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 11371 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i br0 -o wwan0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i wwan0 -o br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i br0 -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A FORWARD -i wwan0 -o br0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o lo -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o br0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -m state --state RELATED -j STATUS_RELATED
-A OUTPUT -o wwan0 -p icmp -m icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 123 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 587 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 11371 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A LOG_N_ACCEPT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION4=ACCEPT-FILTER"
-A LOG_N_ACCEPT -j ACCEPT
-A LOG_N_DROP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION5=DROP-FILTER"
-A LOG_N_DROP -j DROP
-A LOG_N_REJECT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION6=REJECT-FILTER"
-A LOG_N_REJECT -j REJECT --reject-with icmp-port-unreachable
-A STATUS_RELATED -p icmp -m icmp --icmp-type 3 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 11 -j LOG_ACCEPT_ICMP
-A STATUS_RELATED -p icmp -m icmp --icmp-type 12 -j LOG_ACCEPT_ICMP
-A LOG_ACCEPT_ICMP -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
COMMIT
# Completed on Sat Apr 25 21:03:16 2020


 

#8 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 25-04-2020 14:28:23

dudux2
Je pense que c'est lié à mon wifi qui n'est pas très stable, je vais travaillé sur ma carte wifi, car j'ai beaucoup de perte de connexion et un débit très faibles, donc je suppose que mes blocage sont lié à cela.
Du côté réseau câblé, je n'ai pas de DROP comme cela.

#9 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 24-04-2020 11:55:44

dudux2
- Si j'ai bien compris, le port  67 68 c'est pour la gestion du DHCP, ici de ma connexion 4G, aurais-je un intérêt de les accepter sous certaines condition?
- Sinon pour les lignes en ICMP type 3 et sport 53 est ouvert en entrée, enfin je comprends pas...


-Voici une section du contenu de mon fichier log des packets DROPPER:


Apr 24 11:59:07 dudubox kernel: [  273.948268] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.38.118.145 DST=10.38.118.146 LEN=328 TOS=0x00 PREC=0x00 TTL=64 ID=30777 DF PROTO=UDP SPT=68 DPT=67 LEN=308
Apr 24 11:59:16 dudubox kernel: [  282.893575] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.38.118.145 DST=62.201.129.202 LEN=136 TOS=0x00 PREC=0xC0 TTL=64 ID=34081 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.38.118.145 LEN=108 TOS=0x00 PREC=0x80 TTL=253 ID=65428 DF PROTO=UDP SPT=53 DPT=49922 LEN=88 ]
Apr 24 12:07:43 dudubox kernel: [  789.875755] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.38.118.145 DST=62.201.129.202 LEN=118 TOS=0x00 PREC=0xC0 TTL=64 ID=63039 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.38.118.145 LEN=90 TOS=0x00 PREC=0x80 TTL=253 ID=33978 DF PROTO=UDP SPT=53 DPT=49359 LEN=70 ]
Apr 24 12:09:34 dudubox kernel: [  899.985202] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.38.118.145 DST=62.201.129.202 LEN=172 TOS=0x00 PREC=0xC0 TTL=64 ID=3672 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.38.118.145 LEN=144 TOS=0x00 PREC=0x80 TTL=253 ID=32383 DF PROTO=UDP SPT=53 DPT=47316 LEN=124 ]


Apr 24 13:05:38 dudubox kernel: [  535.990599] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=146 TOS=0x00 PREC=0xC0 TTL=64 ID=23024 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=118 TOS=0x00 PREC=0x80 TTL=253 ID=4652 DF PROTO=UDP SPT=53 DPT=13529 LEN=98 ]
Apr 24 13:06:01 dudubox kernel: [  558.929923] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.202 LEN=217 TOS=0x00 PREC=0xC0 TTL=64 ID=400 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.220.166.8 LEN=189 TOS=0x00 PREC=0x80 TTL=253 ID=50997 DF PROTO=UDP SPT=53 DPT=63627 LEN=169 ]
Apr 24 13:06:22 dudubox kernel: [  579.852616] ACTION5=DROP-INPUTIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=195.154.81.200 DST=10.220.166.8 LEN=40 TOS=0x10 PREC=0x40 TTL=253 ID=3224 DF PROTO=TCP SPT=443 DPT=55805 WINDOW=0 RES=0x00 ACK RST URGP=0
Apr 24 13:06:48 dudubox kernel: [  605.799036] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=149 TOS=0x00 PREC=0xC0 TTL=64 ID=24705 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=121 TOS=0x00 PREC=0x80 TTL=253 ID=51298 DF PROTO=UDP SPT=53 DPT=54477 LEN=101 ]
Apr 24 13:07:02 dudubox kernel: [  619.944894] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=217 TOS=0x00 PREC=0xC0 TTL=64 ID=25081 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=189 TOS=0x00 PREC=0x80 TTL=253 ID=4455 DF PROTO=UDP SPT=53 DPT=1847 LEN=169 ]
Apr 24 13:07:36 dudubox kernel: [  654.419001] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=149 TOS=0x00 PREC=0xC0 TTL=64 ID=27376 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=121 TOS=0x00 PREC=0x80 TTL=253 ID=6336 DF PROTO=UDP SPT=53 DPT=45683 LEN=101 ]
Apr 24 13:07:40 dudubox kernel: [  658.449944] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=161 TOS=0x00 PREC=0xC0 TTL=64 ID=27620 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=133 TOS=0x00 PREC=0x80 TTL=253 ID=55875 DF PROTO=UDP SPT=53 DPT=23456 LEN=113 ]
Apr 24 13:08:01 dudubox kernel: [  678.876478] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=210 TOS=0x00 PREC=0xC0 TTL=64 ID=28568 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=182 TOS=0x00 PREC=0x80 TTL=253 ID=15021 DF PROTO=UDP SPT=53 DPT=13805 LEN=162 ]
Apr 24 13:08:34 dudubox kernel: [  712.250437] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=315 TOS=0x00 PREC=0xC0 TTL=64 ID=28753 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=287 TOS=0x00 PREC=0x80 TTL=253 ID=17804 DF PROTO=UDP SPT=53 DPT=52419 LEN=267 ]
Apr 24 13:08:37 dudubox kernel: [  715.338093] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.202 LEN=119 TOS=0x00 PREC=0xC0 TTL=64 ID=11200 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.220.166.8 LEN=91 TOS=0x00 PREC=0x80 TTL=253 ID=27990 DF PROTO=UDP SPT=53 DPT=62961 LEN=71 ]
Apr 24 13:08:58 dudubox kernel: [  735.919172] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.202 LEN=111 TOS=0x00 PREC=0xC0 TTL=64 ID=12161 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.220.166.8 LEN=83 TOS=0x00 PREC=0x80 TTL=253 ID=59163 DF PROTO=UDP SPT=53 DPT=26341 LEN=63 ]
Apr 24 13:09:18 dudubox kernel: [  756.311312] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.201 LEN=115 TOS=0x00 PREC=0xC0 TTL=64 ID=31193 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.201 DST=10.220.166.8 LEN=87 TOS=0x00 PREC=0x80 TTL=253 ID=47603 DF PROTO=UDP SPT=53 DPT=4112 LEN=67 ]
Apr 24 13:09:44 dudubox kernel: [  781.878379] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=62.201.129.202 LEN=152 TOS=0x00 PREC=0xC0 TTL=64 ID=15169 PROTO=ICMP TYPE=3 CODE=3 [SRC=62.201.129.202 DST=10.220.166.8 LEN=124 TOS=0x00 PREC=0x80 TTL=253 ID=55270 DF PROTO=UDP SPT=53 DPT=16308 LEN=104 ]
Apr 24 13:09:59 dudubox kernel: [  796.624459] ACTION5=DROP-INPUTIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=176.31.195.20 DST=10.220.166.8 LEN=71 TOS=0x10 PREC=0x40 TTL=253 ID=17596 DF PROTO=TCP SPT=443 DPT=55834 WINDOW=698 RES=0x00 ACK PSH FIN URGP=0
Apr 24 13:10:20 dudubox kernel: [  817.792405] ACTION5=DROP-INPUTIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=176.31.195.20 DST=10.220.166.8 LEN=71 TOS=0x10 PREC=0x40 TTL=253 ID=44519 DF PROTO=TCP SPT=443 DPT=55856 WINDOW=732 RES=0x00 ACK PSH FIN URGP=0
Apr 24 13:10:40 dudubox kernel: [  838.431597] ACTION5=DROP-INPUTIN=wwan0 OUT= MAC=00:1e:10:1f:00:00:4c:54:99:45:e5:d5:08:00 SRC=143.204.222.46 DST=10.220.166.8 LEN=71 TOS=0x10 PREC=0x40 TTL=253 ID=11557 DF PROTO=TCP SPT=443 DPT=55793 WINDOW=696 RES=0x00 ACK PSH FIN URGP=0
Apr 24 13:11:00 dudubox kernel: [  857.632764] ACTION5=DROP-INPUTIN= OUT=wwan0 SRC=10.220.166.8 DST=52.114.74.44 LEN=80 TOS=0x10 PREC=0xC0 TTL=64 ID=6328 PROTO=ICMP TYPE=3 CODE=1 [SRC=52.114.74.44 DST=192.168.2.198 LEN=52 TOS=0x10 PREC=0x40 TTL=252 ID=52407 DF PROTO=TCP SPT=443 DPT=56013 WINDOW=21280 RES=0x00 ACK SYN URGP=0 ]
Apr 24 13:11:18 dudubox kernel: [  875.775597] ACTION5=DROP-INPUTIN=br0 OUT=wwan0 MAC=00:e0:4c:25:0e:3c:74:c6:3b:7e:f2:f2:08:00 SRC=192.168.2.198 DST=104.17.211.204 LEN=163 TOS=0x00 PREC=0x00 TTL=127 ID=6882 DF PROTO=TCP SPT=55922 DPT=443 WINDOW=259 RES=0x00 ACK PSH FIN URGP=0
 




Je suis également surpris de voir des logs de packets dans le fichier DROP-POLICY sachant que Fail2Ban n'est pas installer...


# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"
 



Dans mon kernel.log j'ai également ceux-ci: bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

Voici le listing de mes règles


  - Liste des règles de la tables RAW:
Chain PREROUTING (policy ACCEPT 37 packets, 12561 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 77 packets, 17110 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain RAW_LOG_N_DROP (0 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION1=DROP-RAW"
2        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

  - Liste des règles de la tables MANGLE:
Chain PREROUTING (policy ACCEPT 37 packets, 12561 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
2        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x03/0x03
3        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x06
4        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x05/0x05
5        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x11/0x01
6        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x30/0x20
7        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x18/0x08
8        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F
9        0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
10       0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x29
11       0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x2B
12       0     0 MANGLE_LOG_N_DROP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x37

Chain INPUT (policy ACCEPT 14 packets, 1399 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 23 packets, 11162 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 79 packets, 18274 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 82 packets, 19109 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain MANGLE_LOG_N_DROP (12 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION2=DROP-MANGLE"
2        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

  - Liste des règles de la tables NAT:
Chain PREROUTING (policy ACCEPT 3 packets, 235 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 3 packets, 235 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       18  1152 LOG_N_MASQ  all  --  *      wwan0   0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 19 packets, 1212 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain LOG_N_MASQ (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        3   180 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION3=MASQ-NAT"
2       18  1152 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0

  - Liste des règles de la tables FILTER:
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG_N_ACCEPT  all  --  lo     *       0.0.0.0/0            0.0.0.0/0
2       11   631 LOG_N_ACCEPT  all  --  br0    *       0.0.0.0/0            0.0.0.0/0            state NEW,ESTABLISHED
3        0     0 STATUS_RELATED  all  --  br0    *       0.0.0.0/0            0.0.0.0/0            state RELATED
4        0     0 LOG_N_ACCEPT  icmp --  br0    *       0.0.0.0/0            0.0.0.0/0            icmptype 0 state ESTABLISHED
5        0     0 STATUS_RELATED  all  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            state RELATED
6        0     0 LOG_N_ACCEPT  icmp --  wwan0  *       0.0.0.0/0            0.0.0.0/0            icmptype 0 state ESTABLISHED
7        6   888 LOG_N_ACCEPT  udp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            udp spt:53 state ESTABLISHED
8        0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:53 state ESTABLISHED
9        0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:80 state ESTABLISHED
10       0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:443 state ESTABLISHED
11       0     0 LOG_N_ACCEPT  udp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            udp spt:123 state ESTABLISHED
12       0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:123 state ESTABLISHED
13       0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:587 state ESTABLISHED
14       0     0 LOG_N_ACCEPT  tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp spt:11371 state ESTABLISHED
15       0     0 LOG_N_DROP  all  --  *      *       0.0.0.0/0            0.0.0.0/0
16       0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "ACTION8=DROP-POLICY"

Chain FORWARD (policy DROP 1 packets, 1370 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       11  8811 LOG_N_ACCEPT  all  --  br0    wwan0   0.0.0.0/0            0.0.0.0/0            state NEW,ESTABLISHED
2       10   902 LOG_N_ACCEPT  all  --  wwan0  br0     0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
3        0     0 STATUS_RELATED  all  --  br0    wwan0   0.0.0.0/0            0.0.0.0/0            state RELATED
4        0     0 STATUS_RELATED  all  --  wwan0  br0     0.0.0.0/0            0.0.0.0/0            state RELATED
5        0     0 LOG_N_DROP  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy DROP 16 packets, 9780 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG_N_ACCEPT  all  --  *      lo      0.0.0.0/0            0.0.0.0/0
2       21 15451 LOG_N_ACCEPT  all  --  *      br0     0.0.0.0/0            0.0.0.0/0            state NEW,ESTABLISHED
3        0     0 STATUS_RELATED  all  --  *      br0     0.0.0.0/0            0.0.0.0/0            state RELATED
4        0     0 LOG_N_ACCEPT  icmp --  *      br0     0.0.0.0/0            0.0.0.0/0            icmptype 8 state NEW,ESTABLISHED
5        3   487 STATUS_RELATED  all  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            state RELATED
6        0     0 LOG_N_ACCEPT  icmp --  *      wwan0   0.0.0.0/0            0.0.0.0/0            icmptype 8 state NEW,ESTABLISHED
7        6   468 LOG_N_ACCEPT  udp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            udp dpt:53 state NEW,ESTABLISHED
8        0     0 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:53 state NEW,ESTABLISHED
9       41  2460 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:80 state NEW,ESTABLISHED
10       0     0 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:443 state NEW,ESTABLISHED
11       0     0 LOG_N_ACCEPT  udp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            udp dpt:123 state NEW,ESTABLISHED
12       0     0 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:123 state NEW,ESTABLISHED
13       0     0 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:587 state NEW,ESTABLISHED
14       0     0 LOG_N_ACCEPT  tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp dpt:11371 state NEW,ESTABLISHED
15       3   487 LOG_N_DROP  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain LOG_N_ACCEPT (26 references)
num   pkts bytes target     prot opt in     out     source               destination
1        3   199 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION4=ACCEPT-INPUT"
2      102 25255 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain LOG_N_DROP (3 references)
num   pkts bytes target     prot opt in     out     source               destination
1        3   487 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION5=DROP-INPUT"
2        3   487 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain LOG_N_REJECT (0 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION6=REJECT-INPUT"
2        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain STATUS_RELATED (6 references)
num   pkts bytes target     prot opt in     out     source               destination
1        3   487 LOG_ACCEPT_ICMP  icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 3
2        0     0 LOG_ACCEPT_ICMP  icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 11
3        0     0 LOG_ACCEPT_ICMP  icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 12

Chain LOG_ACCEPT_ICMP (3 references)
num   pkts bytes target     prot opt in     out     source               destination
1        3   487 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 4 prefix "ACTION7=ACCEPT-ICMP"

Chain Fail2Ban-SSH (0 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
Fait! [OK]

 

#10 Re : Matériel » Installation d'un driver rtl8812bu sur mon Rasbian » 21-04-2020 22:22:23

dudux2

Renart_frambivore a écrit :

BIzarre...
J'ai eu 5 raspberry, dont un 3b+ et je n'ai jamais eu la moindre instabilité...
BREF

framboise314 a écrit :

En mai, un article du site Raspberry mentionnait qu’un certain Hexxeh (palindrome! – non ce n’est pas une insulte…) a travaillé dur sur le Raspberry Pi, ce qui l’a amené à réinstaller le firmware de nombreuses fois à partir de zéro.

Il a donc écrit un outil pour le faire à sa place;


Si j'en croit Framboise314, le but est d'avoir les derniers firmware disponible.
Je ne vois pas comment cela pourrait foutre en l'ai ton installation que d'avoir les derniers pilotes.



Eh bien raté, si je fais un rpi-update, c’est à dire mise à jour du Kernel, eh bien l’installation des drivers installés à la mano, ne fonctionne plus.
J’ai réinstaller le kernel original et c’est reparti.

Le souci avec les dernières mises à jour du kernel, mais pas dans les versions stables, c’est qu’il créer plusieurs répertoires pour le kernel, avec plusieurs version et la sa echoue...
J’ai même essayé la réinstallation du drivers sur le dernier kernel, eh bien ça plante...

Donc avec des drivers installer à la mano, il faut resté en version stable!

#11 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 21-04-2020 06:29:55

dudux2
Salut
J’ai des doutes que tout soit dans le bon ordre, je Drop pas mal d’ICMP type 3 surtout a destination du port 53.

Je posterais mes logs ce week-end... car là ce n’ai pas assez complet...

#12 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 13-04-2020 12:01:47

dudux2
Oui j'y ai été un peu vite sur ces dernières corrections. Merci.

mon script:


#!/bin/sh
# Provides:          Firewall Rules


#### https://debian-facile.org//viewtopic.php?id=26878
#### Merci à raleur pour son partage de connaissances

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################



# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'
NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"



# test lancement en root
USER=$(whoami)
if [ "$USER" != "root" ]; then
  echo "Exécution en root ou en sudo obligatoire.."
  exit
fi



PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi



# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"

# Fichiers logs complets, si actif (DEBUG)
FULL_LOGS=0




# Si le mode debogue est actif
if [ "$FULL_LOGS" -eq 1 ]; then
  LIMIT_LOGS="-m limit --limit 3/min --limit-burst 3"
  echo ""
  echo "  - ${yellowBold} ..::  F U L L  L O G S  A C T I F  ::.. : ${NC} ${OK}"
else
  LIMIT_LOGS=""
  echo ""
  echo "  - ${yellowBold} ..::  L I M I T  L O G S  A C T I F  ::.. : ${NC} ${OK}"
fi




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N MANGLE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -N STATUS_RELATED
$IPT -t filter -N LOG_ACCEPT_ICMP

# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A INPUT -i lo -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D U  R O U T E U R
######################################################################

# Gestion du routeur (MASQUERADE) Translation d'adresses pour tout ce qui traverse la passerelle
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion du routeur (On autorise tout le traffic (sauf RELATED)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion du routeur (Statut RELATED) On filtre tout ce qui est en statut RELATED
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state RELATED -j STATUS_RELATED
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  ->  L A N / W L A N
######################################################################

# On permet toutes les liaisons SERVEUR-LAN/WLAN (sauf RELATED)
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR-LAN/WLAN (Statut RELATED) On filtre tout ce qui est en statut RELATED
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N  ->  S E R V E U R
######################################################################

#on permet toutes les liaisons LAN/WLAN-SERVEUR (sauf RELATED)
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion LAN/WLAN->SERVEUR (Statut RELATED) On filtre tout ce qui est en statut RELATED
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Gestion INTERNET->SERVEUR (Statut RELATED) On filtre tout ce qui est en statut RELATED
$IPT -t filter -A INPUT -i $IFACE_INET -m state --state RELATED -j STATUS_RELATED

echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# Gestion SERVEUR->INTERNET (Statut RELATED) On filtre tout ce qui est en statut RELATED
$IPT -t filter -A OUTPUT -o $IFACE_INET -m state --state RELATED -j STATUS_RELATED

# Gestion SERVEUR->INTERNET (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type echo-reply -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 80 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (smtp)
$IPT -t filter -A OUTPUT -p tcp --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (serveur de clefs gpg)
$IPT -t filter -A OUTPUT -p tcp --dport 11371 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 11371 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






#### RAW
$IPT -t raw -A RAW_LOG_N_DROP $LIMIT_LOGS -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

#### MANGLE
$IPT -t mangle -A MANGLE_LOG_N_DROP $LIMIT_LOGS -j LOG --log-prefix "ACTION2=DROP-MANGLE"
$IPT -t mangle -A MANGLE_LOG_N_DROP -j DROP

#### NAT
$IPT -t nat -A LOG_N_MASQ $LIMIT_LOGS -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

#### FILTER
$IPT -t filter -A LOG_N_ACCEPT $LIMIT_LOGS -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP $LIMIT_LOGS -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT $LIMIT_LOGS -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type destination-unreachable -j LOG_ACCEPT_ICMP
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type time-exceeded -j LOG_ACCEPT_ICMP
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type parameter-problem -j LOG_ACCEPT_ICMP
$IPT -t filter -A LOG_ACCEPT_ICMP $LIMIT_LOGS -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"


# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"


sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0

 

#13 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 12-04-2020 15:35:09

dudux2
Merci beaucoup pour ces approffondissements!
Ah oui, j'ai supprimé l'incohérence d'un copier coller (entre 2 tests) à 12h17, mais tu as été plus rapide que moi sad

Eh oui, une petite gymnastique supplémentaire et on gagne quelque ligne de code et de la lisibilité! yes.gif

Mon script


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N MANGLE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -N STATUS_RELATED
$IPT -t filter -N LOG_ACCEPT_ICMP

# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A INPUT -i lo -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Gestion de la passerelle (Translation d'adresses pour tout ce qui traverse la passerelle)
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion de la passerelle (On autorise tout le traffic)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state RELATED -j STATUS_RELATED
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons SERVEUR-LAN/WLAN
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR-LAN/WLAN (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN/WLAN-SERVEUR
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion LAN/WLAN-SERVEUR (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state RELATED -j STATUS_RELATED


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Gestion INTERNET->SERVEUR (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_INET -m state --state RELATED -j STATUS_RELATED

echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# Gestion SERVEUR->INTERNET (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_INET -m state --state RELATED -j STATUS_RELATED


# Gestion SERVEUR->INTERNET (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type echo-reply -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 80 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (smtp)
$IPT -t filter -A OUTPUT -p tcp --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (serveur de clefs gpg)
$IPT -t filter -A OUTPUT -p tcp --dport 11371 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 11371 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






#### RAW
$IPT -t raw -A RAW_LOG_N_DROP -m limit --limit 60/min --limit-burst 5 -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

#### MANGLE
$IPT -t mangle -A MANGLE_LOG_N_DROP -m limit --limit 60/min --limit-burst 5 -j LOG --log-prefix "ACTION2=DROP-MANGLE"
$IPT -t mangle -A MANGLE_LOG_N_DROP -j DROP

#### NAT
$IPT -t nat -A LOG_N_MASQ -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

#### FILTER
$IPT -t filter -A LOG_N_ACCEPT -m limit --limit 5/min --limit-burst 3 -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP -m limit --limit 60/min --limit-burst 5 -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT -m limit --limit 60/min --limit-burst 5 -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type destination-unreachable -j LOG_ACCEPT_ICMP
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type time-exceeded -j LOG_ACCEPT_ICMP
$IPT -t filter -A STATUS_RELATED -p icmp --icmp-type parameter-problem -j LOG_ACCEPT_ICMP
$IPT -t filter -A LOG_ACCEPT_ICMP -m limit --limit 60/min --limit-burst 5 -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A LOG_ACCEPT_ICMP -j ACCEPT


# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"


sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0


 

#14 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 12-04-2020 11:04:06

dudux2
Bon je ne sais pas si cela va te plaire au niveau des appellations, mais d'après le fichier rules.v4, ce coup-ci, j'accepte bien que les 3 types d'ICMP. yes.gif
- Je garde mes logs séparer dans des fichiers pour le moments car je n'ai pas encore les bonnes commandes "tail" pour faire des bonnes recherches dans les fichiers de log, il faut que je creuse encore de se côté là...

Encore quelques point qui me chagrine:

- Pourquoi ne pas contrôler l'état (avec -m state --state NEW,ESTABLISHED) sur la machine locale et autoriser aussi les 3 types d' ICMP?

- Pour les interfaces ponté, elles sont transparentes au niveau des règles? Elles héritent des autorisations du pont?

- Il y a possibilité de donner des règles directement à ces interfaces (Juste au cas ou je voudrais des règles différentes pour le wifi et le réseau câblé (comme par exemple interdire l’accès ssh et le http en wifi)

- Et ajouter une couche avec ebtables serait intéressant pour ajouter des filtres sur mon pont réseau? (Car ebtables est là pour cela non?)
Tout juste sortie de gadoue avec iptables qu'il en rajoute une couche... tongue Mais parce que j'ai trouvé un bon prof, donc j'en profite wink


Mon script


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N MANGLE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -N FILTRE_ICMP_TYPE_N_ACCEPT


# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A INPUT -i lo -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Gestion de la passerelle (Translation d'adresses pour tout ce qui traverse la passerelle)
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion de la passerelle (On autorise tout le traffic)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons SERVEUR-LAN/WLAN
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR-LAN/WLAN (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN/WLAN-SERVEUR
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion LAN/WLAN-SERVEUR (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Gestion INTERNET->SERVEUR (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_INET -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# Gestion SERVEUR->INTERNET (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_INET -m state --state RELATED -j FILTRE_ICMP_TYPE_N_ACCEPT


# Gestion SERVEUR->INTERNET (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type echo-reply -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 80 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (smtp)
$IPT -t filter -A OUTPUT -p tcp --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion SERVEUR->INTERNET (serveur de clefs gpg)
$IPT -t filter -A OUTPUT -p tcp --dport 11371 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 11371 -i $IFACE_INET -m state --state ESTABLISHED -j ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






#### RAW
$IPT -t raw -A RAW_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

#### MANGLE
$IPT -t mangle -A MANGLE_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION2=DROP-MANGLE"
$IPT -t mangle -A MANGLE_LOG_N_DROP -j DROP

#### NAT
$IPT -t nat -A LOG_N_MASQ -m limit --limit 5/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

#### FILTER
$IPT -t filter -A LOG_N_ACCEPT -m limit --limit 5/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT -m limit --limit 60/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type destination-unreachable -m limit --limit 60/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type destination-unreachable -j ACCEPT

$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type time-exceeded -m limit --limit 60/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type time-exceeded -j ACCEPT

$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type parameter-problem -m limit --limit 60/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A FILTRE_ICMP_TYPE_N_ACCEPT -p icmp --icmp-type parameter-problem -j ACCEPT

# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"



sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0

 

#15 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 11-04-2020 18:12:56

dudux2
Salut LaFouine,

LaFouine a écrit :


Pour mes pauvre connaissance j'ajouterai:

Des regles qui autorise que les adresse mac qui son sur une liste pour le wifi c'est une petite securiter en plus. c est pas inviolable  mai sa complique quand meme la tache.
La liste des dns autoriser wifi et lan , certaine application ce gène pas pour aller ou elle veule.  vu que tu n'utilise pas de serveur dns c'est pas forcément possible.


Oui je réfléchissais à un petit script qui activerais le WPS via un bouton poussoir sur une entrée du RPI.

LaFouine a écrit :


Bloquer l'ipv6 contrairment a ce qui ce dit, toute les application a ce jour ou celle que j'utilise 1 seul peux l'utiliser. donc bon .... l'icmp est utile mai pas indispensable pour l'ipv4 mai obligatoir pour l'ipv6.

j'aurai ajouter des limites de tentative par heure, de meme, pour tout ce que tu log j'ai pas vu de limitation (j'ai aussi lu en traver le gros pavé...) le risque c'est le fichier de log qui devien enorme... etc.


Je gère les logs avec des limites en bas de ma fonction start et j'ai activé la compression dans logrotate.d, pour le moment je les laisse causé beaucoup pour contrôler le fonctionnement.

LaFouine a écrit :


J'ai aussi monter ma box mai sous debian. et fait une page dans wiki que tu peux peut etre ,et surment,  ameliorer. c'est pas parfait mai ça peut inspirer smile


Je vais regardé cela, c'est toujours intéressant!

LaFouine a écrit :


Attention utilise iptable-save, et pas ton script pour le lancer car le temp de la lecture les paquet peuve passer si la machine a peux de puissance. (sa ma fait le gag et valu un post)
pour le reste je laisse a ceux qui connaisse mieux que moi le reseaux.


Mon script sert seulement à testé mes règles pendant x temps et "iptables-restore" mes anciennes règles au bout de x temps.
Mais j'utilise bien iptables-save pour sauvegarder mes règles et iptables permanent pour qu'elles se lancent au démarrage.

LaFouine a écrit :


Fait toi plez. tongue


Oh oui je m'éclate!

#16 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 11-04-2020 17:51:20

dudux2
@raleur Ah oui, c'est mieux au niveau de mes logs comme cela. (pour le moment je vois des ICMP Type 3 en accept)
Je savais pas que l'on pouvait factoriser les 3 règles dans une chaine comme cela, je n'ai pas d'erreur, donc je dois être dans le juste...

J'ai vu cela sur le net, c'est mieux de rajouté la source et la destination? Plus on est restrictif, je suppose, plus l'on est sécurisé en cas d'attaque...


iptables -t filter -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -t filter -A INPUT  -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
 



J'aurais pu simplifier encore plus en autorisant les 3 types d'ICMP pour toute les interfaces, mais pour les même raisons ci-dessus, autant restreindre au interface utiliser?

Mon script:


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N MANGLE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -N LOG_ICMP_N_ACCEPT


# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j MANGLE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j MANGLE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j MANGLE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j MANGLE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j MANGLE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j MANGLE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j MANGLE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j MANGLE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Gestion de la passerelle (Translation d'adresses pour tout ce qui traverse la passerelle)
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion de la passerelle (On autorise tout le traffic)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED     -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state RELATED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state RELATED -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_BRDG -m state --state RELATED -j LOG_ICMP_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state RELATED -j LOG_ICMP_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Gestion Internet-Serveur (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT -i $IFACE_INET -m state --state RELATED -j LOG_ICMP_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# Gestion Serveur-Internet (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -o $IFACE_INET -m state --state RELATED -j LOG_ICMP_N_ACCEPT


# connexions Serveur-Internet (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type echo-reply -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 53 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 80 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p udp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (smtp)
$IPT -t filter -A OUTPUT -p tcp --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT -p tcp --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (serveur de clefs gpg)
$IPT -t filter -A OUTPUT -p tcp --dport 11371 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 11371 -i $IFACE_INET -m state --state ESTABLISHED -j ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A C Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






#### RAW
$IPT -t raw -A RAW_LOG_N_DROP -m limit --limit 5/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

#### MANGLE
$IPT -t mangle -A MANGLE_LOG_N_DROP -m limit --limit 5/min -j LOG --log-prefix "ACTION2=DROP-MANGLE"
$IPT -t mangle -A MANGLE_LOG_N_DROP -j DROP

#### NAT
$IPT -t nat -A LOG_N_MASQ -m limit --limit 1/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

#### FILTER
$IPT -t filter -A LOG_N_ACCEPT -m limit --limit 1/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT -m limit --limit 60/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A LOG_ICMP_N_ACCEPT -p icmp --icmp-type destination-unreachable -m limit --limit 1/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A LOG_ICMP_N_ACCEPT -p icmp --icmp-type time-exceeded -m limit --limit 1/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A LOG_ICMP_N_ACCEPT -p icmp --icmp-type parameter-problem -m limit --limit 1/min -j LOG --log-prefix "ACTION7=ACCEPT-ICMP"
$IPT -t filter -A LOG_ICMP_N_ACCEPT -j ACCEPT

# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION8=DROP-POLICY"



sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0

 

#17 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 10-04-2020 12:38:33

dudux2
Non mon script n'était pas encore bon au niveau de l'ICMP

Ce coup ci, je pense que c'est mieux!


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N PRE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT

# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PRE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PRE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j PRE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PRE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Gestion de la passerelle (Translation d'adresses pour tout ce qui traverse la passerelle)
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion de la passerelle (On autorise tout le traffic)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED     -j LOG_N_ACCEPT


# Gestion de la passerelle [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FORWARD  -p icmp --icmp-type destination-unreachable  -i $IFACE_BRDG -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD  -p icmp --icmp-type time-exceeded      -i $IFACE_BRDG -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD  -p icmp --icmp-type parameter-problem        -i $IFACE_BRDG -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A FORWARD  -p icmp --icmp-type destination-unreachable  -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD  -p icmp --icmp-type time-exceeded      -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD  -p icmp --icmp-type parameter-problem        -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT  -p icmp --icmp-type destination-unreachable -i $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type time-exceeded       -i $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type parameter-problem       -i $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"



######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -p icmp --icmp-type destination-unreachable -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p icmp --icmp-type time-exceeded           -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p icmp --icmp-type parameter-problem       -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Gestion Internet-Serveur (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A INPUT  -p icmp --icmp-type destination-unreachable -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type time-exceeded       -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type parameter-problem       -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# Gestion Serveur-Internet (ICMP) [destination-unreachable=type3] & [time-exceeded=type11] & [parameter-problem=type12]
$IPT -t filter -A OUTPUT -p icmp --icmp-type destination-unreachable -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p icmp --icmp-type time-exceeded           -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p icmp --icmp-type parameter-problem       -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Serveur-Internet (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type echo-reply   -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 80  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (smtp)
$IPT -t filter -A OUTPUT -p tcp  --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A C Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






# RAW
$IPT -t raw -A RAW_LOG_N_DROP     -m limit --limit 5/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

# MANGLE
$IPT -t mangle -A PRE_LOG_N_DROP  -m limit --limit 5/min -j LOG --log-prefix "ACTION2=DROP-PREROUTING"
$IPT -t mangle -A PRE_LOG_N_DROP -j DROP

# NAT
$IPT -t nat -A LOG_N_MASQ       -m limit --limit 5/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

# FILTER
$IPT -t filter -A LOG_N_ACCEPT    -m limit --limit 5/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP    -m limit --limit 5/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT    -m limit --limit 5/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION7=DROP-POLICY"



sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0


 

#18 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 09-04-2020 16:02:31

dudux2
Super! Merci beaucoup raleur,

- Je pense que ce coup ci, on est bon!
- Les premiers logs sont concluant jusqu'à présent, je vais continué d'analiser tout cela...
- Il me restera plus que du SNAT à faire au besoin sur mon réseau local.
- J'ai décidé de gardé mon routeur fermé de l'extérieur (enfin pas pour les réponses) vis à vis du serveur ssh et http, donc je pense que je minimise les risques.
- C'est suffisement sécurisé du côté iptables pour toi, pour s'en servir d'une box 4G?

- J’ai désactivé l’ipv6 sur mes interfaces et dans les logiciels. (plus simple lorsque l’on maîtrise pas), est-ce que je doits créer des règles pour tout bloqué en IPV6.  Dans le cas d’un oubli ?

- Pour Fail2Ban, je ne vois plus trop l'intérêt dans la configuration actuelle? Au cas où l'on passerait à travers le parefeu... pour surveiller les accès aux services nginx et ssh et qui bloquerait les Ips qui ne proviendrait pas du réseau local?


- Rhunter peut-être intéresssant à mettre en place lorsque je finaliserais l'installation.


Voici le code final (si je suis un bon élève!)


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP







#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP

# MANGLE
$IPT -t mangle -N PRE_LOG_N_DROP

# NAT
$IPT -t nat -N LOG_N_MASQ

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_REJECT

# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH





echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PRE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PRE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j PRE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PRE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Translation d'adresses pour tout ce qui traverse la passerelle
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Gestion de la passerelle (On autorise tout le traffic)
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED     -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3]
$IPT -t filter -A INPUT  -p icmp --icmp-type destination-unreachable -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [time-exceeded=type11]
$IPT -t filter -A INPUT  -p icmp --icmp-type time-exceeded       -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [parameter-problem=type12]
$IPT -t filter -A INPUT  -p icmp --icmp-type parameter-problem       -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"



######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [destination-unreachable=type3]
$IPT -t filter -A OUTPUT -p icmp --icmp-type destination-unreachable -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [time-exceeded=type11]
$IPT -t filter -A OUTPUT -p icmp --icmp-type time-exceeded           -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Gestion de la passerelle (ICMP) [parameter-problem=type12]
$IPT -t filter -A OUTPUT -p icmp --icmp-type parameter-problem       -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Ne pas casser les connexions déjà établies


echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# connexions Firewall-Internet (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type echo-reply   -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (smtp)
$IPT -t filter -A OUTPUT -p tcp  --dport 587  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 587  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 80  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"







######################################################################
# R E J E T T E  T O U S  L E S  A U T R E S  P A C Q U E T S
######################################################################
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP






# RAW
$IPT -t raw -A RAW_LOG_N_DROP     -m limit --limit 5/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

# MANGLE
$IPT -t mangle -A PRE_LOG_N_DROP  -m limit --limit 5/min -j LOG --log-prefix "ACTION2=DROP-PREROUTING"
$IPT -t mangle -A PRE_LOG_N_DROP -j DROP

# NAT
$IPT -t nat -A LOG_N_MASQ       -m limit --limit 5/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

# FILTER
$IPT -t filter -A LOG_N_ACCEPT    -m limit --limit 5/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -A LOG_N_DROP    -m limit --limit 5/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -A LOG_N_REJECT    -m limit --limit 5/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# FAIL2BAN POLICY
$IPT -t filter -A Fail2Ban-SSH -j RETURN
$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION7=DROP-POLICY"



sleep 5

echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0


 

#19 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 08-04-2020 16:03:16

dudux2
Merci pour ton aide Raleur.

raleur a écrit :


# Short-Description: Firewall deamon
# Description:       Enable service provided by daemon.


Il n'y a aucun démon dans ce script. iptables n'est pas un démon.


En effet, j'ai repris mon ancien script, qui était lancé au démarrage du système auparavant, mais ce n'est plus le cas.
D’où le fait qu'il manque le stop à la fin.
J'ai nettoyé l'entête.

raleur a écrit :


# Bloquer la fragmentation TCP :
$IPT -t mangle -A PREROUTING -f -j PRE_LOG_N_DROP


1) Ce n'est pas de la fragmentation TCP (on dirait plutôt segmentation) mais de la fragmentation IP.
2) Cette règle ne sert à rien puisque le suivi de connexion (conntrack) est activé par les correspondances "state" et la table "nat" et réassemble les fragments avant l'entrée dans la chaîne mangle/PREROUTING. De toute façon bloquer aveuglément les fragments serait une mauvaise idée.


J'ai supprimer la ligne pour la fragmentation IP

raleur a écrit :


# Toutes les connexions qui sortent du LAN-Net sont acceptées
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT


Manque la gestion des types ICMP d'erreur qui doivent être acceptés dans l'état RELATED (destination-unreachable, time-exceeded, parameter-problem). Nécessaire pour le path MTU discovery et le retour de traceroute.


J'ai rajouté l'état RELATED sur les 2 lignes.

raleur a écrit :


# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT


Redondance de l'état ESTABLISHED.


Là je ne maîtrise pas assez (du tout) pour trouver la solution à la redondance...
Ici sur mon réseau local, je devrais sans doute ajouter l'état RELATED aussi? Pour l'ICMP et le FTP


raleur a écrit :


# connexions Firewall-Internet (ping)
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type echo-reply   -i $IFACE_INET -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp --sport 53 -i $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 53 -i $IFACE_INET -j LOG_N_ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp --sport 123 -i $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 123 -i $IFACE_INET -j LOG_N_ACCEPT


Les paquets retour seraient mieux gérés avec l'état ESTABLISHED.


C'est normalement corrigé dans le nouveau script...

raleur a écrit :


fw_save ()
{
  if [ ! -d "/etc/iptables/" ]; then
    apt-get install iptables-persistent -y
    #mkdir -p /etc/iptables/
      echo "Le répertoire /etc/iptables/ à été créer!"
  fi

  if [ -e "/etc/iptables/iptables.rules.ipv4" ]; then
    $IPT-save > /etc/iptables/rules.v4
  else
    touch /etc/iptables/rules.v4
    $IPT-save > /etc/iptables/rules.v4
  fi
}


1) Installer un paquet dans un script d'init, il faut oser ! Surtout avec des règles qui n'autorisent pas HTTP pour accéder aux miroirs, à moins d'avoir un miroir local sur le LAN.
2) iptables-persistent ne risque-t-il pas d'entrer en conflit avec ce script ?
3) Le message affiché est trompeur puisque l'action n'est pas la création du répertoire manquant mais l'installation du paquet iptables-persistent.
4) Si le répertoire n'existe pas, la fonction continue quand même et utilise ce répertoire inexistant -> erreur.
5) A quoi sert le test de présence du fichier iptables.rules.ipv4 puisque dans tous les cas on écrit dans le fichier rules.v4 ?
6) A quoi sert la commande touch puisque de toute façon le fichier va être créé par la redirection s'il n'existe pas ?


Ah oui, j'avoue que cela est de la grosse bidouille que j'avais oublié, que j'ai nettoyé.
Iptables-persistant est bien installé, donc j’exécute juste mon script avec l'action "test" et après un "start" puis "save" pour le rendre définitif et valide au prochain démarrage.
Ah oui je n'avais plus accès au HTTP(S) sur le serveur, c'est ajouter.

raleur a écrit :


    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"


Il n'y a pas d'action "stop" alors que c'est obligatoire pour un script avec Default-Stop non vide.


Oui car je ne lance plus en automatique, donc le stop est inutile, mais c'est sûr tu ne pouvais pas le deviné...


Autres questions:
- Je me suis rendu compte que je ne recevais pas les logs de mes DROP, j'ai donc ajouter les chaînes de ma table FILTRE en DROP après tout mes ACCEPT pour pouvoir récupérer mes DROP dans les fichiers de logs.

- Ma politique de DROP au début ne devrait-elle pas être située après toutes mes règles en ACCEPT, cela me paraît plus logique!?

- Lorsque l'on à une politique en DROP, je suppose que faire un DROP sur les packets INVALID est inutile, que cela est fait automatiquement?

- J'ai trouvé cela sur le net, est-ce correcte au niveau de l'INPUT en udp qui serait inutile?
- Et si je compare avec mon code, son INPUT en tcp est en dport et moi en sport, qui à raison?


# Autoriser les connexions DNS.
-A INPUT -p tcp --dport 53 -j ACCEPT
-A OUTPUT -p tcp --dport 53 -j ACCEPT
# Cette règle est une faille de sécurité en plus d'être inutile.
# -A INPUT -p udp --sport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
 




Mon fichier modifié:


#!/bin/sh
# Provides:          Firewall Rules


# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"

# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z






#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

# RAW
$IPT -t raw -N RAW_LOG_N_DROP
$IPT -t raw -A RAW_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

# MANGLE
$IPT -t mangle -N PRE_LOG_N_DROP
$IPT -t mangle -A PRE_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION2=DROP-PREROUTING"
$IPT -t mangle -A PRE_LOG_N_DROP -j DROP

# NAT
$IPT -t nat -N LOG_N_MASQ
$IPT -t nat -A LOG_N_MASQ -m limit --limit 60/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

# FILTER
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -A LOG_N_ACCEPT -m limit --limit 60/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT

$IPT -t filter -N LOG_N_DROP
$IPT -t filter -A LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP

$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -A LOG_N_REJECT -m limit --limit 60/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# FAIL2BAN POLICY
$IPT -t filter -N Fail2Ban-SSH
#$IPT -t filter -A Fail2Ban-SSH -j RETURN
#$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION7=DROP-POLICY"




echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PRE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PRE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j PRE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PRE_LOG_N_DROP


echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"






######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Translation d'adresses pour tout ce qui traverse la passerelle
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Toutes les connexions qui sortent du LAN-Net sont acceptées
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED,RELATED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED,RELATED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED,RELATED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state ESTABLISHED,RELATED -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED,RELATED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state ESTABLISHED,RELATED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################

# Ne pas casser les connexions déjà établies


echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# connexions Firewall-Internet (ping) [echo-request=type8] et [echo-reply=type0]
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type echo-reply   -i $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (smtp)
$IPT -t filter -A OUTPUT -p tcp  --dport 25  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 25  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
# Cette règle est une faille de sécurité en plus d'être inutile.
#$IPT -t filter -A INPUT  -p udp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 53  -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
# Le tcp en dport?
$IPT -t filter -A INPUT  -p tcp  --sport 53  -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (http/https)
$IPT -t filter -A OUTPUT -p tcp --dport 80  -o $IFACE_INET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 80  -i $IFACE_INET -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 443 -o $IFACE_INET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 443 -i $IFACE_INET -m state --state ESTABLISHED,RELATED -j ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp  --dport 123 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp  --sport 123 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"












# Rejeter tout le reste
$IPT -t filter -A INPUT -j LOG_N_DROP
$IPT -t filter -A FORWARD -j LOG_N_DROP
$IPT -t filter -A OUTPUT -j LOG_N_DROP


# Politique de la table du Filtre sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP











echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
    echo ""
    echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

    echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
    echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
    echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
    $IPT-save > /etc/iptables/rules.v4
}
 
fw_restore ()
{
    $IPT-restore < /etc/iptables/rules.v4
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0


 

#21 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 08-04-2020 11:40:08

dudux2
Oui je préfère travaillé sur le dernier que j'ai posté.
Je voudrais savoir si ce que j'ai fais paraît logique?
Si vous voyez des incohérences, afin d'apprendre et de l'améliorer.
iptables est loin d'être simple.

#22 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 08-04-2020 09:45:35

dudux2
En effet je n'ai pas dû tout comprendre...

Je poste le travail que j'avais fais avant ces modifications, si vous pouviez me guidé pour me dire si j'ai quelque chose de cohérent.

Mon script:


#!/bin/sh
### BEGIN INIT INFO
# Provides:          Firewall Rules
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Firewall deamon
# Description:       Enable service provided by daemon.
### END INIT INFO

# https://geekeries.org/2018/04/logs-iptables/
# https://geekeries.org/2017/12/configuration-avancee-du-firewall-iptables/
# http://www.canonne.net/linux/iptables/firewall.sh.php


###### https://wiki.visionduweb.fr/index.php/Configurer_le_pare-feu_Iptables#Sauvegarder_les_r.C3.A8gles_existantes

######################################################################
# D E F I N I T I O N   D E   V A R I A B L E S
######################################################################
# Variable de couleur shell
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
blue='\033[0;34m'
yellowBold='\033[1;33m'
redBgWhiteBold='\033[1;41m'
greenBgWhiteBold='\033[1;42m'

NC='\033[0m'
OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"


PATH=/sbin:/bin:/usr/sbin:/usr/bin

if ! [ -x /sbin/iptables ]; then
 exit 0
fi


# Commandes
IPT="/sbin/iptables"


# Interface modem 4G
IFACE_INET="wwan0"

# Interface du bridge
IFACE_BRDG="br0"




fw_start()
{
######################################################################
# I N I T I A L I S A T I O N   D U   P A R E F E U
######################################################################

#####################
# On vide les chaines
# On vide les chaines personnalisées
# On réinitialise les compteurs

# Table RAW
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -Z

# Table MANGLE
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -Z

# Table NAT
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

# Table FILTER
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z

# La table FILTRE par défaut sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP






#####################
# Création de nouvelles chaînes
# Pour rediriger les logs
# Dans des fichiers personalisées

$IPT -t raw -N RAW_LOG_N_DROP
$IPT -t mangle -N PRE_LOG_N_DROP
$IPT -t nat -N LOG_N_MASQ
$IPT -t filter -N LOG_N_DROP
$IPT -t filter -N LOG_N_ACCEPT
$IPT -t filter -N LOG_N_REJECT
$IPT -t filter -N Fail2Ban-SSH



echo ""
echo "  - ${green} Initialisation du Parefeu : ${NC} ${OK}"





######################################################################
# * R A W
######################################################################


echo ""
echo "  - ${green} Règles du parefeu ..:: Table RAW ::.. : ${NC} ${OK}"




######################################################################
# * M A N G L E
######################################################################


# Bloquer la fragmentation TCP :
$IPT -t mangle -A PREROUTING -f -j PRE_LOG_N_DROP

# Manque l'explication!
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec SYN et FIN à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PRE_LOG_N_DROP
# Paquet avec SYN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN et RST à la fois
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PRE_LOG_N_DROP
# Paquet avec FIN mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PRE_LOG_N_DROP
# Paquet avec URG mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j PRE_LOG_N_DROP
# Paquet avec PSH mais sans ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 1 <=> XMAS scan dans Nmap
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PRE_LOG_N_DROP
# Paquet avec tous les flags à 0 <=> Null scan dans Nma
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
# Paquet avec FIN,PSH, et URG mais sans SYN, RST ou ACK
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,PSH,URG mais sans ACK ou RST
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j PRE_LOG_N_DROP
# Paquet avec FIN,SYN,RST,ACK,URG à 1 mais pas PSH
$IPT -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PRE_LOG_N_DROP

# Spoofing d’IP source
# Filtrage triviales basées sur les IP sources en dropant tout ce qui arrive d’un réseau privé/réservé
# C’est très peu probable pour un serveur avec uniquement une IP publique sur Internet.
#$IPT -t mangle -A PREROUTING -s 224.0.0.0/8 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 169.254.0.0/16 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 172.16.0.0/12 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 192.0.2.0/24 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 192.168.0.0/16 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 10.0.0.0/8 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 0.0.0.0/8 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s 240.0.0.0/5 -j PRE_LOG_N_DROP
#$IPT -t mangle -A PREROUTING -s #127.0.0.0/8 ! -i lo -j PRE_LOG_N_DROP

echo ""
echo "  - ${green} Règles du parefeu ..:: Table MANGLE ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   M A C H I N E   L O C A L E
######################################################################

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: Serveur Locale ::.. : ${NC} ${OK}"







######################################################################
# G E S T I O N   D E  L A  P A S S E R E L L E
######################################################################

# Translation d'adresses pour tout ce qui traverse la passerelle
$IPT -t nat -A POSTROUTING -o $IFACE_INET -j LOG_N_MASQ

# Toutes les connexions qui sortent du LAN-Net sont acceptées
$IPT -t filter -A FORWARD -i $IFACE_BRDG -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A FORWARD -i $IFACE_INET -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> INTERNET ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N    S E R V E U R  -> L A N / W L A N
######################################################################

# On permet toutes les liaisons firewall-LAN
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT


echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWWAL -> LAN/WLAN ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   L A N / W L A N -> S E R V E U R
######################################################################

#on permet toutes les liaisons LAN-firewall
$IPT -t filter -A INPUT  -i $IFACE_BRDG -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -o $IFACE_BRDG -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: LAN/WLAN -> FIREWALL ::.. : ${NC} ${OK}"




######################################################################
# G E S T I O N   I N T E R N E T -> S E R V E U R
######################################################################



echo ""
echo "  - ${green} Règles du parefeu ..:: INTERNET -> SERVEUR ::.. : ${NC} ${OK}"





######################################################################
# G E S T I O N   S E R V E U R  -> I N T E R N E T
######################################################################

# connexions Firewall-Internet (ping)
$IPT -t filter -A OUTPUT -p icmp --icmp-type echo-request -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p icmp --icmp-type echo-reply   -i $IFACE_INET -j LOG_N_ACCEPT

# connexions Firewall-Internet (dns)
$IPT -t filter -A OUTPUT -p udp --dport 53 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp --sport 53 -i $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 53 -i $IFACE_INET -j LOG_N_ACCEPT

# connexions Firewall-Internet (ntp)
$IPT -t filter -A OUTPUT -p udp --dport 123 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p udp --sport 123 -i $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 123 -o $IFACE_INET -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 123 -i $IFACE_INET -j LOG_N_ACCEPT

# connexions Firewall-Internet (smtp)
$IPT -t filter -A OUTPUT -p tcp --dport 25 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 25 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

# connexions Firewall-Internet (nntp)
$IPT -t filter -A OUTPUT -p tcp --dport 119 -o $IFACE_INET -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -p tcp --sport 119 -i $IFACE_INET -m state --state ESTABLISHED -j LOG_N_ACCEPT

echo ""
echo "  - ${green} Règles du parefeu ..:: FIREWALL -> INTERNET ::.. : ${NC} ${OK}"








# RAW
$IPT -t raw -A RAW_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION1=DROP-RAW"
$IPT -t raw -A RAW_LOG_N_DROP -j DROP

# MANGLE
$IPT -t mangle -A PRE_LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION2=DROP-PREROUTING"
$IPT -t mangle -A PRE_LOG_N_DROP -j DROP

# NAT
$IPT -t nat -A LOG_N_MASQ -m limit --limit 60/min -j LOG --log-prefix "ACTION3=MASQ-NAT"
$IPT -t nat -A LOG_N_MASQ -j MASQUERADE

# FILTER
$IPT -t filter -A LOG_N_ACCEPT -m limit --limit 60/min -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
$IPT -t filter -A LOG_N_ACCEPT -j ACCEPT
$IPT -t filter -A LOG_N_DROP -m limit --limit 60/min -j LOG --log-prefix "ACTION5=DROP-INPUT"
$IPT -t filter -A LOG_N_DROP -j DROP
$IPT -t filter -A LOG_N_REJECT -m limit --limit 60/min -j LOG --log-prefix "ACTION6=REJECT-INPUT"
$IPT -t filter -A LOG_N_REJECT -j REJECT

# FAIL2BAN POLICY
#$IPT -t filter -A Fail2Ban-SSH -j RETURN
#$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION7=DROP-POLICY"



echo ""
echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
$IPT -t raw -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
$IPT -t mangle -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
$IPT -t nat -vnL --line-numbers
echo ""
echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
$IPT -t filter -vnL --line-numbers
echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
echo ""

}

sw_help()
{
  echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
  echo "  - ${red}Utiliser la commande test pour chaque modification, car elle sera active seulement 60 secondes!!!${NC}"
  echo ""
  echo "  - ${green}Un paquet à destination de notre serveur va donc passer dans l’ordre par les tables suivantes  :${NC}"

    echo "  - ${yellow}PREROUTING – raw${NC}"
    echo "  - ${yellow}PREROUTING – mangle${NC}"
    echo "  - ${yellow}PREROUTING – nat${NC}"
    echo "  - ${yellow}INPUT – mangle${NC}"
    echo "  - ${yellow}INPUT – filter${NC}"

  echo "  - ${green}Et si ce paquet ne se fait pas droper par une de ces table, ${NC}"
  echo "  - ${green}et atteint une règle finissant en ACCEPT (puisqu’on a mis une policy DROP sur INPUT),${NC}"
  echo "  - ${green}il sera transféré vers le service réseau demandé.${NC}"
    echo "  - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
    echo "  - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien s’ils sont routés: ${NC}"
    echo "  - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
    echo "  - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
    echo "  - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
    echo ""
    echo "  - ${green}Ceci définit l’action à faire sur les paquets d’une règle inscrite dans la table des règles : ${NC}"
    echo "  - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification n’est envoyée à la source. ${NC}"
    echo "  - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
    echo "  - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
    echo ""
    echo "  - ${green}La définition des attributs pour les règles: ${NC}"
    echo "  - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
    echo "  - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
    echo "  - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
    echo "  - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
    echo "  - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
    echo "  - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
    echo "  - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
    echo "  - ${yellow}-p ${NC}${blue}: protocole ${NC}"
    echo "  - ${yellow}-s ${NC}${blue}: nom d’hôte ou adresse ip ${NC}"
    echo "  - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
    echo "  - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
    echo "  - ${yellow}–dport ${NC}${blue}: numéro port de destination ${NC}"
    echo "  - ${yellow}–sport ${NC}${blue}: numéro du port source ${NC}"
    echo ""
}

######################################################################
# Bloque tout les packets routé et entrant
######################################################################
 
fw_blockAllInput ()
{
$IPT  -t filter -F
$IPT  -t nat -F
$IPT  -t mangle -F
$IPT  -P INPUT DROP
$IPT  -P FORWARD DROP
$IPT  -P OUTPUT ACCEPT
}
 
######################################################################
# Suppression des règles du firewal et on accepte tout
######################################################################
 
fw_clear ()
{
  $IPT  -t filter -F
  $IPT  -t filter -X
  $IPT  -t filter -Z
  $IPT  -t nat -F
  $IPT  -t nat -X
  $IPT  -t nat -Z
  $IPT  -t mangle -F
  $IPT  -t mangle -X
  $IPT  -t mangle -Z
  $IPT  -t raw -F
  $IPT  -t raw -X
  $IPT  -t raw -Z
  $IPT  -P INPUT ACCEPT
  $IPT  -P OUTPUT ACCEPT
  $IPT  -P FORWARD ACCEPT
  echo "  - ${blue}FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]${NC} ${OK}"
  $IPT -t nat -P PREROUTING ACCEPT
  $IPT -t nat -P POSTROUTING ACCEPT
  $IPT -t nat -P OUTPUT ACCEPT
  $IPT -t mangle -P PREROUTING ACCEPT
  $IPT -t mangle -P OUTPUT ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P FORWARD ACCEPT
  $IPT -t mangle -P INPUT ACCEPT
  $IPT -t raw -P OUTPUT ACCEPT
  $IPT -t raw -P PREROUTING ACCEPT
  echo "  - ${blue}ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]${NC} ${OK}"
}


 
fw_save ()
{
  if [ ! -d "/etc/iptables/" ]; then
    apt-get install iptables-persistent -y
    #mkdir -p /etc/iptables/
      echo "Le répertoire /etc/iptables/ à été créer!"
  fi

  if [ -e "/etc/iptables/iptables.rules.ipv4" ]; then
    $IPT-save > /etc/iptables/rules.v4
  else
    touch /etc/iptables/rules.v4
    $IPT-save > /etc/iptables/rules.v4
  fi
}
 
fw_restore ()
{
if [ -e /etc/iptables/rules.v4 ]; then
    $IPT-restore < /etc/iptables/rules.v4
fi
}

######################################################################
# Test the Firewall rules
######################################################################
fw_test ()
{
    fw_save
    fw_clear
    fw_start
    sleep 30
    echo "  - ${green}Restauration des anciennes règles du parefeu...${NC} ${OK}"
    fw_restore
}

case "$1" in
start|restart)
    echo ""
    echo "  - ${green}Démarrage du parfeu...${NC} ${OK}"
    fw_blockAllInput
    fw_start
    echo "  - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} ${OK}"
    # relance fail2ban si installe
    if [ -x /usr/bin/fail2ban-server ]; then
        systemctl restart fail2ban
    fi
   
  echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

blockAllInput)
    echo ""
    echo "  - ${green}Verrouillage du traffic entrant...${NC} ${OK}"
    fw_blockAllInput
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

clear)
    echo ""
    echo "  - ${green}Vide les règles du parefeu...${NC} ${OK}"
    fw_clear
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

test)
    echo ""
    echo "  - ${green}Test des nouvelles règles du parefeu...${NC} ${OK}"
    echo "  - ${green}L'ancienne configuration sera restauré dans 60 secondes...${NC} ${OK}"
    fw_test
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

save)
    echo ""
    echo "  - ${green}Sauvegarde les règles actuelles: ${NC}"
    fw_save
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
restore)
    echo ""
    echo "  - ${green}Restaure les règles sauvegardées: ${NC}"
    fw_restore
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
list)
  echo ""
    echo "  - ${blue}Liste des règles de la tables RAW: ${NC}"
    $IPT -t raw -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables MANGLE: ${NC}"
    $IPT -t mangle -vnL --line-numbers
  echo ""
    echo "  - ${blue}Liste des règles de la tables NAT: ${NC}"
    $IPT -t nat -vnL --line-numbers
    echo ""
    echo "  - ${blue}Liste des règles de la tables FILTER: ${NC}"
    $IPT -t filter -vnL --line-numbers
  echo "${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;

status)
    echo ""
    echo "  - ${green}Liste les ports actuellements ouverts: ${NC}"
    ss -ant
  echo ""
    ;;  
   
help)
    echo ""
    echo "  - ${green}Rappel : ${NC}"
    sw_help
    echo "\n${greenBgWhiteBold}Fait!${NC} ${OK}"
    echo ""
    ;;
   
*)
    echo "  - ${yellow}Usage: $0 {start|blockAllInput|restart|clear|test|list|status|save|restore|help}${NC}"
    echo "  - ${red}Attention blockAllInput bloque tous trafic entrant/sortant!!!${NC}"
    echo "  - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
    exit 1
    ;;
esac
exit 0


 



/etc/iptables/rules.v4


# Generated by xtables-save v1.8.2 on Wed Apr  8 10:28:18 2020
*mangle
:PREROUTING ACCEPT [35:2642]
:INPUT ACCEPT [32:2444]
:FORWARD ACCEPT [3:198]
:OUTPUT ACCEPT [21:2360]
:POSTROUTING ACCEPT [24:2558]
:PRE_LOG_N_DROP - [0:0]
-A PREROUTING -f -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j PRE_LOG_N_DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PRE_LOG_N_DROP
-A PRE_LOG_N_DROP -m limit --limit 1/sec -j LOG --log-prefix "ACTION2=DROP-PREROUTING"
-A PRE_LOG_N_DROP -j DROP
COMMIT
# Completed on Wed Apr  8 10:28:18 2020
# Generated by xtables-save v1.8.2 on Wed Apr  8 10:28:18 2020
*raw
:PREROUTING ACCEPT [35:2642]
:OUTPUT ACCEPT [21:2360]
:RAW_LOG_N_DROP - [0:0]
-A RAW_LOG_N_DROP -m limit --limit 1/sec -j LOG --log-prefix "ACTION1=DROP-RAW"
-A RAW_LOG_N_DROP -j DROP
COMMIT
# Completed on Wed Apr  8 10:28:18 2020
# Generated by xtables-save v1.8.2 on Wed Apr  8 10:28:18 2020
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:LOG_N_MASQ - [0:0]
-A POSTROUTING -o wwan0 -j LOG_N_MASQ
-A LOG_N_MASQ -m limit --limit 1/sec -j LOG --log-prefix "ACTION3=MASQ-NAT"
-A LOG_N_MASQ -j MASQUERADE
COMMIT
# Completed on Wed Apr  8 10:28:18 2020
# Generated by xtables-save v1.8.2 on Wed Apr  8 10:28:18 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOG_N_DROP - [0:0]
:LOG_N_ACCEPT - [0:0]
:LOG_N_REJECT - [0:0]
:Fail2Ban-SSH - [0:0]
-A INPUT -i lo -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p icmp -m icmp --icmp-type 0 -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 53 -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 53 -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p udp -m udp --sport 123 -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 123 -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A INPUT -i wwan0 -p tcp -m tcp --sport 119 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i br0 -o wwan0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A FORWARD -i wwan0 -o br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o lo -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o br0 -m state --state ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p icmp -m icmp --icmp-type 8 -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 53 -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 53 -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p udp -m udp --dport 123 -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 123 -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A OUTPUT -o wwan0 -p tcp -m tcp --dport 119 -m state --state NEW,ESTABLISHED -j LOG_N_ACCEPT
-A LOG_N_DROP -m limit --limit 1/sec -j LOG --log-prefix "ACTION5=DROP-INPUT"
-A LOG_N_DROP -j DROP
-A LOG_N_ACCEPT -m limit --limit 1/sec -j LOG --log-prefix "ACTION4=ACCEPT-INPUT"
-A LOG_N_ACCEPT -j ACCEPT
-A LOG_N_REJECT -m limit --limit 1/sec -j LOG --log-prefix "ACTION6=REJECT-INPUT"
-A LOG_N_REJECT -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Wed Apr  8 10:28:18 2020

 





J'ai quelque chose qui me chiffonne, je n'ai pas encore installer fail2ban et lorsque j'active cette règle, j'ai des choses dans mes logs.
Sans Fai2Ban installé, je devrais rien avoir?
Vous avez une explication?

# FAIL2BAN POLICY
#$IPT -t filter -A Fail2Ban-SSH -j RETURN
#$IPT -t filter -A INPUT -j LOG --log-prefix "ACTION7=DROP-POLICY"




Pourquoi dans le fichier rules.v4, ma tabble RAW est positionné après la table MANGLE?
Une déclaration dans le mauvais ordre quelque part?

#23 Re : Réseau » Paramétrage sysctl.con/d'iptables pour une Box 4G avec un Raspberry » 07-04-2020 22:07:36

dudux2
Je suis en train de remettre au propre mon script de firewall.
Vous en pensez quoi de se démarrage, pour être honnête j'ai essayé de mettre en place les bonnes manières.
Si j'ai bien compris, il faut au maximum évité d'utilisé RELATED, sauf pour l'icmp
Donc dans la première partie j'autorise le loopback et ensuite les connexions établies
Pour finir je Drop tout

Mon soucis c'est que tout les packets reste bloqué dans le "! --state INVALID"

Vous en pensez quoi?

# Nous considérons que la machine elle même est sûre
# et que les processus locaux peuvent communiquer entre eux
# via l'interface locale :
$IPT -t filter -A OUTPUT -o lo -j LOG_N_ACCEPT
$IPT -t filter -A INPUT  -i lo -j LOG_N_ACCEPT

# Permettre à une connexion ouverte de recevoir du trafic en entrée.
$IPT -t filter -A INPUT -m state --state ESTABLISHED -j LOG_N_ACCEPT

# Il est préférable de laisser RELATED autorisé pour l'ICMP.
$IPT -t filter -A INPUT -p icmp -m state --state RELATED -j LOG_N_ACCEPT

# Permettre à une connexion ouverte d'emettre du trafic en sortie.
# -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j LOG_N_ACCEPT
$IPT -t filter -A OUTPUT -m state ! --state INVALID -j LOG_N_ACCEPT

# Nous faisons pointer table FILTRE par défaut sur DROP
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP



Merci d'avance!



Dans les 3/4 des tutos que l'on trouve, il est dit d'autoriser les connexions établies avant de tout mettre en DROP
Et au final, il propose un script comme celui-ci:


#!/bin/bash
 
# Vide la table actuelle (pour avoir des règles propres)
iptables -t filter -F
 
# Vider les règles personnelles (crées par mon fail2ban)
iptables -t filter -X
 
# Interdire toutes connexions entrantes et sortantes
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
 
# Ne pas casser les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Autoriser le loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
 
# Mes règles perso
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
 



Du coup entre le manuel et les scripts, je suis un peut perdu...
Iptables refait le tri avant de rangés les règles dans ces tiroirs?

#25 Re : Matériel » Installation d'un driver rtl8812bu sur mon Rasbian » 07-04-2020 14:26:45

dudux2
Bonjour,

La carte wifi de mon Rpi est complètement instable, je l'ai désactiver et ce matin j'ai installer une nouvelle carte wifi en suivant cette procédure: https://github.com/cilynx/rtl88x2bu

Ma question est si je fais une mise à jour avec rpi-update est-ce que l'installation de mon driver de ce matin va être cassé?

Pied de page des forums

Propulsé par FluxBB