¿Cuál es el procedimiento para asegurar un servidor Linux, Apache, MySQL, PHP (o incluso Perl) para uso en producción?
Además de establecer la contraseña de MySQL y la contraseña de root para Linux, ¿qué otros pasos (tal vez no tan obvios) deberían tomarse?
Además, ¿qué pasos puedo tomar, si fuera paranoico adicional, que normalmente no sería necesario?
Esto es para un uso básico de un solo sitio, pero debe ser seguro.
Respuestas:
Estas recomendaciones están fuera de mi alcance y no tienen la intención de ser exhaustivas.
Echa un vistazo a Bastille, es una serie de scripts que implementa las mejores prácticas en Linux.
No envíe datos de autenticación a través de protocolos de texto sin formato. Por ejemplo, deshabilite FTP. Si envía datos de autenticación a través de Apache, use SSL.
Deshabilite y elimine cualquier software innecesario, incluida la interfaz GUI.
Audite cualquier archivo con el bit SUID establecido y elimínelo. (Esto limitará severamente las habilidades no root. Comprenda las implicaciones para cada cambio individual).
Audite directorios públicos de escritura y elimine el bit de escritura. (Dejar / tmp solo)
Evita ejecutar cualquier daemon como root.
Investigue todo el software multiusuario que escucha en zócalos en detalle para las mejores prácticas de seguridad.
Evitar agregar usuarios al sistema es uno de los mejores enfoques. Los sistemas multiusuario requieren mayor atención al detalle.
Hacer cumplir los estándares de contraseña. Por ejemplo: mínimo 10 caracteres, caracteres no alfanuméricos, usando letras y números. Esto es para hacer que la fuerza bruta sea más difícil en caso de compromiso del archivo de contraseña. Hacer cumplir esto a través del sistema.
Bloquee a los usuarios después de 5 intentos fallidos de autenticación con un bloqueo mínimo de 10 minutos. Mantenga un historial de contraseñas para que los usuarios no puedan usar las últimas 5 contraseñas.
Si tiene un entorno más grande, el uso de la segregación de red con múltiples subredes para aislar el riesgo es un requisito absoluto. Si se trata de un entorno más pequeño, se recomienda ejecutar un firewall en el sistema local para limitar la exposición. Por ejemplo, solo permite SSH a su IP. Los tcpwrappers también se pueden usar para una capa adicional. (/etc/hosts.allow, /etc/hosts.deny)
Y, por supuesto, mantener todo el software actualizado. Especialmente demonios de cara al público.
Con SSH:
without-password
(solo par de claves)Con Apache:
Con MySQL:
Recomiendo investigar específicamente el ajuste php.ini para seguridad. Es un software más riesgoso por defecto.
Bastilla
fuente
Aquí hay un buen artículo que puede usar como base para su configuración y cambiar de acuerdo con su distribución: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- servidor-con-centos-5-36786
fuente
La Agencia de Seguridad de la Información de Defensa tiene un conjunto de listas de verificación de seguridad que son buenos lugares para comenzar. Aún mejor es entender la justificación de cada entrada, pero esa no es una respuesta rápida. Le recomendaría que mire los STIG de Enclave, Network, Unix y Web Server .
fuente