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