Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Mostrando entradas con la etiqueta fail2ban. Mostrar todas las entradas
Mostrando entradas con la etiqueta fail2ban. Mostrar todas las entradas

Como instalar y configurar Fail2ban en Linux Centos

DriveMeca instalando y configurando Fail2ban en un servidor Linux Centos
Ya casi es común escuchar noticias de ataques por internet a empresas conocidas, reconocelo, el que no seas popular o famoso no quiere decir que tu servidor esta fuera de peligro por lo cual hoy mostraremos una forma de estar preparados para estos ataques protegiendo el puerto ssh. Nuestro articulo el día de hoy sera como instalar y configurar paso a paso fail2ban en un servidor linux centos. Los ataques no solo son por el puerto ssh (22 - tcp) pero si son los mas comunes y con fail2ban podemos de forma automática protegernos de este y otros ataques sin que sea tan complicado de manejar.

Requerimientos


-Comenzamos instalando el repositorio Epel

Articulo a consultar: Potencia tu Linux Centos; instala los repositorios RPMForge / Epel / Remi

Para Centos 6

yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Para Centos 7

yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

-Instalamos fail2ban habilitando el repositorio epel
yum install --enablerepo=epel fail2ban

-Creamos un jail para sshd independiente, sin tocar el conf principal (bloqueara una ip después de 5 intentos fallidos de conexion)
vi /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400

-Habilitamos el servicio de fail2ban y lo ejecutamos
Para Centos 6

chkconfig fail2ban on
service fail2ban restart

Para Centos 7

systemctl enable fail2ban.service
systemctl restart fail2ban.service

-Verificamos ejecución de servicio fail2ban
fail2ban-client ping
Server replied: pong

-Estado de fail2ban
fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

-Verificamos como va trabajando nuestro jail sshd
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed: 21
|  `- File list: /var/log/secure
`- Actions
   |- Currently banned: 3
   |- Total banned: 3
   `- Banned IP list: 125.88.177.95 222.186.31.181 58.218.198.49

-Como se ve desde iptables
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination      
f2b-sshd   tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination      

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

Chain f2b-sshd (1 references)
target     prot opt source               destination      
REJECT     all  --  58.218.198.49        anywhere            reject-with icmp-port-unreachable 
REJECT     all  --  222.186.31.181       anywhere            reject-with icmp-port-unreachable 
REJECT     all  --  125.88.177.95        anywhere            reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

-Como agregar ips para que no se bloqueen
fail2ban-client set sshd addignoreip 10.8.0.202
These IP addresses/networks are ignored:
|- 127.0.0.1/8
`- 10.8.0.202

-Agregar una subred a ips ignoradas
fail2ban-client set sshd addignoreip 10.8.0.0/24

-Eliminar ips ignoradas
fail2ban-client set sshd delignoreip 10.8.0.202

-Verificar ips ignoradas
fail2ban-client get sshd ignoreip
These IP addresses/networks are ignored:
|- 127.0.0.1/8
`- 10.8.0.0/24

-Bloquear (bannear) una ip manualmente
fail2ban-client set sshd banip 104.43.20.94

-Desbloquear (eliminar) una ip manualmente
fail2ban-client set sshd unbanip 104.43.20.94

-En caso de dudas, podemos ejecutar fail2ban-client sin parámetros y se nos mostrara un listado de comandos con su explicación corta

Ya usas fail2ban para proteger los puertos de tus servidores de ataques? usas otra alternativa?, escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.

Sígueme en twitter google+facebook o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark

Como instalar y configurar Fail2ban paso a paso

DriveMeca instalando y configurando Fail2ban en Linux CentosEn los tiempos de ahora una forma común de hackear un servidor es conectarse a sus puertos y explotar vulnerabilidades conocidas o atacar por la fuerza buscando alguna cuenta con una contraseña conocida.
Esto nos obliga a estar pendientes de actualizaciones criticas y estar mirando logs del OS buscando pruebas de ataques para poder reaccionar antes de que sea tarde. Por suerte existe fail2ban, un framework escrito en Python para prevención de intrusos (intrusion prevention framework) que básicamente inspecciona logs del OS y reacciona bloqueando temporalmente (o total) las ip's sospechosas de un ataque. Al ser temporal el bloqueo no dejamos por fuera completamente a alguna conexión legitima que estuviera desconfigurada.
Fail2ban puede realizar varias acciones al detectar intentos maliciosos de conexión como son bloqueo de ip/dominio por medio de iptables, envió de email con un alerta a un administrador, actualizar por medio de TCP Wrappers el archivo hosts.deny o una acción definida en un script Python. Entre los scripts que ya vienen preconfigurados encontramos chequeos para sshd, apache, asterisk, vsftpd, postfix entre otros lo cual nos permite tenerlo funcionando en pocos minutos desde que lo instalamos.
Para el articulo de hoy veremos como se instala en un servidor Linux Centos 6.5 actualizado a la fecha.

Requerimientos



-Instalamos por medio del repositorio RPMForge
yum --enablerepo=rpmforge install fail2ban

-Configuramos Fail2ban y activamos los chequeos que queremos tener activos
vi /etc/fail2ban/jail.conf
[DEFAULT]
#ignoreip nos permite agregar las ip's que no queremos bloquear. Pensemos en la ip del mismo host
#que ejecuta fail2ban como primera opcion. Si queremos podemos agregar otras ip's separandolas
#con espacios en blancos; también podemos usar dominios
ignoreip = 127.0.0.1/8

#bantime es el numero de segundos que estará bloqueado un host. Podemos incrementarlo o
#decrementarlo según nuestra necesidad
bantime  = 600

#Tiempo en segundos del que dispone un host para logearse antes de la cantidad máxima de veces que
#nos indica maxretry
findtime  = 600

#Numero de intentos antes de ser bloqueado un host
maxretry = 3

[ssh-iptables]
enabled  = true
filter   = sshd
#Personalizamos la acción para que nos llegue a nuestro email la alerta. you@example.com lo
#cambiamos por nuestra dirección y fail2ban@example.com es el campo from (De) del email
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com]
logpath  = /var/log/sshd.log
maxretry = 5

-Directorios a tener en cuenta dentro de /etc/fail2ban
/etc/fail2ban/action.d <-------------- directorio de scripts a ejecutarse por action
/etc/fail2ban/filter.d <---------------- directorio de filtros que activaran los scripts de action

-Activamos el servicio para que se ejecute siempre que inicie el servidor y lo ejecutamos por primera vez
chkconfig fail2ban on
service fail2ban start

-Verificamos las reglas de iptables
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

-Para desbloquear una ip ejecutamos el siguiente comando
iptables -D fail2ban-ssh 1

Al automatizar ciertas tareas como la de verificar logs para reaccionar a ataques; tendremos mas tiempo para investigar y trabajar en otros temas. Ya usas Fail2ban, con cuales servicios? usas otro sistema de prevención de intrusos, cual?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+ o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark