SlideShare una empresa de Scribd logo
1 de 7
FAIL2BAN:
INSTALACION y CONFIGURACION
Índice de contenido
INTRODUCCIÓN................................................................................................................................2
INSTALACION Y CONFIGURACION FAIL2BAN..........................................................................2
1.- INSTALACIÓN..........................................................................................................................2
2.- CONFIGURACIÓN DE LAS OPCIONES GENERALES.......................................................3
3.- CONFIGURACIÓN DE LOS SERVICIOS CONCRETOS......................................................4
3.1 – Servicio FTP......................................................................................................................4
4.- ARRANQUE Y ROTACIÓN DEL SERVICIO.........................................................................6
4.1 – Configuración de determinadas acciones en el arranque ..................................................6
4.2 – Arranque del servicio fail2ban..........................................................................................7
4.3 – Rotación del servicio fail2ban............................................................................................7
BIBLIOGRAFíA..................................................................................................................................7
Fecha: Septiembre 2012
1
INTRODUCCIÓN
Un intento frecuente de conseguir acceso a un servidor suele ser mediante ataques por
fuerza fruta (brute-force attack) a los servicios que tiene el servidor. A priori, con una buena
política de seguridad en las contraseñas, este tipo de ataques no es efectivo, pero es cierto
que tiene un elevado consumo de ancho de banda y también de carga para la CPU del servidor
que administras.
Para evitar estos ataques en tu servidor Linux, y de paso el consumo de ancho de banda y
CPU, existen diversas opciones, que aportan un mayor nivel de seguridad a los servidores,
entre ellas fail2ban.
Fail2Ban es una aplicación Python que trabaja sobre los archivos de registro (logs) que
generan los servicios del servidor, los analiza regularmente y busca intentos de acceso fallidos.
Cuando los encuentra, atendiendo al número de intentos de acceso en un determinado periodo
de tiempo, toma ciertas medidas que van desde una simple notificación por correo electrónico
al administrador, hasta un baneo (temporal o indefinido) que puede ser parcial (a un servicio
del servidor que administramos) o total (a todos los servicios que ofrece nuestro servidor).
El funcionamiento es muy sencillo: para cada servicio de nuestro servidor que deseemos
proteger con fail2ban debemos indicar:
• el archivo de registro (logfile) del servicio
• el patrón (filter) que se buscará en el logfile del servicio (directorio /etc/fail2ban/filter.d)
• las acciones que se llevarán a cabo (actions) (directorio /etc/fail2ban/action.d)
• y el número de intentos fallidos que se permiten en cada periodo de tiempo
De esta forma, el demonio que ejecuta fail2ban en nuestro servidor tiene los parámetros
suficientes para poder actuar ante un posible ataque por fuerza bruta a alguno de los servicios
que corren nuestros servidores.
Observaciones: Nuestra instalación y configuración va a ser en una Fedora17.
INSTALACION Y CONFIGURACION FAIL2BAN
1.- INSTALACIÓN
El fail2ban se encuentra empaquetado en los repositorios oficiales de la mayoría de
distribuciones Linux (también se puede descargar fail2ban desde su pagina oficial).
Ejecutamos el siguiente comando para instalarlo:
yum install fail2ban
La instalación de fail2ban crea la siguiente estructura en la carpeta /etc/fail2ban:
/etc/fail2ban
|-- action.d
| |-- hostsdeny.conf
| |-- iptables-allports.conf
| |-- ...
|-- fail2ban.conf
|-- filter.d
| |-- apache-auth.conf
| |-- postfix.conf
| |-- …
|-- jail.conf
2
El archivo fail2ban.conf es el archivo de configuración del demonio que ejecuta fail2ban
analizando los logs del sistema y en el vamos a poder definir diferentes opciones como son el
archivo de registro del propio fail2ban, el detalle de este archivo, etc…
Jail.conf es el archivo donde se definen que servicios van a analizarse y con qué criterios.
Para cada servicio se define un jail que consta como mínimo de una expresión regular (filter),
una acción (action), y el fichero de registro del servicio en cuestión (logpath).
El directorio action.d contiene los scripts de las distintas acciones que pueden asociarse a un
determinado jail. Y el directorio filter.d contiene distintos archivos con las exprexiones
regulares para cada servicio. La instalación incluye los archivos para las acciones más comunes
(envio de correo, whois, baneo con iptables, host.deny,…) y las expresiones regulares (filters)
de multiples servicios (ftp, ssh, correo, apache, …).
Todos los archivos finalizados en .conf son editables, aunque es recomendable no
modificarlos, y utilizar un archivo con el mismo nombre pero acabado en .local en lugar de
.conf para escribir nuestra configuracion. La configuración escrita en los archivos .local
siempre tendrán preferencia ante las .conf. De esta forma se asegura que no se pierda
nuestra configuración al actualizar a otra versión (no es necesario duplicar todas las directivas,
realmente solo con poner aquellas que deseemos modificar será suficiente).
2.- CONFIGURACIÓN DE LAS OPCIONES GENERALES
Copiamos el archivo fail2ban.conf con el nombre fail2ban.local y lo editamos según
nuestras preferencias:
cd /etc/fail2ban/
cp -pr fail2ban.conf fail2ban.local
vi fail2ban.local
- loglevel:nivel de detalle del log de fail2ban. Posibles valores 1=error,2=warn,3=info
y 4=debug. Dejamos el valor por defecto 3
loglevel = 3
- logtarget: sirve para indicar dónde se mostrara o almacenara el log del propio
fail2ban. Es posible redirigirlo a la salida standar (STDOUT), salida de errores standar
(STDERR) o a un archivo (SYSLOG). Vamos a optar por almacenar el registro en un
archivo en el directorio /var/log
logtarget = /var/log/fail2ban.log
- socket: se utiliza para indicar el archivo del socket de fail2ban. Dejamos el valor
que aparece.
socket = /var/run/fail2ban/fail2ban.sock
Una vez guardados los cambios, nos centramos en el archivo jail.conf. Como en el caso
anterior lo copiamos con el nombre de jail.local y editamos su contenido:
cd /etc/fail2ban/
cp -pr jail.conf jail.local
vi jail.local
* Sección [DEFAULT]: contiene los valores de los parámetros que se aplicarán por
defecto a todos los servicios (jails) que se definan, aunque estos valores pueden ser
modificados dentro de cada jail:
3
- ignoreip: sirve para indicar IPs (separadas por espacios) o redes que no queremos
que sean baneadas. Por ejemplo, la IP de loopback del propio servidor.
ignoreip = 127.0.0.1
- bantime: periodo de tiempo (en segundos) durante el cual se mantendrá el bloqueo
del atacante. El valor -1 indicaría que se bloquea para siempre.
bantime = 600
- findtime: el número de fallos se ha de producir en un determinado intervalo de
tiempo. Esta variable es la que indica el intervalo de tiempo en segundos.
findtime = 600
- maxretry: número máximo de intentos fallidos que se permitirán en el intervalo de
tiempo establecido (findtime).
maxretry = 5
- backend: método que se utilizará para comprobar la modificación en los logs de los
servicios.
backend = gamin
Las opciones son:
inotify: Mediante pyinotify lee los cambios en los ficheros.
gamin: Mediante Gamin controla los cambios en los ficheros
polling: Comprueba periódicamente los cambios en los ficheros, en este
caso no es necesario tener librerías complementarias.
auto: Escoge por defecto inotify, sino puede elige gamin y si no puede
usarlo pasa a polling.
* BUG: Hay un problema con el pyInotify y la rotación del log del fail2ban. Si se pone
backend=inotify o backend=auto al rotar el log deja de banear. Ponemos backend=gamin.
3.- CONFIGURACIÓN DE LOS SERVICIOS CONCRETOS
3.1 – Servicio FTP
Ahora sólo nos queda activar el jail del servicio que queremos proteger, en nuestro caso, el
servidor ftp proftpd. El archivo jail.conf ya incluye numerosos jails para los servicios más
conocidos, entre ellos el servidor ftp proftpd.
Por defecto, la configuración que trae fail2ban para proteger el servidor ftp proftpd es la
siguiente:
[proftpd-iptables]
enabled = false
filter = proftpd
action = iptables[name=ProFTPD, port=ftp, protocol=tcp]
sendmail-whois[name=ProFTPD, dest=you@example.com]
logpath = /var/log/proftpd/proftpd.log
maxretry = 6
Vamos a ver detalladamente cada opción:
enabled: sirve para activar o desactivar el jail.
logpath: archivo log que genera el servidor proftpd y en donde se buscan los patrones.
filter: nombre del archivo de la carpeta filter.d que contiene el filtro para proftpd.
action: la acción(o acciones) que se efectuará si se detecta un ataque.
4
Modificamos la configuración del proftpd en el jail.local:
vi jail.local
[proftpd-iptables]
enabled = true
filter = proftpd
action = iptables[name=ProFTPD, port=ftp, protocol=tcp]
sendmail-whois[name=ProFTPD,
dest=direccion@correo]
logpath = /var/log/proftpd/proftpd.auth_log
#bantime = -1 # -1 es indefinido
bantime = 3600
findtime = 30
maxretry = 4
Hemos modificado la ubicación del archivo de registro del servidor proftpd, y hemos añadido
la dirección de email dónde enviará un correo con un whois del atacante.
Comprobación del formato fecha en los logs del protfpd:
El formato del log del proftpd está en fecha española (ejemplo: 08/ago/2012), el fail2ban no
es capaz de analizarlo y no banea. Tenemos que cambiar el formato del log del proftpd:
vi /etc/proftpd.conf
Modificamos esta lína:
LogFormat auth "%v [%P] %h %t "%r" %s"
Por esta otra:
LogFormat auth "%v [%P] %h %{[%m/%d/%Y:%H:%M:%S]}t "%r" %s"
Comprobación del funcionamiento del filtro sobre el contenido del fichero log del proftpd:
Ahora tenemos que comprobar que el contenido del fichero de log, cumple alguno de los
filtros que vienen definidos por defecto, si no es así, hay que hacer uno específico para nuestro
caso. Los filtros definidos son (fichero /etc/fail2ban/filter.d/proftpd.conf):
(S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$
(S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$
(S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$
(S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$
Para hacer esta comprobación, tenemos la herramienta: fail2ban-regex:
fail2ban-regex /var/log/proftpd/proftpd.auth_log /etc/fail2ban/filter.d/proftpd.conf
Nos da como resultado:
Summary
=======
Sorry, no match
Look at the above section 'Running tests' which could contain important
information.
Es decir, nuestro fichero log no se ajusta a los patrones del filtro, así que tenemos que hacer
un patrón concreto para nuestro caso:
(.*) (.*) <HOST> (.*) (.*) 530
5
Lo añadimos en el fichero filter.d/proftpd.conf:
cd /etc/fail2ban/filter.d/
vi proftpd.conf
failregex =
(S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$
(S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$
(S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$
(S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$
(.*) (.*) <HOST> (.*) (.*) 530
Ahora, si comprobamos con fail2ban-regex:
fail2ban-regex /var/log/proftpd/proftpd.auth_log /etc/fail2ban/filter.d/proftpd.conf
Nos da como resultado:
Success, the total number of match is <num>
However, look at the above section 'Running tests' which could contain
important information.
4.- ARRANQUE Y ROTACIÓN DEL SERVICIO
4.1 – Configuración de determinadas acciones en el arranque
Al reiniciar el servicio iptables y el propio servicio fail2ban, se pierden las reglas fail2ban de
bloqueo a las ips atacantes. Para resolver este problema, tenemos que modificar las acciones
de baneo:
En el fichero /etc/fail2ban/action.d/iptables.conf, añadimos las siguientes líneas:
cd /etc/fail2ban/action.d/
vi iptables.conf
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
echo "iptables -I fail2ban-<name> 1 -s <ip> -j DROP" >>
/etc/fail2ban/action.d/ListadoIPsbloquedas.txt
/usr/libexec/iptables.init save
En el fichero /etc/init.d/fail2ban, añadimos la siguiente línea:
vi /etc/init.d/fail2ban
start() {
echo -n $"Starting fail2ban: "
getpid
if [ -z "$pid" ]; then
$FAIL2BAN -x start > /dev/null
RETVAL=$?
fi
if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/fail2ban
echo_success
sh /etc/fail2ban/action.d/ListadoIPsbloquedas.txt
else
echo_failure
fi
echo
return $RETVAL
}
6
4.2 – Arranque del servicio fail2ban
Después de guardar los cambios, iniciamos fail2ban:
service fail2ban start
Metemos el servicio en el arranque, así al reiniciar la máquina se levantará el fail2ban:
systemctl enable fail2ban.service
4.3 – Rotación del servicio fail2ban
Integramos el fichero de log de fail2ban en el logrotate:
cd /etc/logrotate.d/
vi fail2ban
/var/log/fail2ban.log {
weekly
rotate 7
missingok
notifempty
create 0600 root root
postrotate
/usr/bin/fail2ban-client set logtarget SYSLOG 2> /dev/null || true
endscript
}
BIBLIOGRAFíA
http://www.fail2ban.org
http://www.fail2ban.org/wiki/index.php/HOWTOs
http://www.fail2ban.org/wiki/index.php/Manual
http://www.aradaen.com/seguridad/fail2ban-protege-tu-servidor-de-ataques-por-fuerza-
bruta/
http://www.aradaen.com/sysadmin/instalar-fail2ban-en-servidores-centos-y-debian/
7

Más contenido relacionado

La actualidad más candente

Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafkaArlin11
 
Zimbra
ZimbraZimbra
Zimbrauni
 
UYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misteriosUYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misteriosNelson Calero
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerceDavid Ramirez
 
Adi samba
Adi sambaAdi samba
Adi sambajust_65
 
Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Totus Muertos
 

La actualidad más candente (19)

Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafka
 
Configuracion del servidor dns en linux
Configuracion del servidor dns en linuxConfiguracion del servidor dns en linux
Configuracion del servidor dns en linux
 
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizadaGuía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
 
Zimbra
ZimbraZimbra
Zimbra
 
22 http ftp_linux_asoitson
22 http ftp_linux_asoitson22 http ftp_linux_asoitson
22 http ftp_linux_asoitson
 
Pxe
PxePxe
Pxe
 
A4 instalación de koha
A4   instalación de kohaA4   instalación de koha
A4 instalación de koha
 
Pxe
PxePxe
Pxe
 
Mis comandos favoritos en linux parte 2
Mis comandos favoritos en linux parte 2Mis comandos favoritos en linux parte 2
Mis comandos favoritos en linux parte 2
 
UYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misteriosUYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misterios
 
PROXY CENTOS 6.5
PROXY CENTOS 6.5PROXY CENTOS 6.5
PROXY CENTOS 6.5
 
10 administración de paquetes rpm
10  administración de paquetes rpm10  administración de paquetes rpm
10 administración de paquetes rpm
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerce
 
Manual centos_6
Manual centos_6Manual centos_6
Manual centos_6
 
Guía instalación koha por paquetes
Guía instalación koha por paquetesGuía instalación koha por paquetes
Guía instalación koha por paquetes
 
Mis comandos favoritos en linux parte 3
Mis comandos favoritos en linux parte 3Mis comandos favoritos en linux parte 3
Mis comandos favoritos en linux parte 3
 
Seguridad de las redes
Seguridad de las redesSeguridad de las redes
Seguridad de las redes
 
Adi samba
Adi sambaAdi samba
Adi samba
 
Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04
 

Destacado

Presentazione Postel per Philip Morris
Presentazione Postel per Philip MorrisPresentazione Postel per Philip Morris
Presentazione Postel per Philip MorrisBenedetto Langiano
 
Uli hines student competition 2016
Uli hines student competition 2016Uli hines student competition 2016
Uli hines student competition 2016Florian Poix
 
The new dimension of omni-channel shopping
The new dimension of omni-channel shoppingThe new dimension of omni-channel shopping
The new dimension of omni-channel shoppingPyramid Computer GmbH
 
#IMPACTv #LiveTalk by Anna Rita Manca
#IMPACTv #LiveTalk by Anna Rita Manca#IMPACTv #LiveTalk by Anna Rita Manca
#IMPACTv #LiveTalk by Anna Rita Mancaimpactv
 
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...OVTT
 
Used Car Merchandising Infographic
Used Car Merchandising InfographicUsed Car Merchandising Infographic
Used Car Merchandising InfographicEd Brooks
 
Programme forum des traditions du nord
Programme forum des traditions du nordProgramme forum des traditions du nord
Programme forum des traditions du nordJoseph Nodin
 
Folleto copla-2016 1- lineas del tiempo
Folleto copla-2016 1- lineas del tiempoFolleto copla-2016 1- lineas del tiempo
Folleto copla-2016 1- lineas del tiempoFormadores CIE
 
The Bumble Bee Consulting Company
The Bumble Bee Consulting CompanyThe Bumble Bee Consulting Company
The Bumble Bee Consulting Companyaydiat
 
Proyecto Educativo ceip Miguel Hernández. Castillo de Locubin
Proyecto Educativo ceip Miguel Hernández. Castillo de LocubinProyecto Educativo ceip Miguel Hernández. Castillo de Locubin
Proyecto Educativo ceip Miguel Hernández. Castillo de Locubinmlarfer351
 
El cierre de Google News España y su impacto en el panorama de noticias en la...
El cierre de Google News España y su impacto en el panorama de noticias en la...El cierre de Google News España y su impacto en el panorama de noticias en la...
El cierre de Google News España y su impacto en el panorama de noticias en la...Tania Lucía Cobos
 
Powerpoint paola
Powerpoint paolaPowerpoint paola
Powerpoint paolapaola459
 
Borang mohon dana pibg
Borang mohon dana pibgBorang mohon dana pibg
Borang mohon dana pibgSofrie Anuar
 

Destacado (20)

Gender guidelines for Community Radio in Bangladesh
Gender guidelines for Community Radio in Bangladesh Gender guidelines for Community Radio in Bangladesh
Gender guidelines for Community Radio in Bangladesh
 
Presentazione Postel per Philip Morris
Presentazione Postel per Philip MorrisPresentazione Postel per Philip Morris
Presentazione Postel per Philip Morris
 
Laholm 17 mars 2015
Laholm 17 mars 2015Laholm 17 mars 2015
Laholm 17 mars 2015
 
Uli hines student competition 2016
Uli hines student competition 2016Uli hines student competition 2016
Uli hines student competition 2016
 
The new dimension of omni-channel shopping
The new dimension of omni-channel shoppingThe new dimension of omni-channel shopping
The new dimension of omni-channel shopping
 
#IMPACTv #LiveTalk by Anna Rita Manca
#IMPACTv #LiveTalk by Anna Rita Manca#IMPACTv #LiveTalk by Anna Rita Manca
#IMPACTv #LiveTalk by Anna Rita Manca
 
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...
Sesión 1 II Foro RedEmprendia: vigilancia tecnológica dentro de la estrategia...
 
Used Car Merchandising Infographic
Used Car Merchandising InfographicUsed Car Merchandising Infographic
Used Car Merchandising Infographic
 
Programme forum des traditions du nord
Programme forum des traditions du nordProgramme forum des traditions du nord
Programme forum des traditions du nord
 
Folleto copla-2016 1- lineas del tiempo
Folleto copla-2016 1- lineas del tiempoFolleto copla-2016 1- lineas del tiempo
Folleto copla-2016 1- lineas del tiempo
 
The Bumble Bee Consulting Company
The Bumble Bee Consulting CompanyThe Bumble Bee Consulting Company
The Bumble Bee Consulting Company
 
Practica refractiva
Practica refractivaPractica refractiva
Practica refractiva
 
Catecismo basico
Catecismo basicoCatecismo basico
Catecismo basico
 
Proyecto Educativo ceip Miguel Hernández. Castillo de Locubin
Proyecto Educativo ceip Miguel Hernández. Castillo de LocubinProyecto Educativo ceip Miguel Hernández. Castillo de Locubin
Proyecto Educativo ceip Miguel Hernández. Castillo de Locubin
 
Informe Misionero Tanzania
Informe Misionero TanzaniaInforme Misionero Tanzania
Informe Misionero Tanzania
 
Pqrst
PqrstPqrst
Pqrst
 
El cierre de Google News España y su impacto en el panorama de noticias en la...
El cierre de Google News España y su impacto en el panorama de noticias en la...El cierre de Google News España y su impacto en el panorama de noticias en la...
El cierre de Google News España y su impacto en el panorama de noticias en la...
 
Powerpoint paola
Powerpoint paolaPowerpoint paola
Powerpoint paola
 
Borang mohon dana pibg
Borang mohon dana pibgBorang mohon dana pibg
Borang mohon dana pibg
 
LICH Landscape Hawaii Magazine - January/February 2013 Issue
LICH Landscape Hawaii Magazine - January/February 2013 IssueLICH Landscape Hawaii Magazine - January/February 2013 Issue
LICH Landscape Hawaii Magazine - January/February 2013 Issue
 

Similar a Fail2ban instalacion configuracion

Manual de instalacion servicios en red hat
Manual de instalacion servicios en red hatManual de instalacion servicios en red hat
Manual de instalacion servicios en red hatjcausil1
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracioncriscega
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDAndres Ldño
 
Unidad iii seguridad de redes
Unidad iii seguridad de redes Unidad iii seguridad de redes
Unidad iii seguridad de redes leonardoruiz98
 
Instalacionoracle10 g
Instalacionoracle10 gInstalacionoracle10 g
Instalacionoracle10 gronyweb
 
Servidor ftp1
Servidor ftp1Servidor ftp1
Servidor ftp1sindikto
 
Servidor FTP en Centos 6
Servidor FTP en Centos 6Servidor FTP en Centos 6
Servidor FTP en Centos 6AngiePalacios03
 
Receta red social
Receta red socialReceta red social
Receta red socialwalterose7
 
Tutorial Rsyslog Debian Squeeze
Tutorial Rsyslog Debian SqueezeTutorial Rsyslog Debian Squeeze
Tutorial Rsyslog Debian Squeezecercer
 
Nagios para Dummies By pseudor00t
Nagios para Dummies By pseudor00tNagios para Dummies By pseudor00t
Nagios para Dummies By pseudor00tpseudor00t overflow
 

Similar a Fail2ban instalacion configuracion (20)

Manual de instalacion servicios en red hat
Manual de instalacion servicios en red hatManual de instalacion servicios en red hat
Manual de instalacion servicios en red hat
 
Fail2 ban
Fail2 banFail2 ban
Fail2 ban
 
Fail2 ban
Fail2 banFail2 ban
Fail2 ban
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracion
 
Instalación y configuración Servidor FTP y SSH
Instalación y configuración Servidor FTP y SSHInstalación y configuración Servidor FTP y SSH
Instalación y configuración Servidor FTP y SSH
 
Fail2 ban
Fail2 banFail2 ban
Fail2 ban
 
0114 manual-de-configuracion-servidores-en-centos
0114 manual-de-configuracion-servidores-en-centos0114 manual-de-configuracion-servidores-en-centos
0114 manual-de-configuracion-servidores-en-centos
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUID
 
Guia postfix
Guia postfixGuia postfix
Guia postfix
 
Servidor vsftpd oscar cortez
Servidor vsftpd oscar cortezServidor vsftpd oscar cortez
Servidor vsftpd oscar cortez
 
Unidad iii seguridad de redes
Unidad iii seguridad de redes Unidad iii seguridad de redes
Unidad iii seguridad de redes
 
Instalacionoracle10 g
Instalacionoracle10 gInstalacionoracle10 g
Instalacionoracle10 g
 
Servidor ftp1
Servidor ftp1Servidor ftp1
Servidor ftp1
 
Servidor FTP en Centos 6
Servidor FTP en Centos 6Servidor FTP en Centos 6
Servidor FTP en Centos 6
 
Dhcp vlans
Dhcp vlansDhcp vlans
Dhcp vlans
 
Samba
SambaSamba
Samba
 
LEVANTAR SERVIDOR FTP EN CENTOS
LEVANTAR SERVIDOR FTP EN CENTOSLEVANTAR SERVIDOR FTP EN CENTOS
LEVANTAR SERVIDOR FTP EN CENTOS
 
Receta red social
Receta red socialReceta red social
Receta red social
 
Tutorial Rsyslog Debian Squeeze
Tutorial Rsyslog Debian SqueezeTutorial Rsyslog Debian Squeeze
Tutorial Rsyslog Debian Squeeze
 
Nagios para Dummies By pseudor00t
Nagios para Dummies By pseudor00tNagios para Dummies By pseudor00t
Nagios para Dummies By pseudor00t
 

Fail2ban instalacion configuracion

  • 1. FAIL2BAN: INSTALACION y CONFIGURACION Índice de contenido INTRODUCCIÓN................................................................................................................................2 INSTALACION Y CONFIGURACION FAIL2BAN..........................................................................2 1.- INSTALACIÓN..........................................................................................................................2 2.- CONFIGURACIÓN DE LAS OPCIONES GENERALES.......................................................3 3.- CONFIGURACIÓN DE LOS SERVICIOS CONCRETOS......................................................4 3.1 – Servicio FTP......................................................................................................................4 4.- ARRANQUE Y ROTACIÓN DEL SERVICIO.........................................................................6 4.1 – Configuración de determinadas acciones en el arranque ..................................................6 4.2 – Arranque del servicio fail2ban..........................................................................................7 4.3 – Rotación del servicio fail2ban............................................................................................7 BIBLIOGRAFíA..................................................................................................................................7 Fecha: Septiembre 2012 1
  • 2. INTRODUCCIÓN Un intento frecuente de conseguir acceso a un servidor suele ser mediante ataques por fuerza fruta (brute-force attack) a los servicios que tiene el servidor. A priori, con una buena política de seguridad en las contraseñas, este tipo de ataques no es efectivo, pero es cierto que tiene un elevado consumo de ancho de banda y también de carga para la CPU del servidor que administras. Para evitar estos ataques en tu servidor Linux, y de paso el consumo de ancho de banda y CPU, existen diversas opciones, que aportan un mayor nivel de seguridad a los servidores, entre ellas fail2ban. Fail2Ban es una aplicación Python que trabaja sobre los archivos de registro (logs) que generan los servicios del servidor, los analiza regularmente y busca intentos de acceso fallidos. Cuando los encuentra, atendiendo al número de intentos de acceso en un determinado periodo de tiempo, toma ciertas medidas que van desde una simple notificación por correo electrónico al administrador, hasta un baneo (temporal o indefinido) que puede ser parcial (a un servicio del servidor que administramos) o total (a todos los servicios que ofrece nuestro servidor). El funcionamiento es muy sencillo: para cada servicio de nuestro servidor que deseemos proteger con fail2ban debemos indicar: • el archivo de registro (logfile) del servicio • el patrón (filter) que se buscará en el logfile del servicio (directorio /etc/fail2ban/filter.d) • las acciones que se llevarán a cabo (actions) (directorio /etc/fail2ban/action.d) • y el número de intentos fallidos que se permiten en cada periodo de tiempo De esta forma, el demonio que ejecuta fail2ban en nuestro servidor tiene los parámetros suficientes para poder actuar ante un posible ataque por fuerza bruta a alguno de los servicios que corren nuestros servidores. Observaciones: Nuestra instalación y configuración va a ser en una Fedora17. INSTALACION Y CONFIGURACION FAIL2BAN 1.- INSTALACIÓN El fail2ban se encuentra empaquetado en los repositorios oficiales de la mayoría de distribuciones Linux (también se puede descargar fail2ban desde su pagina oficial). Ejecutamos el siguiente comando para instalarlo: yum install fail2ban La instalación de fail2ban crea la siguiente estructura en la carpeta /etc/fail2ban: /etc/fail2ban |-- action.d | |-- hostsdeny.conf | |-- iptables-allports.conf | |-- ... |-- fail2ban.conf |-- filter.d | |-- apache-auth.conf | |-- postfix.conf | |-- … |-- jail.conf 2
  • 3. El archivo fail2ban.conf es el archivo de configuración del demonio que ejecuta fail2ban analizando los logs del sistema y en el vamos a poder definir diferentes opciones como son el archivo de registro del propio fail2ban, el detalle de este archivo, etc… Jail.conf es el archivo donde se definen que servicios van a analizarse y con qué criterios. Para cada servicio se define un jail que consta como mínimo de una expresión regular (filter), una acción (action), y el fichero de registro del servicio en cuestión (logpath). El directorio action.d contiene los scripts de las distintas acciones que pueden asociarse a un determinado jail. Y el directorio filter.d contiene distintos archivos con las exprexiones regulares para cada servicio. La instalación incluye los archivos para las acciones más comunes (envio de correo, whois, baneo con iptables, host.deny,…) y las expresiones regulares (filters) de multiples servicios (ftp, ssh, correo, apache, …). Todos los archivos finalizados en .conf son editables, aunque es recomendable no modificarlos, y utilizar un archivo con el mismo nombre pero acabado en .local en lugar de .conf para escribir nuestra configuracion. La configuración escrita en los archivos .local siempre tendrán preferencia ante las .conf. De esta forma se asegura que no se pierda nuestra configuración al actualizar a otra versión (no es necesario duplicar todas las directivas, realmente solo con poner aquellas que deseemos modificar será suficiente). 2.- CONFIGURACIÓN DE LAS OPCIONES GENERALES Copiamos el archivo fail2ban.conf con el nombre fail2ban.local y lo editamos según nuestras preferencias: cd /etc/fail2ban/ cp -pr fail2ban.conf fail2ban.local vi fail2ban.local - loglevel:nivel de detalle del log de fail2ban. Posibles valores 1=error,2=warn,3=info y 4=debug. Dejamos el valor por defecto 3 loglevel = 3 - logtarget: sirve para indicar dónde se mostrara o almacenara el log del propio fail2ban. Es posible redirigirlo a la salida standar (STDOUT), salida de errores standar (STDERR) o a un archivo (SYSLOG). Vamos a optar por almacenar el registro en un archivo en el directorio /var/log logtarget = /var/log/fail2ban.log - socket: se utiliza para indicar el archivo del socket de fail2ban. Dejamos el valor que aparece. socket = /var/run/fail2ban/fail2ban.sock Una vez guardados los cambios, nos centramos en el archivo jail.conf. Como en el caso anterior lo copiamos con el nombre de jail.local y editamos su contenido: cd /etc/fail2ban/ cp -pr jail.conf jail.local vi jail.local * Sección [DEFAULT]: contiene los valores de los parámetros que se aplicarán por defecto a todos los servicios (jails) que se definan, aunque estos valores pueden ser modificados dentro de cada jail: 3
  • 4. - ignoreip: sirve para indicar IPs (separadas por espacios) o redes que no queremos que sean baneadas. Por ejemplo, la IP de loopback del propio servidor. ignoreip = 127.0.0.1 - bantime: periodo de tiempo (en segundos) durante el cual se mantendrá el bloqueo del atacante. El valor -1 indicaría que se bloquea para siempre. bantime = 600 - findtime: el número de fallos se ha de producir en un determinado intervalo de tiempo. Esta variable es la que indica el intervalo de tiempo en segundos. findtime = 600 - maxretry: número máximo de intentos fallidos que se permitirán en el intervalo de tiempo establecido (findtime). maxretry = 5 - backend: método que se utilizará para comprobar la modificación en los logs de los servicios. backend = gamin Las opciones son: inotify: Mediante pyinotify lee los cambios en los ficheros. gamin: Mediante Gamin controla los cambios en los ficheros polling: Comprueba periódicamente los cambios en los ficheros, en este caso no es necesario tener librerías complementarias. auto: Escoge por defecto inotify, sino puede elige gamin y si no puede usarlo pasa a polling. * BUG: Hay un problema con el pyInotify y la rotación del log del fail2ban. Si se pone backend=inotify o backend=auto al rotar el log deja de banear. Ponemos backend=gamin. 3.- CONFIGURACIÓN DE LOS SERVICIOS CONCRETOS 3.1 – Servicio FTP Ahora sólo nos queda activar el jail del servicio que queremos proteger, en nuestro caso, el servidor ftp proftpd. El archivo jail.conf ya incluye numerosos jails para los servicios más conocidos, entre ellos el servidor ftp proftpd. Por defecto, la configuración que trae fail2ban para proteger el servidor ftp proftpd es la siguiente: [proftpd-iptables] enabled = false filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, dest=you@example.com] logpath = /var/log/proftpd/proftpd.log maxretry = 6 Vamos a ver detalladamente cada opción: enabled: sirve para activar o desactivar el jail. logpath: archivo log que genera el servidor proftpd y en donde se buscan los patrones. filter: nombre del archivo de la carpeta filter.d que contiene el filtro para proftpd. action: la acción(o acciones) que se efectuará si se detecta un ataque. 4
  • 5. Modificamos la configuración del proftpd en el jail.local: vi jail.local [proftpd-iptables] enabled = true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, dest=direccion@correo] logpath = /var/log/proftpd/proftpd.auth_log #bantime = -1 # -1 es indefinido bantime = 3600 findtime = 30 maxretry = 4 Hemos modificado la ubicación del archivo de registro del servidor proftpd, y hemos añadido la dirección de email dónde enviará un correo con un whois del atacante. Comprobación del formato fecha en los logs del protfpd: El formato del log del proftpd está en fecha española (ejemplo: 08/ago/2012), el fail2ban no es capaz de analizarlo y no banea. Tenemos que cambiar el formato del log del proftpd: vi /etc/proftpd.conf Modificamos esta lína: LogFormat auth "%v [%P] %h %t "%r" %s" Por esta otra: LogFormat auth "%v [%P] %h %{[%m/%d/%Y:%H:%M:%S]}t "%r" %s" Comprobación del funcionamiento del filtro sobre el contenido del fichero log del proftpd: Ahora tenemos que comprobar que el contenido del fichero de log, cumple alguno de los filtros que vienen definidos por defecto, si no es así, hay que hacer uno específico para nuestro caso. Los filtros definidos son (fichero /etc/fail2ban/filter.d/proftpd.conf): (S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$ (S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$ (S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$ (S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$ Para hacer esta comprobación, tenemos la herramienta: fail2ban-regex: fail2ban-regex /var/log/proftpd/proftpd.auth_log /etc/fail2ban/filter.d/proftpd.conf Nos da como resultado: Summary ======= Sorry, no match Look at the above section 'Running tests' which could contain important information. Es decir, nuestro fichero log no se ajusta a los patrones del filtro, así que tenemos que hacer un patrón concreto para nuestro caso: (.*) (.*) <HOST> (.*) (.*) 530 5
  • 6. Lo añadimos en el fichero filter.d/proftpd.conf: cd /etc/fail2ban/filter.d/ vi proftpd.conf failregex = (S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$ (S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$ (S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$ (S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$ (.*) (.*) <HOST> (.*) (.*) 530 Ahora, si comprobamos con fail2ban-regex: fail2ban-regex /var/log/proftpd/proftpd.auth_log /etc/fail2ban/filter.d/proftpd.conf Nos da como resultado: Success, the total number of match is <num> However, look at the above section 'Running tests' which could contain important information. 4.- ARRANQUE Y ROTACIÓN DEL SERVICIO 4.1 – Configuración de determinadas acciones en el arranque Al reiniciar el servicio iptables y el propio servicio fail2ban, se pierden las reglas fail2ban de bloqueo a las ips atacantes. Para resolver este problema, tenemos que modificar las acciones de baneo: En el fichero /etc/fail2ban/action.d/iptables.conf, añadimos las siguientes líneas: cd /etc/fail2ban/action.d/ vi iptables.conf actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP echo "iptables -I fail2ban-<name> 1 -s <ip> -j DROP" >> /etc/fail2ban/action.d/ListadoIPsbloquedas.txt /usr/libexec/iptables.init save En el fichero /etc/init.d/fail2ban, añadimos la siguiente línea: vi /etc/init.d/fail2ban start() { echo -n $"Starting fail2ban: " getpid if [ -z "$pid" ]; then $FAIL2BAN -x start > /dev/null RETVAL=$? fi if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/fail2ban echo_success sh /etc/fail2ban/action.d/ListadoIPsbloquedas.txt else echo_failure fi echo return $RETVAL } 6
  • 7. 4.2 – Arranque del servicio fail2ban Después de guardar los cambios, iniciamos fail2ban: service fail2ban start Metemos el servicio en el arranque, así al reiniciar la máquina se levantará el fail2ban: systemctl enable fail2ban.service 4.3 – Rotación del servicio fail2ban Integramos el fichero de log de fail2ban en el logrotate: cd /etc/logrotate.d/ vi fail2ban /var/log/fail2ban.log { weekly rotate 7 missingok notifempty create 0600 root root postrotate /usr/bin/fail2ban-client set logtarget SYSLOG 2> /dev/null || true endscript } BIBLIOGRAFíA http://www.fail2ban.org http://www.fail2ban.org/wiki/index.php/HOWTOs http://www.fail2ban.org/wiki/index.php/Manual http://www.aradaen.com/seguridad/fail2ban-protege-tu-servidor-de-ataques-por-fuerza- bruta/ http://www.aradaen.com/sysadmin/instalar-fail2ban-en-servidores-centos-y-debian/ 7