Cómo prevenir ataques de diccionario o fuerza bruta contra SSH

Imagen de juank6_66

Tema: 

Como Administrador nuestra principal responsabilidad es garantizar la disponibilidad de los servicios que ofrece nuestro(s) servidor(es). Dentro de las medidas que debemos tomar para asegurarlo se encuentra el proteger el servicio de Secure Sell, el cual es necesario para administrar de manera remota nuestro equipo.

No podemos evitar que un atacante intente accesar de manera no autorizada a nuestro servidor, la defensa que tenemos es detectar el momento preciso cuando nos estén intentado hacer un ataque de diccionario o fuerza bruta.

La herramienta denyhost, nos ayudará para evitar estos ataques.

Este pequeño manual describe la instalación de denyhosts sobre Centos 4.4.

1. Descargar el paquete DenyHosts-2.5-python2.3.noarch.rpm


wget http://kent.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.5-python2.3.noarch.rpm

2. Instalar el rpm DenyHosts-2.5-python2.3.noarch.rpm


rpm -Uvh DenyHosts-2.5-python2.3.noarch.rpm

3. Crear el archivo de configuración denyhosts.cfg


cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg

4. Editarlo y ajustar las variables


vi denyhosts.cfg

Ejemplo:


SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = 1h
PURGE_THRESHOLD = 2
BLOCK_SERVICE = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts
ADMIN_EMAIL = paco.medina@gmail.com
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report
SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

5. Copiar el script de arranque al directorio /etc/init.d/


cp daemon-control-dist /etc/init.d/

6. Configurar el sistema para el daemon se ejecute de manera automática en cada reinicio.


ln -s /etc/init.d/daemon-control-dist /etc/rc3.d/S99daemon-control-dist
ln -s /etc/init.d/daemon-control-dist /etc/rc0.d/K01daemon-control-dist
ln -s /etc/init.d/daemon-control-dist /etc/rc6.d/K01daemon-control-dist

Eso esto todo, lo siguiente que veremos son correos avisandonos de la ip's que se presume intentaron un entrar de manera no autorizada a nuestro server por el puerto de ssh.

Comentarios

otra forma es muy simple: no

Imagen de Epe

otra forma es muy simple: no permitir que root entre por defecto, sino con otro usuario. Así el atacante tendrá que además de descubrir la clave, descubrir el usuario.

La otra variante: sólo permitir SSH desde el firewall a algunas IPs (las de tu casa o empresa).

Otra forma es apagar el ssh.

Pero la que distes está bonita, eso sí.

Saludos
epe
--
EcuaLinux.com
Ecuador: +(593) 9 9246504, +(593) 2 3412402
USA: +1 305 675 1512, España: +34 917617884


Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Otra variante sería no

Imagen de deathUser

Otra variante sería no permitir autenticación con contraseña, e implementar autenticación con certificados digitales...

Otra alternativa al software propuesto es fali2ban, que ya postearon un como por ahi ...

bye
:)

en mi centos solo basto con

en mi centos solo basto con hacer

service denyhosts start


starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config= /etc/denyhosts.conf
Error sending email
(553, '5.5.4 ... Real domain name required for sender address', ' DenyHosts ')
Email message follows:
From: DenyHosts
To: root
Subject: DenyHosts Report from www.compuar.com.ec
Date: Tue, 07 Jun 2011 09:44:38 -0500

Added the following hosts to /etc/hosts.deny:

193.55.250.176 (splash.saclay.inria.fr)

----------------------------------------------------------------------


tail -f /var/log/denyhosts


2011-06-07 09:44:38,879 - denyhosts : INFO launching DenyHosts daemon (version 2.6)...
2011-06-07 09:44:38,881 - denyhosts : INFO DenyHosts daemon is now running, pid: 2232
2011-06-07 09:44:38,882 - denyhosts : INFO send daemon process a TERM signal to terminate cleanly
2011-06-07 09:44:38,883 - denyhosts : INFO eg. kill -TERM 2232
2011-06-07 09:44:38,887 - denyhosts : INFO monitoring log: /var/log/secure
2011-06-07 09:44:38,887 - denyhosts : INFO sync_time: 3600
2011-06-07 09:44:38,887 - denyhosts : INFO daemon_purge: 3600
2011-06-07 09:44:38,888 - denyhosts : INFO daemon_sleep: 30
2011-06-07 09:44:38,888 - denyhosts : INFO purge_sleep_ratio: 120
2011-06-07 09:44:38,888 - denyhosts : INFO denyhosts synchronization disabled

Pero tengo mis dudas sobre lo que ice arriba esta bien o que me recomiendan hacer?

Y también cambie el puerto del ssh

"El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz."