SSH / SSHD - Come posso impostare un numero massimo di tentativi di accesso?


Risposte:


11

Io uso Fail2ban ; Ho usato Denyhosts in passato, e funziona anche abbastanza bene. Adesso preferisco Fail2ban perché è più configurabile e più in grado di gestire il monitoraggio di più servizi diversi, ad esempio simultaneamente la tua sshd e la pagina di accesso della tua app web (a condizione che non riesci a registrare).

Un altro metodo che potresti prendere in considerazione è l'implementazione di una regola LIMIT iptables; Sfortunatamente non posso aiutarti con questo, a meno che tu non voglia installare Shorewall , e quindi ti indirizzerei semplicemente verso l'eccellente documentazione su quel sito per come configurare una regola LIMIT per, beh, limitare la capacità di qualcuno di essere brutale -force il tuo server.


Dovrei aggiungere che Fail2ban è disponibile nei repository di molte distro, quindi installarlo è semplicissimo; Non ho visto Denyhosts in nessuno, ma ciò non significa che non lo sia in alcuni, né che non sia stato aggiunto dall'ultima volta che ho controllato.
Kromey,

Ho riscontrato il problema che fail2ban di v0.8.14 non funzionava correttamente con il comando iptables-multiport. E questo è un problema noto con l'utilità fail2ban risolta in nuove versioni ... Ecco la descrizione: github.com/fail2ban/fail2ban/issues/798 Quindi credo solo nei meccanismi di sicurezza sviluppati nel software server, né in utility di terze parti ...
George Gaál,

44

Non mi piace usare strumenti di terze parti. Quindi ho usato una combinazione di configurazione ssh e impostazioni del firewall. Con la seguente soluzione, un utente malintenzionato può produrre esattamente 3 accessi di errore in 2 minuti, oppure verrà bloccato per 120 secondi.

1) Aggiungi la seguente riga a /etc/ssh/sshd_config

MaxAuthTries 1

Ciò consentirà solo 1 tentativo di accesso per connessione. Riavvia il server ssh.

2) Aggiungi le seguenti regole del firewall

Crea una nuova catena

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Blocca ciascun indirizzo IP per 120 secondi, il che stabilisce più di tre connessioni entro 120 secondi. Nel caso del quarto tentativo di connessione, la richiesta viene delegata alla SSHATTACKcatena, che è responsabile della registrazione del possibile attacco ssh e infine elimina la richiesta.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Vedi le voci di registro dei possibili attacchi ssh in /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Eccezionale! ma ho un problema, alcuni tipi / bot in Francia non hanno configurato correttamente i suoi strumenti di hacker, quindi continua ad accedere, anche se il suo traffico viene lasciato cadere. Il risultato, i miei registri sono pieni di dati ogni secondo da questo ragazzo. Qualche modo per aggirare questo?
Smarties89,

2
Per le persone meno esperte come me: le righe iptables vengono digitate al prompt di bash, non inserite in un file da qualche parte.
Andrew Swift,

4

Non esiste un pacchetto specifico associato a SSH per configurarlo. Tuttavia, è possibile installare CSF che è ConfigServer e Firewall.

CSF

Due modifiche alla configurazione che suggerirei sarebbero state apportate nel file: / etc / ssh / sshd_config

Limitare il numero massimo di connessioni non autenticate che il server ssh gestirà contemporaneamente. Più piccolo è, più è difficile per i kiddie degli script fare tentativi di cracking paralleli e coordinati con connessioni multiple. modifica sshd_config e cambia MaxStartups dal valore predefinito di "10" a "3:50:10". I valori separati da due punti indicano al server ssh di "consentire a 3 utenti di tentare l'accesso contemporaneamente e di abbandonare casualmente e sempre più i tentativi di connessione tra 3 e il massimo di 10". Nota: questo dovrebbe essere aumentato su server con un numero considerevole di utenti ssh validi che accedono.

  • Predefinito : MaxStartups 10
  • MaxStartups 3:50:10

Ridurre il tempo massimo consentito per accedere correttamente prima di disconnettersi. L'impostazione predefinita di 2 minuti è troppo tempo per tenere aperto un tentativo di connessione non autenticato (vedere sopra); 30 secondi sono più che sufficienti per accedere:

  • Predefinito : LoginGraceTime 2m
  • LoginGraceTime 30

3

Uso queste regole IPTables per questo:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Ciò consentirà solo 4 pacchetti TCP / SYN alla porta 22 da un indirizzo IP in 5 minuti. In caso di ulteriori tentativi, la porta viene chiusa fino alla fine dei 5 minuti.


Cosa occorre modificare?
timkofu,

Praticamente lo stesso di: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel,

Ho eseguito questi due comandi iptables in Debian Jessie, ma riesco comunque a vedere i tentativi di accesso SSH ogni 2 secondi dallo stesso indirizzo IP. Qualche idea?
Alexey Ozerov,

1

c'è un'opzione che puoi mettere nel tuo file sshd_config per il server:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Utile (specialmente se combinato con altri suggerimenti già fatti), ma non risolve davvero il problema da solo in quanto è banale per qualcuno continuare a riconnettersi.
Kromey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.