Mar
28
Archivado en la categoria Debian, Sec-Info, Ubuntu el dia 28-Marzo-2008

Hace ya algunos años que tengo servidores Web online las 24 horas del día en mi casa ofreciendo servicios hacia Internet los cuales necesitan un nombre de usuario y un password para poder acceder a ellos como pueden ser el SSH o el FTP. He recibido todo tipo de ataques de algunos indeseables pero el mas frecuente es el ataque por fuerza bruta que viene a ser el uso de una lista de nombres tipo diccionario. Han habido días que han estado probando una y otra vez con una lista interminable de nombres haber si coincidían con el password de súper usuario root para hacerse con el servidor por el puerto del SSH.

Hasta el día de hoy los he ido bloqueando de diferentes modos pero el que os voy a explicar esta vez es el mejor que he encontrado contra este tipo de amenazas. El manual que podéis leer a continuación es aplicable en las distribuciones Linux Debian y Linux Ubuntu ya que han sido las dos en las que he probado esta técnica siendo correcta su instalación y configuración.

Este manual es aplicable a cualquier ordenador que ofrezca algún tipo de servicio hacia Internet y quieras protegerlo de un modo cómodo, seguro y funcional.

La aplicación que vamos a usar para protegernos se llama Fail2Ban y se va a encargar de hacer de guardián las 24 horas del día bloqueando a todo aquel que tenga un numero de intentos fallidos de login en alguno de nuestros servicios. Vamos con su instalación …

Ejecutamos una Terminal y nos logeamos como súper usuario ( root ) con el comando su, a continuación lo instalamos con …

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 me lo he configurado yo ;)

mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.confOLD

Como podemos ver 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 mi configuración para que os sirva como ejemplo.

Creamos un nuevo jail.conf para asignarle nuestras propias reglas …

vi /etc/fail2ban/jail.conf

Especificando un poco sobre el fichero de configuración …..

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. ( Yo estoy en Debian 4.0 y solo me funciona con la opción polling )
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.

Si nos fijamos en mi fichero de configuración veréis un ejemplo de como lo tengo yo montado …

[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]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600

[apache]

enabled = true
port = http
filter = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 3
findtime = 600

[apache-noscript]

enabled = true
port = http
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600

[proftpd]

enabled = true
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.conf )

Este manual a sido aplicado al servidor Web con Linux Debian que hace unos días publique. Si lo tienes montado quizás te interese aplicarle un poco de seguridad ante esta pequeña molestia que tarde o temprano todos tenemos alguna vez en la vida aunque no nos demos cuenta.

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. Yo lo he probado localmente para ver que tal funciona y aquí tenemos el resultado …

Para mas información sobre el tema podéis visitar la web oficial Fail2ban.org donde tienen toda la documentación oficial sobre el programa en cuestión.

Ahora solo me queda irme a dormir tranquilo y mañana veré en mi correo que tal ando de intentos de logeo fallidos :D

¡ No te lo pierdas !


Comentarios:

[…] Como proteger tu servidor Linux de ataques por fuerza brutawww.forat.info/2008/03/28/como-proteger-tu-servidor-linux-de… por glory hace pocos segundos […]


Gravatar FaQ 28th Marzo, 2008 a las 3:33

es una buena opcion pero tambien hay otra q no necesita de instalar software.

“PermitRootLogin no” en el archivo/etc/ssh/sshd_config y listo, no se puede logear con el usuario de root, para eso hay q conectarse con un usuario y hacer SU, o SUDO (como en ubuntu).

con eso se puede evitar ataques de fuerza bruta, siempre y cuando tu nombre de usuario no sea “FORAT” y entonces hagan el ataque de fuerza bruta a ese usuario, y luego de entrar hacen el de fuerza bruta con el comando su… etc :P

y si usas PAM se puede limitar el horario en el que los usuarios se conectan, y eso se puede definir individualmente para cada usuario. Pero creo que no te sirve en tu caso


Gravatar pacopaco 28th Marzo, 2008 a las 8:50

“Han habido dias…”
:-)

Y luego hay un “haber si coinciden” que creo que es “a ver”, aunque no estoy seguro.


Gravatar magarto 28th Marzo, 2008 a las 16:04

Otra vez más… menuda currada.

Recuerda que serás mi punto de referencia en cuanto monte un servidor ajena a localhost :P


Gravatar kike50 28th Marzo, 2008 a las 17:34

Buenísimo, que facil nos haces la vida a quienes intentamos meternos en este mundillo tan complicado,
Gracias y otra vez Gracias.


