13.7.06

Previniendo ataques de diccionario a nuestros servicios SSH, FTP ...

Para los que vivimos aíslados del mundo, de los virus del churros (más conocido como Windows) y de los últimos ingenios antispyware, ver como al auth.log crece sin parar nos pone nerviosos. Confieso pertenecer a ese grupo de usuarios paranoicos que vuelcan el auth.log en el tty12 (para los que no lo hacen, tail -f /va/log/auth.log > /dev/tty12) y la primera vez que vi correr líneas con intentos de login fallidos casi se me escapan unas gotitas.

Una vez me expliraron que era un virus, sabiendo que mis claves parecen sumas md5 y que no tengo definidos usuarios con shell válida salvo el mío, entonces me sentí a salvo. Aún así, no me apetece que alguien, sea ente o persona, esté machacando mi conexión y haciendo crecer mi log, con lo que aupado por el calor del momento son tiempos de plantar cara y declarar la guerra al invasor.

Se me ocurren tres soluciones:

1.- La ley marcial. Denegar el acceso a los servicios desde el exterior o limitarlos a un cierto número de ips concreto. Lo cierto es que todos los servicios sensibles como SSH deberían estar limitados pero, cuando tienes ips dinámicas es un poco complicado.

2.- DenyHosts. Se trata de un script Python configurable con una serie de reglas que va leyendo el fichero /var/log/auth.log (o /var/log/secure para los del sombrero rojo) y toma decisiones cuando detecta una actividad anormal, como por ejemplo, denegar el servicio.

3.- PortKnocking. La idea es tener todos los puertos "firewalleados" y "llamando" a una secuencia de puertos concretos abrir/cerrar puertos según políticas establecidas. Por ejemplo, podemos establecer una regla para abrir el puerto 22 que sea atacara en esta secuencia a los puertos puertos 87, 54, y 344 y acto seguido el puerto 22 será accesible. El único pero, es que se necesita la aplicación de "marcado" en cada uno de los equipos clientes (siempre se puede llevar en un lápiz usb).

No hay comentarios: