3 votos

¿Cómo puedo bloquear los intentos de fuerza bruta de ssh en OS X 10.11?

Mi sistema con OS X 10.11 está siendo constantemente machacado por intentos fallidos de inicio de sesión ssh por parte de bots. Estoy usando una contraseña segura y la cuenta Root no es accesible a través de ssh, pero aún así es un drenaje en el tiempo de la CPU y me pone nervioso.

¿Existe una buena manera de prohibir las direcciones IP que adivinen la contraseña errónea demasiadas veces, mientras que todavía me permite entrar por ssh? Mejor aún si esta herramienta tiene una buena GUI para no tener que usar la línea de comandos.

He intentado usar sshguard, pero no consigo que funcione. Hay hilos en varios lugares acerca de que no funciona correctamente en OS X 10.10, y no he encontrado ninguna solución.

En otros sitios se ha recomendado usar una VPN para que los forasteros no puedan entrar en el sistema por ssh, pero eso no es una opción para mí. Es importante que pueda entrar por ssh desde sistemas arbitrarios en el mundo, y configurar VPNs en ellos generalmente no es factible.

1voto

Martin KS Puntos 16

He estado investigando la apertura de SSH como este en otros sistemas basados en *nix, y la mayoría sugieren dos cosas. Lo siento, pero no sé cómo hacer cualquiera de los dos en MacOS.

  • Fail2Ban - Que prohíbe las IPs que tienen demasiados intentos de inicio de sesión fallidos
  • en lugar de los inicios de sesión SSH basados en la contraseña. Creo que puedes llevar tu clave contigo si quieres usar máquinas públicas.

0voto

Ramirez77 Puntos 24

Corro sshblack (encontrado a través de Sebastian Hagedorn's sitio ) así como un portknocker en MacOS Sierra Como ahora se accede al syslog a través del comando 'log show', tendrás que ajustar la configuración del registro si estás en una versión anterior del sistema operativo o utilizar fail2ban siguiendo las instrucciones enlazadas más arriba. También utilice la autenticación basada en claves con las contraseñas desactivadas ( Cómo configurar un inicio de sesión SSH sin contraseña - añadir una frase de contraseña). Luego descargo listas de bloqueo diarias y bloqueo de IPs en el firewall . Debería ser seguro ahora...

Configuración: /etc/pf.conf

# sshblack
block drop log quick from <ssh-block> to any

sshblack.pl

##  In sshblack
my($LOG) = '/usr/bin/log show --style syslog --last 5s\|';
my($ADDRULE) = '/sbin/pfctl -t ssh-block -T add ipaddress';
my($DELRULE) = '/sbin/pfctl -t ssh-block -T delete ipaddress';
my($REASONS) = '(maximum authentication attempts exceeded|Invalid user|authentication failed|Auth fail)'; 

Añade un retardo de 5 segundos al bucle

Cambia a esto (~línea 190):

sleep(5);

Sí que aparece un error en el registro, pero parece que funciona bien de todos modos.

Para añadir listas de bloqueo que se actualicen automáticamente, haga lo siguiente Instale wget (que requiere cervecero ):

brew install wget

En /etc/pf.conf

table <blocklist> persist file "/usr/local/etc/all.txt"
block drop log quick from <blocklist> to any

Crear un LaunchDaemon:

sudo nano /Library/LaunchDaemons/blocklist.de.allips.plist

con el contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>blocklist.de.allips.plist</string>
    <key>Program</key>
    <string>/bin/bash</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
    <string>/bin/mkdir -p /usr/local/etc ; /usr/local/bin/wget -N -P /usr/local/etc rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt ; /usr/local/bin/wget -N -P /usr/local/etc https://lists.blocklist.de/lists/all.txt ; pfctl -t blocklist -T replace -f /usr/local/etc/all.txt</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>47250</integer>
    <key>ServiceDescription</key>
    <string>Blocklist.de PF Update</string>
    <key>StandardErrorPath</key>
    <string>/var/log/blocklists.log</string>
    <key>StandardOutPath</key>
    <string>/var/log/blocklists.log</string>
</dict>
</plist>

Cargar el plist

sudo launchctl load -w /Library/LaunchDaemons/blocklist.de.allips.plist

Esta configuración de sshd también puede ser útil en combinación con la autenticación de claves mencionada anteriormente:

Archivo: /etc/ssh/sshd_config

PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM no
PasswordAuthentication no
LoginGraceTime 20
MaxAuthTries 1
MaxSessions 5

Algunos antecedentes: Ejecuté el bloqueo de scripts (Bloqueando alrededor de 50000 IPs) y durante aprox. 5 días sshblack todavía detectó ~160 IPs con intentos fallidos de login a SSHD o SMTPD. Es por esto que he seguido la ruta del Portknocking, ahora los atacantes de SSH son bloqueados por el firewall en su lugar.

Edición: He revisado mi sshd-log y he visto que me faltaba una "razón" en el registro. Lo he añadido arriba (el último).

Algunas estadísticas:

Fallos en los inicios de sesión ssh (con las listas de bloqueo ip activadas)
Fecha Nº de ips únicas
13-Mar - 31
14-Mar - 29
15-Mar - 30
16-Mar - 39
17-Mar - 43
18-Mar - 41
19-Mar - 35
20-Mar - 44
21-Mar - 24
22-Mar - 18
23-Mar - 17
24-Mar - 20
25-Mar - 7 (portknocking habilitado durante esta fecha)

Total 378

La mayoría de estos tipos fueron expulsados después de 3 intentos fallidos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X