El vie, 12-06-2015 a las 16:00 -0500, Omar Crespo escribió:
> http://garciavictor.blogspot.com/2012/11/fail2ban-en-debian-squeezy-wheezy.h
> tml
> 
> y mándenme la 



Fail2ban en Debian Squeezy & Wheezy
Posted by Victor Garcia | Posted on 21:04


Hace unos días termine una guía para la instalación y configuración de
fail2ban, algunos colegas cuando lean esto se reirán un poco.

Para comenzar hay que realizar la instalación de el paquete fail2ban

#aptitude install fail2ban

Copiamos el archivo de configuración del jail.conf a jail.local, donde
tendremos nuestra configuración personalizada

#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Al momento de editar veremos algo como esto, donde colocaremos en true
los servicios que se requieran. Por defecto el único servicio que viene
habilitado en el fail2ban es el ssh, si se requieren habilitar algún
otro como por ejemplo apache, postfix, proftpd, se deben colocar en true
y verificar los valores que vienen por defecto. Antes de habilitar algún
servicio se debe personalizar los valores que vienen por defecto.

Tiempo de bloqueo, las ip de redes locales, el máximo de intentos.

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.0/24
bantime = 1800
maxretry = 3


La dirección de correo de la persona que recibirá las alertas.

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

El tipo de servicio que utiliza el sistema para enviar los correos
electrónicos, el caso de fail2ban utiliza sendmail pero en caso de que
el sistema utilice “mail” se puede cambiar la orden.

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

Cambiamos la acción para que envié el correo electrónico, al momento de
un evento.

# Choose default action. To change, just override value of 'action' with
the
# interpolation to the chosen action shortcut (e.g. action_mw,
action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s

Parte del contenido del archivo

[ssh]

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

[apache]

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

[proftpd]

enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 6

[postfix]

enabled = false
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log



En caso de que configuremos el fail2ban para proteger el apache debemos
habilitar lo siguiente.

# HTTP servers
[apache]

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

#
# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0 .7.6-2=".7.6-2" font="font"
releases="releases">

[apache-multiport]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

# Para prevenir ejecucion de scripts
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

# Para prevenir overflows
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2

# Para prevenir ataques de inyeccion de codigo tipo GET.
[php-url-fopen]
enabled = true
port = http,https
filter = php-url-fopen
logpath = /var/www/vhosts/*/statistics/logs/access_log
maxretry = 1

#Para prevenir ataques de host que se conectan haciendo un “User Agent”
sospechoso
[apache-badbots]
enabled = true
filter = apache-badbots
port = http,https
logpath = /var/log/apache*/*access.log
maxretry = 1
#Para prevenir busqueda de directorios en el servidor
[apache-nohome]
enabled = true
filter = apache-nohome
port = http,https
logpath = /var/log/apache*/*access.log
maxretry = 1

#Para prevenir SQL Injection
[sqli-attack]
enabled = true
port = 80
protocol = tcp
maxentry = 3
bantime = 90000
filter = apache-sqli-blocklist
logpath = /var/log/apache2/*.log

#Para prevenir RFI (Remote File Inclusion)
[rfi-attack]
enabled = true
port = 80
protocol = tcp
maxentry = 6
filter = apache-rfi-blocklist
logpath = /var/log/apache2/*.log


Para que las funciones de SQL Injection y RFI funcionen debemos crear
los siguientes archivos de configuración dentro
de /etc/fail2ban/filter.d/ con el siguiente contenido.

#vim apache-sqli-blocklist.conf

Agregamos

# Fail2Ban configuration file
#
# Author: Martin Schiftan
#
# $Revision: 510 $


[Definition]

# Option: failregex
# Notes.: regex to match the w00tw00t scan messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
failregex = ^ .*\+SELECT.*
^ .*UNION\+ALL\+SELECT.*
^ (.*)UNION\+SELECT(.*)
^ (.*)1337+UNION+SELECT+(.*)
^ (.*)UNION(.*)SELECT(.*)
^ (.*)UNION(.*)DATABASE(.*)



# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT

ignoreregex =


#vim apache-rfi-blocklist.conf

Agregamos

# Fail2Ban configuration file
#
# Author: Martin Schiftan
#
# $Revision: 510 $


[Definition]

# Option: failregex
# Notes.: regex to match the w00tw00t scan messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
failregex = ^ (.*)etc\/passwd(.*)
^ (.*)28sleep(.*)
^ (.*)acunetix_wvs_security_test(.*)
^ (.*)email.tst(.*)
^ (.*)appserv_root(.*)
^ (.*)proc/self/(.*)
^ (.*)proc\/self\/(.*)
^ (.*)FHScan(.*)
^ -.*"(GET|POST).*\?.*\=.*tt.*\:\/\/.* HTTP\/.*$


# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT

ignoreregex =

Por ultimo reiniciamos el servicio y observamos que se envío un correo
electrónico a la dirección de destino, se aplicaron las reglas de
iptables para los servicios habilitados.

#/etc/init.d/fail2ban restart
[ ok ] Restarting authentication failure monitor: fail2ban

#iptables -L -n

Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Reacciones:     
Comments (4)
lastko

Buenos días.

Gracias por el artículo. En mi caso con debian squeeze con kernel 3.9.0,
Python 2.6.6 y fail2ban versión 0.8.4 he tenido que modificar las reglas
de apache-sqli-blocklist.conf porque daba una excepción al relanzar
fail2ban:

(...)
ConfigParser.ParsingError: File contains parsing
errors: /etc/fail2ban/filter.d/apache-sqli-blocklist.conf
[line 16]: '^ .*UNION\\+ALL\\+SELECT.*\n'
[line 17]: '^ (.*)UNION\\+SELECT(.*)\n'
[line 18]: '^ (.*)1337+UNION+SELECT+(.*)\n'
[line 19]: '^ (.*)UNION(.*)SELECT(.*)\n'
[line 20]: '^ (.*)UNION(.*)DATABASE(.*)\n'
(...)

La he corregido y me ha funcionado de la siguiente forma:
(...)
failregex = ^ .*\+SELECT.*$
^ .*UNION\+ALL\+SELECT.*$
^ (.*)UNION\+SELECT(.*)$
^ (.*)1337+UNION+SELECT+(.*)$
^ (.*)UNION(.*)SELECT(.*)$
^ (.*)UNION(.*)DATABASE(.*)$
(...)

La otra regla no la he usado, pero al no tener el caracter '$' para
delimiar, supongo que puede fallar al importar.

Un saludo.
Posted on: 18 de octubre de 2013, 5:47
Eduardo Visbal

Compañero excelente pots; pero vengo a consultarte una duda que tengo.

Fijate en la configuracion del jail.local donde estan los parametros del
ssh donde dice:
port = ssh
se podria colocar el numero de puerto?? te lo consulto ya que no utilizo
el puerto por defecto del ssh que es el 22.

Espero me alla explicado y esperar a ver si puedes ayudarme con eso.

saludos...
Posted on: 21 de octubre de 2013, 11:49
Victor Garcia

Es posible que falle al copiar y pegar en la consola, debes verificar en
los logs si existe algun otro error de sintaxis.
Posted on: 23 de octubre de 2013, 15:36
Victor Garcia

Saludos Eduardo, donde dice port colcoas el valor que estes utilizando
para el ssh.
Gracias por Escribir
Posted on: 23 de octubre de 2013, 15:38

-- 
Salu2 
 ________________________
 Ulinx
 Linux user 366775
"En un problema con n ecuaciones
siempre habrá al menos n+1 incógnitas."



______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a