Servidor LAMP seguro para uso en producción

10

¿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.

WalterJ89
fuente
Apache Hardening en un sitio hermano.
Marcin

Respuestas:

13

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:

  • Deshabilitar el protocolo SSH 1
  • Solo permitir autenticación raíz without-password(solo par de claves)

Con Apache:

  • Deshabilite cualquier módulo que no sea necesario
  • Deshabilitar .htaccess y directorios públicos
  • Deshabilite FollowSymlink y cualquier opción innecesaria
  • No instale PHP si no lo necesita.

Con MySQL:

  • Deshabilitar usuarios predeterminados.
  • No use hosts comodín.
  • Asegúrese de establecer un host único para cada usuario.
  • No escuches en tcp a menos que sea necesario. (Inusualmente inevitable)
  • Limite los privilegios de usuario de la aplicación tanto como sea posible. (SELECCIONAR, INSERTAR, ACTUALIZAR, BORRAR ideal para escribir y SELECCIONAR para leer)

Recomiendo investigar específicamente el ajuste php.ini para seguridad. Es un software más riesgoso por defecto.

Bastilla

Warner
fuente
Sugeriré
2

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

Alexandre Nizoux
fuente
Pero básicamente, no cargue módulos que no necesite explícitamente, oculte todos los números de versión y páginas de depuración / información, cree un usuario mysql para cada aplicación con contraseñas reforzadas, siempre haga que la gente trabaje en su servidor usando una cuenta de usuario normal y hágales sudo si necesitan permisos de root, use un cortafuegos como iptables y solo abra los puertos según lo que necesite para entrar en su caja ... Además, los últimos parches ya le proporcionarán una configuración bastante segura.
Alexandre Nizoux
Este artículo no es bueno. Deshabilitando selinux, nada sobre endurecer mysql, deshabilitando módulos de apache innecesarios ...
sumar