In che modo gli hacker hanno compromesso la mia istanza EC2?

7

La mia istanza EC2 è stata compromessa di recente. Non ha molta importanza dato che sto avviando il mio sito web e non c'erano ancora informazioni sensibili sul mio server, ma ho intenzione di farlo in futuro. Ho intenzione di chiudere il server compromesso e installarne un altro per proteggere il mio sito web.

Il mio problema è che voglio assicurarmi che ciò non accada mai più, e l'unico modo in cui posso convincermi che il mio nuovo server è sicuro è sapere come il primo server è stato compromesso e assicurarsi che il nuovo server non possa essere compromesso con lo stesso metodo. Tuttavia, sto riscontrando problemi nell'identificazione / comprensione di come il primo server è stato violato.

Lo stack utilizzato è Rails 4.2.4 + Postgresql 9.3 + Puma + Nginx 1.4.6. Il server che sto utilizzando è Ubuntu 14.04.2 LTS su un'istanza di AWS EC2 t2.micro. Le mie chiavi di accesso AWS non sono state pubblicate da nessuna parte, e io sono l'unico che dovrebbe avere accesso SSH al mio server.

Ora non sono un hacker, o anche un buon amministratore di sistema per questo (anche se sto imparando) quindi devo tenere una mente aperta su come il server è stato infiltrato, ma dal momento che l'unico modo per accedere al mio server è per SSH, presumo che sia così anche per gli hacker. Avevo erroneamente lasciato una regola del gruppo di sicurezza in entrata per la porta SSH 22 per avere una sorgente di 0.0.0.0/0, il che mi fa anche pensare che sia probabilmente questo il modo in cui gli hacker sono entrati.

Accedo al mio server tramite ssh utilizzando una chiave privata con comando simile a

ssh -vi "/home/me/.ssh/my_private_key.pem" ubuntu@my_aws_instance.com

Sono stato informato del compromesso da un'e-mail [email protected] che il mio server stava effettuando attacchi DDOS. Anche se non sono riuscito a verificarlo guardando i miei log, ho trovato alcuni script php nascosti in /var/tmp che sembravano progettati per inviare e-mail di phishing che mi hanno convinto che il server era stato effettivamente violato.

Non è stata impostata alcuna password per ssh che è stata confermata da hydra quando ho provato ad attaccare il mio server. Ciò implica che l'utente malintenzionato deve aver indovinato la mia chiave privata RSA ... ma ho capito che questo è non realisticamente possibile .

Non conosco altri possibili modi in cui il server potrebbe essere stato compromesso. Qualcuno ha qualche idea? Qualcuno dei miei presupposti o passaggi è sbagliato?

Regole del gruppo di sicurezza in entrata (al momento della violazione):

HTTP               TCP    80      0.0.0.0/0
PostgreSQL         TCP    5432    0.0.0.0/0
SSH                TCP    22      0.0.0.0/0
Custom TCP Rule    TCP    9200    91.216.55.150/32

Grazie in anticipo per il tuo aiuto. Sono sicuro di aver tralasciato molte informazioni utili, quindi se c'è qualcosa di più che vorresti sapere basta chiedere.

EDIT:

Il sito Web contiene alcune funzionalità di input di dati Rails piuttosto standard. Principalmente attraverso i moduli html e lì permetto il caricamento delle immagini usando una gemma chiamata carrierwave .

    
posta Dennis 09.03.2016 - 15:45
fonte

1 risposta

6

The stack used is Rails 4.2.4 + Postgresql 9.3 + Puma + Nginx 1.4.6. The server I'm running is Ubuntu 14.04.2 LTS on an AWS EC2 t2.micro instance.

I access my server by ssh using a private key...

A meno che tu non abbia modificato sshd config per consentire anche il login della password, questo è sufficiente per garantire che un utente malintenzionato remoto non possa rinforzare il tuo accesso SSH. Se il computer che usi come client SSH è comunque compromesso, dovresti considerare anche le chiavi compromesse.

How did hackers compromise my EC2 instance?

Difficile da dire senza ulteriori informazioni. Sarebbe utile un elenco di servizi in esecuzione, regole del firewall e una pila di file di registro.

My issue is that I want to make sure this never happens again...

Cookie difficili . Finché si dispone di un server web pubblicamente, verrà attaccato. L'approccio migliore da prendere è accettare che ciò possa accadere di nuovo in futuro e prepararsi per questo. Alcune cose realistiche che puoi fare sono tenere il software completamente aggiornato, tune le tue regole del firewall (hai davvero bisogno di dare accesso al mondo intero ? ), implementa un IDS / IPS sul rete locale AWS e instradare tutto il traffico attraverso di esso e infine registra tutto il traffico e inoltra a un indurito che registra server .

Questo è forse il passo più importante per capire come sei stato hackerato e come prevenirlo in futuro. Eseguire grepping tramite i file di registro è un'opzione, ma avere una rappresentazione visiva pulita dei log del server rende molto più facile rilevare le anomalie e cercare più tardi quando un server viene attaccato. Avere un server log separato e rinforzato è importante perché se il tuo server web è compromesso, l'attaccante può cancellare localmente le tracce dell'attacco.

Se vuoi fare un ulteriore passo avanti, puoi automatizzare il processo di rilevamento delle anomalie e definire le reazioni basate su tale .

    
risposta data 10.03.2016 - 00:49
fonte

Leggi altre domande sui tag