Primer problema evidente: ssh root @
No hagas eso. No ssh como root . Siempre. SSH como root es una mala práctica, es peor que sudo su -
. Si su contraseña o clave se ve comprometida de alguna manera, todo el servidor DB se habrá ido. Separación de privilegios, permisos ajustados, cifrado completo del disco ... todo inútil.
Si alguien obtiene un shell en el servidor de aplicaciones, puede conectarse al servicio de base de datos (servicio, no servidor) sin necesidad de las claves SSH. ¿Por qué? ¡Es un túnel TCP! Pueden conectarse directamente a la base de datos utilizando el puerto local. Ni siquiera necesitan encontrar que está ejecutando un túnel, solo con mirar los puertos abiertos con netstat
es suficiente. O mirando tus archivos de configuración. ¿Y qué más habrá en los archivos de configuración? Las credenciales de la base de datos.
Si sus claves SSH no están protegidas por contraseña, pueden acceder a todo el servidor, como root. Ya tenían las credenciales de la base de datos, ahora también tienen acceso de root.
Utilizaría Wireguard u otro servicio VPN para canalizar las solicitudes, y configurar el servidor de seguridad en el servidor de la base de datos para permitir solo conexiones desde la VPN al puerto de la base de datos.
Y cambiaría el puerto por defecto de SSH 22 a otra cosa, y pondría un honeypot en el puerto 22, algo como SSH-Pot : un servidor ssh que nunca se autentica . Eso hace que los robots de escaneo aleatorios extrañen su servidor.
Y como dijo Mark, endurecimiento y menos privilegio. Desactiva tanto como puedas. Si no necesita correo electrónico, deshabilite el correo electrónico. Deshabilite todos y cada uno de los servicios que pueda, hasta que el servicio deje de funcionar. Configure el firewall en el servidor de base de datos para que no permita ninguna conexión entrante, excepto el servicio VPN y el puerto DB dentro de la VPN, y no permita conexiones salientes. Haga lo mismo en el servidor de aplicaciones: permita los puertos 22, 80, 443 y el nuevo puerto ssh (usted lo cambió, ¿verdad?), Y no permita conexiones salientes, excepto el servicio VPN en el servidor DB y el servicio DB .