GNU/Linux >> Linux Esercitazione >  >> Linux

Come fermare/prevenire SSH bruteforce

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

Linux
  1. Come modificare la porta SSH in Linux

  2. Come eseguire Ssh su un server utilizzando un altro server??

  3. Ssh – Come funziona Tcp-keepalive in Ssh?

  4. Come interrompere il servizio systemd

  5. Come interrompere l'aggiunta di IP da EC2 a known_hosts per ssh?

Come modificare la porta SSH su VPS

Come creare alias SSH in Linux

Come consentire o negare l'accesso SSH a un particolare utente o gruppo in Linux

Come prevenire il timeout di SSH

Come fermare un server di spamming

Come impedire a SSH di disconnettersi se è rimasto inattivo per un po'