← retour aux snippets

nft: ouvrir un port TCP de manière temporaire

Ajouter une règle inet filter input pour autoriser un port donné, puis la retirer proprement.

bash security #nft#firewall#tcp

objectif

Autoriser rapidement un port en entrée (ex: 8080) le temps d’un test, sans perturber les autres règles.

code minimal

# créer table/chaîne si inexistantes
sudo nft add table inet filter 2>/dev/null || true
sudo nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }' 2>/dev/null || true

# autoriser SSH (bonne pratique) et ESTABLISHED
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input tcp dport 22 accept

# ouvrir temporairement 8080
sudo nft add rule inet filter input tcp dport 8080 accept

utilisation

# vérifier
sudo nft list ruleset | sed -n '/table inet filter/,$p' | sed -n '1,80p'

# tester depuis l'extérieur (depuis une autre machine)
nc -vz VOTRE_IP 8080

# retirer la règle (dernier handle pour 8080)
handle="$(sudo nft -a list chain inet filter input | awk '/dport 8080/ {print $(NF)}' | cut -d= -f2 | tail -1)"
[ -n "$handle" ] && sudo nft delete rule inet filter input handle "$handle"

variante(s) utile(s)

# n'autoriser que depuis un /24 précis
sudo nft add rule inet filter input ip saddr 198.51.100.0/24 tcp dport 8080 accept

# fenêtre temporelle (utiliser at/cron pour supprimer plus tard)
echo 'sudo nft delete rule inet filter input handle '"$handle" | at now + 15 minutes

notes

  • travaillez sur une session distante avec prudence; gardez un accès de secours (console/ILO).
  • sauvegardez/chargez les règles via nft list ruleset > rules.nft et nft -f rules.nft.
  • préférez inet pour des règles IPv4/IPv6 unifiées.