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:30-autres-filtres [le 02/07/2025 à 17:41] – [Apache] prof140-pare-feu-fail2ban:30-autres-filtres [le 14/07/2025 à 14:29] (Version actuelle) – [Postfix] prof
Ligne 1: Ligne 1:
 ====== Surveillance des autres services ====== ====== Surveillance des autres services ======
 ===== Apache ===== ===== Apache =====
 +==== Les filtres ====
 +
 Pour apache, c'est plus compliqué. Il gère ses propres logs dans ''/var/log/apache2'', les erreurs étant relevées dans le fichier ''error.log''. Pour apache, c'est plus compliqué. Il gère ses propres logs dans ''/var/log/apache2'', les erreurs étant relevées dans le fichier ''error.log''.
  
Ligne 13: Ligne 15:
 apache-common.conf     apache-noscript.conf apache-common.conf     apache-noscript.conf
 </pre></html> </pre></html>
-Il n'est pas question d'activer par défaut tous ces filtres. «apache-noscript» est probablement à étudier en priorité. Cependant, il faut avoir présent à l'esprit que les robots d'indexation peuvent légitimement rechercher certains scripts. Il faut donc plutôt s'intéresser aux adresses IP qui cherchent dans un laps de temps relativement court différents scripts.+Il n'est pas question d'activer par défaut tous ces filtres. «apache-noscript» est probablement à étudier en priorité. Cependant, il faut avoir présent à l'esprit que les robots d'indexation peuvent légitimement rechercher certains scripts dans leur recherches d'indexation. Il reste donc nécessaire de garder un œil sur l'activité du filtre mis en place.
  
 Une configuration comme celle-ci peut être envisagée: Une configuration comme celle-ci peut être envisagée:
-<code>+<html><pre class="code">
 [apache-noscript] [apache-noscript]
 enabled = true enabled = true
Ligne 23: Ligne 25:
 logpath = /var/log/apache*/*error.log logpath = /var/log/apache*/*error.log
 maxretry = 3 maxretry = 3
-bantime = 1hour</code> +bantime = 1hour 
-action = %(action_mwl)s +<span class="bhly">action = %(action_mwl)s</span> 
-</code>+</pre></html> 
 +L'action choisie permettra, en cas de bannissement d'une IP, de vérifier plus facilement si l'action est justifiée. 
 +==== Un exemple ==== 
 +Notre hacker malformé va chercher sur notre serveur de test des scripts réputés faiblards dans le très réputé CMS «Wordpress», un script nommé «sms_send» présent sur certains routeurs... 
 + 
 +fail2ban réagit en bannissant l'intrus: 
 +<html><pre class="code"> 
 +<b>nft list tables</b> 
 + 
 +table inet filter 
 +table inet f2b-table 
 +root@trixie-nft:/etc/fail2ban/jail.d# nft list table inet f2b-table 
 +table inet f2b-table { 
 +<span class="bhlo"> set addr6-set-apache-noscript { 
 + type ipv6_addr 
 + elements = { 2a01:e0a:875:b1d0:5054:ff:fefe:c099 } 
 + }</span> 
 + 
 + chain f2b-chain { 
 + type filter hook input priority filter - 1; policy accept; 
 + <span class="bhlo">tcp dport { 80, 443 } ip6 saddr @addr6-set-apache-noscript reject with icmpv6 port-unreachable</span> 
 +
 +
 +</pre></html> 
 +Et, comme le demande la configuration, «root» reçoit ce message: 
 +<html><pre class="code"> 
 +From root@trixie-nft.home.nain-t.net  Fri Jul  4 16:44:27 2025 
 +X-Original-To: root@localhost 
 +<span class="hly">Subject: <b>[Fail2Ban] apache-noscript: banned 2a01:e0a:875:b1d0:5054:ff:fefe:c099 from trixie-nft.home.nain-t.net</b></span> 
 +Date: Fri, 04 Jul 2025 16:44:27 +0200 
 +From: Fail2Ban &lt;root@trixie-nft.home.nain-t.net&gt; 
 +To: root@localhost 
 + 
 +<span class="hlo">Hi, 
 + 
 +The IP 2a01:e0a:875:b1d0:5054:ff:fefe:c099 has just been banned by Fail2Ban after 
 +3 attempts against apache-noscript.</span> 
 + 
 +<span class="txtb"> # Le compte-rendu Whois:</span> 
 +Here is more information about 2a01:e0a:875:b1d0:5054:ff:fefe:c099 : 
 +% This is the RIPE Database query service. 
 +% The objects are in RPSL format. 
 +
 +% The RIPE Database is subject to Terms and Conditions. 
 +% See https://docs.db.ripe.net/terms-conditions.html 
 + 
 +% Note: this output has been filtered. 
 +%       To receive output for a database update, use the "-B" flag. 
 + 
 +% Information related to '2a01:e00::/26' 
 + 
 +% Abuse contact for '2a01:e00::/26' is 'abuse@proxad.net' 
 + 
 +inet6num:       2a01:e00::/26 
 +netname:        FR-PROXAD-20080121 
 +country:        FR 
 +... 
 +<span class="txtb"># Le reste des infos transmises par le whois...</span> 
 +... 
 +<span class="hly"><b>Lines containing failures of 2a01:e0a:875:b1d0:5054:ff:fefe:c099 (max 1000)</b> 
 +[Fri Jul 04 16:43:19.552511 2025] [php:error] [pid 980:tid 980] [client 2a01:e0a:875:b1d0:5054:ff:fefe:c099:56072] script '/var/www/html/wp-login.php' not found or unable to stat 
 +[Fri Jul 04 16:43:34.452577 2025] [php:error] [pid 979:tid 979] [client 2a01:e0a:875:b1d0:5054:ff:fefe:c099:52002] script '/var/www/html/xmlrpc.php' not found or unable to stat 
 +[Fri Jul 04 16:43:49.319599 2025] [cgi:error] [pid 981:tid 981] [client 2a01:e0a:875:b1d0:5054:ff:fefe:c099:37622] AH02811: stderr from /usr/lib/cgi-bin/sms_send: script not found or unable to stat 
 +[Fri Jul 04 16:44:27.390816 2025] [php:error] [pid 983:tid 983] [client 2a01:e0a:875:b1d0:5054:ff:fefe:c099:59220] script '/var/www/html/xmlrpc.php' not found or unable to start</span> 
 + 
 + 
 +Regards, 
 + 
 +Fail2Ban 
 +</pre></html> 
 +Mais comme ce hacker est décidément un bourrin, il essaye encore ssh, des fois que... 
 + 
 +Et au final: 
 +<html><pre class="code"> 
 +table inet f2b-table { 
 +<span class="bhlo"> set addr6-set-apache-noscript { 
 + type ipv6_addr 
 + elements = { 2a01:e0a:875:b1d0:5054:ff:fefe:c099 } 
 + }</span> 
 + 
 +<span class="bhlr"> set addr6-set-sshd { 
 + type ipv6_addr 
 + elements = { 2a01:e0a:875:b1d0:5054:ff:fefe:c099 } 
 + }</span> 
 + 
 + chain f2b-chain { 
 + type filter hook input priority filter - 1; policy accept; 
 + <span class="bhlo">tcp dport { 80, 443 } ip6 saddr @addr6-set-apache-noscript reject with icmpv6 port-unreachable</span> 
 + <span class="bhlr">tcp dport 22 ip6 saddr @addr6-set-sshd reject with icmpv6 port-unreachable</span> 
 +
 +
 +</pre></html> 
 + 
 + 
 +===== Postfix ===== 
 +La gestion de Postfix par systemd nécessite quelques remarques. 
 +Si la commande ''journalctl -u postfix.service'' permet d'obtenir toutes les informations nécessaires dans le cas de Debian 13 «Trixie», ce n'est pas le cas pour les versions antérieures (12 «Bookworm») où il faudra adopter l'une de ces commandes 
 +  journalctl _SYSTEMD_SLICE=system-postfix.slice 
 +  journalctl _SYSTEMD_UNIT=postfix@-.service 
 + 
 +Fail2ban propose par défaut un seul filtre: ''postfix.conf'', mais il peut lui aussi être plus ou moins «aménagé» au moyen des modes. 
 +<html><pre class="code"> 
 +<span class="txtb"># Parameter "mode": more (default combines normal and rbl), auth, normal, rbl, ddos, extra or aggressive (combines all) 
 +# Usage example (for jail.local): 
 +#   [postfix] 
 +#   mode = aggressive 
 +
 +#   # or another jail (rewrite filter parameters of jail): 
 +#   [postfix-rbl] 
 +#   filter = postfix[mode=rbl] 
 +
 +#   # jail to match "too many errors", related postconf `smtpd_hard_error_limit`: 
 +#   # (normally included in other modes (normal, more, extra, aggressive), but this jail'd allow to ban on the first message) 
 +#   [postfix-many-errors] 
 +#   filter = postfix[mode=errors] 
 +#   maxretry = 1 
 +#</span> 
 +<span class="bhly">mode = more</span> 
 +</pre></html> 
 +Dans la mesure où Postfix utilise SASL pour authentifier les clients sortants, le mode auth est redondant avec l'authentification Dovecot. En revanche, il peut être utile de surveiller les «ddos», ce que le mode «normal» (ou «more» qui est désormais équivalent) ne fait pas. 
 + 
 +En revanche, les modes «extra» ou «aggressive» le font, mais également mettent en jeu la surveillance de l'authentification. 
 + 
 +===== Dovecot ===== 
 +La définition proposée pour la prison «dovecot» est la suivante: 
 +<html><pre class="code"> 
 +[dovecot] 
 +enabled =  true 
 +port    = pop3,pop3s,imap,imaps,submission,465,sieve 
 +logpath = %(dovecot_log)s 
 +backend = %(dovecot_backend) 
 +</pre></html> 
 +Nous n'utilisons pas les protocoles pop3 ni pop3s. donc nous mettrons plutôt: 
 +  port  = imap,imaps,submission,465,sieve
Surveillance des autres services: Dernière modification le: 02/07/2025 à 17:41 par prof