Gravatar N0xTrUm 28th Marzo, 2008 a las 18:18

Tio, día a día te superas en tus manuales y los de seguridad, siempre son agradecidos ;)


Gravatar sepuke 28th Marzo, 2008 a las 19:16

me ha gustado, no conocia este programita y ya forma parte de mi server, que estaba hasta las narices de los logs kilometricos del ssh y de meter las ips a mano en el hosts.deny xd,, pondre un link en mi blog a este articulo sino te importa :P


Gravatar sepuke 28th Marzo, 2008 a las 20:17

he tenido un problemilla al activar el noescript me he baneado yo mismo de mi servidor xd,,, no se yo si es buena idea activar eso ya que mucha gente usa ese pluguin, con esto afirmo que el programa funciona que te cagas vamos xd


Gravatar forat 28th Marzo, 2008 a las 23:18

FAQ esta muy bien esa opción aunque yo no tengo el logeo desactivado de root por ssh pq me conecto habitualmente desde otras maquinas de mi red y bueno me es mas cómodo así, aunque es una buena idea para poner una traba. ;)

Y limitar el horario buff nunca se cuando voy a tener un rato al dia que me pueda conectar aunque sea con mi PDA y jugar un ratón con mi server … Gracias de todos modos, han sido unas buenas aportaciones. ;)

PacoPaco nunca se sospecha de nadie hasta que se tiene una prueba y yo desde ayer que active Fail2ban tengo ya alguna prueba ;)

Magarto haber si te animas, que ya tengo ganas de ver lo que montas en el cuando lo tengas online !! Si necesitas un cable ya sabes ;)

Kike50 es un placer aunque el tiempo me come y no puedo dedicar lo que me gustaría a este mundo :)

Notrum gracias tío, a mi también me gustan los how to de seguridad aunque publicar publico pocos pero mas que nada es porque necesito algún tiempo para investigar sobre el tema y voy tan justo que buffffff en fin poco a poco conseguiremos un entorno de lo mas seguro para todos ;)

Sepuke todas las ayudas a que mis manuales los vea la mas gente posible son pocas. Gracias tío ;) y si funciona que te cagaaaaaaaaaaaaaaaaaaaaaassssssssssssss

Saludos a todos pipoooooool


Gravatar kike50 29th Marzo, 2008 a las 10:52

Forat, si puedes, dime solo si se puede instalar sin autoarranque del cd-rom, lo demas ya me lo busco yo. Gracias


Gravatar Tus Feeds Semana X 30th Marzo, 2008 a las 11:09

[…] Forat: protege tu servidor Linux de ataques de fuerza bruta. […]


Gravatar Acort 31st Marzo, 2008 a las 10:19

Yo tenía muchos intentos de ataque al servidor ssh, y también instalé el fail2ban, pero simplemente con cambiar el puerto de escucha del ssh pasé de tener cientos de ataques al día, a casi ninguno.
Yo recomendaría cambiar primero el puerto y luego usar el fail2ban, porque recuerda que aunque el fail2ban te ayuda a proteger contra un ataque por fuerza bruta, sigues siendo vulnerabla ante un ataque de denegación de servicio.

Un saludo.


Gravatar forat 1st Abril, 2008 a las 3:12

Kike50 no entiendo tu pregunta man !!!

Acort buen apunte lo de cambiar el puerto para protegernos de escaneos masivos al puerto 22.

Saludos !!


Gravatar Jonanq 1st Abril, 2008 a las 22:05

Gracias una vez mas forat con tus manuales me sale todo a la primera :),ya tengo el servidor en marcha jonanq.sytes.net pero todavía no hay nada subido.


Gravatar makineroes 2nd Abril, 2008 a las 9:42

muy bueno este tutorial,como todos los que haces,a la primera,aunque no paresca,tengo todos los pasos hechos,lo unico que me falla es entrar desde fuera a mi servidor.


Gravatar Enrique 4th Abril, 2008 a las 1:35

Pues si! buenísimo… una cosa solo… ¿como cambio el puerto al SSH? jejeje


Gravatar juan Manuel 5th Abril, 2008 a las 19:07

hola comoe stas muy bueno la verdad me vino de 10 ya que me interesa mucho este tema de todo lo que es seguirdad ahora mi pregunta es posible mostrar este archivo log mediante web, ya que segui el manula de como armar un server web en debian bueno me interesaria poner el archivo log de fail2ban pero que se vea entrando a http://www.mipagina.com/archivologdefail2ban no se si me explico por ahi no me explico bien si exciste esta posibiliad como seria desde ya agradesco todo lo que pones y te felicito por el Blog. saludos pinguinos


