#!/bin/bash ## Script iptables by BeAvEr. ## Règles iptables. ## On flush iptables. iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X ## On drop tout le trafic entrant. iptables -P INPUT DROP ## On drop tout le trafic sortant. iptables -P OUTPUT DROP ## On drop le forward. iptables -P FORWARD DROP ## On drop les requêtes ICMP. ## Votre machine ne répondra plus aux requêtes ping sur votre réseau local. iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # Autorise les messages ICMP "Destination Unreachable" (type 3) # Nécessaire pour recevoir les erreurs liées à nos propres connexions # sortantes (ex: PMTUD - découverte du MTU du chemin), sans quoi les # connexions TCP/UDP peuvent se bloquer silencieusement (ex: HTTPS/QUIC). iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT # Autorise les messages ICMP "Time Exceeded" (type 11) # Utilisé notamment par traceroute et signalé quand un paquet expire # en transit (TTL=0) ; utile pour le diagnostic réseau et pour éviter # que des erreurs de routage légitimes soient bloquées. iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT ## On accepte le Multicast (mDNS/Bonjour, découverte imprimante, Chromecast...). iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT ## DHCP client : indispensable pour obtenir/renouveler une IP en DHCP. ## sudo ss -tulnpa |grep :68 ## -> udp ESTAB 0 0 192.168.1.37%wlp3s0:68 ## -> 192.168.1.254:67 users:(("NetworkManager",pid=904,fd=26)). iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT ## Rejette les paquets dans un état de connexion invalide (INVALID). # Il s'agit généralement de paquets malformés, incohérents, hors contexte # ou ne correspondant à aucune connexion suivie par conntrack. Cette règle # permet d'écarter rapidement une partie du trafic anormal ou suspect. iptables -A INPUT -m conntrack --ctstate INVALID -j DROP ## Dropper silencieusement tous les paquets broadcastés. iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP ## Permettre à une connexion ouverte de recevoir du trafic en entrée. iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ## Permettre à une connexion ouverte de recevoir du trafic en sortie. iptables -A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT ## On accepte la boucle locale en entrée. iptables -I INPUT -i lo -j ACCEPT ## On log les paquets en entrée. iptables -A INPUT -j LOG ## On log les paquets forward. iptables -A FORWARD -j LOG exit 0