Como proteger tu servidor de Ataques
La aplicación que vamos a usar para protegernos de llama Fail2Ban y se va a encargar de proteger durante todo el tiempo y bloquear todo intento de logearse en algunos de nuestros servicios.
Ejecutamos en una terminal como super usuario (root) y lo instalamos con el comando:
apt-get install fail2ban
Ahora vamos a renombrar el fichero de configuración jail.conf por jail.confOLD ya que este mismo nos puede servir como referencia aunque mas adelante os explicare como configurarlo.
mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.confOLD
En el interior de el archivo jail.confOLD, ya hay varias opciones editadas por defecto y solo están a la espera de ser editadas para ser activadas. A continuación os voy a exponer cual es la configuración para que os sirva como ejemplo.
Creamos un nuevo jail.conf para asignarle nuestras propias reglas …vi/etc/fail2ban/jail.conf
ignoreip : IPs de nuestra área local que queremos que se haga la vista gorda en caso de equivocación.
bantime : Tiempo que el usuario que fallo el logeo se quedara sin poder acceder al servicio especificado en segundos.
maxretry : Numero de intentos de logeo.
backend : Permite de un modo o otro la escritura de ficheros log.
destemail : Dirección de correo donde nos enviara las alertas.
action : Forma en que iptables aplica sus reglas.
mail-whois-lines : Se especifica que queremos que nos envié al correo en caso de intrusión.
Esas lineas explican la configuración básica de el fichero, a continuación vamos a ver un ejemplo de las celdas que creamos para cada servicio …
[ssh] : Tomare ssh como ejemplo pero esta es una linea que da igual lo que pongamos, ya que no afecta a la configuración.
enable : Podemos introducir true para activarlo y false para desactivarlo.
port : Nombre del servicio relacionado con el puerto.
filter : Nombre del archivo .conf ubicado en el subdirectorio /etc/fail2ban/filter.d, este va relacionado con algún filtro ya creado.
logpath : Ruta donde se ubica el fichero log donde se almacena toda la información de el servicio en cuestión.
maxretry : Numero de intentos fallidos, aquà podemos especificar un carácter diferente para cada celda que creemos.
findtime : Si alguien prueba x intentos en este periodo de tiempo especificado en segundos se le considera ataque.
Yo voy a proteger a los servicios SSH, FTP, y al WWW que son los que ofrecen mi servidor hacia internet. A cada uno le voy a dar un retardo de 300 segundos que vienen a ser unos 5 minutos para que durante ese tiempo el usuario que quiera conectarse no le sea una molestia esta medida de seguridad. 5 minutos es suficiente para evitar el uso malintencionado de un ataque por fuerza bruta o también llamado diccionario de nombres.
enable : Podemos introducir true para activarlo y false para desactivarlo.
port : Nombre del servicio relacionado con el puerto.
filter : Nombre del archivo .conf ubicado en el subdirectorio /etc/fail2ban/filter.d, este va relacionado con algún filtro ya creado.
logpath : Ruta donde se ubica el fichero log donde se almacena toda la información de el servicio en cuestión.
maxretry : Numero de intentos fallidos, aquà podemos especificar un carácter diferente para cada celda que creemos.
findtime : Si alguien prueba x intentos en este periodo de tiempo especificado en segundos se le considera ataque.
Yo voy a proteger a los servicios SSH, FTP, y al WWW que son los que ofrecen mi servidor hacia internet. A cada uno le voy a dar un retardo de 300 segundos que vienen a ser unos 5 minutos para que durante ese tiempo el usuario que quiera conectarse no le sea una molestia esta medida de seguridad. 5 minutos es suficiente para evitar el uso malintencionado de un ataque por fuerza bruta o también llamado diccionario de nombres.
[DEFAULT]
ignoreip = 127.0.0.1 192.168.1.0/24
bantime = 300
maxretry = 3
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s] mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s] [ssh]
bantime = 300
maxretry = 3
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s] mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s] [ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
[apache]port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
enabled = true
port = http
filter = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 3
findtime = 600
[apache-noscript]port = http
filter = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 3
findtime = 600
enabled = true
port = http
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600
[proftpd]port = http
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600
enabled = true
port = ftp
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
findtime = 600
port = ftp
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
findtime = 600
Como podéis ver en la configuración anterior se especifican reglas para cada servicio especificando el puerto, filtro, ruta donde se ubica el fichero log que genera el servicio y el máximo de intentos de logeo. ( Verifica en tu PC que las rutas son correctas )
Una vez editado este fichero de configuración salimos y guardamos con la tecla ESC y :wq! . A continuación ejecutamos nuestro guardián con …
fail2ban-client start
Y veremos algo asà …
2008-03-26 14:19:16,700 fail2ban.server : INFO Starting Fail2ban
Si lo configuramos correctamente solo veremos esta linea, si no veremos alguna linea tipo Warning. ( ATENCIÓN : Ella siempre nos especifica el problema que tenemos en el fichero fail.con )
Si queréis ver que tal andamos de bloqueos podéis ver el fichero fail2ban.log que se ubica en la ruta /var/log donde se guardan todos los bloqueos, ips, fecha y hora de quien nos está atacando.
A continuación podemos pasar a la PARTE (6) del manual Dominios
No hay comentarios:
Publicar un comentario