0 Votes

Code source wiki de fail2ban

Modifié par john le 2026/09/20 00:48

Masquer les derniers auteurs
john 1.1 1 Bannissement des adresses après des échecs répétés de connexion SSH.
2
3 == Contexte ==
4
5 Le Raspberry Pi n'est pas exposé directement à Internet. Les accès extérieurs passent par le serveur principal :
6
7 |=Accès|=Chemin|=Adresse vue par le Pi
8 |SSH depuis l'extérieur|Sshwifty (derrière Authelia) sur le serveur principal|Celle du serveur principal
9 |Jellyfin|SWAG sur le serveur principal|Celle du serveur principal ; Jellyfin journalise l'adresse réelle (proxy de confiance)
10 |Sauvegardes Plakar|SFTP depuis le serveur principal|Celle du serveur principal
11
12 La protection de Jellyfin contre la force brute repose sur SWAG, côté serveur principal (prison ##nginx-unauthorized## sur les réponses 401).
13
14 == SSH ==
15
16 Authentification par clé uniquement :
17
18 |=Option|=Valeur
19 |##PasswordAuthentication##|##no##
20 |##KbdInteractiveAuthentication##|##no##
21 |##PubkeyAuthentication##|##yes##
22 |##PermitRootLogin##|##without-password## (root par clé seulement)
23
24 {{code language="bash"}}
25 sudo sshd -T | grep -E '^(passwordauthentication|pubkeyauthentication|permitrootlogin|kbdinteractiveauthentication) '
26 {{/code}}
27
28 == Configuration ==
29
30 |=Fichier|=Contenu
31 |##/etc/fail2ban/jail.d/defaults-debian.conf##|Fourni par Debian : ##banaction = nftables##, prison ##sshd## avec ##backend = systemd##
32 |##/etc/fail2ban/jail.local##|Copie complète de ##jail.conf## avec les réglages ci-dessous
33
34 Ordre de lecture : ##jail.conf##, ##jail.d/*.conf##, puis ##jail.local##. Le ##banaction = iptables-multiport## de ##jail.local## l'emporte donc sur le ##nftables## de Debian. ##iptables## passe par nftables en arrière-plan : les bannissements fonctionnent.
35
36 Réglages en vigueur :
37
38 |=Réglage|=Valeur
39 |Prison active|##sshd## uniquement
40 |Source|Journal systemd (##_SYSTEMD_UNIT=ssh.service##)
41 |##maxretry## / ##findtime##|3 échecs en 10 minutes
42 |##bantime##|10 minutes
43 |##bantime.increment##|Oui, multiplicateurs 1, 2, 4, 8, 16, 32, 64 à chaque récidive
44 |##ignoreip##|Aucune adresse exclue
45 |Action|##iptables-multiport## sur le port SSH
46
47 Les échecs venant de Sshwifty ou de Plakar sont attribués à l'adresse du serveur principal : trois échecs en 10 minutes bannissent le serveur principal du port SSH du Pi, ce qui coupe aussi les sauvegardes pendant la durée du bannissement.
48
49 == Commandes ==
50
51 {{code language="bash"}}
52 sudo fail2ban-client status sshd # adresses bannies
53 sudo fail2ban-client set sshd unbanip <IP> # débannir
54 sudo fail2ban-client get sshd ignoreip # adresses exclues
55 sudo fail2ban-client get sshd actions # action appliquée
56 sudo fail2ban-client -t # tester la configuration
57 sudo journalctl -u fail2ban -n 50
58 {{/code}}
59
60 == Options non utilisées ==
61
62 |=Réglage|=Effet
63 |##ignoreip = 127.0.0.1/8 ::1 <IP_SERVEUR>##|Ne jamais bannir le serveur principal
64 |##[recidive]## avec ##enabled = true##|Bannissement d'une semaine sur tous les ports après des bannissements répétés
65 |##jail.local## réduit aux seules différences|Configuration lisible ; ##jail.conf## reste la référence mise à jour par Debian