Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| pratique:informatique:parefeu:nftables [30/01/2025 15:50] – [nftables.conf] grosse maj, mais pas finie Zatalyz | pratique:informatique:parefeu:nftables [25/06/2025 20:40] (Version actuelle) – [Sur hyperviseur exposé sur internet] Zatalyz | ||
|---|---|---|---|
| Ligne 42: | Ligne 42: | ||
| * Les type peuvent être : '' | * Les type peuvent être : '' | ||
| * Les hook peuvent être : '' | * Les hook peuvent être : '' | ||
| + | * S'il n'y a pas la règle '' | ||
| * '' | * '' | ||
| * Peu importe l' | * Peu importe l' | ||
| Ligne 48: | Ligne 49: | ||
| Quelque soit la version, je préfère une politique où je refuse tout, en dehors de ce qui est explicitement autorisé. | Quelque soit la version, je préfère une politique où je refuse tout, en dehors de ce qui est explicitement autorisé. | ||
| + | |||
| ==== Options ==== | ==== Options ==== | ||
| Ligne 82: | Ligne 84: | ||
| * '' | * '' | ||
| - | == Smurf Attack == | + | === Smurf Attack |
| - | C'est une attaque assez sournoise. En français " | + | C'est une attaque assez sournoise. En français " |
| Il y a deux cas de figures. | Il y a deux cas de figures. | ||
| Ligne 92: | Ligne 94: | ||
| ip daddr 224.0.0.1 drop</ | ip daddr 224.0.0.1 drop</ | ||
| - | Mais si on utilise un bridge réseau (cas classique quand on a un hyperviseur), | + | Mais si on utilise un bridge réseau (cas classique quand on a un hyperviseur), |
| - | < | + | |
| - | iifname != " | + | |
| - | iifname != " | + | |
| - | Ou même autoriser explicitement ARP (adresses MAC) et DHCP : | + | |
| - | < | + | |
| - | # Laisser passer ARP (sinon les VM ne pourront pas résoudre les adresses IP en MAC) | + | |
| - | arp accept | + | |
| - | # Laisser passer | + | La solution basique consiste à utiliser le nom du réseau (via un '' |
| - | ip protocol udp th dport 67 accept | + | |
| - | ip protocol udp th dport 68 accept | + | |
| - | # Bloquer les broadcasts/ | + | <code bash># Autoriser ARP (sinon |
| - | iifname | + | meta iifname |
| - | iifname != " | + | # Autoriser DHCP (indispensable avec des VMs clients DHCP) |
| + | meta iifname $IFACES_LAN ip protocol udp udp dport { 67, 68 } accept | ||
| + | # Bloquer le broadcast limité uniquement sur le WAN | ||
| + | ip daddr { 255.255.255.255, 224.0.0.1 | ||
| <WRAP center round info 100%> | <WRAP center round info 100%> | ||
| - | L' | + | L' |
| + | |||
| + | Pour ipv6, ça a encore l'air d' | ||
| </ | </ | ||
| - | ==== Autres éléments de syntaxe | + | === Différence entre saddr et daddr === |
| + | * saddr : " | ||
| + | * daddr : " | ||
| + | |||
| + | === Autres éléments de syntaxe === | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| Je copie des " | Je copie des " | ||
| Ligne 147: | Ligne 149: | ||
| }</ | }</ | ||
| - | On peut aussi définir des variables avec '' | + | On peut aussi définir des variables avec '' |
| - | < | + | < |
| table inet firewall { | table inet firewall { | ||
| - | | + | define tcp_ports = {80, 443} |
| - | type filter hook input priority 0; policy drop; | + | |
| - | tcp dport { $tcp_ports } ct state new accept | + | type filter hook input priority 0; policy drop; |
| + | tcp dport { $tcp_ports } ct state new accept | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| + | === Modulariser : une ou plusieurs chaines/ | ||
| + | Comme expliqué en intro, on peut donner n' | ||
| - | ==== Exemples de fichiers suivant les cas ==== | + | * Une chaine est exécutée si elle a l' |
| + | * Ou si elle a été appelé depuis une autre chaine avec '' | ||
| - | === Machine terminale === | + | Par exemple : |
| + | < | ||
| + | table inet firewall { | ||
| + | chain inbound { | ||
| + | type filter hook input priority 0; policy drop; | ||
| + | jump machinssh | ||
| + | } | ||
| + | chain machinssh { | ||
| + | counter comment " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| - | Premier cas : serveur | + | Pourquoi faire "jump" |
| - | < | + | * Quand une règle doit être appelée plusieurs fois (par exemple pour input ET output) |
| - | # | + | * pour déclarer |
| + | * Pour clarifier les blocs et potentiellement n' | ||
| + | * Il suffit de commenter | ||
| + | |||
| + | Exemple d'architecture avec des fichiers séparés : | ||
| + | <code>/ | ||
| + | ├── 00-definitions.nft | ||
| + | ├── 10-sets.nft | ||
| + | ├── 20-input.nft | ||
| + | ├── 30-fight.nft | ||
| + | ├── 40-confperso.nft | ||
| + | └── 99-main.nft</ | ||
| + | |||
| + | Le nftables.conf ressemblera alors à ceci : | ||
| + | <code bash nftables.conf> | ||
| flush ruleset | flush ruleset | ||
| - | table inet firewall { | + | include "/etc/nftables.d/00-definitions.nft" |
| - | # Règles spécifiques ipv6 | + | include "/etc/nftables.d/10-sets.nft" |
| - | chain inbound_ipv6 { | + | include "/etc/nftables.d/20-input.nft" |
| - | # accept neighbour discovery otherwise connectivity breaks | + | include "/etc/ |
| - | # source : https://wiki.nftables.org/wiki-nftables/index.php/Simple_ruleset_for_a_server | + | include |
| - | icmpv6 type { nd-neighbor-solicit, | + | |
| - | # TODO comprendre ! ICMPv6 packets which must not be dropped, see https://tools.ietf.org/html/ | + | |
| - | meta nfproto ipv6 icmpv6 type { destination-unreachable, | + | |
| - | ip6 saddr fe80::/10 icmpv6 type { 130, 131, 132, 143, 151, 152, 153 } accept | + | |
| - | } | + | |
| - | + | ||
| - | # Règles génériques entrantes | + | |
| - | chain inbound { | + | |
| - | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | + | |
| - | type filter hook input priority 0; policy drop; | + | |
| - | # Autoriser le trafic de paquets | + | |
| - | ct state vmap { established : accept, related : accept, invalid : drop } | + | |
| - | # Autorise le loopback | + | |
| - | iifname | + | |
| - | # Autorise le ping avec une limite pour les abus | + | |
| - | icmp type echo-request limit rate 5/second accept | + | |
| - | # Applique les règles en plus suivant le protocole(ici ipv6, on pourrait ajouter des trucs sur ipv4) | + | |
| - | meta protocol vmap { ip6 : jump inbound_ipv6 } | + | |
| - | # Autoriser certains ports quand les services liés sont actifs (donc à adapter), ici le web et ssh | + | |
| - | tcp dport { 22, 80, 443 } ct state new accept | + | |
| - | # Uncomment to enable logging of denied inbound traffic | + | |
| - | # log prefix "[nftables] Inbound Denied: " counter drop | + | |
| - | # TODO ! count and drop any other traffic | + | |
| - | #counter drop | + | |
| - | } | + | |
| - | # En sortie (output) par défaut ça autorise tout et en théorie c'est ok. | + | |
| - | # forward, nat etc : pas utile dans ce cas de figure. | + | |
| - | } | + | |
| - | </code> | + | Cela permet alors de ne recharger/modifier qu'un seul des fichiers. Ils peuvent même être générés dynamiquement (par des scripts, Fail2ban ou Reaction). |
| - | Si serveur mail : remplacer | + | === Ips martiennes === |
| - | # Autoriser certains ports quand les services liés sont actifs (donc à adapter), ici le web et ssh | + | Quand j'ai lu dans une doc de pare-feu " |
| - | tcp dport { 22, 80, 443 } ct state new accept | + | |
| - | Par | + | |
| - | # Autoriser certains ports quand les services liés sont actifs : web (80/443), ssh (22), | + | |
| - | # smtp (25), SMTP TLS (587), IMAPS (993), Sieve (4190) | + | |
| - | tcp dport { 22, 80, 443, 25, 587, 993, 4190 } ct state new accept | + | |
| + | ^ Plage IPv4 ^ Description | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| - | === Machine proxy, configuration sécuritaire === | + | ^ Plage IPv6 ^ Description |
| - | Cette machine redirige une partie du trafic vers d'autres machines | + | | ':: |
| + | | '::/ | ||
| + | | ':: | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| - | Ici on va desservir l'ip interne (une VM) '' | + | Maintenant, |
| - | <WRAP center round todo 60%> | + | On commence par "ip a" pour voir les interfaces actives |
| - | Faudra améliorer | + | |
| - | </ | + | |
| + | Un exemple sur un hyperviseur xen : | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | |||
| + | ===== Exemples de fichiers suivant les cas ===== | ||
| + | ==== Sur hyperviseur exposé sur internet ==== | ||
| + | C'est abondamment commenté donc ça devrait permettre de s'y retrouver. | ||
| + | |||
| + | Il faut évidement relire, adapter les ip et les ports. | ||
| + | |||
| + | J'ai mis une option : si l' | ||
| + | |||
| + | <WRAP center round important 100%> | ||
| + | Ça < | ||
| + | </ | ||
| - | L' | ||
| <code bash / | <code bash / | ||
| Ligne 229: | Ligne 272: | ||
| flush ruleset | flush ruleset | ||
| - | # Table sur le trafic de type input/ | + | # Table sur le trafic de type input/ |
| + | # De base on rejette tout, sauf ce qui est explicitement autorisé. | ||
| + | # Séparer ipv4 et ipv6 simplifie le travail... | ||
| table inet firewall { | table inet firewall { | ||
| - | | + | |
| - | chain input_ipv6 { | + | # Define |
| - | # accept neighbour discovery otherwise connectivity breaks | + | |
| - | # source : https:// | + | # Le nom de nos interfaces |
| - | icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept | + | |
| - | # TODO comprendre ! ICMPv6 packets which must not be dropped, see https:// | + | |
| - | meta nfproto ipv6 icmpv6 type { destination-unreachable, | + | # ------------------------------ |
| - | ip6 saddr fe80::/10 icmpv6 type { 130, 131, 132, 143, 151, 152, 153 } accept | + | # SETS - alimenter des listes |
| - | } | + | # ------------------------------ |
| - | + | set allowlistsys | |
| - | | + | # Les ip autorisées |
| - | chain input_all | + | # Ip internes |
| - | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | + | |
| - | type filter hook input priority 0; policy drop; | + | |
| - | # Autoriser le trafic de paquets | + | |
| - | ct state vmap { established : accept, related : accept, invalid : drop } | + | |
| - | # Autorise le loopback | + | |
| - | iifname | + | |
| - | # Autorise le ping avec une limite pour les abus | + | |
| - | icmp type echo-request limit rate 5/second accept | + | |
| - | # Applique les règles en plus suivant | + | |
| - | meta protocol vmap { ip6 : jump input_ipv6 } | + | |
| - | | + | |
| - | tcp dport { 22, 80, 443 } ct state new accept | + | |
| - | # Uncomment to enable logging of denied inbound traffic | + | |
| - | # log prefix " | + | |
| - | # TODO ! count and drop any other traffic | + | |
| - | #counter drop | + | |
| - | } | + | |
| - | # Règles génériques sortantes | + | |
| - | chain output { | + | |
| - | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | + | |
| - | type filter hook output priority 0; policy drop; | + | |
| - | | + | |
| - | ct state established accept | + | |
| - | # Autorise le loopback sortant | + | |
| - | oifname " | + | |
| - | # Autorise le ping sortant | + | |
| - | | + | |
| - | # Autoriser d' | + | |
| - | tcp dport { http, https } accept | + | |
| - | udp dport domain accept | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | + | |
| - | type filter hook forward priority 0; policy drop; | + | |
| - | # Autoriser le trafic de paquets " | + | |
| - | ct state established accept | + | |
| - | # transfère le web ? TODO différence daddr/ | + | |
| - | ip daddr 10.10.10.69 tcp dport { http, https } accept | + | |
| - | ip saddr 10.10.10.69 udp dport domain accept | + | |
| - | ip saddr 10.10.10.69 tcp dport { http, https } accept | + | |
| } | } | ||
| - | } | + | # Blocklist : ce qui est bloqué durablement. Alimenté par Reaction/ |
| - | # Table sur le trafic | + | # Interval : permet |
| - | table ip nat { | + | |
| - | | + | type ipv4_addr |
| - | type nat hook prerouting priority 0; policy accept; | + | |
| - | | + | |
| - | tcp dport { http, https } dnat to 10.10.10.69 | + | |
| } | } | ||
| + | set blocklist_v6 { | ||
| + | type ipv6_addr | ||
| + | flags interval | ||
| + | } | ||
| + | # blocage temporaire à court terme en cas d' | ||
| + | # Sert à " | ||
| + | set tempblock_v4 { | ||
| + | type ipv4_addr | ||
| + | flags timeout | ||
| + | timeout 10s | ||
| + | size 1024 | ||
| + | } | ||
| + | set tempblock_v6 { | ||
| + | type ipv6_addr | ||
| + | flags timeout | ||
| + | timeout 10s | ||
| + | size 1024 | ||
| + | } | ||
| + | set martienne_v4 { | ||
| + | # Adresses non-routables ou réservées, | ||
| + | type ipv4_addr | ||
| + | flags interval | ||
| + | elements = { 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/ | ||
| + | } | ||
| + | set martienne_v6 { | ||
| + | type ipv6_addr | ||
| + | flags interval | ||
| + | elements = { ::/128, ::1/128, :: | ||
| + | } | ||
| + | # ------------------------------ | ||
| + | # Autorisations explicites | ||
| + | # TODO : Adapter au réel ;) | ||
| + | # ------------------------------ | ||
| + | chain confperso { | ||
| + | # Autoriser SSH si : | ||
| + | # - source = Bastion1 (externe). mettre son ip, c'est pas 101.1.1.1 | ||
| + | # - OU source dans le LAN 192.168.1.0/ | ||
| + | # SSH ne sera sans doute pas sur le port 22, adapter... | ||
| + | ip saddr @allowlistsys tcp dport 22 ct state new accept | ||
| + | # Autoriser certains ports quand les services liés sont actifs, ici le web | ||
| + | tcp dport { 80, 443 } ct state new accept | ||
| + | # Proxmox : autoriser l’accès à l’interface web uniquement depuis certaines ip (fixes, perso) | ||
| + | ip saddr @allowlistsys tcp dport 8006 accept | ||
| + | tcp dport 8006 drop # Refuser tout le reste | ||
| + | } | ||
| + | | ||
| + | # ------------------------------ | ||
| + | # Règles génériques entrantes | ||
| + | # ------------------------------ | ||
| + | chain input_all { | ||
| + | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | ||
| + | type filter hook input priority 0; policy drop; | ||
| + | | ||
| + | # Vérifie si l'IP est bannie durablement | ||
| + | ip saddr @blocklist_v4 drop | ||
| + | ip6 saddr @blocklist_v6 drop | ||
| + | # Ou dans la liste temporaire | ||
| + | ip saddr @tempblock_v4 drop | ||
| + | ip6 saddr @tempblock_v6 drop | ||
| + | |||
| + | # Autoriser le trafic de paquets " | ||
| + | ct state vmap { established : accept, related : accept, invalid : drop } | ||
| + | | ||
| + | # Autorise le loopback | ||
| + | iifname " | ||
| + | |||
| + | # Spécial ipv6 | ||
| + | # Paquets ICMPv6 qui ne doivent pas être rejetés, voir https:// | ||
| + | ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, | ||
| + | # Protège contre certaines attaques de spoofing en s' | ||
| + | meta iifname $IFACES_LAN ip6 saddr fe80::/10 icmpv6 type { 130, 131, 132, 143, 151, 152, 153 } accept | ||
| + | |||
| + | # Appelle les chaines utiles | ||
| + | jump confperso | ||
| + | jump fight | ||
| - | chain postrout | + | |
| - | | + | |
| - | # Ce qui vient de la VM et qui tente de se connecter au web doit sortir par l'ip de notre proxy | + | # ------------------------------ |
| - | # Sinon on est redirigé sur nous-même... | + | # Mesures pour limiter diverses attaques |
| - | ip saddr 10.10.10.69 snat to 66.66.66.66 | + | # ------------------------------ |
| + | | ||
| + | | ||
| + | ip saddr 127.0.0.0/8 iifname != " | ||
| + | ip6 saddr ::1 iifname != " | ||
| + | # Bloquer les IP martiennes si elles ne viennent pas de LAN | ||
| + | | ||
| + | ip6 saddr @martienne_v6 iifname != $IFACES_LAN drop | ||
| + | # Attention suivant le réseau local, il faut peut-être autoriser des ip explicitement (définir un set au besoin) | ||
| + | |||
| + | |||
| + | # Autorise le ping avec une limite pour les abus / Protection contre ICMP Flood (Ping Flood) | ||
| + | # Ping normal : 1/s. Attention des outils de monitorings peuvent être plus rapides (jusque 20/s). | ||
| + | # Ping IPv4 | ||
| + | | ||
| + | ip protocol icmp icmp type echo-request limit rate over 10/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | # Ping IPv6 | ||
| + | ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 10/second accept | ||
| + | ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate over 10/second add @tempblock_v6 { ip6 saddr } counter log prefix " | ||
| + | |||
| + | # Protection contre UDP Flood | ||
| + | ip protocol udp limit rate over 200/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | ip6 nexthdr udp limit rate over 200/second add @tempblock_v6 { ip6 saddr } counter log prefix " | ||
| + | |||
| + | # Protection contre le DNS Query Flood | ||
| + | ip protocol udp th dport 53 limit rate over 50/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | |||
| + | # Protection contre le SYN Flood, ACK Flood & RST Flood | ||
| + | # Mais on ne rejette pas tout, faut bien que les serveurs puissent se saluer | ||
| + | # Les attaques sur syn sont plus fréquentes, | ||
| + | # mais ack bénéficie de valeurs plus hautes (jusque 200) | ||
| + | # Bref à adapter au trafic réel (=> monitoring !) | ||
| + | tcp flags syn,rst limit rate over 100/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | tcp flags ack limit rate over 100/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | |||
| + | ip6 nexthdr tcp tcp flags syn,rst limit rate over 50/second add @tempblock_v6 { ip6 saddr } counter log prefix " | ||
| + | ip6 nexthdr tcp tcp flags ack limit rate over 100/second add @tempblock_v6 { ip6 saddr } counter log prefix " | ||
| + | |||
| + | # Protection contre le Smurf Attack | ||
| + | # Autoriser ARP (sinon les VMs se retrouvent isolées) | ||
| + | meta iifname $IFACES_LAN ether type arp accept | ||
| + | # Autoriser DHCP (indispensable avec des VMs clients DHCP) | ||
| + | meta iifname $IFACES_LAN ip protocol udp udp dport { 67, 68 } accept | ||
| + | # Bloquer le broadcast limité uniquement sur le WAN | ||
| + | ip daddr { 255.255.255.255, 224.0.0.1 } iifname != $IFACES_LAN drop | ||
| + | |||
| + | # Protection contre le SMTP/Email Bombing | ||
| + | ip protocol tcp th dport 25 limit rate over 10/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | |||
| + | # Protection contre les botnets sur les ports fréquemment ciblés (peuvent servir de honeypot) | ||
| + | # tcp : telnet (23, 2323), UPnP (7547) | ||
| + | # udp : Memcached (11211), SSDP (1900), LDAP (389), NTP (123), IoT (48101) | ||
| + | ip protocol tcp th dport { 23, 2323, 7547 } add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | ip protocol udp th dport { 11211, 1900, 389, 123, 48101 } add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | |||
| + | # Bloquer les scans de ports en cas de tentative de connexion rapide sur des ports multiples | ||
| + | ip protocol tcp limit rate over 50/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | ip protocol udp limit rate over 50/second add @tempblock_v4 { ip saddr } counter log prefix " | ||
| + | } | ||
| + | # ------------------------------ | ||
| + | # Règles génériques sortantes | ||
| + | # ------------------------------ | ||
| + | |||
| + | chain output { | ||
| + | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | ||
| + | type filter hook output priority 0; policy drop; | ||
| + | # Autoriser le trafic de paquets " | ||
| + | ct state established, | ||
| + | # Autorise le loopback sortant | ||
| + | oifname " | ||
| + | # Autorise le ping sortant | ||
| + | ip protocol icmp accept | ||
| + | ip6 nexthdr icmpv6 accept | ||
| + | # Autoriser d' | ||
| + | tcp dport { http, https } accept | ||
| + | udp dport domain accept | ||
| + | tcp dport domain accept | ||
| + | # Autoriser msmtp à envoyer ses mails | ||
| + | tcp dport { 25, 465, 587 } ct state new, | ||
| + | # Autoriser NTP | ||
| + | udp dport { 53, 123 } ct state new, | ||
| + | # Log de ce qui est bloqué | ||
| + | log prefix "[NFT OUTPUT DROP] " flags all drop | ||
| + | |||
| + | } | ||
| + | |||
| + | # ------------------------------ | ||
| + | # Règles génériques " | ||
| + | # ------------------------------ | ||
| + | chain forward { | ||
| + | # Par défaut, on rejette tout à moins de suivre une des règles ci-dessous. | ||
| + | type filter hook forward priority 0; policy drop; | ||
| + | # Autoriser le trafic de paquets " | ||
| + | ct state established accept | ||
| } | } | ||
| } | } | ||
| + | |||
| </ | </ | ||
| + | === Ports suivant les services === | ||
| - | ==== Vérification et mise en place ==== | + | Si serveur mail : remplacer |
| + | # Autoriser certains ports quand les services liés sont actifs (donc à adapter), ici le web et ssh | ||
| + | tcp dport { 22, 80, 443 } ct state new accept | ||
| + | Par | ||
| + | # Autoriser certains ports quand les services liés sont actifs : web (80/443), ssh (22), | ||
| + | # smtp (25), SMTP TLS (587), IMAPS (993), Sieve (4190) | ||
| + | tcp dport { 22, 80, 443, 25, 587, 993, 4190 } ct state new accept | ||
| + | |||
| + | === Todo === | ||
| + | Faire plus modulaire. Adapter quand c'est pour une VM, un dédié... Mais la config de l' | ||
| + | |||
| + | |||
| + | ===== Vérification et mise en place ===== | ||
| Pour vérifier ce fichier une fois modifié, avant de le mettre en place : | Pour vérifier ce fichier une fois modifié, avant de le mettre en place : | ||
| Ligne 323: | Ligne 511: | ||
| sudo nft list ruleset | sudo nft list ruleset | ||
| - | ==== Sources ==== | + | Pour recharger le fichier de configuration : |
| + | nft -f / | ||
| + | |||
| + | Admirer en temps réel les bans ? Pour admirer le contenu d'un set (par exemple tempblock_v4), | ||
| + | sudo watch -n 1 'nft list set inet firewall tempblock_v4' | ||
| + | |||
| + | Et pour les logs, si on a activé les [[pratique: | ||
| + | tail -f / | ||
| + | ===== Sources | ||
| * https:// | * https:// | ||