Skip to main content

Cómo instalar y poner en marcha Fail2ban en Ubuntu Server 12.04 LTS

Fail2ban es una pequeña utilidad que se ejecuta en el servidor y que monitoria varios archivos de log del sistema. Cuando detecta un comportamiento sospechoso proveniente de un visitante en alguno de los servicios que monitoriza lo banea para que deje de molestar.

La configuración por defecto de Fail2ban monitoriza el servicio ssh, pero puede además monitorizar, el ftp, el mail, o el servicio web entro otros si se activa y configura adecuadamente.

Para instalar Fail2ban ejecutamos en un terminal el siguiente comando.

sudo aptitude install fail2ban

Una vez instalado vamos a editar su fichero de configuración. Lo abrimos con:

sudo nano /etc/fail2ban/jail.conf

El archivo se organiza en pequeñas secciones llamadas jaulas, donde se configura como se monitoriza un servicio en concreto. Todas estas jaulas tienen una línea con donde se puede activar o desactivar cambiando enable a false o true. Veamos la jaula para SSH:


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

Tal como esta, funciona perfectamente sin cambiar nada. Nos aseguramos que en nuestro fichero de configuración este también en true. Si el puerto por el que accedemos al servicio SSH esta cambiado por otro debemos también cambiarlo en la configuración de la jaula por el que corresponda. La línea con maxretry indica que en esta jaula cuando el visitante malicioso intente ingresar más de 6 veces será baneado el tiempo en segundos que indique la línea:

bantime = 600

Si queremos que cuando Fail2ban banea a un visitante malicioso nos envíe un correo para informarnos, podemos poner el correo de destino en la línea:

destemail = usuario@example.com

Y podemos pedir que el informe enviado a nuestro correo sea bastante completo cambiando la línea:

action = %(action_)s

por:

action = %(action_mwl)s

Cuando estemos satisfechos con los cambios guardamos y reiniciamos fail2ban con:

sudo service fail2ban restart

Y para conocer el estado del servicio Fail2ban podemos usar:

sudo fail2ban-client status

Cómo añadir el html de un favicon a tu web

Un favicon es una pequeña imagen, que los navegadores usan para facilitar la identificación de nuestra página. Es habitual que los navegadores pidan esta imagen, provocando en caso de no estar disponible un pequeño error que se acumula en el fichero error.log de apache. Un pequeño error que cuando se produce multitud de veces puede engordar ese fichero innecesariamente.

Inicialmente necesitamos generar la imagen. Para eso necesitamos un editor de imágenes que permita guardar en formato ICO. O alternativamente podemos usar un servicio web como genfavicon.

Una vez tenemos nuestro favicon, lo subimos al nuestro sitio web, preferiblemente a la raíz. Luego necesitamos añadir al <head> del html de la página un elemento <link> con la ruta donde esta alojado el favicon. El elemento tendrá un aspecto similar a:

<link rel="shortcut icon" href="http://www.example.com/favicon.ico">

Donde la url que ponemos en el atributo href la adecuaremos a la realidad de donde esta alojado el favicon.

Endureciendo SSH en Ubuntu Server 12.04 LTS

Endureciendo SSH o más técnicamente SSH Hardening es una labor que debemos realizar inmediatamente después de dejar instalado nuestro servidor.

Una vez creemos los usuarios administrativos para operar con el servidor debemos usar llaves publicas para acceder a él. Esto lo vimos recientemente en Identificación con el servidor SSH usando llaves RSA Ubuntu server 12.04 LTS. Simultáneamente activaremos un contrafuegos tal como vimos en Configurar cortafuegos UFW en servidor Ubuntu 12.04 LTS .

Después haremos algunas modificaciones al archivo de configuración de Open ssh. Desde la línea de comando haremos una copia de seguridad del archivo de configuración:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
Seguidamente abrimos para editar con:
sudo nano /etc/ssh/sshd_config
Revisaremos las siguientes claves para que queden de la siguiente manera. Evitamos que el usuario root puede acceder remotamente. El usuario root es un administrador con nombre de usuario conocido y va a ser el que sufra más frecuentes ataques.
Nos aseguramos que SSH usa el protocolo más reciente.
Cambiamos el puerto. Pero para hacer esto debemos asegurarnos primero que el puerto este habilitado en el cortafuegos, si no perderemos el acceso al servidor.
Obviamente, inhabilita las contraseñas vacías.
Hay bastantes más opciones que pueden fortalecer la seguridad con SSH pero estas dependerán del uso que demos al servidor. Por ejemplo:
Reduce el tiempo para establecer una sesión SSH a 30 segundos.
Aumenta la fortaleza de las llaves. Se puede poner también 2048.
Cierra la conexión con el servidor automáticamente si no hay actividad pasados 10 minutos (60*10 segundos).

Se recomienda además deshabilitar el acceso con contraseñas y usar claves públicas. Alternativamente o simultáneamente se puede usar contraseñas muy fuertes.

Una vez hechos los cambios reiniciamos el servicio SSH con:
sudo /etc/init.d/ssh restart
Por último usar Fail2ban con SSH para banear a IPs sospechosas que intenten entrar en el servidor.