Gravatar FaQ 21st Abril, 2008 a las 1:27

FORAT: Ponete en contacto con el autor del siguiente blog, porque te copió todo un post entero y después citó tu fuente: Esto está mal, debería haber citado solo alguna parte, o escribir “En el blog de FORAT…” porque al copiar y pegar todo el contenido Google te penaliza, ya que busca que no haya contenido duplicado.
Te dejo la URL:

http://braianet.blogspot.com/2.....ontra.html

Saludos


Gravatar forat 21st Abril, 2008 a las 2:00

Si FaQ la verdad es que me entero rápido de quien me copia los artículos. Hay muchos Blog que incluso ni citan la fuente de donde lo sacaron, es una lastima que la gente te copie y pegue todo mi trabajo en su Blog atribuyéndose a ellos mismos los méritos.

Otros como este copian y pegan completamente el articulo y me citan como autor del mismo.

Lo correcto seria redactar algo sobre el articulo y enlazarlo o simplemente copiar y pegar el principio de tal citando al autor pero la gente hace lo que quiere y lo mejor es pasar de ellos y apuntarte los malos para cuando algún día pidan algo ;)

Por lo general este tipo de blogs que copian y pegan el contenido completo de otros blogs en el suyo no suelen llegar muy lejos ya que google primero me indexo a mi y por suerte si a alguien le atribuye google el articulo es a mi, los demás los toma como contenido duplicado y les perjudica a ellos y no a mi. :)

Gracias por avisar FaQ pero la verdad es que no se puede hacer nada que no sea meter este tema por vía legal ya que mi Blog contiene una licencia creative commons que parece en algunos casos que la gente no sabe que es.

Saludos man !!!


Gravatar braianet 21st Abril, 2008 a las 22:48

Pido disculpas por la copia, lo hice para poder recordar y aprender, así no tengo que estar visitando miles de paginas buscando información, no tengo problemas en sacarlo, además si a alguien le interesa el artículo va a ingresar a tu blog por que puse la fuente, mi intención nunca fué atribuirme el artículo. No hace mucho estoy con mi blog y puedo equivocarme porque no lo sé todo. Además si FAQ se gastó el tiempo en salir a gritar, hubiera por lo menos avisarme que eso no estaba bien. Y otra cosa “Google penaliza el contenido
copiado o duplicado en otros sitios web si es que estos NO tienen un enlace hacia la fuente, identificando como el original a aquel post o artículo más antiguo en su base de datos”. Yo puse la fuente, pero bue ya esta. Saludos y FAQ mejor las cosas se arreglan en privado porque las personas se pueden equivocar, o hablarías mal de una persona sin conocerla. y la verdad lo que dijo forat sobre: “lo mejor es pasar de ellos y apuntarte los malos para cuando algún día pidan algo” no me cayó nada bien, “malos”, “pedir algo”, allá utds con sus artículos, tanto rencor van a tener…chau.


Gravatar forat 22nd Abril, 2008 a las 0:33

Braianet, disculpas aceptadas !!! No hay problema tal y como lo hiciste tu, anteriormente hablaba de los que copian y pegan atribuyéndose el trabajo a ellos mismos.

Lo correcto seria citar el articulo con una explicación pero cada uno hace lo que quiere.

AAAAAAAA y respecto a “lo mejor es pasar de ellos y apuntarte los malos para cuando algún día pidan algo”

jajajaja como se nota que no me conoces man !!!

La lastima es que el texto no puede transmitir tonos de voz si no no te lo hubieras tomado a mal ;)


Gravatar sunbqto 26th Abril, 2008 a las 16:28

Se que muchos divagamos cuando escuchamos IP-Tables, pero ahora es muy facil con el uso del front Shorewall, Se los recomiendo para reforzar la seguridad del Servidor WEB, aun mejor si le agrega una segunda interface de red.

Aca les dejo un buen link:
http://com-sl.org/staticpages/.....-shorewall

Forat, lo has probado?, antes de ver este articulo ya lo tenia medio configurado


Gravatar rufus 1st Mayo, 2008 a las 23:24

No tengo ningun servidor, pero en el caso de que lo tuviera me serviria el ipcop que tengo en otra makina como medida de protecion mejor que esta que comentas???gracias.


¿ Tienes algo que decir ?
Nombre: 
Email: 
URL: