È normale ricevere centinaia di tentativi di intrusione al giorno?


196

Ho appena controllato il mio server /var/log/auth.loge ho scoperto che ricevo più di 500 notifiche di tentativi di immissione / password non riuscite al giorno! Il mio sito è piccolo e il suo URL è oscuro. È normale? Dovrei prendere delle misure?


2
Fino a quando non abbiamo bloccato tutte le porte esterne non necessarie, ricordo che non solo abbiamo avuto molti tentativi di hacking, ma un giorno è stato così male che siamo stati hackerati da due diversi paesi - allo stesso tempo! Quindi sì, centinaia di tentativi di intrusione sono perfettamente normali.
Django Reinhardt

91
Abbiamo server che sperimentano una nuova "sequenza" di attacco una volta ogni 16 secondi. Una singola sequenza è in genere un batch di circa 100 tentativi su varie porte. Solo per calci un giorno ho acceso un server senza patch al di fuori del nostro firewall; ci sono voluti meno di 10 minuti dal momento in cui è stato acceso per diventare pwnd. Il punto è che Internet è veramente una giungla; cerca di non essere mangiato.
NotMe

2
Vedo che ho pubblicato la mia domanda nel sito sbagliato: superuser.com/questions/200896/…
Giustino C

6
mentre sono d'accordo con gli altri questo è normale per le porte comuni richieste (80, 443) ho praticamente eliminato questi tentativi contro la mia porta SSH semplicemente cambiando la porta predefinita da 22 a qualcosa di oscuro come 6022 per esempio. Solo facendo questo, da solo, quasi eliminato il 99% di quel tipo di attacco.
Kilo

2
Se hai intenzione di cambiare la tua porta SSH, ci sono motivi di sicurezza per mantenerla sotto la porta 1024 (solo root può aprire le porte <1024, quindi ti protegge dagli altri utenti che dirottano SSH).
Brendan Long,

Risposte:


207

Nell'internet di oggi è abbastanza normale purtroppo. Esistono orde di botnet che tentano di accedere a ciascun server che trovano in intere reti IP. In genere, usano semplici attacchi da dizionario su account noti (come account root o determinati account delle applicazioni).

I target di attacco non vengono trovati tramite voci di Google o DNS, ma gli aggressori provano semplicemente tutti gli indirizzi IP in una determinata sottorete (ad es. Di società di hosting di server root noti). Quindi non importa che il tuo URL (quindi la voce DNS) sia piuttosto oscuro.

Ecco perché è così importante:

  • non consentire il root-login in SSH ( howto )
  • usa password complesse ovunque (anche nelle tue applicazioni web)
  • per SSH, utilizzare l'autenticazione con chiave pubblica se possibile e disabilitare completamente password-auth ( howto )

Inoltre, è possibile installare fail2ban che eseguirà la scansione del registro automatico e se rileva un certo numero di tentativi di accesso non riusciti da un IP, procederà ad aggiungere tale IP a /etc/hosts.denyo iptables / netfilter per bloccare l'attaccante per alcuni minuti.

Oltre agli attacchi SSH, sta diventando comune anche scansionare il tuo server web per applicazioni Web vulnerabili (alcune app di blog, CMS, phpmyadmin, ecc.). Quindi assicurati di mantenerli aggiornati e configurati in modo sicuro!


21
Applicazioni come fail2ban possono aiutare molto a 'temporaneamente' impedire a quei robot di colpire il tuo server in orari sciocchi al mattino :-) Ho creato il mio per vietare 3 tentativi errati per 24 ore.
emtunc

46
E sposta la porta di ssh da 22 a 222. Funziona abbastanza bene.
Tom O'Connor l'

40
+1, solo autenticazione con chiave pubblica :)
0xC0000022L

3
@STATUS_ACCESS_DENIED: le azioni che fail2ban esegue sono solo elenchi di comandi shell da eseguire. Quindi è davvero flessibile e facile far funzionare correttamente con qualsiasi configurazione personalizzata. Il miglior riferimento è scaricarlo e guardarlo action.d/iptables.conf.
Mattdm,

