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.