Passaggi importanti aggiuntivi:
- Firewall tutto. Esporre solo la porta SSH, HTTP e HTTPS (+ eventuali altre porte specifiche dell'applicazione)
- Assicurati che MySQL sia vincolante solo su localhost, esegui il set sicuro (fai attenzione con la lunghezza PW supporta solo 32 caratteri)
- Installa e configura Fail2Ban per bloccare dinamicamente ogni richiesta sospetta
- Rimuovi / disabilita tutti i moduli Apache non utilizzati
- Assicurati che i tuoi controlli di accesso con privilegi minimi siano impostati correttamente, ad esempio chiavi individuali, un modo semplice per revocare l'accesso, la registrazione completa di tutti i comandi e la cronologia del terminale
- Se possibile, implementa la whitelist IP per l'accesso SSH
Passaggi desiderati:
-
Utilizza una soluzione CI per il deploy effettivo del codice, questo aggiunge un livello di governance e controllo al codice sorgente che appare sul server
-
Blocca il lato del pubblico con whitelisting IP / autenticazione di base, non ha senso essere sottoposto a scansione e bombardato quando è in fase di sviluppo
-
Assicurati che i log di Apache e MySQL siano impostati correttamente con il livello di log e le autorizzazioni corretti (i log di Apache appartengono a root quindi fai attenzione se apporti modifiche qui)
-
Sposta ssh off port 22. Non c'è dubbio che qualcuno si lamenterà di questo, sì è la sicurezza attraverso l'oscurità ma accoppiata con Fail2Ban il vantaggio qui è meno traffico bot sulla porta 22.
Non hai menzionato nessuno dei servizi o delle lingue utilizzate, se stai usando PHP ecc. la loro è tutta una serie di altre misure da prendere.