Soluzione 1:
Come ottenere l'accesso?
Non è chiaro il motivo per cui non puoi accedere al tuo account.
Se la tua macchina è sotto attacco o sotto carico elevato, dovresti parlare con il tuo provider per limitare l'accesso (restrizioni IP) o portare il server offline (disconnettersi da Internet).
Potresti anche richiedere un accesso fuori banda con il quale il tuo provider potrebbe essere in grado di aiutarti.
Se qualcuno ha compromesso il tuo server, potrebbe essere necessario eseguire il ripristino dai backup o utilizzare un'immagine di ripristino.
Come prevenire attacchi al tuo server, in particolare SSH
il modo migliore per prevenire gli accessi con la forza bruta?
Non lasciare che arrivino alla tua macchina in primo luogo! Ci sono molti modi per fermare i tentativi di forza bruta prima che arrivino al tuo host, o anche a livello SSH.
Detto questo, proteggere il tuo sistema operativo con qualcosa come fail2ban è un'ottima idea. http://en.wikipedia.org/wiki/Fail2ban
Fail2ban è simile a DenyHosts ... ma a differenza di DenyHosts che si concentra su SSH, fail2ban può essere configurato per monitorare qualsiasi servizio che scrive i tentativi di accesso in un file di registro e invece di utilizzare/etc/hosts.deny solo per bloccare indirizzi IP/host, fail2ban può utilizzare Netfilter/iptables e TCP Wrapper /etc/hosts.deny.
Ci sono una serie di importanti tecniche di sicurezza che dovresti prendere in considerazione per aiutare a prevenire accessi di forza bruta:
SSH:
- Non consentire a root di accedere
- Non consentire password ssh (usa l'autenticazione con chiave privata)
- Non ascoltare su ogni interfaccia
- Crea un'interfaccia di rete per SSH (ad es. eth1), diversa dall'interfaccia da cui servi le richieste (ad es. eth0)
- Non utilizzare nomi utente comuni
- Utilizza un elenco di autorizzazioni e consenti solo agli utenti che richiedono l'accesso SSH
- Se hai bisogno di un accesso a Internet... Limita l'accesso a un insieme finito di IP. Un IP statico è l'ideale, tuttavia bloccarlo a x.x.0.0/16 è meglio di 0.0.0.0/0
- Se possibile trova un modo per connetterti senza accesso a Internet, in questo modo puoi negare tutto il traffico Internet per SSH (ad esempio con AWS puoi ottenere una connessione diretta che bypassa Internet, si chiama Direct Connect)
- Utilizza software come fail2ban per rilevare eventuali attacchi di forza bruta
- Assicurati che il sistema operativo sia sempre aggiornato, in particolare i pacchetti di sicurezza e ssh
Applicazione:
- Assicurati che la tua applicazione sia sempre aggiornata, in particolare i pacchetti di sicurezza
- Blocca le pagine "admin" della tua applicazione. Molti dei consigli di cui sopra si applicano anche all'area di amministrazione della tua applicazione.
- Proteggi con password la tua area di amministrazione, qualcosa come htpasswd per la console web proietterà eventuali vulnerabilità dell'applicazione sottostante e creerà un'ulteriore barriera all'ingresso
- Blocca i permessi dei file. Le "cartelle di caricamento" sono note per essere punti di ingresso di ogni sorta di cose sgradevoli.
- Prendi in considerazione l'idea di mettere la tua applicazione dietro una rete privata ed esporre solo il tuo sistema di bilanciamento del carico front-end e un jumpbox (questa è una configurazione tipica in AWS che utilizza i VPC)
Soluzione 2:
come posso sopprimere questo attacco e prevenire i successivi attacchi
Di solito cambio la porta ssh predefinita da 22 a un'altra come 1122. Questo impedisce molti attacchi automatici da bot, ma una semplice scansione della porta può rilevarlo. Comunque:
vi /etc/ssh/sshd_config
e modifica Porta 22 alla Porta 1122 , ma questo non è sufficiente.
Regole automatiche di IPTables sulla forza bruta
io uso log2iptables https://github.com/theMiddleBlue/log2iptables invece Fail2ban, perché è un semplice script Bash che analizza qualsiasi file di log con un'espressione regolare ed esegue iptables. Ad esempio, quando si verificano 5 corrispondenze, log2iptables elimina l'indirizzo IP specifico. È bello perché usa l'API di Telegram e può inviarmi un messaggio sul mio telefono quando trova un problema :)
spero che questo ti aiuti!
Soluzione 3:
Ho appena messo insieme questo, eseguito ogni 15 minuti come cronjob ecc:
for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
count1=`grep $z /etc/hosts.deny | wc -l`
count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
sudo cp /etc/hosts.deny.bak /etc/hosts.deny
sudo chmod 666 /etc/hosts.deny
if [ $current ] ; then
echo "sshd : $current , $z" >> /etc/hosts.deny
else
echo "sshd : $z" >> /etc/hosts.deny
fi
sudo chmod 644 /etc/hosts.deny
fi
done