OVH Community, votre nouvel espace communautaire.

fail2ban Gentoo ovh tuto


IE-Lobbying
11/12/2009, 15h25
Bonjour,

Afin de me prémunir des tentatives de bruteforçage sur mon RPS (Gentoo/OVH-Release2), j'ai essayer d'installer Fail2Ban (http://www.wikiovh.com/index.php/OVH_2:Fail2ban).

Voici le message d'erreur qui suit lorsque j'entre la commande "emerge fail2ban" via SSH :

Code:
All ebuilds that could satisfy "fail2ban" have been masked.
One of the following masked packages is required to complete your request
net=analyzer/fail2ban=0.6.2=r1 (masqued by: corruption)
...
For more information, see masked packages section in the emerge man page or refer to the Gentoo Handbook.
Le support d'OVH m'a dit qu'il fallait procéder à une installation manuelle paquet par paquet. Mais pour moi, ce n'est pas très clair. Est-ce que l'un d'entre vous a déjà eu ce problème ? Savez-vous comment le résoudre ?

Merci d'avance.

kreatik
06/09/2008, 13h01
Au fait, est-ce utile de préciser "w00tw00t" dans la règle apache ou celle des bots s'en charge ?

kreatik
30/08/2008, 01h46
on peut rajouter un /i à la fin pour ne pas en tenir compte ?

Nico94
29/08/2008, 22h10
Citation Envoyé par kreatik
C'est pas sensible à la case
Si

kreatik
27/08/2008, 09h42
# failregex = [[]client []] File does not exist: .*(Admin|admin|forum|guestbook|board)
C'est pas sensible à la case selon mes tests, donc le Admin tu peux le virer puisque tu as déjà admin... non ?

Cybersonic
27/08/2008, 04h39
Et pour le retiré

rc-update del fail2ban default

J'ai suivi quelques infos avec interêt, on sais jamais des fois ont oublie toujours un p'tit truc ou l'autre

J'avais perso un légé petit problème avec le ban ip-apache

en fait sa fonctionnais bien pour la recherche php "premier niveau" mais avec des liens du genre /admin/setup.php
sa fonctionnais pas, j'avais pas de ban qui se mettais en place

Il fallais que le gars utilise le setup.php "exemple" en racine du site et pas sur un niveau supérieur de la racine

Finalement, j'ai mis ceci de cette manière, j'ai un suivi sur l'intégralité des no found "a réservé bien entendu si il n'existe aucun lien mort sur les sites"
Quoi que en augmentant un peu le nombre d'erreur supportée et cela via un certain laps de temps, c'est possible d'avoir un bon compromis

Sinon plutôt que de mettre la ligne suivante sur le filtre no script d'apache :
Code:
# failregex = [[]client []] File does not exist: .*(Admin|admin|forum|guestbook|board)
J'ai mis uniquement cela :

Code:
failregex = [[]client []] File does not exist:
Puis dans le fichier Jail.conf j'ai mis ceci "enfin réglé sur cela"

Code:
[apache-iptables]

enabled  = true
filter   = apache-noscript
action   = iptables[name=apache, port=80, protocol=tcp]
           mail-buffered[name=Apache-noscript-Serveur, lines=5, dest=cybersonic@team-area51.net]
logpath  = /var/log/httpd/error_log

bantime  = 600
findtime = 120
maxretry = 7
Le maxretry sur 7 avec un laps de temps de 10secondes, histoire de laissé un peu de chance pour les erreurs réels et pas les erreurs via les bots malsain

Mais bon, y a pas de config la meilleur, et à mon sens, chacun doit se faire sa petite tambouille en fonction de l'utilisation de son serveur et en fonction aussi du nombres de sites qu'il peut y avoir et donc de l'augmentation des erreurs à chacun

kreatik
23/08/2008, 08h33
Pour ceux qui cherche comment ajout un script au démarrage et particulièrement fail2ban :

rc-update add fail2ban default

kreatik
23/08/2008, 08h25
ah on peut faire un cron au boot, pas mal je vais lire tout ça...

Nico94
23/08/2008, 07h58
En ce qui me concerne, j'utilise précisément cron pour lancer fail2ban au boot de la machine.

Geoffroy
23/08/2008, 01h28
http://www.gentoo.org/doc/fr/handboo...?part=2&chap=4
(4.a, 4.b)

kreatik
23/08/2008, 00h21
pour la R2 j'ai simplement fait emerge fail2ban...

Je ne sais pas comment lancer fail2ban au boot... et en cron je comprend pas l'intérêt ?? (EDIT : a oui a rien j'vais pas vu )

Geoffroy
22/08/2008, 23h54
A rien.

Par ailleurs, sous une Release 2 ou une Gentoo classique,
Code:
emerge --ask --verbose fail2ban
remplacera judicieusement le début de ce "tuto".

edit : autre tutoriel pour la Release2 : http://wikiovh.com/index.php/Special...n&go=Consulter

kreatik
22/08/2008, 22h09
A quoi ça sert de le mettre en cron ?

Nico94
05/07/2008, 19h36
Citation Envoyé par javacup
Je suis sur une release2 toute neuf j'ai fait l'install de fail2ban
Pour installer fail2ban sur une Release 2 OVH (Gentoo), il suffit de faire :

Code:
emerge fail2ban
Après quoi, il reste à le configurer. Histoire de donner un exemple, voici mon /etc/fail2ban/jail.conf :

Code:
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 552 $
#

# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto". This option can be overridden in
# each jail too (use "gamin" for a jail and "polling" for another).
#
# gamin:   requires Gamin (a file alteration monitor) to be installed. If Gamin
#          is not installed, Fail2ban will use polling.
# polling: uses a polling algorithm which does not require external libraries.
# auto:    will choose Gamin if available and polling otherwise.
backend = auto


# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           mail-buffered[name=SSH-nomduserveur, lines=5, dest=mon@email.com]
logpath  = /var/log/auth.log
maxretry = 3

[proftpd-iptables]

enabled  = true
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
           mail-buffered[name=ProFTPD-nomduserveur, lines=5, dest=mon@email.com]
logpath  = /var/log/auth.log
maxretry = 3

# This jail forces the backend to "polling".

[sasl-iptables]

enabled  = false
filter   = sasl
backend  = polling
action   = iptables[name=sasl, port=smtp, protocol=tcp]
           mail-whois[name=sasl, dest=yourmail@mail.com]
logpath  = /var/log/mail.log

# Here we use TCP-Wrappers instead of Netfilter/Iptables. "ignoreregex" is
# used to avoid banning the user "myuser".

[ssh-tcpwrapper]

enabled     = false
filter      = sshd
action      = hostsdeny
              mail-whois[name=SSH, dest=yourmail@mail.com]
ignoreregex = for myuser from
logpath     = /var/log/sshd.log

# This jail demonstrates the use of wildcards in "logpath".
# Moreover, it is possible to give other files on a new line.

[apache-tcpwrapper]

