INITIALISATION SÉCURISÉE...

Tutoriel Expert : Pare-feu Avancé et Anti-Scan avec nftables

Introduction : De `iptables` à `nftables`

Le pare-feu est le premier rempart de la sécurité d'un serveur. Alors qu'`iptables` a longtemps été la norme, `nftables` offre une syntaxe plus simple, une meilleure performance et une gestion unifiée pour IPv4 et IPv6. Ce guide expert détaille la construction d'un ruleset `nftables` sécurisé et résilient pour un serveur de production.

Section 1 : La Fondation - Politique "Default Deny"

Le principe fondamental d'un pare-feu sécurisé est de tout interdire par défaut et de n'autoriser que le trafic explicitement nécessaire.

Le fichier de configuration principal se trouve dans /etc/nftables.conf.


#!/usr/sbin/nft -f

# Vide l'ensemble des règles existantes
flush ruleset

# La table 'inet' gère à la fois IPv4 et IPv6
table inet filter {
    # Chaîne pour le trafic entrant destiné au serveur
    chain input {
        type filter hook input priority 0;
        policy drop; # POLITIQUE PAR DÉFAUT : TOUT REJETER

        # Accepter le trafic déjà établi ou lié (essentiel pour un pare-feu stateful)
        ct state established,related accept

        # Accepter le trafic sur l'interface de loopback (localhost)
        iif lo accept

        # Rejeter les paquets invalides pour nettoyer les logs
        ct state invalid drop

        # Permettre le ping (ICMP echo request)
        ip protocol icmp icmp type echo-request accept
        ip6 nexthdr icmpv6 icmpv6 type echo-request accept

        # Autoriser les connexions SSH (sur le port personnalisé) et web
        tcp dport { 2222, 80, 443 } accept
    }

    # Chaîne pour le trafic qui ne fait que transiter par le serveur (ex: routeur)
    chain forward {
        type filter hook forward priority 0;
        policy drop; # On bloque tout par défaut
    }

    # Chaîne pour le trafic sortant, initié par le serveur lui-même
    chain output {
        type filter hook output priority 0;
        policy accept; # On autorise tout le trafic sortant pour commencer
    }
}
        

Pour appliquer ces règles : sudo nft -f /etc/nftables.conf. Pour qu'elles persistent après un redémarrage : sudo systemctl enable nftables.service.

Section 2 : Utilisation des `sets` pour une Gestion Efficace

Les `sets` sont une des grandes forces de `nftables`. Ils permettent de créer des listes (d'IPs, de ports...) qui peuvent être mises à jour dynamiquement et utilisées dans les règles, ce qui est bien plus performant que des centaines de règles individuelles.


table inet filter {
    # Déclaration d'un set nommé 'blacklist' qui contiendra des adresses IPv4
    set blacklist {
        type ipv4_addr
        flags dynamic
    }

    chain input {
        # ... autres règles ...

        # Bloquer toute adresse IP présente dans le set 'blacklist'
        ip saddr @blacklist drop

        # ... autres règles ...
    }
}
        

Vous pouvez ensuite ajouter des IPs à ce set à la volée, sans recharger tout le ruleset :
sudo nft add element inet filter blacklist { 1.2.3.4, 5.6.7.8 }

Section 3 : Stratégies Actives Anti-Scan et Anti-DoS

Nous pouvons utiliser `nftables` pour détecter et bloquer automatiquement les comportements malveillants.

Section 4 : Journalisation (Logging) et Filtrage en Sortie

La visibilité et le contrôle du trafic sortant sont des aspects souvent négligés mais cruciaux.

> [SYSTEM] Accès niveau root détecté.
> [MESSAGE] Excellence en infrastructure & sécurité confirmée.
> [STATUS] Portfolio opérationnel, non régressif, visuellement optimisé.
> [COMMAND] Respect +++