Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
iptables-essentials — Iptables Essentials : Règles et commandes de pare-feu courantes. | Kitploit
Outils/GitHubGitHub/trimstray/iptables-essentials
Audit de ConfigurationSécurité RéseauApprentissage et ÉducationRessources Organisées
GitHubtrimstray/iptables-essentials

iptables-essentials

Iptables Essentials : Règles et commandes de pare-feu courantes.

Voir le dépôt
1.6k2892il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Iptables Essentials : Règles et commandes courantes de pare-feu


Pull Requests Licence MIT


☑️ À FAIRE

  • Ajouter des exemples de configuration Iptables utiles
  • Ajouter une configuration utile des paramètres du noyau (sysctl)
  • Ajouter des liens vers des ressources externes utiles
  • Ajouter des exemples de configuration avancée, commandes, règles

Table des matières

  • Outils pour vous aider à configurer Iptables
  • Manuels/Procédures/Tutoriels
  • Configuration utile des paramètres du noyau (sysctl)
    • rp_filter
    • log_martians
    • send_redirects
    • accept_source_route
    • accept_redirects
    • tcp_syncookies
    • icmp_echo_ignore_broadcasts
    • ip_forward
  • Comment ça marche ?
  • Règles Iptables
    • Sauvegarder les règles
      • Basé sur Debian
      • Basé sur RedHat
    • Lister toutes les règles iptables actives avec verbose
    • Lister toutes les règles iptables actives avec numérotation des lignes et verbose
    • Afficher toutes les règles iptables actives
    • Lister les règles sous forme de tableaux pour la chaîne INPUT
    • Afficher toutes les spécifications de règles dans la chaîne INPUT
    • Afficher les compteurs de paquets et la taille agrégée
    • Afficher les règles des chaînes INPUT ou OUTPUT avec numérotation des lignes et verbose
    • Supprimer une règle par chaîne et numéro
    • Supprimer une règle par spécification
    • Vider toutes les règles, supprimer toutes les chaînes et tout accepter
    • Vider toutes les chaînes
    • Vider une seule chaîne
    • Insérer des règles de pare-feu
    • Autoriser les connexions loopback
    • Autoriser les connexions entrantes établies et apparentées
    • Autoriser les connexions sortantes établies
    • Interne vers Externe
    • Rejeter les paquets invalides
    • Bloquer une adresse IP
    • Bloquer une adresse IP et rejeter
    • Bloquer les connexions vers une interface réseau
    • Autoriser tout SSH entrant
    • Autoriser SSH entrant depuis une adresse IP ou un sous-réseau spécifique
    • Autoriser SSH sortant
    • Autoriser Rsync entrant depuis une adresse IP ou un sous-réseau spécifique
    • Autoriser tout HTTP entrant
    • Autoriser tout HTTPS entrant
    • Autoriser tout HTTP et HTTPS entrant
    • Autoriser MySQL depuis une adresse IP ou un sous-réseau spécifique
    • Autoriser MySQL vers une interface réseau spécifique
    • PostgreSQL depuis une adresse IP ou un sous-réseau spécifique
    • Autoriser PostgreSQL vers une interface réseau spécifique
    • Bloquer les e-mails SMTP sortants
    • Autoriser tout SMTP entrant
    • Autoriser tout IMAP entrant
    • Autoriser tout IMAPS entrant
    • Autoriser tout POP3 entrant
    • Autoriser tout POP3S entrant
    • Rejeter les adresses réseau privées sur l'interface publique
    • Rejeter tout le trafic sortant vers les réseaux Facebook
    • Journaliser et rejeter les paquets
    • Journaliser et rejeter les paquets avec un nombre limité d'entrées de journal
    • Rejeter ou accepter le trafic depuis une adresse MAC
    • Bloquer ou autoriser la requête ping ICMP
    • Spécifier plusieurs ports avec multiport
    • Équilibrage de charge avec random* ou nth*
    • Limiter le nombre de connexions avec limit et iplimit*
    • Maintenir une liste des connexions récentes pour correspondance
    • Correspondance avec une string* dans la charge utile d'un paquet
    • Règles basées sur le temps avec time*
    • Correspondance de paquets basée sur les valeurs TTL
    • Protection contre le balayage de ports
    • Protection contre le brute-force SSH
    • Protection contre les attaques SYN flood
      • Atténuation des SYN floods avec SYNPROXY
    • Bloquer les nouveaux paquets qui ne sont pas SYN
    • Forcer la vérification des paquets fragmentés
    • Paquets XMAS
    • Rejeter tous les paquets NULL
    • Bloquer les valeurs MSS inhabituelles
    • Bloquer les paquets avec des drapeaux TCP falsifiés
    • Bloquer les paquets provenant de sous-réseaux privés (usurpation)
  • Exemples de configuration avancée
    • Gestion de paquets en Python avec la cible NFQUEUE
      • ACCEPTER tous les paquets d'une source spécifique sur (filter:INPUT) et REJETER tout le reste
      • Écrire votre propre script de port knocking pour sécuriser l'accès SSH

  • Outils pour vous aider à configurer Iptables

      :small_orange_diamond: Shorewall - outil avancé de configuration de passerelle/pare-feu pour GNU/Linux.
      :small_orange_diamond: Firewalld - fournit un pare-feu géré dynamiquement.
      :small_orange_diamond: UFW - outil de configuration de pare-feu par défaut pour Ubuntu.
      :small_orange_diamond: FireHOL - offre une configuration simple et puissante pour tous les besoins de pare-feu et de contrôle de trafic Linux.

    Manuels/Procédures/Tutoriels

      :small_orange_diamond: Meilleures pratiques : iptables - par Major Hayden
      :small_orange_diamond: Un guide approfondi d'Iptables, le pare-feu Linux
      :small_orange_diamond: Fonctionnalités avancées de netfilter/iptables
      :small_orange_diamond: Pare-feux Linux avec iptables
      :small_orange_diamond: Déboguer iptables et les pièges courants du pare-feu ?
      :small_orange_diamond: Procédure de hacking Netfilter
      :small_orange_diamond: Limitation de débit par IP avec iptables

    Configuration utile des paramètres du noyau (sysctl)

    rp_filter

    Désactiver la triangulation de routage. Répondre aux requêtes sur la même interface, pas une autre. Protège également contre l'usurpation d'adresse IP.```bash cat << EOF >> /etc/sysctl.d/40-custom.conf net/ipv4/conf/all/rp_filter = 1 EOF

    root@kitploit:~
    - [rp_filter et la sécurité Linux LPIC-3](https://www.theurbanpenguin.com/rp_filter-and-lpic-3-linux-security/)
    - [Paramètres rp_filter du noyau Linux (filtrage de chemin inverse)](https://www.slashroot.in/linux-kernel-rpfilter-settings-reverse-path-filtering)
    - [Filtrage de chemin inverse](http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.kernel.rpf.html)
    
    ##### log_martians
    
      > _Activer la journalisation des paquets avec des adresses IP mal formées._```bash
    cat << EOF >> /etc/sysctl.d/40-custom.conf
    net/ipv4/conf/all/log_martians = 1
    EOF
    
    • Quelle est l'utilité de la journalisation des paquets martiens ?
    send_redirects

    Désactive l'envoi de tous les paquets ICMP redirigés IPv4 sur toutes les interfaces.```bash cat << EOF >> /etc/sysctl.d/40-custom.conf net/ipv4/conf/all/send_redirects = 0 EOF

    root@kitploit:~
    - [Désactiver le routage source](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-server_security-disable-source-routing)
    - [Que sont les redirections ICMP et doivent-elles être bloquées?](https://askubuntu.com/questions/118273/what-are-icmp-redirects-and-should-they-be-blocked)
    
    ##### accept_source_route
    
      > _Désactiver les paquets routés par la source (paquets avec l'option Strict Source Route (SSR) ou Loose Source Routing (LSR) définie)._```bash
    cat << EOF >> /etc/sysctl.d/40-custom.conf
    net/ipv4/conf/all/accept_source_route = 0
    EOF
    
    • Désactiver le routage source
    • Le système ne doit pas accepter les paquets routés par la source IPv4 par défaut.
    accept_redirects

    Désactiver l'acceptation des redirections ICMP.```bash cat << EOF >> /etc/sysctl.d/40-custom.conf net/ipv4/conf/all/accept_redirects = 0 EOF

    root@kitploit:~
    - [Que sont les redirections ICMP et doivent-elles être bloquées ?](https://askubuntu.com/questions/118273/what-are-icmp-redirects-and-should-they-be-blocked)
    - [Le système d'exploitation Red Hat Enterprise Linux doit ignorer les messages de redirection du protocole de contrôle de messages Internet (ICMP) version 4 (IPv4).](https://www.stigviewer.com/stig/red_hat_enterprise_linux_7/2018-11-28/finding/V-73175)
    
    ##### tcp_syncookies
    
      > _Activer les protections contre les inondations SYN (protection contre les attaques par déni de service (DOS))._```bash
    cat << EOF >> /etc/sysctl.d/40-custom.conf
    net/ipv4/tcp_syncookies = 1
    EOF
    
    • Durcir votre pile TCP/IP contre les attaques SYN Flood
    • Linux : Activer la protection par cookie TCP SYN
    • Meilleure alternative pour tcp_syncookies sous Linux
    icmp_echo_ignore_broadcasts

    Désactiver la réponse aux pings broadcast.```bash cat << EOF >> /etc/sysctl.d/40-custom.conf net/ipv4/icmp_echo_ignore_broadcasts = 1 EOF

    root@kitploit:~
    - [À quoi sert la diffusion ICMP ?](https://superuser.com/questions/306065/what-is-icmp-broadcast-good-for)
    - [Le système ne doit pas répondre aux ICMPv4 envoyés à une adresse de diffusion.](https://www.stigviewer.com/stig/red_hat_enterprise_linux_6/2018-11-28/finding/V-38535)
    
    ##### ip_forward
    
      > _Activer le routage IP. Requis si votre pare-feu protège un réseau, NAT inclus._```bash
    cat << EOF >> /etc/sysctl.d/40-custom.conf
    net/ipv4/ip_forward = 1
    EOF
    
    • Introduction aux routeurs
    • Comment activer le forwarding IP sous Linux
    • Qu’est-ce que le forwarding IP du noyau ?

    Comment ça marche ?

    Master

    Règles Iptables

    Sauvegarde des règles

    Distributions basées sur Debian```bash

    netfilter-persistent save

    root@kitploit:~
    ###### Basé sur RedHat```bash
    service iptables save
    

    Lister toutes les règles iptables actives avec verbose```bash

    iptables -n -L -v

    root@kitploit:~
    #### Lister toutes les règles iptables actives avec les lignes numérotées et en mode verbeux```bash
    iptables -n -L -v --line-numbers
    

    Afficher toutes les règles iptables actives```bash

    iptables -S

    root@kitploit:~
    #### Lister les règles sous forme de tableaux pour la chaîne INPUT```bash
    iptables -L INPUT
    

    Imprimer toutes les spécifications de règles dans la chaîne INPUT```bash

    iptables -S INPUT

    root@kitploit:~
    #### Afficher les comptages de paquets et la taille agrégée```bash
    iptables -L INPUT -v
    

    Pour afficher les règles de chaîne INPUT ou OUTPUT avec numéros de ligne et verbose```bash

    iptables -L INPUT -n -v iptables -L OUTPUT -n -v --line-numbers

    root@kitploit:~
    #### Supprimer une règle par chaîne et numéro```bash
    iptables -D INPUT 10
    

    Supprimer une règle par spécification```bash

    iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

    root@kitploit:~
    #### Vider toutes les règles, supprimer toutes les chaînes, et tout accepter```bash
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    
    iptables -t nat -F
    iptables -t mangle -F
    iptables -F
    iptables -X
    

    Vider toutes les chaînes```bash

    iptables -F

    root@kitploit:~
    #### Vider une seule chaîne```bash
    iptables -F INPUT
    

    Insérer les règles de pare-feu```bash

    iptables -I INPUT 2 -s 202.54.1.2 -j DROP

    root@kitploit:~
    #### Autoriser les connexions loopback```bash
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    

    Autoriser les connexions entrantes établies et liées```bash

    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    root@kitploit:~
    #### Autoriser les connexions sortantes établies```bash
    iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Interne vers Externe```bash

    iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

    root@kitploit:~
    #### Supprimer les paquets invalides```bash
    iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
    

    Bloquer une adresse IP```bash

    iptables -A INPUT -s 192.168.252.10 -j DROP

    root@kitploit:~
    #### Bloquer et Adresse IP et Rejeter```bash
    iptables -A INPUT -s 192.168.252.10 -j REJECT
    

    Bloquer les connexions vers une interface réseau```bash

    iptables -A INPUT -i eth0 -s 192.168.252.10 -j DROP

    root@kitploit:~
    #### Autoriser tout SSH entrant```bash
    iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser SSH entrant depuis une adresse IP ou un sous-réseau spécifique```bash

    iptables -A INPUT -p tcp -s 192.168.240.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser SSH sortant```bash
    iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser le Rsync entrant depuis une adresse IP ou un sous-réseau spécifique```bash

    iptables -A INPUT -p tcp -s 192.168.240.0/24 --dport 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser tout le trafic HTTP entrant```bash
    iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser tout le HTTPS entrant```bash

    iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser tout le trafic HTTP et HTTPS entrant```bash
    iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser MySQL à partir d'une adresse IP ou d'un sous-réseau spécifique```bash

    iptables -A INPUT -p tcp -s 192.168.240.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser MySQL sur une interface réseau spécifique```bash
    iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    PostgreSQL depuis une adresse IP ou un sous-réseau spécifique```bash

    iptables -A INPUT -p tcp -s 192.168.240.0/24 --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser PostgreSQL à une interface réseau spécifique```bash
    iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Bloquer le courrier SMTP sortant```bash

    iptables -A OUTPUT -p tcp --dport 25 -j REJECT

    root@kitploit:~
    #### Autoriser tout le SMTP entrant```bash
    iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser tous les IMAP entrants```bash

    iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser tous les IMAPS entrants```bash
    iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Autoriser tout le POP3 entrant```bash

    iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    root@kitploit:~
    #### Autoriser tout POP3S entrant```bash
    iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    

    Supprimer l'adresse de réseau privé sur l'interface publique```bash

    iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

    root@kitploit:~
    #### Bloquer tout le trafic sortant vers les réseaux Facebook
    
    Obtenir l'AS Facebook :```bash
    whois -h v4.whois.cymru.com " -v $(host facebook.com | grep "has address" | cut -d " " -f4)" | tail -n1 | awk '{print $1}'
    

    Déposer:```bash for i in $(whois -h whois.radb.net -- '-i origin AS32934' | grep "^route:" | cut -d ":" -f2 | sed -e 's/^[ \t]*//' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | cut -d ":" -f2 | sed 's/$/;/') ; do

    iptables -A OUTPUT -s "$i" -j REJECT

    done

    root@kitploit:~
    #### Journaliser et Supprimer les Paquets```bash
    iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
    iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
    

    Par défaut, tout est enregistré dans le fichier /var/log/messages :```bash tail -f /var/log/messages grep --color 'IP SPOOF' /var/log/messages

    root@kitploit:~
    #### Journaliser et abandonner les paquets avec un nombre limité d'entrées de journal```bash
    iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
    iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
    

    Refuser ou accepter le trafic provenant d'une adresse MAC```bash

    iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT

    root@kitploit:~
    #### Bloquer ou autoriser ICMP Ping Request```bash
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
    

    Spécifier plusieurs ports avec `multiport````bash

    iptables -A INPUT -i eth0 -p tcp -m state --state NEW -m multiport --dports ssh,smtp,http,https -j ACCEPT

    root@kitploit:~
    #### Équilibrage de charge avec `random*` ou `nth*````bash
    _ips=("172.31.250.10" "172.31.250.11" "172.31.250.12" "172.31.250.13")
    
    for ip in "${_ips[@]}" ; do
      iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 0 \
        -j DNAT --to-destination ${ip}:80
    done
    

    ou```bash _ips=("172.31.250.10" "172.31.250.11" "172.31.250.12" "172.31.250.13")

    for ip in "${_ips[@]}" ; do iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m random --average 25
    -j DNAT --to-destination ${ip}:80 done

    root@kitploit:~
    #### Limiter le nombre de connexions avec `limit` et `iplimit*````bash
    iptables -A FORWARD -m state --state NEW -p tcp -m multiport --dport http,https -o eth0 -i eth1 \
        -m limit --limit 20/hour --limit-burst 5 -j ACCEPT
    

    ou```bash iptables -A INPUT -p tcp -m state --state NEW --dport http -m iplimit --iplimit-above 5 -j DROP

    root@kitploit:~
    #### Maintenir une liste des connexions récentes à comparer```bash
    iptables -A FORWARD -m recent --name portscan --rcheck --seconds 100 -j DROP
    iptables -A FORWARD -p tcp -i eth0 --dport 443 -m recent --name portscan --set -j DROP
    

    Correspondance avec un string* dans la charge utile d'un paquet```bash

    iptables -A FORWARD -m string --string '.com' -j DROP iptables -A FORWARD -m string --string '.exe' -j DROP

    root@kitploit:~
    #### Règles basées sur le temps avec `time*````bash
    iptables -A FORWARD -p tcp -m multiport --dport http,https -o eth0 -i eth1 \
        -m time --timestart 21:30 --timestop 22:30 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT
    

    Correspondance de paquets basée sur les valeurs TTL```bash

    iptables -A INPUT -s 1.2.3.4 -m ttl --ttl-lt 40 -j REJECT

    root@kitploit:~
    #### Protection contre le scan de ports```bash
    iptables -N port-scanning
    iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
    iptables -A port-scanning -j DROP
    

    Protection contre le brute-force SSH```bash

    iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --set iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

    root@kitploit:~
    #### Protection contre le Syn-flood```bash
    iptables -N syn_flood
    
    iptables -A INPUT -p tcp --syn -j syn_flood
    iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
    iptables -A syn_flood -j DROP
    
    iptables -A INPUT -p icmp -m limit --limit  1/s --limit-burst 1 -j ACCEPT
    
    iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP:
    iptables -A INPUT -p icmp -j DROP
    
    iptables -A OUTPUT -p icmp -j ACCEPT
    
    Atténuer les SYN Floods avec SYNPROXY```bash

    iptables -t raw -A PREROUTING -p tcp -m tcp --syn -j CT --notrack iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460 iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

    root@kitploit:~
    #### Bloquer les nouveaux paquets qui ne sont pas SYN```bash
    iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
    

    ou```bash iptables -t mangle -A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP

    root@kitploit:~
    #### Vérification des paquets Force Fragments```bash
    iptables -A INPUT -f -j DROP
    

    XMAS packets```bash

    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

    root@kitploit:~
    #### Supprimer tous les paquets NULL```bash
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    

    Bloquer les valeurs MSS inhabituelles```bash

    iptables -t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP

    root@kitploit:~
    #### Bloquer les paquets avec des flags TCP invalides```bash
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,FIN FIN -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP
    iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    

    Bloquer les paquets des sous-réseaux privés (Spoofing)```bash

    _subnets=("224.0.0.0/3" "169.254.0.0/16" "172.16.0.0/12" "192.0.2.0/24" "192.168.0.0/16" "10.0.0.0/8" "0.0.0.0/8" "240.0.0.0/5")

    for _sub in "${_subnets[@]}" ; do iptables -t mangle -A PREROUTING -s "$_sub" -j DROP done iptables -t mangle -A PREROUTING -s 127.0.0.0/8 ! -i lo -j DROP

    root@kitploit:~
    ## Exemples de configuration avancée
    
    ### Gestion des paquets en Python à l'aide de la cible NFQUEUE
    
      > _Cette cible transmet le paquet à l'espace utilisateur à l'aide du gestionnaire nfnetlink_queue. Le paquet est placé dans la file d'attente identifiée par son numéro de file sur 16 bits. L'espace utilisateur peut inspecter et modifier le paquet si souhaité. L'espace utilisateur doit alors abandonner ou réinjecter le paquet dans le noyau._
    
    #### ACCEPTER tous les paquets provenant d'une source spécifique sur (filter:INPUT) et DROP tout le reste
    
      > _Cette règle transmet tous les paquets filter:INPUT à la file 1 avec la cible NFQUEUE._```bash
    iptables -A INPUT -j NFQUEUE --queue-num 1
    

    Script pour se lier à netfilter queue 1 et traiter les paquets.```python #!/usr/bin/python3

    from netfilterqueue import NetfilterQueue from scapy.all import *

    def packetanalyzer(pkt): ip=IP(pkt.get_payload()) if(ip.src=="192.168.122.1"): print(f"New packet from {ip.src}") pkt.accept() else: pkt.drop()

    nfqueue=NetfilterQueue() nfqueue.bind(1, packetanalyzer) nfqueue.run()

    root@kitploit:~
    #### Écrivez votre propre script de port knocking pour sécuriser l'accès ssh
    
    > _DROP toutes les requêtes ssh et envoyez des requêtes secrètes de port vers l'espace utilisateur avec la cible NFQUEUE._```bash
    iptables -t filter -I INPUT -p tcp --dport 22 -j DROP
    iptables -t raw -I PREROUTING -p tcp --sport 65534 --dport 65535 -j NFQUEUE --queue-num 1
    

    Ce script capture les paquets de la file d'attente netfilter 1 et vérifie SOURCEPORT et SECRETPORT pour le port knocking et autorise la source à se connecter à ssh pendant EXPIRETIME, par défaut 30 minutes.```python #!/usr/bin/python3

    from os import system from netfilterqueue import NetfilterQueue from scapy.layers.inet import IP from time import time

    SOURCEPORT=65534 SECRETPORT=65535 EXPIRETIME=30 ALLOWED={}

    def portknocking(pkt): packet=IP(pkt.get_payload()) currtime=time() for item in list(ALLOWED): if(currtime-ALLOWED[item] >= EXPIRETIME*60): del ALLOWED[item] if(packet.sport==SOURCEPORT and packet.dport==SECRETPORT and packet.src not in ALLOWED): print(f"Port {packet.dport} knocked by {packet.src}:{packet.sport}") system(f"iptables -I INPUT -p tcp --dport 22 -s {packet.src} -j ACCEPT") system(f"echo 'iptables -D INPUT -p tcp --dport 22 -s {packet.src} -j ACCEPT' | at now + {EXPIRETIME} minutes") ALLOWED[packet.src]=time() pkt.drop()

    nfqueue=NetfilterQueue() nfqueue.bind(1, portknocking)

    try: nfqueue.run() except KeyboardInterrupt: print("\nExit with Keyboard Interrupt")

    root@kitploit:~
    > _Pour frapper le port et autoriser les connexions ssh depuis votre ordinateur, exécutez simplement cette commande :_```bash
    nc -p 65534 SERVER 65535
    
    Télécharger l’outil