GNU/Linux >> Linux Esercitazione >  >> Linux

Centinaia di accessi ssh falliti

Soluzione 1:

Puoi utilizzare iptables per limitare la velocità delle nuove connessioni in entrata alla porta SSH. Dovrei vedere l'intera configurazione di iptables per darti una soluzione chiavi in ​​mano, ma in pratica stai parlando di aggiungere regole come:

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP 
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT 

Queste regole presuppongono che tu stia accettando le connessioni ESTABLISHED all'inizio della tabella (in modo che solo le nuove connessioni soddisfino queste regole). Le nuove connessioni SSH soddisferanno queste regole e saranno contrassegnate. In 60 secondi, 5 tentativi da un singolo indirizzo IP comporteranno l'interruzione delle nuove connessioni in entrata da quell'IP.

Questo ha funzionato bene per me.

Modifica:preferisco questo metodo a "fail2ban" perché non è necessario installare software aggiuntivo e avviene totalmente in modalità kernel. Non gestisce l'analisi dei file di registro come fa "fail2ban", ma se il tuo problema è solo con SSH non userei qualcosa in modalità utente che richiede l'installazione di software ed è più complesso.

Soluzione 2:

fail2ban può aiutare in questo bloccando gli indirizzi IP con troppi tentativi di accesso falliti.

Soluzione 3:

Consiglierei di utilizzare una porta non standard per SSH se possibile (ad es. la porta 10222) ma poiché hai detto che non puoi farlo, ti consiglio di utilizzare qualcosa come DenyHosts.

http://denyhosts.sourceforge.net/

Ottimo pacchetto, facile da installare e configurare.

Soluzione 4:

Anche se può essere utile poter accedere tramite ssh al proprio sistema da postazioni arbitrarie su Internet, esistono sistemi automatici di attacco delle password che si bloccheranno su una porta ssh aperta e applicheranno vari attacchi di joe account e dizionario contro il sistema. Questo può essere irritante da leggere nel riepilogo del registro notturno ed è uno spreco di larghezza di banda.

Se disponi di un server Web sullo stesso sistema, puoi utilizzare i wrapper php e tcp per limitare il traffico in entrata ssh ai sistemi conosciuti, oltre a fornirti una chiave back-door per consentirti l'accesso da sistemi arbitrari su Internet.

Ecco come si fa:

nega tutte le connessioni ssh in /etc/hosts.deny:

# /etc/hosts.deny fragment
sshd:  all

Consenti sistemi conosciuti tramite IP in /etc/hosts.allow, oltre a aggiungere un file per l'accesso temporaneo:

# /etc/hosts.allow fragment
sshd:  10.0.10.2     # some system
sshd:  172.99.99.99  # some other system
sshd:  /etc/hosts.allow.temporary-sshd-access

Crea un file php nel tuo server web e assegnagli un nome non ovvio come my-sshd-access.php:

<?php
function get_ip()
{
    return getenv("REMOTE_ADDR"); 
}

?>

<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';

print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);

$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);

print "Wrote: ";
readfile($out);
?>

Perdona il codice php:l'ho fatto scorrere da qualche altra parte, quindi probabilmente potrebbe sopportare di essere ripulito un intero gruppo. Tutto ciò che fa è aggiungere l'indirizzo IP del sistema che vi accede al file /etc/hosts.allow.temporary-sshd-access, che viene letto da sshd (a causa della sua inclusione da parte di /etc/hosts.allow) al momento della connessione .

Ora, quando ti trovi su un sistema arbitrario sul Web e desideri accedere tramite ssh a questo sistema, usa prima un browser Web e premi questo file (o usa wget o equivalente):

$ wget http://your.system.name/my-sshd-access.php

Ora dovresti essere in grado di accedere tramite ssh al tuo sistema. Se questo è un posto da cui probabilmente entrerai frequentemente in ssh, sarebbe banale leggere il contenuto del file /etc/hosts.allow.temporary-sshd-access e aggiungere in modo permanente l'indirizzo IP a /etc/hosts. consentire.

Soluzione 5:

Potresti voler dare un'occhiata anche a denyhosts.

Cordiali saluti:OpenSSH 6.7 elimina il supporto di tcpwrapper, il che significa che denyhosts probabilmente non è la soluzione per le nuove installazioni.


Linux
  1. Come bloccare o disabilitare i normali accessi utente in Linux

  2. Otto modi per proteggere l'accesso SSH sul tuo sistema

  3. Abilita SSH su Ubuntu 20.04 - Guida passo passo?

  4. Ssh restituisce il messaggio "Richiesta di inoltro x11 non riuscita sul canale 1"?

  5. Ssh:limitare un utente Ssh/scp/sftp a una directory?

Accesso SSH basato su chiave con PuTTY

Come elencare gli accessi SSH non riusciti su Linux

Limita il numero di accessi SSH per utente/gruppo/sistema

SSHFS:montaggio di un file system remoto su SSH

Come generare e utilizzare la chiave SSH nel sistema Linux?

comando pam_tally2 – blocca e sblocca gli accessi ssh non riusciti in Linux