1) What are suggestions on preventing this as a security risk? (perhaps owning the mongodb process by a user/group that not even sudo would a allow shutting down? i.e another unknown username/password combination that the hacker would need to brute-force crack?)
Difesa in profondità richiede più livelli di sicurezza. Hai ragione nel ritenere che un utente malintenzionato che accede a un superutente abbia un accesso ampio al tuo server, ma sembra che stia banalizzando lo sforzo per farlo. Nello scenario suggerito ci sono diversi gravi problemi di sicurezza: un utente malintenzionato ha accesso alle credenziali AWS, al client .pem
file e all'accesso senza password sudo
. Con questo livello di accesso, un utente malintenzionato ha il pieno controllo dell'infrastruttura AWS.
Un elenco non completo di misure di sicurezza proattive da considerare include:
- Blocca l'account
ec2-user
SSH predefinito in modo che possa essere utilizzato solo localmente o da un set limitato di IP affidabili.
- Aggiorna la configurazione
sudoers
(utilizzando visudo
) per evitare o limitare il login senza password. L'accesso sudo
può essere limitato a un sottoinsieme di comandi con o senza richiesta di conferma per la password dell'utente. Una configurazione NOPASSWD
per alcuni o tutti i comandi sudo
è una comodità, ma certamente non è un requisito.
- Limita l'esposizione alla rete SSH tramite firewall o wrapper TCP (vedi: Mantenendo sicuro l'accesso SSH ).
- Crea un account SSH con accesso più limitato per l'accesso remoto.
- Aggiungi monitoraggio / avviso per tentativi di accesso remoto (riuscito e non riuscito)
2) Does using --auth matter at all (supposing i've already secured my database through the use-of public facing token-based end-points - because I don't want people sending usernames & passwords to my end-points. I see that as less secure than using a token)
La protezione degli endpoint API pubblici è un esercizio correlato (ma separato) dalla protezione del database. Un'analogia nella vita reale potrebbe essere: "se hai un lucchetto sul tuo cancello anteriore, dovresti bloccare anche la porta principale o mettere i tuoi oggetti di valore in una cassastrong?"
Avere autenticazione e amp; il controllo di accesso abilitato fa parte della strategia di difesa in profondità e rappresenta un primo passo nella lista di controllo di sicurezza MongoDB . Se qualcuno ha compromesso il proprio server applicazioni o un altro host di rete attendibile, non dovrebbe automaticamente ottenere pieno accesso alla distribuzione del database. Il controllo dell'accesso può anche prevenire alcuni errori logici dell'applicazione: ad esempio, assicurando che l'API sia limitata alle operazioni CRUD e non possa essere utilizzata (ab) per inviare comandi di riconfigurazione del cluster. È necessario considerare la sicurezza tra gli utenti finali e l'API, l'API e la distribuzione del database e tutti gli altri aspetti dell'infrastruttura. Una buona strategia di difesa approfondita includerà il monitoraggio e il rilevamento delle intrusioni in modo da essere a conoscenza di quando le tue difese sono state testate e potenzialmente compromesse.