¿Prevenir una gran cantidad de intentos fallidos de inicio de sesión desde IP FALSAS?

¿Prevenir una gran cantidad de intentos fallidos de inicio de sesión desde IP FALSAS?

El archivo de registro de mi sistema (/var/log/auth.log) muestra cientos y cientos de IP diferentes que intentan iniciar sesión en mi sistema. ¿Cómo puedo prevenir todos estos ataques? Parece que todas las direcciones IP son falsas ("pin" o "traceroute") ¿siempre muestra cientos de direcciones IP diferentes en el archivo auth.log?

¡Realmente necesito ayuda con esto! ¡Gracias!

Estoy leyendo que otras personas sugieren.

  • StrictModes sí (¿qué hace esto?)
  • hosts.allow ALL: (¿esto me permitiría conectarme si la dirección IP es de una cafetería y es "yo, yo"?)

Así es como se ve mi firewall "iptables".

asher@starparty:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

Estoy leyendo que otras personas recomiendan...

  • iptables -I ENTRADA -s -p tcp -m tcp --dport 22 -j ACEPTAR

EJEMPLO DE SALIDA DE INICIO DE SESIÓN REMOTO SSH: "tail /var/log/auth.log"

Dec  3 21:24:31 StarParty sshd[66702]: Failed password for root from 51.210.122.207 port 45722 ssh2
Dec  3 21:24:32 StarParty sshd[66702]: Received disconnect from 51.210.122.207 port 45722:11: Bye Bye [preauth]
Dec  3 21:24:32 StarParty sshd[66702]: Disconnected from authenticating user root 51.210.122.207 port 45722 [preauth]
Dec  3 21:24:38 StarParty sshd[66712]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:24:40 StarParty sshd[66712]: Failed password for root from 150.158.171.64 port 55444 ssh2
Dec  3 21:24:41 StarParty sshd[66721]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=142.93.34.237  user=root
Dec  3 21:24:41 StarParty sshd[66712]: Received disconnect from 150.158.171.64 port 55444:11: Bye Bye [preauth]
Dec  3 21:24:41 StarParty sshd[66712]: Disconnected from authenticating user root 150.158.171.64 port 55444 [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Failed password for root from 142.93.34.237 port 58226 ssh2
Dec  3 21:24:44 StarParty sshd[66721]: Received disconnect from 142.93.34.237 port 58226:11: Bye Bye [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Disconnected from authenticating user root 142.93.34.237 port 58226 [preauth]
Dec  3 21:25:00 StarParty sshd[66728]: Unable to negotiate with 218.92.0.212 port 45440: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 [preauth]
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session closed for user root
Dec  3 21:25:26 StarParty sshd[66776]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:25:27 StarParty sshd[66776]: Failed password for root from 150.158.171.64 port 33534 ssh2
Dec  3 21:25:30 StarParty sshd[66776]: Received disconnect from 150.158.171.64 port 33534:11: Bye Bye [preauth]
Dec  3 21:25:30 StarParty sshd[66776]: Disconnected from authenticating user root 150.158.171.64 port 33534 [preauth]

"tcpdump-A"

curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256...Arsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,[email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1....none,[email protected],[email protected].......................
21:27:59.780431 IP 46.101.194.220.40238 > starparty.ssh: Flags [.], ack 1098, win 501, options [nop,nop,TS val 431378467 ecr 1031716663], length 0
21:27:59.781114 IP 46.101.194.220.40238 > starparty.ssh: Flags [P.], seq 22:462, ack 1098, win 501, options [nop,nop,TS val 431378471 ecr 1031716663], length 440
[email protected],ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1...#ecdsa-sha2-nistp256,ssh-rsa,ssh-dss...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...   hmac-sha1...    hmac-sha1....none....none......
21:27:59.781131 IP starparty.ssh > 46.101.194.220.40238: Flags [.], ack 462, win 507, options [nop,nop,TS val 1031716853 ecr 431378471], length 0
21:27:59.983564 STP 802.1d, Config, Flags [none], bridge-id 8000.14:cc:20:b5:54:68.8003, length 35

Otra ayuda que he encontrado es... https://help.ubuntu.com/community/IptablesHowTo

Respuesta1

Puedes intentar utilizar el programa Fail2Ban.https://www.fail2ban.org/wiki/index.php/Main_Page

Eso bloqueará automáticamente la IP de origen ante intentos fallidos de inicio de sesión.

Funciona bastante bien y también tienes muchas opciones para configurarlo. Por ejemplo, cuántos intentos antes de ser prohibidos o durante cuánto tiempo estarán prohibidos.

Pero deberías considerar si realmente quieres tener SSH abierto para todo el mundo. Entonces, si su máquina está conectada a Internet directamente, recomendaría usar un firewall, con todo bloqueado de forma predeterminada. Y abierto solo para ssh desde esa IP, debe estar abierto.

Respuesta2

Hay algunas cosas que pueden eliminar el riesgo de seguridad de tener SSH abierto al mundo.

  • Fail2ban (ya mencionado) es bueno. Admite el bloqueo permanente o sólo por un tiempo en el firewall.

  • Ejecute SSH en un puerto extraño de alto nivel, algo por encima de 8000. Esto no detiene nada, pero hay una gran reducción en el tráfico, ya que la mayoría de los script kiddies están probando el puerto 22.

  • Asegúrese de que PermitRootLogin en sshd_config no se esté ejecutando con el valor Sí. No es necesario que los inicios de sesión de root se realicen a través de ssh. Puede ingresar como usuario normal y luego su. De esta manera, se necesitan dos contraseñas para obtener acceso de administrador (a menos que sea Ubuntu o similar, donde un usuario normal tiene poderes de sudo).

  • Considere la autenticación de doble factor. Esto se puede hacer con productos comerciales como Duo o usando algo como el autenticador de Google. Los pasos para esa configuración vendrían del proveedor.

  • Recibir un correo electrónico cuando haya un inicio de sesión exitoso. Esto le permite saber inmediatamente si hay acceso, antes de que un pirata informático haya tenido la oportunidad de destruir cualquier protección que haya implementado. Para hacer esto, necesita agregar una línea de sesión a /etc/pam.d/sshd que se vería así:

    sesión requerida pam_exec.so /root/scripts/send-ssh-notice.sh

    Hay un ejemplo de script que puede proporcionar detalles en variables y está disponible en github:Github alojado en sshlogin_alert.sh

    (Sí, proporcioné un enlace en mi respuesta, ¿y por qué no? El código de Github se mantiene, admite bifurcaciones y tiene buenos comentarios. No revisaré mi respuesta publicada en los próximos meses o años. Además, el crédito debe ser dado lo que se debe y este usuario de Github ha hecho un buen trabajo).

Respuesta3

TRISTE... ¿TAN TAN TRISTE?

¿Quizás tenga que "detener mi servidor sshd"?

:(

¿Quizás exista alguna forma "SIMPLE" sin instalar software adicional?

Esto no resuelve el problema todavía... pero creo que va por el camino correcto.

sudo gedit /etc/ssh/ssh_config 
sudo systemctl restart ssh.service

Así es como se ve "ssh_config"...

Include /etc/ssh/ssh_config.d/*.conf

Host *
# PermitRootLogin no
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
Port 22
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected]
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes

¿También hay alguna modificación posible en el "iptable"?

información relacionada