enabled  = false
filter	 = apache-auth
action   = hostsdeny
logpath  = /var/log/apache*/*access.log
           /home/www/myhomepage/access.log
maxretry = 6

# The hosts.deny path can be defined with the "file" argument if it is
# not in /etc.

[postfix-tcpwrapper]

enabled  = false
filter   = postfix
action   = hostsdeny[file=/not/a/standard/path/hosts.deny]
           mail[name=Postfix, dest=yourmail@mail.com]
logpath  = /var/log/postfix.log
bantime  = 300

# Do not ban anybody. Just report information about the remote host.
# A notification is sent at most every 600 seconds (bantime).

[vsftpd-notification]

enabled  = false
filter   = vsftpd
action   = mail-whois[name=VSFTPD, dest=yourmail@mail.com]
logpath  = /var/log/vsftpd.log
maxretry = 5
bantime  = 1800

# Same as above but with banning the IP address.

[vsftpd-iptables]

enabled  = false
filter   = vsftpd
action   = iptables[name=VSFTPD, port=ftp, protocol=tcp]
           mail-whois[name=VSFTPD, dest=yourmail@mail.com]
logpath  = /var/log/vsftpd.log
maxretry = 5
bantime  = 1800

# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.

[apache-badbots]

enabled  = true
filter   = apache-badbots
action   = iptables-multiport[name=BadBots, port="http,https"]
           mail-buffered[name=BadBots-nomduserveur, lines=5, dest=mon@email.com]
logpath  = /home/log/httpd/*-access_log
bantime  = 172800
maxretry = 1

# AJOUT NICO apache-noscript avec iptables

[apache-iptables]

enabled  = true
filter   = apache-noscript
action   = iptables[name=apache, port=80, protocol=tcp]
           mail-buffered[name=Apache-noscript-nomduserveur, lines=5, dest=mon@email.com]
logpath  = /home/log/httpd/error_log
bantime  = 3600
maxretry = 3

# Use shorewall instead of iptables.

[apache-shorewall]

enabled  = false
filter   = apache-noscript
action   = shorewall
           mail[name=Postfix, dest=yourmail@mail.com]
logpath  = /var/log/apache2/error_log

# This jail uses ipfw, the standard firewall on FreeBSD. The "ignoreip"
# option is overridden in this jail. Moreover, the action "mail-whois" defines
# the variable "name" which contains a comma using "". The characters '' are
# valid too.

[ssh-ipfw]

enabled  = false
filter   = sshd
action   = ipfw[localhost=192.168.0.1]
           mail-whois[name="SSH,IPFW", dest=yourmail@mail.com]
logpath  = /var/log/auth.log
ignoreip = 168.192.0.1
J'ai donc activé les protections sur :

- SSH
- ProFTPD
- BadBots (repère et blackliste les IP reconnues comme des bots qui se baladent sur les sites pour repérer des adresses mail)
- Apache-noscript (repère et blackliste les IP qui font des erreurs 404 louches)

J'utilise la fonction mail-buffered qui m'envoie un mail tous les 5 blacklistages (sans quoi je recevrais constamment des mails).

J'ai ajouté le "nomduserveur" dans la variable "name=". Comme j'ai installé fail2ban à l'identique sur plusieurs machines, ça me permet de savoir au premier coup d'oeil de quel serveur vient le mail.

Etant donné que j'utilise mail-buffered pour les 4 services, il est aussi nécessaire de modifier /etc/fail2ban/action.d/mail-buffered.conf :

Code:
tmpfile = /tmp/fail2ban-mail.txt
Sans quoi fail2ban bufferise tout dans le même fichier et ça déconne.

Concernant apache-noscript, il est également important de paramétrer : /etc/fail2ban/filter.d/apache-noscript.conf. Voici le mien :

Code:
failregex = [[]client []] File does not exist: .*(Admin|admin|forum|guestbook|board)
Cela a pour effet de blacklister les IP qui génèrent des erreurs 404 au niveau de l'apache et dont l'URL qui a généré l'erreur contient les expressions "Admin", "admin", "forum", "guestbook" ou "board". L'idée est de bloquer les bots qui essaient des URL au hasard dans l'espoir de tomber sur un formulaire où poster une saloperie. Ca marche aussi pour les gugusses qui cherchent PhpMyAdmin.

Et enfin il faut démarrer bouzin :

Code:
/etc/init.d/fail2ban start
A mettre au boot, en cron, etc.

Voilou, j'espère avoir remis ce tuto sur les rails

PS : Lire aussi ce topic : http://forum.ovh.net/showthread.php?t=36534

javacup
29/05/2008, 13h45
Et comment je fais pour desinstaller fail2ban non configurer ?

sum_fvm
29/05/2008, 13h42
En même temps, un tuto rédigé par Radeon j'aurais pas confiance

javacup
29/05/2008, 13h39
Bonjour,

Je suis sur une release2 toute neuf j'ai fait l'install de fail2ban
a la fin de l'install j ai le message suivant


Please do not forget to update your configuration files.
They are in /etc/fail2ban/.

mais je ne trouve pas le fichier syslog.conf dans le chemin precisé ni le dossier sshd ?

est ce que ce tuto est fait pour la gentoo release 2 ??

Merci pour votre aide

Citation Envoyé par Radeon
Installer fail2ban

- Configuration :

+ Rajouter

Code:
auth.info;mail.none -/var/log/sshd.log

dans "/etc/syslog.conf"
/etc/sshd/sshd_config

Eurolidays
29/05/2008, 00h28
Je dois pas avoir la même version de Gentoo "OVH"...

La dernière version de fail2ban est la 0.8.2 mais je sais pas si ça change grand'chose...

Radeon
21/05/2008, 23h41
Installer fail2ban

(Il faut avoir python 2.4 ou 2.5 installé préalablement)

- Le récupérer là :

Code HTML:
http://downloads.sourceforge.net/fail2ban/fail2ban-0.8.1.tar.bz2?modtime=1187135313&big_mirror=0
- L'installer

Code:
bzip2 -d fail2ban-0.8.1.tar.bz2
tar -xvf fail2ban-0.8.1.tar
python setup.py install
- Configuration :

+ Rajouter

Code:
auth.info;mail.none -/var/log/sshd.log

dans "/etc/syslog.conf"
Redémarrer syslogd (kill -HUP xxx ou rebooter complètement le serveur)

+ Décommenter ces lignes dans /etc/sshd/sshd_config :


Code:
SyslogFacility AUTH
LogLevel INFO
Redémarrer sshd (kill -HUP xxx ou rebooter complètement le serveur)

+ Doc pour fail2ban 0.8.x :

http://www.fail2ban.org/wiki/index.php/MANUAL_0_8

+ Modifier le fichier /etc/fail2ban/jail.conf

A la ligne "ignoreip" rajouter sa propre IP publique ADSL (si on est en IP fixe)

Dans [ssh-iptables] mettre :

Code:
enabled = true
Rajouter un dièse au début de la ligne :

Code:
# sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
(sauf si on a envie de recevoir un mail à chaque fois que le script bloque une tentative)

+ Renommer le fichier "/etc/fail2ban/fail2ban.conf" en "/etc/fail2ban/fail2ban.conf.original"

+ Recopier le bon fichier de config pour iptables :


Code:
cp fail2ban-0.8.1/config/action.d/iptables.conf /etc/fail2ban/fail2ban.conf

(si on utilise iptables, sinon il faut en recopier un autre)


+ Reprendre le contenu du fichier "/etc/fail2ban/fail2ban.conf.original" dans le
nouveau fichier de configuration
Code:
"/etc/fail2ban/fail2ban.conf"

+ Pour tester que tout va bien :

Code:
fail2ban-client -d
+ Pour lancer fail2ban :

Code:
fail2ban-client start
Si tout va bien, il va juste répondre ": INFO Starting Fail2ban" et c'est tout.

Dans le fichier "/var/log/fail2ban.log" vous trouverez les logs du programme


Démarrer fail2ban
Code:
/etc/init.d/fail2ban start (pour démarrer le service)