Come posso bloccare i tentativi di forza bruta ssh in OS X 10.11?

2

Il mio sistema che esegue OS X 10.11 viene continuamente martellato dai tentativi di login ssh falliti da parte dei bot. Sto usando una password sicura e l'account di root non è accessibile tramite ssh, ma anche così è ancora un drenaggio del tempo della CPU e mi rende nervoso.

C'è un buon modo per mettere al bando gli indirizzi IP che ritengono la password sbagliata troppe volte pur continuando a permettermi di ssh in? Ancora meglio se questo strumento ha una bella interfaccia grafica, quindi non devo usare la riga di comando.

Ho provato a usare sshguard, ma semplicemente non riesco a farlo funzionare. Ci sono discussioni in vari punti su di esso che non funzionano correttamente in OS X 10.10 e non ho trovato alcuna soluzione.

Altri luoghi hanno raccomandato l'uso di una VPN in modo che gli estranei non possano ssh nel tuo sistema, ma non è un'opzione per me. È importante essere in grado di eseguire ssh da sistemi arbitrari nel mondo, e impostare VPN su di essi non è generalmente fattibile.

    
posta GuyGizmo 26.10.2015 - 23:44
fonte

2 risposte

1

Ho cercato di aprire SSH come questo su altri sistemi basati su * nix e la maggior parte suggerisce due cose. Mi dispiace ma non so come fare su MacOS.

  • Fail2Ban - Che vieta gli IP che hanno troppi tentativi di accesso falliti
  • Chiave
  • anziché accessi SSH basati su password. Credo che tu possa prendere la tua chiave con te se vuoi utilizzare macchine pubbliche.
risposta data 27.03.2017 - 16:03
fonte
0

Eseguo sshblack (trovato tramite site ) nonché portknocker in macOS Sierra , dal momento che al syslog ora si accede tramite il comando 'log show' si dovrebbe regolare le impostazioni di configurazione del registro sotto se sei su una versione precedente del sistema operativo o usa fail2ban seguendo le istruzioni collegate sopra. Utilizza anche l'autenticazione basata su chiave con password disattivate ( How per configurare un accesso SSH senza password - aggiungere una passphrase). Quindi scarica elenchi di blocco ogni giorno e blocca gli IP nel firewall . Dovrebbe essere al sicuro ora ...

Regolazioni: /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)'; 

Aggiungi un ritardo di 5 secondi al ciclo

Passare a questo (~ riga 190):

sleep(5);

Si ottiene un errore nel registro ma sembra funzionare comunque bene.

Per aggiungere blocklist che si aggiornano automaticamente, fai questo: Installa wget (che richiede brew ):

brew install wget

In /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 il contenuto:

<?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>

Carica il plist

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

Questa configurazione di sshd può anche essere utile in combinazione con l'autenticazione della chiave sopra menzionata:

File: / etc / ssh / sshd_config

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

Alcuni background: ho eseguito gli script di blocco (bloccando circa 50000 IP) e durante ca. 5 giorni sshblack ha ancora rilevato ~ 160 IP con tentativi di accesso non riusciti a SSHD o SMTPD. Questo è il motivo per cui sono andato giù per la rotta Portknocking, ora invece gli attaccanti SSH sono bloccati dal firewall.

Modifica: ho passato il mio sshd-log e ho notato che mi mancava un "motivo" nel registro. L'ho aggiunto sopra (l'ultimo).

Alcune statistiche:

Failed ssh logins(with ip-blocklists enabled)
Date       No of unique ips
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 enabled during this date)

Total 378

Molti di questi ragazzi sono stati bannati dopo 3 tentativi falliti.

    
risposta data 27.03.2017 - 10:58
fonte

Leggi altre domande sui tag