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 | ||
| 140-pare-feu-fail2ban:20-config-sshd [le 30/06/2025 à 16:34] – [Tests] prof | 140-pare-feu-fail2ban:20-config-sshd [le 05/07/2025 à 14:25] (Version actuelle) – [fail2ban a-t-il de la mémoire ?] prof | ||
|---|---|---|---|
| Ligne 164: | Ligne 164: | ||
| <span class=" | <span class=" | ||
| juin 30 18:23:01 trixie-nft sshd[750]: Timeout before authentication for connection from 192.168.60.76 to 192.168.60.5, | juin 30 18:23:01 trixie-nft sshd[750]: Timeout before authentication for connection from 192.168.60.76 to 192.168.60.5, | ||
| - | |||
| </ | </ | ||
| + | L' | ||
| + | |||
| + | Sur le serveur, la configuration «nftables» a été dynamiquement mise à jour par fail2ban. Nous pouvons observer le résultat: | ||
| < | < | ||
| + | < | ||
| + | |||
| table inet filter { | table inet filter { | ||
| chain input_ipv4 { | chain input_ipv4 { | ||
| Ligne 186: | Ligne 190: | ||
| } | } | ||
| } | } | ||
| - | table inet f2b-table { | + | <span class=" |
| set addr6-set-sshd { | set addr6-set-sshd { | ||
| type ipv6_addr | type ipv6_addr | ||
| Ligne 196: | Ligne 200: | ||
| elements = { 192.168.60.76 } | elements = { 192.168.60.76 } | ||
| } | } | ||
| + | |||
| + | chain f2b-chain { | ||
| + | type filter hook input priority filter - 1; policy accept; | ||
| + | tcp dport 22 ip6 saddr @addr6-set-sshd reject with icmpv6 port-unreachable | ||
| + | tcp dport 22 ip saddr @addr-set-sshd reject with icmp port-unreachable | ||
| + | } | ||
| + | }</ | ||
| + | </ | ||
| + | |||
| + | Fail2ban a créé une nouvelle table : «table inet f2b-table» | ||
| + | Dans cette table, il a créé: | ||
| + | * deux «sets»: | ||
| + | * **set addr6-set-sshd** destiné à collectionner les adresses IPv6 à bloquer; | ||
| + | * **set addr-set-sshd** la même chose, mais pour les adresses IPv4. | ||
| + | * une chaîne «chain f2b-chain» qui par défaut accepte tout sauf: | ||
| + | * les adresses IPv6 collectées qui n'ont plus accès au port 22, | ||
| + | * la même chose, mais pour les adresses IPv4. | ||
| + | Du bon vieux temps d' | ||
| + | < | ||
| + | -A f2b-ssh -s 80.240.252.168/ | ||
| + | -A f2b-ssh -s 157.254.54.192/ | ||
| + | -A f2b-ssh -s 8.222.168.120/ | ||
| + | -A f2b-ssh -s 65.108.211.181/ | ||
| + | -A f2b-ssh -s 154.209.4.36/ | ||
| + | -A f2b-ssh -s 157.10.252.119/ | ||
| + | -A f2b-ssh -s 14.103.114.20/ | ||
| + | .... | ||
| + | </ | ||
| + | Et le même procédure pour les adresses IPv6. Si les «sets» existaient déjà avec iptables, fail2ban ne les utilisait pas (l' | ||
| + | |||
| + | La technique exposée avec fail2ban et nftables sur la trixie donne un résultat bien plus concis. | ||
| + | |||
| + | Et du temps nécessaire à la rédaction de ces lignes, les 5 minutes de bannissement sont passées, et désormais: | ||
| + | < | ||
| + | < | ||
| + | |||
| + | table inet f2b-table { | ||
| + | <span class=" | ||
| + | type ipv6_addr | ||
| + | } | ||
| + | |||
| + | set addr-set-sshd { | ||
| + | type ipv4_addr | ||
| + | }</ | ||
| chain f2b-chain { | chain f2b-chain { | ||
| Ligne 204: | Ligne 252: | ||
| } | } | ||
| </ | </ | ||
| + | Si la structure ajoutée par fail2ban est toujours intacte, les sets ont quant-à-eux été purgés. | ||
| + | |||
| + | ==== Aménagement du filtre ==== | ||
| + | Certains filtres, dont '' | ||
| + | |||
| + | Des explications, | ||
| + | < | ||
| + | <span class=" | ||
| + | # Usage example (for jail.local): | ||
| + | # | ||
| + | # mode = extra | ||
| + | # # or another jail (rewrite filter parameters of jail): | ||
| + | # | ||
| + | # | ||
| + | #</ | ||
| + | <span class=" | ||
| + | </ | ||
| + | Hélas, la maîtrise de ces modes suppose non seulement celle des expressions régulières, | ||
| + | |||
| + | Le mode «normal» sélectionné par défaut est généralement satisfaisant. | ||
| + | ===== Analyse plus profonde ===== | ||
| + | |||
| + | |||
| + | |||
| + | ==== fail2ban a-t-il de la mémoire ? ==== | ||
| + | Nous allons considérablement rallonger la durée de bannissement, | ||
| + | findtime = 10minutes | ||
| + | bantime = 1hour | ||
| + | Le fait de changer la configuration oblige à la faire relire par fail2ban. La commande «fail2ban-client» permet de le faire de façon élégante: | ||
| + | < | ||
| + | < | ||
| + | |||
| + | OK | ||
| + | </ | ||
| + | («OK» étant le signe que la commande a bien été prise en compte). | ||
| + | |||
| + | |||
| + | Le même pirate va re-tenter sa chance, va se faire de nouveau coincer. Nous retrouvons son adresse dans le «set» idoine: | ||
| + | < | ||
| + | table inet f2b-table { | ||
| + | set addr6-set-sshd { | ||
| + | type ipv6_addr | ||
| + | elements = { 2a01: | ||
| + | } | ||
| + | |||
| + | chain f2b-chain { | ||
| + | type filter hook input priority filter - 1; policy accept; | ||
| + | tcp dport 22 ip6 saddr @addr6-set-sshd reject with icmpv6 port-unreachable | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Reboot de la machine et contrôle de l' | ||
| + | < | ||
| + | < | ||
| + | |||
| + | table inet f2b-table { | ||
| + | set addr6-set-sshd { | ||
| + | type ipv6_addr | ||
| + | elements = { 2a01: | ||
| + | } | ||
| + | |||
| + | chain f2b-chain { | ||
| + | type filter hook input priority filter - 1; policy accept; | ||
| + | tcp dport 22 ip6 saddr @addr6-set-sshd reject with icmpv6 port-unreachable | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | fail2ban a bonne mémoire. | ||
| + | |||
| + | Dans la foulée, nous pouvons également vérifier qu'une commande comme: | ||
| + | systemctl restart fail2ban | ||
| + | n' | ||
| + | ==== L' | ||
| + | Cet outil sert essentiellement à contrôler le fonctionnement du serveur fail2ban. Le manuel fournit (en anglais) tous les détails de son utilisation. | ||
| + | Voici quelques-uns de ses usages: | ||
| + | * **fail2ban-client ping** permet de savoir si le serveur est vivant. S'il l'est, il répond simplement: «pong», | ||
| + | * **fail2ban-client status** retourne l' | ||
| + | |- Number of jail: 1 | ||
| + | `- Jail list: | ||
| + | * **fail2ban-client start/ | ||
| + | * **fail2ban-client get < | ||
| + | * **fail2ban-client unban <IP> ... < | ||
| + | * etc. | ||
| + | |||
Surveillance de sshd: Dernière modification le: 30/06/2025 à 16:34 par prof