Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pratique:informatique:parefeu:nftables [02/06/2025 16:22] – [Sur hyperviseur exposé sur internet] Zatalyzpratique:informatique:parefeu:nftables [27/08/2026 14:09] (Version actuelle) – [Vérification et mise en place] Zatalyz
Ligne 11: Ligne 11:
 Plus d'infos ici : https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables Plus d'infos ici : https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables
  
 +Comment savoir ce qu'il y a sur le serveur ? Simplement en essayant les commandes ''nft'' et ''iptables'' (et autant tester deux autres classiques frontend). Si elles existent, ça répond vite à la question. 
 +<code>
 +sudo nft list ruleset
 +sudo iptables -L -n
 +sudo ufw status
 +sudo firewall-cmd --state
 +</code>
 +
 +La commande suivante indique ce que la commande iptable fait réellement : 
 +  sudo update-alternatives --display iptables
 +
 +La réponse sera certainement : 
 +
 +<code>iptables - mode automatique
 +  le lien de la meilleure version est /usr/sbin/iptables-nft
 + le lien pointe actuellement sur /usr/sbin/iptables-nft
 +  le lien iptables est /usr/sbin/iptables
 +  le lien secondaire iptables-restore est /usr/sbin/iptables-restore
 +  le lien secondaire iptables-save est /usr/sbin/iptables-save
 +/usr/sbin/iptables-legacy - priorité 10
 + lien secondaire iptables-restore : /usr/sbin/iptables-legacy-restore
 + lien secondaire iptables-save : /usr/sbin/iptables-legacy-save
 +/usr/sbin/iptables-nft - priorité 20
 + lien secondaire iptables-restore : /usr/sbin/iptables-nft-restore
 + lien secondaire iptables-save : /usr/sbin/iptables-nft-save</code>
 +
 +=> cela indique que ''iptable'' essayera de fonctionner en mode surcouche à nft. **Ça ne veux pas dire que le paquet permettant de gérer nft directement est installé**, cependant. 
 +
 +<code>sudo apt update
 +sudo apt install nftables</code>
 ===== nftables.conf ===== ===== nftables.conf =====
 Ce fichier ''/etc/nftables.conf'' est un peu l'équivalent du fichier  de conf de "iptable-persistant". Il faut quand même déclarer qu'il faut le charger automatiquement, mais une fois fait, il va lire les règles là lors du redémarrage du serveur.  Ce fichier ''/etc/nftables.conf'' est un peu l'équivalent du fichier  de conf de "iptable-persistant". Il faut quand même déclarer qu'il faut le charger automatiquement, mais une fois fait, il va lire les règles là lors du redémarrage du serveur. 
Ligne 446: Ligne 476:
         type filter hook output priority 0; policy drop;         type filter hook output priority 0; policy drop;
         # Autoriser le trafic de paquets "etablished" et associés, supprimer les paquets non valides         # Autoriser le trafic de paquets "etablished" et associés, supprimer les paquets non valides
-        ct state established accept+        ct state established,related accept
         # Autorise le loopback sortant         # Autorise le loopback sortant
         oifname "lo" accept         oifname "lo" accept
Ligne 455: Ligne 485:
         tcp dport { http, https } accept         tcp dport { http, https } accept
         udp dport domain accept         udp dport domain accept
-        +        tcp dport domain accept 
 +        # Autoriser msmtp à envoyer ses mails 
 +        tcp dport { 25, 465, 587 } ct state new,established accept 
 +        # Autoriser NTP 
 + udp dport { 53, 123 } ct state new,established accept 
 +        # Log de ce qui est bloqué 
 +        log prefix "[NFT OUTPUT DROP] " flags all drop 
 +       
     }     }
  
Ligne 496: Ligne 533:
   * -f : indique le fichier à lire (ici l'emplacement par défaut sur debian).    * -f : indique le fichier à lire (ici l'emplacement par défaut sur debian). 
  
-Une fois qu'on a configuré son fichier +Avant de redémarrer, une astuce utile de glorf : mettre ce bout dans son ''.bashrc'' :  
-  sudo systemctl enable nftables.service +<code>function test_nftables { 
-  sudo service nftables start+    systemctl restart nftables || systemctl status nftables 
 +    echo "post" 
 +    read -p "press any key, or nft will be flushed" -t 30 
 +    if [ $? -eq 0 ]; then 
 +        echo -e "\nKeeping nft ruleset" 
 +    else 
 +        echo -e "\nRemoving nft ruleset" 
 +        nft flush ruleset 
 +    fi 
 +}</code> 
 + 
 +Puis l'appeler avec la commande ''test_nftables'' (potentiellement en étant déjà root. C'est l'équivalent de ''sudo systemctl enable nftables.service && sudo service nftables start'' mais sans risque de s'autobannir en cas de souci.
  
  
Ligne 504: Ligne 552:
   sudo nft list ruleset   sudo nft list ruleset
  
 +Pour recharger le fichier de configuration : 
 +  nft -f /etc/nftables.conf
 +
 +Et pour les logs, si on a activé les [[pratique:informatique:systemd_error#avoir_des_vrais_journaux_de_log|logs lisibles]] (sinon, débrouillez vous avec journalctl) :
 +  tail -f /var/log/kern.log 
 +
 +==== Bannir ====
 +Admirer en temps réel les bans ? Pour admirer le contenu d'un set (par exemple tempblock_v4), c'est 
 +  sudo watch -n 1 'nft list set inet firewall tempblock_v4'
 +
 +Pour bannir une ip en la mettant dans un set précis : 
 +  sudo nft add element inet firewall blocklist_v4 { 1xx.1xx.1.1xx }
 +
 +  * ''add element'' : c'est assez clair
 +  * ''inet firewall'' parce que ma table s'appelle firewall
 +  * ''blocklist_v4'' : le nom du set
 +
 +Pour voir l'état du set : 
 +  sudo nft list set inet firewall blocklist_v4
 +
 +Pour supprimer une seule ip du set : 
 +  sudo nft delete element inet firewall blocklist_v4 { 1xx.1xx.1.1xx }
 +
 +Pour vider tout le set : 
 +  sudo nft flush set inet firewall blocklist_v4
 ===== Sources ===== ===== Sources =====
  
pratique/informatique/parefeu/nftables.1748874161.txt.gz · Dernière modification : 02/06/2025 16:22 de Zatalyz