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

Creative Commons License
www.forat.info sitio bajo licencia Creative Commons.

Articulos relacionados


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.


Gravatar josemiguel 27th Julio, 2008 a las 12:35

hola forat e seguido este manual como me indicaste y al iniciar el fail2ban-client me da el siguiente mensaje:

***@********:~$ fail2ban-client start
2008-07-27 12:13:06,441 fail2ban.server : INFO Starting Fail2ban v0.8.2
2008-07-27 12:13:06,442 fail2ban.server : ERROR Unable to create PID file: [Errno 2] No such file or directory: ‘/var/run/fail2ban/fail2ban.pid’
ERROR Could not start server. Maybe an old socket file is still present. Try to remove /var/run/fail2ban/fail2ban.sock. If you used fail2ban-client to start the server, adding the -x option will do it
***@********:~$

lo de -x e probado y nada sigue igual,
seguire buscando a ver como lo arreglo, si tu sabes como hacerlo ya me diras cosas
por cierto lo del puerto 22 ya esta cerrado, mejor asi

un saludo a todos!!!


Gravatar Albertofi 27th Agosto, 2008 a las 7:35

tengo el mismo problema que jose miguel, a ver si se puede solucionar. Gracias


Gravatar NESTOR 1st Octubre, 2008 a las 5:07

tengo un problema muy similar, al de josemiguel, tengo ubuntu 8.04 server hago todo lo que dice en el manual pero cuando voy a ejecutar fail2ban me aparece este error.

nestor@ubuntuserver:~$ sudo fail2ban-client start
[sudo]password for nestor:
2008-10-01 04:37:45,722 fail2ban.server : INFO Starting Fail2ban v0.8.2
2008-10-01 04:37:45,722 fail2ban.server : ERROR Unable to create PID file:[errno 2]No surch file or directory: `/var/run/fail2ban/fail2ban.pid´
ERROR Could not start server. Maybe and old socket fail is still present. Try to remove /var/run/fail2ban/fail2ban.sock. if you used fail2ban client to start the server, adding the -x option will do it
asi que creo un directorio
sudo mkdir /var/run/fail2ban

ejecuto de nuevo

sudo fail2ban-client start

y me ejecuta bien pero cuando reinicio mi equipo se borra el directorio /var/run/fail2ban
y tengo que crearlo de nuevo y activar

sudo fail2ban-client start

si lo reinicio me pasa lo mismo no se que es lo que pasa te agradeceria si me puedes ayudar.


Gravatar Moan 8th Octubre, 2008 a las 1:14

Muy bueno el tutorial, voy a ver si instalo el programita en mi servidor…

http://www.heliopolis.tk/


[...] quien quiera jugar con vuestro servidor bloqueando los ataques por fuerza bruta que puedan haceros. Aquí os dejo un manual detallado sobre como hacerlo. Recomendado pero no necesario para continuar con el montaje del servidor en Linux Ubuntu [...]


Gravatar daviqui 5th Enero, 2009 a las 4:24

2008-07-27 12:13:06,441 fail2ban.server : INFO Starting Fail2ban v0.8.2
2008-07-27 12:13:06,442 fail2ban.server : ERROR Unable to create PID file: [Errno 2] No such file or directory: ‘/var/run/fail2ban/fail2ban.pid’
Forat, perdona pero no hay forma de que esto me funcione con el ubuntu server, tambien me salen estos errores, necesitaria una ayudita por favor. gracias
ERROR Could not start server. Maybe an old socket file is still present. Try to remove /var/run/fail2ban/fail2ban.sock. If you used fail2ban-client to start the server, adding the -x option will do it


Gravatar daviqui 9th Enero, 2009 a las 5:54

Hola buenas, tengo el servidor funcionando y va de perlas, el problema es con el Fail2ban, no hay forma de que me funcione y me esta dando todo tipo de errores, si alguien lo ha instalado y le esta funcionando, me gustaria que me ayudara, porque con el manual creo que lo hago mal, o no se interpretarlo. Gracias por si alguien me contesta


Gravatar Jose 1st Febrero, 2009 a las 1:28

Bueno, Forat, primero mi enhorabuena por los articulos sobrel servidor, nuenisimo. Soy muy nuevo en Linux y una cosa que no entiendo es que si al instalar soy un usuario y le doy un password, y a mysql tambien, cuando ejecuto el comando “su”, por qué no soy root. En otras distribuciones puedes asignar un password a root pero en esta no. Es que cuando uso “vi” me dice que debo ser root. Alguien me ayuda con esto? Gracias.


Gravatar juanjava 20th Febrero, 2009 a las 23:58

felicidades forat vengo siguiendo tus manuales y me han servido de mucho, ojala sigas asi y puedas actualizarlos, y con respecto a este tengo una duda con el archivo jail.conf que pasa con las secciones [apache-overflows]
[postfix]
[named-refused-udp]
[named-refused-tcp]
por ejemplo la de apache no es importante y donde puedo ver mas respecto a esto, MIL GRACIAS


Gravatar juanjava 21st Febrero, 2009 a las 1:00

Nuevamente que tal forat mira lo que me sale en el archivo /var/log/fail2ban.log
2009-02-20 17:13:56,294 fail2ban.actions.action: ERROR iptables -N fail2ban-apache
iptables -A fail2ban-apache -j RETURN
iptables -I INPUT -p tcp –dport http -j fail2ban-apache returned 400
2009-02-20 17:13:56,295 fail2ban.jail : INFO Jail ’ssh’ started
2009-02-20 17:13:56,351 fail2ban.actions.action: ERROR iptables -N fail2ban-proftpd
iptables -A fail2ban-proftpd -j RETURN
iptables -I INPUT -p tcp –dport ftp -j fail2ban-proftpd returned 400
2009-02-20 17:13:56,409 fail2ban.actions.action: ERROR iptables -N fail2ban-apache-noscript
iptables -A fail2ban-apache-noscript -j RETURN
iptables -I INPUT -p tcp –dport http -j fail2ban-apache-noscript returned 400
me podrias ayudar,estoy instalandolo en ubuntu 8.10, GRACIAS, y con respecto a los manuales lei hasta el ultimo cual es la pagina, perotendras una en español


Gravatar Leo 13th Marzo, 2009 a las 15:05

Este es mi registro log de fail2ban en /var/log/fail2ban.log
Esto es normal?
http://pastebin.com/m4a884c87


A continuación puedes hacer un comentario con tu duda, consulta o aportación.Si puedes responder a otro usuario no te cortes y hazlo " Yo no puedo con todos ". Recuerda que no están permitidos los insultos, la publicidad o cualquier cosa que pueda ofender a alguien. De no respetar estas sencillas normas serás baneado. En este Blog intentamos ayudar a los demás y para eso necesitamos un ambiente lo mas agradable posible. Ayúdanos a conseguirlo ( Gracias )

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