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 01/07/2025 à 12:50] – [Analyse plus profonde] 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 254: Ligne 254:
 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.
  
-==== Analyse plus profonde ==== +==== Aménagement du filtre ==== 
-Dans la configurationnous avons autorisé deux essais, cependant, le malveillant n'a eu droit qu'à un seul essai par adresse IP. La raison se trouve dans le filtre ''sshd.conf''.+Certains filtresdont ''sshd.conf'', proposent des modes de fonctionnement. Ces modes agissent sur le choix des expressions régulières utilisées pour le filtrage.
  
-Il faut avoir une bonne habitude des expressions régulières pour espérer maîtriser les filtres  que l'on trouve dans le répertoire ''filter.d''Ces filtres ont pour objectif de fonctionner avec le plus large éventail possible de configurations logicielles+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.
  
-Il se trouve qu'ici, deux lignes de log sont capturées par le filtre, lors d'une authentification ratée, si bien que fail2ban comptabilise deux essais alors qu'il n'y en a eu qu'un seul.+Le mode «normal» sélectionné par défaut est généralement satisfaisant. 
 +===== Analyse plus profonde =====
  
-Les spécialistes des «regexps» pourront facilement régler la question en ajoutant dans la liste un filtre de leur cru et de l'invoquer à la place du filtre «officiel»+ 
 + 
 +==== 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: 01/07/2025 à 12:50 par prof