OVH Community, votre nouvel espace communautaire.

Aide conf Fail2ban


bbr18
03/11/2014, 16h44
Citation Envoyé par nono67
Bon je sais que je squatte votre thread mais est-ce quelqu'un pourrait m'aider à résoudre mon souci au post #13 ?
squatter c'est mal ouvre un sujet avec ton problème

nono67
03/11/2014, 16h24
Bon je sais que je squatte votre thread mais est-ce quelqu'un pourrait m'aider à résoudre mon souci au post #13 ?

arn0
03/11/2014, 14h37
Je vais tenter sa.

Sinon que penses-tu du jail qui bloque les scans c'est efficace ? :

Code:
Definition]
failregex = [[]client []] client denied by server configuration: /home/www/*.*
ignoreregex=
par contre j'ai un doute sur le chemin vu que j'utilise virtualmin faut quand meme mettre le "/home/www/*.*" ou autre chose ?

bbr18
03/11/2014, 14h26
crée ta jail directement sur le serveur, là au moins tu n'auras pas ce souci

arn0
03/11/2014, 14h19
Citation Envoyé par bbr18
regarde le menu encodage dans notepad++
le mien est configuré en UTF-8 sans BOM
Le mien est pareil. Mais je ne pense pas que sa vient de la car avec les autres jails pas de soucis et en utilisant dos2unix sur le serveur c'est toujours pareil et uniquement sur le jail phpmyadmin

bbr18
03/11/2014, 14h12
regarde le menu encodage dans notepad++
le mien est configuré en UTF-8 sans BOM

arn0
03/11/2014, 14h05
merci c'est bon à savoir ! Pourtant j'ai fait d'autre jail dans filter.d et c'est passé. Quand tu dis "sauvegarde directment en codage linux" c'est a dire ? J'utilise principalement notepad++ pour les fichiers

EDIT : par contre je viens de faire un dos2unix de apache-phpmyadmin et jail.conf et toujours cette foutue erreur...

Est-ce que c'est parceque j'ai modifier l'url accès de phpmyadmin et mis un .htaccess pour y acceder ?

Nowwhat
03/11/2014, 13h00
Citation Envoyé par arn0
.......
Code:
file: /etc/fail2ban/filter.d/apache-phpmyadmin.conf, line: 1
'    # Fail2Ban configuration file\r\n'
Une idée ?
Oui, certainement.

Le truc à se rappeler est ce
file\r\n
C'est du .... comment dire, Linuxien, pour t'informer que t'as déposé un fichier sur ton serveur qui possède un encodage style "PC/DOS".
"Linux" (fauil2ban) n'aime pas ça.

Il s'agit ce /etc/fail2ban/filter.d/apache-phpmyadmin.conf

la solution existe, ils ont fabriqué un outil qui arrange les choses:
Exécute ceci
Code:
dos2unix /etc/fail2ban/filter.d/apache-phpmyadmin.conf
et redémarre fail2ban.

Pour la prochaine fois: dès que tu fabrique un fichier sur ton PC que tu va copier sur ton serveur, sauvegarde le directement avec le codage "unix" et ça n'arrivera plus.

Dans le même chapitre, ceux qui ont crée un fichier
.htaccess
en format "PC/DOS" avec les "\r\n" - ça pleure de partout, des erreurs 500 à gogo - le panique à bord .... or, la solution, tu l'as maintenant

PS: J'ai dit "PC/DOS" car je présume que t'as un PC - avec les MAC, ce n'est pas mieux, ils ont leur propre format texte aussi ....

arn0
03/11/2014, 10h14
Bonjour,

Pour revenir à la conf de Fail2ban donc j'ai rajouter les jails grace au tutos de bbr18. Les jails s'activent bien sauf celui de phpmyadmin.

Dans jailconf :

Code:
[apache-phpmyadmin]
enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache*/*error.log
logpath  = /var/log/virtualmin/*_error_log
maxretry = 3
Dans filter.d :

Code:
    # Fail2Ban configuration file
    # Bans bots scanning for non-existing phpMyAdmin installations on your webhost.
    #
    [Definition]
    # Option: failregex
    # Notes.: Regexp to match often probed and not available phpmyadmin paths.
    # Values: TEXT
    #
    failregex = [[]client []] File does not exist: .*(PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|myadmin2)
    # Option: ignoreregex
    # Notes.: regex to ignore. If this regex matches, the line is ignored.
    # Values: TEXT
    #
    ignoreregex =
Message quand je redemarre le service :

Code:
* Restarting authentication failure monitor fail2ban                                                 Traceback (most recent call last):
  File "/usr/bin/fail2ban-client", line 404, in 
    if client.start(sys.argv):
  File "/usr/bin/fail2ban-client", line 373, in start
    return self.__processCommand(args)
  File "/usr/bin/fail2ban-client", line 183, in __processCommand
    ret = self.__readConfig()
  File "/usr/bin/fail2ban-client", line 378, in __readConfig
    ret = self.__configurator.getOptions()
  File "/usr/share/fail2ban/client/configurator.py", line 68, in getOptions
    return self.__jails.getOptions(jail)
  File "/usr/share/fail2ban/client/jailsreader.py", line 67, in getOptions
    ret = jail.getOptions()
  File "/usr/share/fail2ban/client/jailreader.py", line 78, in getOptions
    ret = self.__filter.read()
  File "/usr/share/fail2ban/client/filterreader.py", line 56, in read
    return ConfigReader.read(self, "filter.d/" + self.__file)
  File "/usr/share/fail2ban/client/configreader.py", line 62, in read
    SafeConfigParserWithIncludes.read(self, [bConf, bLocal])
  File "/usr/share/fail2ban/client/configparserinc.py", line 108, in read
    fileNamesFull += SafeConfigParserWithIncludes.getIncludes(filename)
  File "/usr/share/fail2ban/client/configparserinc.py", line 79, in getIncludes
    parser.read(resource)
  File "/usr/lib/python2.7/ConfigParser.py", line 305, in read
    self._read(fp, filename)
  File "/usr/lib/python2.7/ConfigParser.py", line 512, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
ConfigParser.MissingSectionHeaderError: File contains no section headers.
file: /etc/fail2ban/filter.d/apache-phpmyadmin.conf, line: 1
'    # Fail2Ban configuration file\r\n'
Une idée ?

nono67
02/11/2014, 21h36
Salut à tous,

J'ai un souci, depuis plusieurs jours je trouve cela dans mon rapport logwatch et ça ma fait planter clamdscan :

--------------------- vpopmail Begin ------------------------

abc@ovh.net - 1 Time(s)
abuse@ovh.net - 1 Time(s)
accounts@ovh.net - 2 Time(s)
admin@ovh.net - 7 Time(s)
alan@ovh.net - 2 Time(s)
alex@ovh.net - 1 Time(s)
almacen@ovh.net - 1 Time(s)
amanda@ovh.net - 1 Time(s)
andrea@ovh.net - 1 Time(s)
angel@ovh.net - 1 Time(s)
angela@ovh.net - 1 Time(s)
anne@ovh.net - 1 Time(s)
etc.....
Comment faire pour bannir avec fail2ban les IP des futures tentatives d'intrusions via vpopmail ?

janus57
31/10/2014, 16h34
Bonjour,

que contient ton fichier : /var/log/fail2ban.log ??

Sinon pour les DOS sur apache y a le mode evasive qui serait peut être mieux que du fail2ban pour le coup (il a été prévu pour ça).

Comme dit plus haut le "findtime" et le temps de recherche ou le temps pour trouver "find" et "time", donc si tu met 600 (secondes), il va chercher les tentatives de log du moment X à X-600secondes, si tu le bascule à 3600 de X à X-3600, donc si par exemple il est 16H00 et que fail2ban analyse les logs il va chercher toute les tentative qui ont été commis de 16H00 à 15H00, avec le bantime à 600 il cherche de 16H00 à 15H50.

Donc si tu as un fichier logs très très lourd fail2ban va carrément de manger des ressources pour chercher sur 1heures (ce qui est inutile sur du SSH).

Après pour le SSH si tu utilise un mot de passe essaye avec un maxretry de 3 ce qui est largement assez.

Enfin si tu as mis ton IP en whiteliste tu aura beau essayer des tentative de faux accès tu ne sera jamais banni car tu as mis ton IP en exception, tu es obligé de tester avec un accès externe et donc avec une IP non whitelisté.

Si tu veux tu peu laisser l'ip de ton serveur, pour que l'on test ta jail (pas très difficile de simuler de faux login).

Cordialement, janus57

arn0
31/10/2014, 10h04
Citation Envoyé par bbr18
Pour le ssh, si tu as une ip fixe, tu la rajoutes comme ceci (séparées par un espace):
Code:
ignoreip = 127.0.0.1/8 ton_ip_fixe ta_2eme_ip_fixe
et si en plus tu as sécurisé le port ssh (connexion uniqument par clé), tu peux mettre :
Code:
maxretry = 1
à la première tentative ratée l'ip sera bannie, puisque ce sera forcément quelqu'un qui n'a pas le droit de se connecter (ip non indiquée dans ignore ip et pas de clé ssh valide) et le bantime doit être élevé
Bonjour concernant l'Ip s'est déjà fait. Mais je donnais un exemple pour comprendre le findtime et bantime

Car quand j'avais mis le findtime a 600 sec, j'ai simulé une attaque en essayant 6 fois de me connecter en SSH et j'ai jamais été banni. Et quand j'ai mis le findtime à 3600 la sa a marché tout de suite. Donc je vois pas pourquoi c'est pour sa que j'essai de bien comprendre le fonctionnement.

D'ailleurs en laissant a 3600 cette nuit j'ai eu de nombreuses attaques provenant de chine. Faut que je monte de bantime.

EDIT en regardant ton tuto sur Fail2ban (qui est bien fait au passage) je comprend pas trop le jail http get dos :

Code:
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath = /var/log/apache*/*.*
logpath  = /var/log/virtualmin/*.*
maxretry = 360
findtime = 120
ignoreip = 168.192.0.1 # ajouter votre_ip si elle est fixe
bantime = 259200
action = iptables-allports
Pourquoi tu as mis le maxtry a 360 et le findtime a 120 ?
Dans la section ignoreip faut-il rajouter l'IP physque du serveur et l'IP FO ?

Au passage j'ai vu un jail qui permet de bloquer les scans :

Code:
[Definition]
failregex = [[]client []] client denied by server configuration: /home/www/*.*
ignoreregex=
Tu en penses quoi ?

bbr18
31/10/2014, 09h21
Pour le ssh, si tu as une ip fixe, tu la rajoutes comme ceci (séparées par un espace):
Code:
ignoreip = 127.0.0.1/8 ton_ip_fixe ta_2eme_ip_fixe
et si en plus tu as sécurisé le port ssh (connexion uniqument par clé), tu peux mettre :
Code:
maxretry = 1
à la première tentative ratée l'ip sera bannie, puisque ce sera forcément quelqu'un qui n'a pas le droit de se connecter (ip non indiquée dans ignore ip et pas de clé ssh valide) et le bantime doit être élevé

arn0
31/10/2014, 09h13
Quand tu dis 6 tentatives c'est énorme c'est a dire ?

Car si je met le findtime a 600sec. Moi ce que je comprend c'est si j’essaie de me connecter 6 fois en ssh en moins de 600 sec il banni mon IP. C'est sa ?

janus57
30/10/2014, 19h23
Citation Envoyé par arn0
D'accord. Je referais un test avec 600sec. Car quand je l'ai laissé à 600 il n'a jamais banni d'IP étrange ? (cf. le code du status ssh dans mon premier post)
Bonjour,

c'est tout à fait normal et vous avez les explications sous les yeux :
Code:
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
Donc il faut minimum 6 tentatives pour bannir l'IP (ce qui est "énorme").

Code:
Status for the jail: ssh
|- filter
|  |- File list:        /var/log/auth.log
|  |- Currently failed: 1
|  `- Total failed:     4
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0
Ok actuellement y en a 1seul qui "match" la règles et 4 au total, seulement regarder dans /var/log/fail2ban.log et regarder fail2ban la relâché après 10minutes vu que le bantime était de 10minutes.

Sinon si toujours pas de bann faut regarder dans /var/log/fail2ban.log

Sous Debian/Ubuntu l’installe de base de fail2ban fonctionne bien (j'ai rine touché mise à part les jails+bantime), perso je m'en fou de recevoir un mail à chaque bann (pas envie de me faire spam).

J'ai logwatch qui me fait un rapport par mail tout les jours cela suffit largement pour faire des abuses au besoin.

Cordialement, janus57

arn0
30/10/2014, 17h29
Citation Envoyé par janus57
Bonjour,

le "findtime" c'est jusqu'où fail2ban remonte les logs, par défaut il regarde les 10 dernière minutes (600secondes), si vous le passé à 3600 il va regarder les logs sur la dernière heure, ce qui est relativement haut car fail2ban va beaucoup plus travaillé.

Le findtime par défaut fonctionne très bien, c'est le bantime qu'il faut régler (perso je bann 1mois, ce qui en période de vacances scolaire aide pas mal).

Cordialement, janus57
D'accord. Je referais un test avec 600sec. Car quand je l'ai laissé à 600 il n'a jamais banni d'IP étrange ? (cf. le code du status ssh dans mon premier post)

janus57
30/10/2014, 17h12
Citation Envoyé par arn0
OK merci et pour le findtime ? D'ailleurs pourquoi quand je met le findtime a 600 sa fonctionne pas et à 3600 sa fonctionne ? Sa fait quoi exactement le findtime ?
Bonjour,

le "findtime" c'est jusqu'où fail2ban remonte les logs, par défaut il regarde les 10 dernière minutes (600secondes), si vous le passé à 3600 il va regarder les logs sur la dernière heure, ce qui est relativement haut car fail2ban va beaucoup plus travaillé.

Le findtime par défaut fonctionne très bien, c'est le bantime qu'il faut régler (perso je bann 1mois, ce qui en période de vacances scolaire aide pas mal).

Cordialement, janus57

arn0
30/10/2014, 16h44
OK merci et pour le findtime ? D'ailleurs pourquoi quand je met le findtime a 600 sa fonctionne pas et à 3600 sa fonctionne ? Sa fait quoi exactement le findtime ?

buddy
30/10/2014, 16h31
Pour le "bon" bantime, je dirais minimum 2 ou 3 jours. Soit environ 250 000 s. Là tu seras tranquille contre les bruteforces

arn0
30/10/2014, 15h55
Bon apparemment sa fonctionne. j'ai augmenter la valeur du "findtime" et j'ai bien reçu le mail et sa a bien banni l'IP en question.

Donc sa veut dire que l'IP est banni pour 600 secondes c'est bien sa ? Qu'elles sont les "bons" réglages de temps pour être tranquil ?

Concernant le mail peut on le personnaliser ? Si oui ou est-ce svp ?

bbr18
30/10/2014, 15h53
l'as-tu relancé après avoir fait tes modifs ?

arn0
30/10/2014, 14h35
Bonjour,

j'ai installé pour tester fail2ban. j'ai suivi de nombreux tuto pour la configuration mais il y a 2 choses qui n'ont pas l'air de fonctionner.

Dans jail.conf par defaut j'ai cela

Code:
[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3
J'ai lu qu'il fallait mettre également findtime car en rechargant fai2ban sa me mettait des warnings comme quoi il trouvait pas findtime

Donc j'ai mis :

Code:
[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
findtime=600
bantime  = 600
maxretry = 3
Pour faire un test j'ai activé ssh :

Code:
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
Puis j'ai tenter une connexion en force sur le port 22 via Putty via un réseau hotspot.
Au bout de la sixième tentative cela me met un message de putty "too many connection etc." et sa a l'air de bloquer...

Quand je fais :

Code:
fail2ban-client status ssh
Sa me sort :

Code:
Status for the jail: ssh
|- filter
|  |- File list:        /var/log/auth.log
|  |- Currently failed: 1
|  `- Total failed:     4
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0
Donc comme vous le voyez sa n'a pas l'air de bannir l'IP pourquoi ?

Autre problème l'envoi de mail lors d'IP banni (mais bon vu que l'IP n'a pas l'air banni s'est normal que je reçois pas de mail mais bon voici comment j'ai configuré pour l'envoi de mail :

Code:
destemail = mail@nomdedoamine.fr
Code:
# ban & send an e-mail with whois report to the destemail.
%(action_)s = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
              %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]

# ban & send an e-mail with whois report and relevant log lines
# to the destemail.
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
Il y a t il autre chose a configurer pour recevoir les mails.

Merci de votre aide pour ces 2 problèmes.