4
Bloccare attaccanti come questo è una perdita di tempo. Se disabiliti il ​​login di root, c'è una buona probabilità che nessuno possa nemmeno indovinare il tuo nome di accesso corretto, figuriamoci la password. SSH stesso sta già limitando la richiesta di password, quindi anche se conoscono il tuo nome utente (i robot casuali non lo faranno), se hai una password decente, non lo indovineranno mai.
Brendan Long

58

Qualche 100 va bene ... Il mese scorso ho scoperto che uno dei miei server ha avuto 40.000 tentativi falliti. Ho affrontato il problema di disegnarli: Mappa

Dopo aver modificato la porta SSH e implementato il Port Knocking, il numero è sceso a 0 :-)


2
Bella mappa. Mi piacerebbe saperlo fare!
jftuga,

9
@jftuga Ho ottenuto prima tutti gli IP dai registri. grep 'Failed password' /var/log/secure* | grep sshd | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq(rimuovere | uniq alla fine se si desidera consentire i duplicati). Puoi quindi inserirli in un CSV e caricarlo su zeemaps.com. Ho visto mappe migliori delle mie, dove avrebbero usato il conteggio per colorare la mappa (da verde a rosso per il numero di tentativi per contea), ma non ne ho mai immaginato uno
Bart De Vos

3
Cosa intendi con "Port Knocking implementato"? Esiste un'app che posso installare tramite apt-get per farlo? Il numero che scende a 0 suona bene

18
La sicurezza attraverso l'oscurità ha un impatto negativo. Va benissimo purché faccia parte della strategia complessiva piuttosto che dell'intera strategia. Dopo tutto, cos'altro è una password diversa da una stringa oscura?
Joel Coel,

5
@Joel Coel, è una stringa segreta , al contrario della maggior parte della sicurezza attraverso problemi di oscurità - un processo oscuro, ma non necessariamente segreto.
tobyodavies,

29

Io per primo uso un "tarpit" oltre a consentire solo l'autenticazione con chiave pubblica e la disabilitazione degli accessi root.

In netfilterc'è un recentmodulo, che puoi usare con ( INPUTcatena):

iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT

Ciò che fa è che ogni tentativo di connettersi alla porta 22 è elencato dal recentmodulo con IP e alcune altre cose sotto il nome "tarpit" (se sei curioso, guarda /proc/net/xt_recent/tarpit). Ovviamente puoi usare altri nomi.

Per elencare o eliminare gli IP utilizzare:

echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit

Questa velocità limita i tentativi a 5 in 300 secondi. Si noti che gli utenti con una connessione esistente non sono infastiditi da quel limite, perché hanno già una connessione stabilita e sono autorizzati a crearne di più (anche al di sopra del limite di velocità).

Regola le regole a tuo piacimento, ma assicurati che vengano aggiunte in quell'ordine (cioè quando aggiungi e poi usale in questo ordine, quando le inserisci poi nell'ordine inverso).

Questo riduce immensamente il rumore. Fornisce inoltre una sicurezza effettiva (contro la forza bruta) a differenza della sicurezza percepita del cambio di porta. Tuttavia, consiglierei comunque di cambiare la porta se è fattibile nel tuo ambiente. Ridurrà molto anche il livello di rumore ...

Puoi ancora combinarlo con fail2ban, anche se ho funzionato bene senza di esso e solo le regole sopra.

MODIFICARE:

È possibile bloccare te stesso mentre lo fai, quindi puoi aggiungere qualcosa come il seguente che ti consente di eliminare il bando bussando su una porta particolare:

iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove

2
Lo uso e riesco a bloccarmi di tanto in tanto, quindi mi piacerebbe impostare un'altra porta che puoi "bussare" per cancellare il tuo divieto.
Benlumley,

@benlumley: buon punto. Il port knocking può essere altrettanto utile per cambiare la porta predefinita - o anche entrambe in combinazione ...
0xC0000022L

@benlumley: visto il tuo commento (ora rimosso da Sam). Non mi dispiace assolutamente se la risposta viene modificata / migliorata;)
0xC0000022L

15

Potresti implementare fail2ban o metodi simili come bloccare SSH sul tuo IP. Purtroppo i bot tentano continuamente di accedere bruteforce quindi è abbastanza normale, devi assicurarti di avere una buona password.


3
Se stai usando SSH, considera l'autenticazione con chiave pubblica. Questo è un po 'più sicuro dell'autenticazione con password.
Piskvor,

12

. È abbastanza normale al giorno d'oggi.

Se possibile, utilizzare solo l'autenticazione con chiave pubblica per scopi amministrativi. Genera una chiave privata sulla tua workstation:

$ ssh-keygen -t dsa

Copia il contenuto di ~ / .ssh / id_dsa.pub sui tuoi server ~ / .ssh / authorized_keys (e /root/.ssh/authorized_keys, se hai bisogno di accedere direttamente alla radice).

Configura i tuoi server / etc / ssh / sshd_config per accettare solo l'autenticazione con chiave pubblica:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin without-password

Se hai troppi server, puoi usare Puppet per eseguire loro le chiavi pubbliche e le configurazioni.

Cerca in Denyhosts e fail2ban per bloccare ripetuti tentativi di accesso a SSH e vedi Snort se hai bisogno di IDS / IPS completi.


2
Non consiglierei di usare l'autenticazione con chiave pubblica in SSH per l'accesso shell al tuo server. Se la tua stazione di lavoro è compromessa o, peggio ancora, rubata, qualcuno ora ha libero accesso ai tuoi server senza la necessità di una password. L'autenticazione con chiave pubblica è più adatta a situazioni in cui è necessario qualcosa come uno script o un programma per poter accedere a SSH a un altro sistema senza la necessità di una password, quindi non è necessario incorporare password in testo normale nel proprio script / programma.
Utente registrato

5
@Account eliminato: è possibile impostare una passphrase per la chiave privata SSH.
Phil Cohen,

2
Il commento "Utente registrato" non è corretto. Solo per chiarire: imposta sempre una buona password sulla tua chiave privata e non archiviare la chiave privata su nessun server. Conservare la chiave privata sulla propria workstation. Una volta aggiunta la chiave a un programma ssh-agent e immessa la password, è possibile accedere a tutti i sistemi su cui è installata la chiave pubblica, senza dover reinserire la password. Abilita l'inoltro dell'agente nel tuo client SSH in modo da poter accedere da un server all'altro. Ottenere la tua chiave privata rubata è male, ma con una password decente su di essa non è così male come una password rubata.
Martijn Heemels,

Bene, non pensare nemmeno di archiviare le chiavi private dell'amministratore non crittografate.
anno


6

I tentativi sono meccanizzati, quindi i numeri sembrano OK (sì, sono alti rispetto ad alcuni siti e bassi rispetto ad altri). Dovresti prendere le misure che normalmente devi: Considera i tuoi siti come obiettivi di attacco ogni giorno, anche quando non rilevi un attacco; non rilevare un attacco, non significa che non esiste .


6

Direi che solo 500 sono bassi.

In un precedente datore di lavoro, uno dei ricercatori sulla sicurezza informatica ha definito il flusso costante di irruzioni "l'equivalente di Internet del rumore cosmico ". Lo descrisse come un normale flusso continuo di traffico dannoso che cercava sistemi su Internet e sfruttava automaticamente gli script per tentare di dirottare il sistema. Reti bot e altri sistemi dannosi scansionavano e scansionavano continuamente Internet alla ricerca di sistemi vulnerabili, proprio come SETI.


6

Sì,

questo è comune, ma ciò non significa che non dovresti combattere la buona battaglia. Ecco alcuni passaggi su come rendere il tuo server più sicuro.

Evita gli indirizzi IP associati al DNS

È possibile ridurre notevolmente questo numero in ambienti condivisi o di colocation disabilitando l'accesso SSH su tutti gli indirizzi IP associati ai nomi di dominio. Gli indirizzi IP non di dominio non elencati riceveranno meno di questo tipo di traffico, quindi acquista un IP non elencato e usa questo IP solo per l'accesso SSH.

Utilizzare una VPN per tutto l'accesso SSH

Se ti trovi in ​​un ambiente in cui puoi implementare IPsec / VPN su una rete privata all'interno del tuo ambiente server, questo è l'ideale. Disabilita tutti gli accessi a Internet SSH, assicurati di avere una soluzione di luci integrata. Configura la tua VPN e consenti l'accesso SSH solo dalla tua VPN.

Implementare le regole dell'indirizzo IP per l'accesso SSH

Se la VLAN non è un'opzione, configura il router o le regole del firewall per consentire le connessioni SSH solo da un intervallo di indirizzi IP noto.

