la escalada de privilegios en la misma máquina es fácil. En máquinas bloqueadas separadas es más difícil. Si tiene un nivel de presentación en la parte delantera (es decir, apache) que se ve comprometido pero tiene una cuenta de SQL con privilegios limitados y el servidor de SQL no tiene servicios expuestos (es decir, no es accesible ssh), potencialmente lo hace mucho Más difícil hacer tanto daño.
Como ejemplo, si un atacante obtiene una raíz en la máquina del servidor web, podría restablecer la contraseña de la raíz del servidor SQL, etc., las tablas de acceso en el disco que la cuenta del servidor web no podrá ver, etc. no pueden hacerlo tan fácilmente sin acceso local a la máquina de base de datos.
WAF es la forma en que veo que no es tan buena; en el mejor de los casos, pueden ser razonables para bloquear patrones espaciales cuando creas una regla para detener un problema, pero no puedes esperar que te aseguren cosas; solo son tan buenos como sus reglas, y generalmente es más fácil / rápido hacer un correcto saneamiento de entrada en su código que tener la sobrecarga adicional de hacer montones de reglas específicas (y lentas) en su WAF ... lo que también supondría una enorme cantidades de trabajo por hacer. La excepción a esto es cuando tiene un código sin mantenimiento que WAF podría ser la única forma de hacer las cosas, pero nuevamente, no subestime lo difícil que es hacer fules y verificar que funcionen correctamente sin afectar el negocio.
Sin reglas, los WAF no protegen nada. En la práctica nadie tiene muy buenas reglas. El costo de arreglar el código a menudo es más bajo que el costo de hacer que las reglas coincidan completamente con el código, pero el costo de implementar una regla WAF de corrección táctica cuando tiene un problema específico puede ser más fácil que arreglar el código. (El costo aquí puede significar cualquiera de dinero / tiempo / complejidad).