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

2

Mi sistema que ejecuta OS X 10.11 está siendo golpeado constantemente por los intentos fallidos de inicio de sesión de ssh por parte de los robots. Estoy usando una contraseña segura y no puedo acceder a la cuenta de root a través de ssh, pero aun así sigue agotando el tiempo de CPU y me pone nervioso.

¿Hay una buena manera de prohibir las direcciones IP que adivinen la contraseña mal muchas veces y al mismo tiempo permitirme ssh? Aún mejor si esta herramienta tiene una interfaz gráfica de usuario agradable, así que no tengo que usar la línea de comandos.

Intenté usar sshguard, pero simplemente no puedo hacer que funcione. Hay subprocesos en varios lugares que no funcionan correctamente en OS X 10.10, y no he encontrado ninguna solución.

Otros lugares han recomendado usar una VPN para que los forasteros no puedan ingresar a tu sistema, pero eso no es una opción para mí. Es importante que pueda iniciar sesión desde sistemas arbitrarios en el mundo, y en general no es posible configurar VPN en ellos.

    
pregunta GuyGizmo 26.10.2015 - 23:44

2 respuestas

1

He estado investigando la apertura de SSH así en otros sistemas basados en * nix, y la mayoría sugiere dos cosas. Lo siento, pero tampoco sé cómo hacerlo en MacOS.

  • Fail2Ban: que prohíbe las direcciones IP que tienen demasiados intentos fallidos de inicio de sesión
  • clave en lugar de inicios de sesión SSH basados en contraseña. Creo que puedes llevar tu llave contigo si quieres usar máquinas públicas.
respondido por el Martin KS 27.03.2017 - 16:03
0

Ejecuto sshblack (encontrado a través de site ), así como un portknocker en macOS Sierra , ya que se accede al syslog ahora a través del comando 'log show', tendría que ajustar las configuraciones de configuración de registro a continuación Si está en una versión anterior del sistema operativo o utiliza fail2ban siguiendo las instrucciones vinculadas anteriormente. También use la autenticación basada en clave con las contraseñas desactivadas ( Cómo para configurar un inicio de sesión SSH sin contraseña : agregue una frase de contraseña). Luego descargo listas de bloqueo diariamente y bloqueo las direcciones IP en el firewall . Debería estar 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 retraso de 5 segundos al bucle

Cambie a esto (~ línea 190):

sleep(5);

Obtienes un error en el registro pero parece funcionar bien de todos modos.

Para agregar listas de bloqueo que se actualizan automáticamente, haga lo siguiente: Instale wget (que requiere brew ):

brew install wget

En /etc/pf.conf

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

Crea 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 sshd también puede ser útil en combinación con la autenticación de clave mencionada anteriormente:

Archivo: / etc / ssh / sshd_config

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

Algunos antecedentes: ejecuté los scripts de bloqueo (Bloqueando alrededor de 50000 IPs) y durante aprox. 5 días sshblack todavía detectó ~ 160 IP con intentos de inicio de sesión fallidos a SSHD o SMTPD. Esta es la razón por la que bajé la ruta de Portknocking, ahora los atacantes SSH están bloqueados por el firewall.

Editar: revisé mi sshd-log y descubrí que me había perdido una "razón" en el registro. Lo he añadido arriba (el último).

Algunas estadísticas:

  

Inicios de sesión ssh fallidos (con las listas de bloqueo de ip habilitadas)
  Fecha No de ips únicos.   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 de marzo - 7 (portknocking habilitado durante esta fecha)

     

Total 378

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

    
respondido por el jhvkn 27.03.2017 - 10:58

Lea otras preguntas en las etiquetas