4 votes

Exemple de configuration de fail2ban pour bloquer les serveurs qui envoient du spam à mon serveur postfix ?

J'ai un petit serveur de messagerie à la maison avec des règles de filtrage assez restrictives. J'utilise logwatch et j'ai pu constater que 80 à 90% des connexions sont rejetées par mes règles de filtrage restrictives. La plupart des rejets proviennent de rbl_client.

Je recherche désespérément un exemple de fichier de configuration fail2ban montrant comment filtrer les adresses IP qui envoient du spam à mon serveur. J'aimerais que l'interdiction soit pour une longue période (par exemple 1 mois).

J'ai également eu une tentative de SYN flooding sur mon serveur de messagerie que j'ai bloquée en utilisant une règle de pare-feu définie manuellement. Est-ce que fail2ban pourrait détecter cela aussi ?

6voto

Aruku64 Points 11

Je viens juste de me lasser de tous les spammeurs RBL remplissant mes journaux, alors j'ai configuré mon Postfix pour les interdire.

Après avoir fait cela, la charge a chuté parce qu'il y en avait beaucoup !

Sachez que vous devez mettre en place un moyen de nettoyer la liste des interdictions.

Je prévois de redémarrer fail2ban sur une base hebdomadaire.

Consultez ces règles: http://www.fail2ban.org/wiki/index.php/Postfix

Ajoutez-les dans: /etc/fail2ban/filter.d/postfix.conf (c'est dans le système Debian !)

Il est également bon de lire ceci (recherchez fail2ban) : http://workaround.org/ispmail/squeeze/sysadmin-niceties (quelques extraits de là).

En bref:

  1. Dans jail.conf, définissez :

    [postfix]
    enabled  = true
  2. Bon à faire si vous utilisez dovecot (à partir du lien ci-dessus) : Créez /etc/fail2ban/filter.d/dovecot-pop3imap.conf et ajoutez-y :

    [Definition]
    failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \   (auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P\S*),.*
    ignoreregex =
  3. Ajoutez une section dans jail.conf ou jail.local :

    [dovecot-pop3imap]
    enabled = true
    port = pop3,pop3s,imap,imaps
    filter = dovecot-pop3imap
    logpath = /var/log/mail.log
  4. Redémarrez fail2ban et vérifiez iptables -nvL si les chaînes pour postfix et courier sont ajoutées. ATTENTION : Cela concerne les systèmes basés sur Debian. Vérifiez les chemins des fichiers pour RH ou autres.

5voto

B. Shea Points 954

Utilisez simplement Postfix directement pour filtrer les IPs en utilisant des listes de blocage :

Voir http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions pour rejeter en utilisant des listes de blocage. Aussi lisez à ce propos le meilleur endroit pour le mettre dans main.cf.

Voici un exemple d'entrées RBL (#Vérification des listes de blocage :) que vous pourriez ajouter pour bloquer les IPs blacklistées. J'ai placé les miennes sous smtpd_recipient_restrictions car c'est une vérification "coûteuse" (charge serveur et appels à distance des RBL des serveurs). Si cela est fait plus tôt (par exemple sous smtpd_helo_restrictions) vous avez tendance à interroger le site RBL/liste de blocage donné de nombreuses fois pour rien.

/etc/postfix/main.cf:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_unlisted_recipient,
    reject_invalid_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unauth_pipelining,
    check_client_access hash:/etc/postfix/blacklist,
#Vérification des listes de blocage :
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client dul.dnsbl.sorbs.net,
#Postgrey :
    #finalisation et rejet vers postgrey si passe au-dessus :
    #check_policy_service inet:[::1]:10023,'
    permit

Si vous voulez vraiment utiliser Fail2Ban pour le traitement des listes de blocage :

  • Utilisez un filtre Fail2Ban comme f2b-postfix-rbl (postfix-rbl.conf) pour filtrer le journal de messagerie à la recherche d'entrées d'IP de listes de blocage/blacklistées. Il insérerait ensuite une nouvelle entrée dans iptables et serait bloqué pour une durée de bannissement donnée. Vous devriez spécifier une durée de bannissement dans des définitions de jails spécifiques si vous n'êtes pas satisfait de la valeur par défaut.

  • Redémarrer simplement F2B ou le serveur, comme indiqué dans une autre réponse, ne efface pas les bannissements normalement avant l'expiration du temps de bannissement. Vous devrez utiliser fail2ban-client.

  • Et surtout, Postfix + F2B + Bannissement n'aidera pas beaucoup car le script/bot/mailleur passera simplement après la première tentative et vous réessayera un autre jour à partir d'une IP différente. Pourquoi bannir directement les IP (en utilisant F2B) est généralement excessif (plus de charge pour le serveur pour rien).

Si vous insistez sur le traitement des listes de blocage par fail2ban, assurez-vous de l'activer sous /etc/failban/jail.local :

[postfix-rbl]

enabled  = true
port     = smtp,465,submission
filter   = postfix-rbl
logpath  = /var/log/mail.log

Pour utiliser le "mode" rbl sous les versions plus récentes, substituez la ligne de filtre par :

filter    = postfix[mode=rbl]

Dans les anciennes versions, j'ai dû changer le mien pour détecter "554 5.7.1" pour repérer les rejets de logs postfix via le filtre "postifx-rbl". La nouvelle version de filtre semble rechercher ce changement sous les nouvelles versions en "mode" rbl.

En ce qui concerne l'attaque SYN flood - voir ceci.

0voto

cybernard Points 12403

Donc la configuration a déjà été couverte, et la plupart des paramètres pour postfix sont intégrés à fail2ban et doivent simplement être décommentés. Vous devrez peut-être ajuster légèrement certains des chemins.

Voici mon ajout. Modifiez la configuration pour utiliser ipset

Voici pourquoi

ipset create f2b-whatever counters timeout 43200

Maintenant, s'il n'est pas détecté, il expirera automatiquement.

Vous devrez créer un service pour sauvegarder la liste avant de redémarrer et restaurer la liste lorsque le système démarre, mais je l'ai fait.

Les ipsets supportent également facultativement les commentaires si jamais vous vouliez cette fonctionnalité.

Avoir une seule règle iptables faisant référence à ipset consomme moins de CPU.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X