Se segui questi passaggi, dormirai molto più facilmente nella notte sapendo che qualcuno dovrebbe compromettere la rete delle aziende di hosting per ottenere l'accesso al server tramite SSH.


5

Abbastanza normale vedere centinaia di connessioni SSH fallite.

Se hai l'opzione, cambio semplicemente la mia porta SSH in qualcosa di non standard. Non necessariamente rende il tuo server più sicuro, ma pulisce di sicuro i log (e ti consente di vedere chiunque stia deliberatamente tentando di entrare!)


5

Oltre a utilizzare un meccanismo di blocco automatico come fail2ban hai un'altra opzione: in realtà contatta l'indirizzo dell'abuso ISP dell'attaccante. Può sembrare del tutto inutile, ma nel caso dello sceneggiatore il loro ISP è più che disposto ad agire su di loro.

Per trovare l'indirizzo di abuso, inizia con arin.net e cerca l'indirizzo IP usando whois. Potresti essere reindirizzato a un altro registro regionale, ma alla fine puoi trovare l'ISP responsabile per il blocco IP che contiene l'indirizzo. Cerca l'indirizzo abuse @ o invia semplicemente il contatto tecnico.

Invia loro un messaggio educato con le voci del file di registro pertinenti (assicurarsi di rimuovere qualsiasi informazione privata) e chiedere loro di agire contro l'host incriminato.


4
Lo facevamo prima. Tuttavia, la quantità di tempo trascorso rispetto al beneficio ricevuto era così piccola che non importa.
NotMe

1
Una variante di questa tattica che è più efficace, ma molto più rischiosa, è riferire l'ISP al nodo intermedio. Ma DEVI avere prove solide del tuo rapporto. Una volta ho avuto un intero ISP in gravi difficoltà, perché stavano ignorando le loro segnalazioni di abuso.
staticsan

1
Una volta ho fatto questo, il messaggio di abuso ha raggiunto l'hacker invece di qualcuno responsabile dei server. Da allora, non mi preoccupo più, solo troppi problemi.
annullare l'

Questo in realtà non aiuta nella maggior parte dei casi e può richiedere molto tempo
RichVel

4

Consiglierei di non utilizzare fail2ban ma di eseguire SSH (e altri) su una porta non standard. Non credo nella sicurezza per oscurità, ma penso che questo sia un modo eccellente per ridurre il rumore nei tuoi registri.

Gli accessi non riusciti su porte non standard saranno pochi e lontani tra loro e possono anche indicare attacchi più mirati.

Potresti anche fare un passo avanti e installare un honeypot SSH come Kippo per "far entrare" i bruteforcer e vedere cosa farebbero, data la possibilità.


Haha, Kippo sembra molto carino. Lo installerò su un server solo per vedere cosa stanno cercando di fare.
Scade l'

4

Sì, è normale Cosa dico ai clienti nella tua situazione con piccoli siti Web.

Preparati sempre ad essere violato.

Avere una copia del tuo sito Web su un server di sviluppo. Questo può essere il tuo desktop di Windows usando XAMPP che puoi ottenere gratuitamente.

Apporta SEMPRE modifiche al tuo server di sviluppo, quindi caricale sul tuo sito web live. Se si tratta di un CMS come Wordpress, crea i tuoi post sul server dev quindi copiali e incollali nel server live.

Non scaricare MAI nulla dal tuo sito Web dal vivo sul tuo server di sviluppo.

Monitora regolarmente le tue pagine web per eventuali modifiche che non hai apportato. In particolare, collegamenti nascosti a farmaci o prodotti di "potenziamento". Puoi trovare molti componenti aggiuntivi del browser e programmi che lo faranno per te.

Se sei compromesso. Avvisa il tuo host, elimina tutto, cambia tutte le password e carica il tuo server dev pulito sul server web ora vuoto. Collabora con il tuo host per prevenire una ricorrenza.

Non è necessario un team di sicurezza per un sito di piccole dimensioni. Questo è ciò che il tuo host dovrebbe fornire. In caso contrario, ottenere un altro host che è molto più facile da fare quando si dispone di un server dev piuttosto che provare a spostare il server live.

Spero che sia di aiuto.


2
+1 per "Preparati sempre ad essere violato".
user78940,

3

Un altro modo per fermarlo (dato che personalmente non mi piace spostare la porta SSH): decidi se sei in grado di elencare tutte le reti da cui vorrai accedere, quindi consenti solo a queste di accedere alla tua porta SSH.

Le voci WHOIS degli ISP locali mi hanno aiutato a ridurre gli attacchi a 1-2 tentativi di accesso al mese (allora era circa 1k / giorno). Ho rilevato quelli usando ancora denyhosts .


3

Oltre agli altri eccellenti suggerimenti che hai già ricevuto, mi piace anche utilizzare la direttiva AllowUsers se appropriato per il server specificato. Ciò consente solo agli utenti specificati di accedere tramite SSH, il che riduce notevolmente la possibilità di ottenere l'accesso tramite un account guest / servizio / sistema configurato in modo non sicuro.

Esempio:

AllowUsers admin jsmith jdoe

L'opzione AllowUsers specifica e controlla quali utenti possono accedere ai servizi ssh. È possibile specificare più utenti, separati da spazi.


3

Sì, è normale Puoi :

  • Riduci l'opportunità di attaccare usando fwknop

Fwknop è una delle migliori implementazioni port knock perché non è spoofable e in realtà autentica piuttosto che autorizzare una connessione.

  • Puoi cambiare la porta utilizzata da Openssh ma non stai migliorando la sicurezza.

  • Fortifica l'autenticazione ssh utilizzando Google-Authenticator o Wiki

Ciò proteggerà gli attacchi basati su password e la possibilità di un determinato aggressore / attacco mirato che comprometta la macchina di amministrazione e ruba la combinazione di chiavi ssh e password.

Basta guardare l'ultima comp pwn2own per vedere quanto è facile per un attaccante esperto compromettere la tua casella di amministrazione completamente patchata.


1

Purtroppo questo è abbastanza normale. Dovresti considerare di aggiungere qualcosa come fail2ban al tuo sistema per rilevare automaticamente e vietare gli aggressori. Se non lo fai già, dovresti anche considerare di usare solo ssh con le chiavi pubbliche e non consentire l'accesso root su ssh. Se usi ftp per trasferire file sul sistema, considera invece l'uso di scp / sftp.


1

Ho implementato il port knocking e ho alcune sonde al giorno. Non hanno una connessione, quindi vanno via. Registro e riporto tutti gli accessi alle porte interessate.

Ho anche eseguito fail2ban con Shorewall come firewall per inserire temporaneamente nella lista nera gli aggressori persistenti.

Se non è necessario l'accesso a Internet su SSH, disabilitarlo. Se si dispone di alcuni indirizzi noti che richiedono l'accesso remoto, limitare l'accesso a tali indirizzi.

Può anche essere utile limitare l'accesso alle chiavi autorizzate.


0

Uso pam_abltemporaneamente nella lista nera i bruti forzati, e funziona benissimo. Penso che sia meglio avere l'autorizzazione in PAM usando il proprio database piuttosto che dipendere da hosts.denyo iptables.

Un altro vantaggio è che pam_ablnon dipende dalla scansione dei file di registro.


0

È completamente normale in questi giorni.
È possibile impostare il limite di "burst" sul firewall per le nuove connessioni in entrata sulla porta SSH,
oppure installare uno dei numerosi parser di log a'la fail2ban o modificare la porta SSH;).

L'ultimo è il più semplice. Su macchine con carichi pesanti tali tentativi di intrusione possono influire negativamente sull'intero sistema.

-
Saluti,
Robert


0

Sì è normale

Ho appena cambiato la porta ssh rispetto allo standard 22. Il mio server, le mie regole :) basta modificare / etc / ssh / sshd_config, cambiare la porta e riavviare il servizio. L'unico lato negativo è che devi ricordare di aggiungere quella porta alla configurazione per ogni client ssh che usi.


0
  • Disabilita il login root (in ogni sistema Linux esiste un utente root in modo che i robot possano facilmente indovinare il nome utente). Dopo aver effettuato l'accesso come utente normale, puoi passare al root tramite su o sudo.

  • cambia la porta predefinita da 22

  • Consentire l'accesso ssh solo da ip noti

  • Utilizzare una password alfanumerica numerica per l'utente con accesso ssh

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.