fail2ban & pure-ftpd ?

hello
Je voudrai filtrer avec fail2ban, les connections sur mon ftp (pure-ftpd)

Et sa marche pas, seul le ssh est filtrer !

Je vous donne donc les 2 fichier de configuration, sa peux servire.

GNU nano 2.0.2                                                      Fichier : fail2ban.conf

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 412 $
#

[Definition]

__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
failregex = pure-ftpd: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$
ignoreregex =
# Option:  loglevel
# Notes.:  Set the log level output.
#          1 = ERROR
#          2 = WARN
#          3 = INFO
#          4 = DEBUG
# Values:  NUM  Default:  3
#
loglevel = 3

# Option:  logtarget
# Notes.:  Set the log target. This could be a file, SYSLOG, STDERR.
# Values:  STDERR SYSLOG file  Default:  /var/log/fail2ban.log
#
logtarget = /var/log/fail2ban.log

# Option: socket
# Notes.: Set the socket file. This is used to communication with the
#         daemon.
# Values: FILE  Default:  /tmp/fail2ban.sock
#
socket = /tmp/fail2ban.sock

aux suivant:

  GNU nano 2.0.2                                                       Fichier : jail.conf

# Fail2Ban configuration file.
#
# This file was composed for Debian systems from the original one
#  provided now under /usr/share/doc/fail2ban/examples/jail.conf
#  for additional examples.
#
# To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
#
# Author: Yaroslav O. Halchenko <debian@onerussian.com>
#
# $Revision: 281 $
#

# 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
ignoreip = 127.0.0.1
bantime  = 3600
maxretry = 5

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = polling

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]

# Following actions can be chosen as an alternatives to the above action.
# To activate, just copy/paste+uncomment chosen 2 (excluding comments) lines
# into jail.local

# Default action to take: ban & send an e-mail with whois report
# to the destemail.
# action = iptables[name=%(__name__)s, port=%(port)s]
#          mail-whois[name=%(__name__)s, dest=%(destemail)s]

# Default action to take: ban & send an e-mail with whois report
# and relevant log lines to the destemail.
# action = iptables[name=%(__name__)s, port=%(port)s]
#          mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]

# Next jails corresponds to the standard configuration in Fail2ban 0.6
# which was shipped in Debian. Please enable any defined here jail by including
#
# [SECTION_NAME]
# enabled = true
#
# in /etc/fail2ban/jail.local.
#

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

#
# HTTP servers
#

[apache]

enabled = false
port    = http
filter  = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 6


[apache-noscript]

enabled = false
port    = http
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

#
# FTP servers
#

[vsftpd]

enabled  = false
port     = ftp
filter   = vsftpd
logpath  = /var/log/auth.log
maxretry = 6


[proftpd]


[wuftpd]

enabled  = false
port     = ftp
filter   = wuftpd
logpath  = /var/log/auth.log
maxretry = 6


#
# Mail servers
#

[postfix]

enabled  = false
port     = smtp
filter   = postfix

logpath  = /var/log/postfix.log


[couriersmtp]

enabled  = false
port     = smtp
filter   = couriersmtp
logpath  = /var/log/mail.log


[sasl]

enabled  = false
port     = smtp
filter   = sasl
logpath  = /var/log/mail.log

[pure-ftpd]

enabled  = true
port     = ftp
filter   = pure-ftpd
logpath  = /var/log/pure-ftpd/pure-ftpd.log
maxretry = 3

Merci d’avance

Tu es sûr du chemin vers le log ?

Mattotop la mis en évidence dans l’autre fil sur fail2ban: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=426050

A vérifier si c’est bien l’unique problème.

Je complete :slightly_smiling:

/var/log$ ls
acpid       auth.log       clamav           debug       dmesg.1.gz  exim4           gdm            lastlog    mail.warn      ntop              scrollkeeper.log.1  syslog.2.gz  ulog           wtmp
acpid.1.gz  auth.log.0     cups             debug.0     dmesg.2.gz  fail2ban.log    installer      lpr.log    messages       pure-ftpd         scrollkeeper.log.2  syslog.3.gz  user.log       Xorg.0.log
acpid.2.gz  auth.log.1.gz  daemon.log       debug.1.gz  dmesg.3.gz  faillog         kern.log       mail.err   messages.0     pycentral.log     syslog              syslog.4.gz  user.log.0     Xorg.0.log.old
apache2     boot           daemon.log.0     dmesg       dmesg.4.gz  fontconfig.log  kern.log.0     mail.info  messages.1.gz  samba             syslog.0            syslog.5.gz  user.log.1.gz  Xorg.20.log
aptitude    btmp           daemon.log.1.gz  dmesg.0     dpkg.log    fsck            kern.log.1.gz  mail.log   news           scrollkeeper.log  syslog.1.gz         syslog.6.gz  uucp.log
Chain INPUT (policy ACCEPT 2518 packets, 430860 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       8      608 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22


Chain fail2ban-ssh (1 references)
    pkts      bytes target     prot opt in     out     source               destination
       8      608 RETURN     0    --  *      *       0.0.0.0/0            0.0.0.0/0

Pour le lien donner c’est gentil, mai j’ai rien compris :confused:

Il faudrait a priori modifier l’expression régulière :

failregex = pure-ftpd: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$

par :

failregex = pure-ftpd(?:\[\d+\])?: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$

J’ai pas testé, mais tu ne risques pas grand chose. En tout cas c’est bien ce que j’ai sur Sid après installation.

Hé, panthere…

Fais un effort STP:
les verbes comme retenir, servir, partir, sortir, punir, vomir, ne prennent JAMAIS de ‘e’.
Ecrire est un verbe rare qui prend un ‘e’ comme … ben pas d’autre exemple qui me vienne en tête. Une exception.
Ca, déjà, c’est simple à retenir, ça s’apprend en CP, puis on s’y entraine toute la vie.

Et aussi, mais ça, même si ça s’apprend en CE1, tu n’es pas le seul à barbariser, quand tu peux dire, “Pour le lien vomi” ou “seul le ssh est vomi”, tu peux transposer avec “Pour le lien donné” et “seul le ssh est filtré” avec un ‘é’ et quand tu peux dire “ce truc est à vomir”, tu peux ecrire “ce truc est à donner” (ou “à filtrer”) avec un ‘er’.
si tu peux remplacer par vomir, tu mets ‘er’, si c’est par vomi, tu mets ‘é’.
C’est simple comme un truc pour gamin de 7 ans, non ?

Par ailleurs, “mais” prend un ‘s’, sinon, on se demande pourquoi tu parles du mois.
Je passe sur le “sa” pour “ça”, même si ça change aussi le sens de la phrase.

De quoi tu parlais au fait, je n’arrivais pas à lire :wink: ?

Thialme:
“Mattotop la mis en évidence” -> “Mattotop l’a mis en évidence”

Désolé, mais là, même si je ne suis pas aussi orthorexique et infaillible (à force de tolèrer des barbarismes) que ricardo, ça me pue aux yeux tout ça.

Je me demande parfois si je suis vraiment français :unamused:

Salut,

dans ton fichier /etc/syslog.conf tu rajoutes ceci:

A condition d’avoir crée le dossier /var/log/pure-ftpd sinon il pourra pas y écrire.

et tu redémarre
/etc/init.d/sysklogd restart

Pour le filtre c :

[code]# Fail2Ban configuration file

Author: Cyril Jaquier

Modified: Yaroslav Halchenko for pure-ftpd

$Revision: 3$

[Definition]

Error message specified in multiple languages

__errmsg = (?:Authentication failed for user|Erreur d’authentification pour l’utilisateur)

Option: failregex

Notes.: regex to match the password failures messages in the logfile. The

host must be matched by a group named “host”. The tag “” can

be used for standard IP/hostname matching and is only an alias for

(?:::f{4,6}:)?(?P\S+)

Values: TEXT

failregex = pure-ftpd: (.+?@) [WARNING] %(__errmsg)s [.+]$

Option: ignoreregex

Notes.: regex to ignore. If this regex matches, the line is ignored.

Values: TEXT

ignoreregex =[/code]

Tu es certains de ton coup pour le filtre ? Car en Sid l’expression régulière a changé conformément au rapport de bug mentionné ?

Si c pas le cas adapte à ta version.
Bonne chance :wink:

Je dis cela car la version que tu proposes me semble à première vue la même que ce qu’il a, sauf le fait que cela ne fonctionne pas. D’où le lien pour modifier la regexp.

De toute façon, le regex va lire les logs du serveur ftp non ? et le formatage des logs ne changent pas d’un version de pure-ftpd à une autre, je pense.
La version de pure-ftpd sur etch ou sid je la connait pas, mais il écrit les logs de la meme manière.
Tu vois mon raisonnement ?

Sinon personellement j’utilise Pure-ftpd 1.0.21 (par les sources) sur Etch avec le fail2ban installé avec apt et le meme filtre et il fonctionne.

Le lien au-dessus indique que si le serveur a l’option LogPID sur ON, il faut le patché et modifié le regex comme indiqué.
Vérifie si le LogPID du serveur est sur ON et modifie en conséquence ou alors désactive-le.

dexmon Merci pour ta réponse :smt023 je te tien aux couran pour le résulta

mattop Merci pour ta franchise, Je pense qu’un conversation privée s’impose :slightly_smiling:

Moi, j’ai rien inventé, mais si vous vous en moquez tant pis :

Bug #426050

filter.d/pure-ftpd.conf doesn't work if pure-ftpd has the LogPID option on.  In this case the logged lines look like:

    May 25 20:52:47 gopher pure-ftpd[26108]: (?@71.0.80.45) [WARNING] Authentication failed for user [TST001-test]

Here is a fix.

--- pure-ftpd.conf.~1~	Mon Mar 19 16:24:39 2007
+++ pure-ftpd.conf	Fri May 25 16:59:24 2007
@@ -19,7 +19,7 @@
 #         (?:::f{4,6}:)?(?P<host>\S+)
 # Values: TEXT
 #
-failregex = pure-ftpd: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$
+failregex = pure-ftpd(?:\[\d+\])?: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$

ChangLog fail2ban

 fail2ban  (0.8.0-4) unstable; urgency=low

   * Moved <HOST> expansion into regex.py (closes: #429263). Thanks James
     Andrewartha.
   * Added optional regexp entry for process PID in some entries (closes:
     #426050). Thanks Roderick Schertler.
  ...

Après ce n’est peut-être pas cela, mais il faudrait au moins essayé.