• Configurer le pare-feu nftables sur Clear Linux

    Ntfables est bien entendu présent sur Clear mais est moins facilement manipulable tel quel que sur d'autres distributions.
    Je suppose donc que beaucoup utilisent la surcouche firewalld.


    Voici donc une procédure de configuration directe pour nftables (sans surcouche) à adapter en fonction de vos besoins. Il suffit de remplacer le nom des interfaces par les vôtres, et de commenter/décommenter ce qui est nécessaire en fonction des différents cas présentés ici - par défaut ici :  tout ouvert en stateful depuis la machine (vers internet) et tout fermé dans le sens entrant)


    - D'abord installer network-basic si ce n'est pas déjà le cas :

    sudo swupd bundle-add network-basic

    - Créer un fichier de configuration (/etc/nftables.conf) avec le contenu suivant :

    #!/usr/sbin/nft -f
    
    table inet filter {
        chain input {
            type filter hook input priority 0; policy drop;
            ct state established,related accept
            iifname "lo" accept
            iifname { "bridge0", "enp0s31f6", "wlp147s0" } ct state established,related accept

    #---- Autoriser le flux entrant SSH ----#
    # tcp dport 22 accept

    #---- Autoriser les flux entrants pour SSH, SMTP, HTTP, HTTPS, FTP ----#
    # tcp dport { 22, 25, 80, 443, 21 } accept

    #---- Autoriser le flux entrant HTTPS ----#
    # tcp dport 443 accept

    #---- Autoriser le flux entrant ICMP ----#
    # icmp type echo-request accept
    # icmp type echo-reply accept

    #---- Limiter les requêtes SSH entrantes ----#
    # ip saddr { 192.168.1.100, 192.168.1.101 } tcp dport 22 limit rate 5/minute accept

    #---- Autoriser le trafic entrant en IPv6 ----#
    # ip6 saddr { 2001:db8::/32 } accept

    #---- Rejeter plutôt que jeter le trafic entrant sur le port Telnet ----#
    # tcp dport 23 reject
    } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } }

    Explications :
    - ct state established,related accept : Accepte le trafic pour les connexions déjà établies ou liées, ce qui est crucial pour le suivi de connexion en mode stateful.
    - iifname { "bridge0", "enp0s31f6", "wlp147s0" } : Applique les règles pour les interfaces réseau spécifiées (que vous devrez donc modifier en fonction du nom de vos propres interfaces !)
    Ici, nous permettons seulement les paquets qui font partie de connexions déjà établies ou liées sur ces interfaces.
    (En gros, la machine peut communiquer sans restriction avec internet (stateful) sur toutes les interfaces réseaux physiques mais aucune connexion provenant de l'extérieur ne peut passer).

     

    - Créer un service pour le contrôle via systemd
    (et oui, il n'y a pas de service systemd pour nftables actuellement, il faut donc le créer) :
    -- Créer le fichier /etc/systemd/system/nftables.service avec le contenu suivant :

    [Unit]
    Description=Start and load the nftables firewall rules
    After=network-pre.target
    Wants=network-pre.target

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/sbin/nft -f /etc/nftables.conf
    ExecReload=/usr/sbin/nft flush ruleset; /usr/sbin/nft -f /etc/nftables.conf
    ExecStop=/usr/sbin/nft flush ruleset

    [Install]
    WantedBy=multi-user.target

    -- Activer et démarrer le service fraîchement créé :

    sudo systemctl daemon-reload ; sudo systemctl enable nftables ; sudo systemctl start nftables

    -- Vérifier le statut du service :

    sudo systemctl status nftables

    - Afficher les règles actives :

    sudo nft list ruleset

    - Pour éventuellement recharger la configuration après modification :

    sudo nft flush ruleset && sudo nft -f /etc/nftables.conf

     

     

     


    Tags Tags : , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :