Outils pour utilisateurs

Outils du site


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
140-pare-feu-fail2ban:20-config-sshd [le 30/06/2025 à 17:06] – [Tests] prof140-pare-feu-fail2ban:20-config-sshd [le 05/07/2025 à 14:25] (Version actuelle) – [fail2ban a-t-il de la mémoire ?] prof
Ligne 253: Ligne 253:
 </pre></html> </pre></html>
 Si la structure ajoutée par fail2ban est toujours intacte, les sets ont quant-à-eux été purgés. 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 ''sshd.conf'', proposent des modes de fonctionnement. Ces modes agissent sur le choix des expressions régulières utilisées pour le filtrage.
 +
 +Des explications, plus ou moins sibyllines, peuvent se trouver dans le fichier de filtre lui-même. Pour ''sshd.conf'', nous trouvons:
 +<html><pre class="code">
 +<span class="txtb"># Parameter "mode": normal (default), ddos, extra or aggressive (combines all)
 +# Usage example (for jail.local):
 +#   [sshd]
 +#   mode = extra
 +#   # or another jail (rewrite filter parameters of jail):
 +#   [sshd-aggressive]
 +#   filter = sshd[mode=aggressive]
 +#</span>
 +<span class="hly">mode = normal</span>
 +</pre></html>
 +Hélas, la maîtrise de ces modes suppose non seulement celle des expressions régulières, mais également celle des [[https://fail2ban.readthedocs.io/en/latest/filters.html|règles de création des filtres]]. Si le mode «ddos» peut laisser supposer qu'il s'intéresse essentiellement aux attaques par déni de service distribuées, le mode «extra» est plus obscur.
 +
 +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, pour vérifier ce qu'il se passerait pour les adresses bannies en cas de redémarrage de l'hôte:
 +  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:
 +<html>pre class="code">
 +<b>fail2ban reload sshd</b>
 +
 +OK
 +</pre></html>
 +(«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:
 +<code>
 +table inet f2b-table {
 + set addr6-set-sshd {
 + type ipv6_addr
 + elements = { 2a01:e0a:875:b1d0:f80d:77c3:5e30:243a }
 + }
 +
 + 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
 + }
 +}
 +</code>
 +Reboot de la machine et contrôle de l'état du pare-feu. Nous retrouvons bien le bannissement:
 +<html><pre class="code">
 +<b>nft list table inet f2b-table</b>
 +
 +table inet f2b-table {
 + set addr6-set-sshd {
 + type ipv6_addr
 + elements = { 2a01:e0a:875:b1d0:f80d:77c3:5e30:243a }
 + }
 +
 + 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
 + }
 +}
 +</pre></html>
 +
 +fail2ban a bonne mémoire.
 +
 +Dans la foulée, nous pouvons également vérifier qu'une commande comme:
 +  systemctl restart fail2ban
 +n'efface pas pour autant sa mémoire.
 +==== L'outil «fail2ban-client» ====
 +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'état du serveur. exemple:\\ <code>Status
 +|- Number of jail: 1
 +`- Jail list: ssh</code>
 +  * **fail2ban-client start/stop/reload <JAIL>** permet de démarrer, arrêter, recharger la configuration d'une prison,
 +  * **fail2ban-client get <JAIL> banned** retourne la liste des adresses IP bannies dans la prison indiquée. Exemple: \\  <code>['1.202.223.2', '101.126.14.37', '101.126.151.131', '101.126.81.188', '101.126.88.203', '101.126.89.164', '101.126.91.34', '101.36.108.134', '101.36.122.23', '101.36.231.231', '102.140.97.134', '102.210.80.6', '102.215.218.114', '103.106.194.74', '103.112.54.86', '103.113.105.228', '103.116.177.252', '103.117.56.152', '103.120.227.88', '103.123.227.244', '103.137.194.125', '103.139.192.247']</code>Notons que le résultat est sous la forme d'un tableau python (fail2ban est écrit en python).
 +  * **fail2ban-client unban <IP> ... <IP>** Permet de sortir une liste d'adresses IP de prison, quelle que soit sa prison.
 +  * etc.
  
Surveillance de sshd: Dernière modification le: 30/06/2025 à 17:06 par prof