Qual è il modo più semplice per impostare un numero massimo di tentativi di accesso in un ambiente LAMP (sshd installato tramite yum)? Esiste un pacchetto o una semplice regola firewall?
Qual è il modo più semplice per impostare un numero massimo di tentativi di accesso in un ambiente LAMP (sshd installato tramite yum)? Esiste un pacchetto o una semplice regola firewall?
Risposte:
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.
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
Non esiste un pacchetto specifico associato a SSH per configurarlo. Tuttavia, è possibile installare CSF che è ConfigServer e Firewall.
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.
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:
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.
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
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.