Un servidor Linux funcionando continuamente es una presa golosa para los hackers, el objetivo es tomar el control del ordenador para lanzar ataques a otras máquinas y no dejar rastro. El servidor Linux del proyecto ha estado soportando cientos intentos de conexiones. Para comprobar estos intentos hay que mirar los logs /var/log/messages generados por ssh
Para mirar estos logs utilizo el siguiente comando
> grep sshd /var/log/messages
Para evitar estos ataques se ha realizado lo siguiente en el servidor:
1)Aumentar la seguridad de la conexión ssh
Para aumentar la seguridad de las conexiones ssh vamos a modificar el archivo de configuración del ssh para:
Desactivar el login de root
(requiere loguearse como un usuario normal y luego pasarse a root mediante
el comando su, de esta manera los ingresos de root directo quedan
deshabilitados)
Cambiar los tiempos de
login
Para ello se edita el archivo /etc/ssh/sshd.config y cambiamos las siguientes entradas:
#LoginGraceTime 2m
La descomentamos y la cambiamos por
LoginGraceTime 30
Esto hará que el tiempo que sshd espera por el password sea reducido de 2 minutos a 30 segundos
#PermitRootLogin yes
La descomentamos y la cambiamos por:
PermitRootLogin no
Esto evitará que root pueda loguarse directamente al servidor, previamente deberá tener otro usuario creado con el cual se logueará y si requiere acceso de root use su
#MaxAuthTries 6
La descomentamos y la cambiamos por:
MaxAuthTries 3
Esto solo le dará 3 intentos si equivoca el password antes de cerrar la conexión
Cambiar el mensaje de bienvenida al servicio SSH es algo tan simple como añadir el texto que deseemos en el fichero:
/etc/motd
De este modo, cuando accedamos vía SSH al servidor, aparecerá como mensaje de bienvenida el texto que incluya dicho fichero.
2) Instalar DenyHost
DenyHost es un script escrito en Python que monitoriza las entradas del log de conexiones del SSH para detectar clientes que realizan ataques de fuerza bruta, los fichedo que analiza dependen de la distribución de linux /var/log/messages en SUSE o /var/log/secure en CentOS. Cuando DenyHosts detecta que desde una determinada IP se estan realizando repetidos intentos de conexión fallidos, añade esta IP al fichero /etc/hosts.deny y de esta forma cortamos inmediatamente los intentos de conexión desde esta IP.
Antes de instalar denyhosts debemos comprobar que version de python tenemos instalada con el siguiente comando:
>python -V
Esto es necesario para descargarnos la versión adecuada del programa. En nuestro caso el resultado obtenido fue
>python 2.4.3
Para instalar DenyHost nos descargamos el paquete desde la pagina del autor. En modo comando podemos utilizar el comando wget:
Una vez descargado el fichero, intalamos el paquete
> rpm -i DenyHosts-2.6-python2.4.noarch.rpm
El siguiente paso es crear el archivo de configuración del DeniHosts para ello nos desplazamos al directorio de instalación /usr/share/denyhosts.
> cd /usr/share/denyhosts
> cp denyhosts.cfg-dist denyhosts.cfg
Editamos el fichero denyhosts.cfg
> vi denyhosts.cfg
Tenemos que comprobar que las siguientes variables SECURE_LOG, LOCK_FILE de configuración son correctas en función de nuestra distribución de Linux. Por defecto tienen el siguiente valor:
En valor para otras distribuciones viene con comentarios, solamente deberemos buscar nuestra distribución, descomentarla y poner un comentario en la anterior. En nuestro caso que es SuSE
*SECURE_LOG = /var/log/messages
Tambien podremos configurar otras interesantes variables
* DENY_THRESHOLD_INVALID: Número de intentos fallidos (con un usuario que no exista) necesarios para bannear esa IP.
* DENY_THRESHOLD_VALID: Número de intentos fallidos (con un usuario existente) necesarios para bannear esa IP.
* DENY_THRESHOLD_ROOT: Número de intentos fallidos (intentando entrar como root) necesarios para bannear esa IP.
* BLOCK_SERVICE = sshd/ALL/etc… : Servicios que bloqueamos a usuarios banneados.
* DAEMON_LOG = /var/log/denyhosts : Ubicación del log de denyhosts.
Tenemos que hacer que DenyHosts funcione como un demonio, para ello utilizamos el script que viene en el paquete de instalacion daemon-control-dist y creamos el siguiente archivo
>cp daemon-control-dist daemon-control
Editamos /usr/share/denyhosts/daemon-control y modificaremos en caso de necesidad los valores de las siguientes variables DENYHOSTS_BIN, DENYHOSTS_LOCK, and DENYHOSTS_CFG para adaptarla a nuestra distribucion. Para Debian: