76 votos

Cientos de error de los inicios de sesión ssh

Cada noche puedo llegar a cientos, a veces miles, de error de los inicios de sesión ssh en mi RedHat 4 servidor. Para el firewall razones de sitios remotos, necesito ejecutar en el puerto estándar. Hay algo que yo debería estar haciendo para este bloque. Me doy cuenta de que muchos vienen de la misma dirección IP. ¿No debería ser la detención de aquellos que después de un tiempo?

38voto

Kyle Brandt Puntos 50907

fail2ban puede ayudar con esto por el bloqueo de direcciones IP con muchos fallidos intentos de iniciar sesión en.

25voto

KPWINC Puntos 8349

Me gustaría recomendar el uso de un puerto no estándar para SSH si puedes (es decir. puerto 10222), pero ya que usted menciona que no puede hacer que me gustaría recomendar el uso de algo como DenyHosts.

http://denyhosts.sourceforge.net/

Gran paquete, fácil de instalar y configurar.

14voto

Ari Puntos 156

Si bien puede ser agradable ser capaz de ssh en el sistema de ubicaciones arbitrarias en internet, hay automatizado de ataque de contraseñas de los sistemas que se cerrará en un abrir puerto ssh y aplicar diversos joe cuenta y ataques de diccionario contra su sistema. Esto puede ser aggrevating para leer en la tarifa de registro de resumen y es un desperdicio de ancho de banda.

Si usted tiene un servidor web en el mismo sistema, se puede utilizar php y tcp wrappers para restringir ssh el tráfico entrante a los sistemas conocidos, además de darle una vuelta-llave de la puerta para permitir el acceso a sí mismo desde arbitraria de los sistemas en internet.

He aquí cómo hacerlo:

denegar todas las conexiones ssh en /etc/hosts.negar:

# /etc/hosts.deny fragment
sshd:  all

Permitir que los sistemas conocidos por IP en /etc/hosts.permiten, además de añadir un archivo para acceso temporal:

# /etc/hosts.allow fragment
sshd:  10.0.10.2     # some system
sshd:  172.99.99.99  # some other system
sshd:  /etc/hosts.allow.temporary-sshd-access

Crear un archivo php en el servidor web y darle un no-nombre obvio como my-sshd-access.php:

<?php
function get_ip()
{
    return getenv("REMOTE_ADDR"); 
}

?>

<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';

print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);

$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);

print "Wrote: ";
readfile($out);
?>

Perdonar el código php -- yo utilizo es el de algún otro lugar, por lo que probablemente podría ser limpiado un montón. Todo lo que hace es agregar la dirección IP del sistema de acceso a la /etc/hosts.permitir.temporal-sshd-archivo de access, el cual es leído por sshd (debido a su inclusión en /etc/hosts.permitir) en tiempo de conexión.

Ahora, cuando estás en la arbitraria en el sistema en la web y desea ssh a este sistema, el primer uso de un navegador web y golpear este archivo (o el uso de wget o equivalente):

$ wget http://your.system.name/my-sshd-access.php

Ahora usted debería ser capaz de ssh en su sistema. Si este es un lugar que probablemente será ssh ing en de con frecuencia, sería trivial para leer el contenido de /etc/hosts.permitir.temporal-sshd archivo de acceso y permanentemente, agregue la dirección IP en /etc/hosts.permitir.

0voto

Evan Anderson Puntos 118832

Usted puede usar iptables para la tasa límite de nuevo las conexiones entrantes en el puerto SSH. Yo tendría que ver todo su configuración iptables con el fin de darle una solución llave en mano, pero básicamente lo que hace es hablar acerca de la adición de reglas como:

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP 
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT 

Estas reglas supone que usted está aceptando conexiones ESTABLECIDAS anteriormente en la tabla (de modo que sólo las nuevas conexiones de aciertos de estas reglas). Nuevas conexiones SSH llegará a las reglas y estar marcada. En 60 segundos, 5 intentos de una única dirección IP que se traducirá en nuevas conexiones entrantes desde que IP se cayó.

Esto ha funcionado bien para mí.

Edit: yo prefiero este método para "fail2ban" porque no hay ningún software adicional para ser instalado, y pasa totalmente en modo de núcleo. No maneje el análisis de archivos de registro como "fail2ban", pero si tu problema es solo con SSH yo no usaría algo de modo de usuario que requiere la instalación de software, y es más complejo.

0voto

Zoredache Puntos 84524

Usted puede desear mirar en denyhosts así.

FYI: OpenSSH 6.7 gotas de tcpwrappers de apoyo, lo que significa denyhosts, probablemente, no es la solución para las nuevas instalaciones.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: