Revisando los registros, me doy cuenta que algunos servidores dedicados están siendo atacados por fuerza bruta. Ofortunadamente las contraseñas son complicadas para cualquier diccionario. Pero de cualquier manera 7,000 intentos en un solo día jala muchos recursos del servidor.
sshd:
Authentication Failures:
unknown (61.158.105.121): 7710 Time(s)
root (61.158.105.121): 1287 Time(s)
root (ns6.provedornet.com.br): 879 Time(s)**Unmatched Entries**
pam_succeed_if(sshd:auth): error retrieving information about user florian : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user susan : 6 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user elisabeth : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user wolfgang : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user steve : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user less : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user agent : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user zorro : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user calvin : 3 time(s)
pam_succeed_if(sshd:auth): error retrieving information about user pam : 3 time(s)
Evitando ataques ssh, elevando la seguridad del servidor (CentOS 5.4):
Primero vamos a limitar el número de accesos erróneos por ssh.
Editamos sshd_config:
vi /etc/ssh/sshd_config
Descomentamos: #MaxAuthTries 6
Y lo cambiamos a: MaxAuthTries 2
Otra recomendación es deshabilitar la opción de logear como root. Obligando así entrar con otro usuario y desde ahí hacer el salto a root. De esta forma el atacante no solo tendría que adivinar la contraseña, sino el usuario... pero esta configuración lo dejaré para después ![]()
Instalando DenyHost:
DenyHost, detecta los ataques y bloquea la IP por un periodo. Es muy sencillo de usar y fácil de instalar:
Antes de instalar denyhosts debemos comprobar que versión de python está instalado, con el siguiente comando:
python -V
Esto es necesario para descargar la versión adecuada del programa. En nuestro caso el resultado obtenido fue python 2.4.3 Así que descargamos la versión correspondiente:
wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6-python2.4.noarch.rpm
Instalamos el rpm DenyHosts-2.6-python2.4.noarch.rpm:
rpm -Uvh DenyHosts-2.6-python2.4.noarch.rpm
Creamos el archivo de configuración denyhosts.cfg
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
Editamos y ajustamos (descomentamos) 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 = tu_email@aqui.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
Copiamos el script de arranque al directorio /etc/init.d/:
cp daemon-control-dist /etc/init.d/
Configuramos el sistema para que 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
Con esta configuración, DenyHost nos enviará por email, reportes de las ip's que fueron detectadas como atacantes.
Para poder iniciar el demonio manualmente (y no tener que reiniciar el servidor para que arranque):
/etc/init.d/daemon-control-dist start
------------------------------------
Editado:
Apenas se cumple un par de horas que instale denyhosts, y me da curiosidad checar algunos datos: 
Primero, cuantas IP's se han detectado:
# cat /etc/hosts.deny | grep -v "^#" | awk '{ print $NF }' | grep -v "^$" | sort | uniq | wc -l
(hasta ahorita van 11)
Veamos de donde son estas IP's:
# for i in $(cat /etc/hosts.deny | grep -v "^#" | awk '{ print $NF }' | sort | grep -v "^$" ); do whois $i | grep country | head -n1 | sed 's/#.*$//g' | awk '{ print $NF}'; done | tr [:upper:] [:lower:] | sort | uniq -c | sort -rn
(la mayoría son de cn.. china)
Fuentes:
Comentarios recientes