¿Cuáles son algunas de las mejores prácticas, recomendaciones y lecturas necesarias para asegurar un servidor Apache?
¿Cuáles son algunas de las mejores prácticas, recomendaciones y lecturas necesarias para asegurar un servidor Apache?
Obtenga la guía del Centro de Seguridad de Internet (CIS) para proteger Apache (describe en detalle cómo mejorar la seguridad):
Editar: enlace actualizado CIS Apache HTTP Server 2.2.x Benchmark
Si tiene una licencia para Nessus , puede ejecutar una comprobación automática al tomar su plantilla de auditoría:
Esta es una buena guía:
enlace
Guía básica para el endurecimiento: enlace
Si estás ejecutando php: enlace
Encuentra 404's (u otros códigos de estado) en el registro de apache
awk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head
La respuesta originalmente altamente votada a esta pregunta que fue aceptada fue eliminada porque era un plagio directo de 20 maneras de asegurar su Configuración de Apache . Esa página es un recurso fantástico.
@RoryMcCune también publicó esto como un enlace a esa respuesta: hay un proyecto OWASP para desarrollar un ProSecurity Core Rule Set aquí que podría ser de utilidad.
Hay muchos buenos consejos aquí, así que no repetiré las cosas ya mencionadas. Pero lo que voy a decir es:
No te olvides de reemplazar las páginas de error predeterminadas con cosas que no regalan la versión del servidor web o la revisión del kernel. Tiendo a reemplazar cada html predeterminado por 1 liners que son algo así como "Error 400". Da muy poco sobre el sistema de distancia. Este principio se aplica a todos los servidores web capaces de mostrar páginas de error personalizadas, casi todas están predeterminadas para revelar demasiada información de la necesaria. Usted pensaría que ServerSignature ocultaría esto, pero en muchos casos no lo hace.
Además, no olvide eliminar todo el contenido HTML predeterminado (específico del idioma, etc.), por lo que la toma de huellas dactilares es mucho más difícil.
En lo que respecta a las buenas lecturas, había un documento técnico de Apcon 2008 que vale la pena leer.
Mod_Security se menciona algunas veces, esto es más adecuado para las aplicaciones web, por lo que si solo está sirviendo contenido estático, no le ayudará mucho también , aunque existen algunos ataques contra los que ayuda a defenderse durante el manejo de solicitudes, lo que podría afectar a un servidor web estático .
La otra cosa que mencionaría es la buena administración de registros, si no está utilizando los registros y vigilando de cerca el sistema, corre el riesgo de que un atacante lo golpee sin saberlo.
Se aplican todos los principios generales de seguridad: ejecute solo los módulos que necesita, desactive las funciones que no necesita, ordene sus permisos / propiedades (la mayoría de los contenidos son de solo lectura, ¿por qué los archivos necesitan algo más de 400 permisos)? ?).
Las cosas que son particulares de Apache, como los trabajos CGI, o diferentes vhosts que sirven el mismo contenido dos veces con dos mecanismos de seguridad diferentes son mucho más difíciles de detectar; no es exactamente una comprobación automática, realmente debes conocer Apache, el sistema operativo subyacente y qué están haciendo las aplicaciones que se ejecutan en Apache.
Para completar, aquí hay una Lista de verificación de seguridad de Apache 2.2 de DISA. ACTUALIZACIÓN: Aquí hay un enlace a su toda la colección de documentos de endurecimiento del servidor web.
Podría valer la pena echarle un vistazo a Apache mod_security .
Últimamente, he estado probando algunos de mis servidores, no solo realiza algunos ajustes de configuración al propio Apache, como cambiar el número de versión, sino que también actúa como un firewall de aplicaciones web que ayuda a proteger contra una gran variedad de ataques. como la inyección SQL etc.
¿Cómo aseguro el servidor web Apache
¿Qué respuesta esperaría si preguntara "¿Cómo hago volar un jumb-jet" o "¿Cómo hago una cirugía cerebral"? Lo mismo se aplica a la seguridad de un servidor web. Debe realizar miles de horas de entrenamiento. Práctica e investigación. Pero como todo el mundo tiene que empezar en alguna parte ...
Hay muchas listas de verificación básicas en Internet sobre cómo fortalecer un servidor, pero según mi comentario en otros lugares varían en calidad enormemente .
Recomiendo sans one como una buena fuente.
Una vez que haya seguido la lista de verificación, debe establecer los medios por los cuales puede
No planifique cómo lidiar con un incidente de seguridad si sucede. Planifique qué hacer cuando sucede.
Una vez que haya configurado y configurado su sistema, luego cambie el disco duro y vea cuánto tiempo le lleva poner en marcha el servicio nuevamente sin usar el disco original.
esto no solo está relacionado con el apache (y también cuenta para nginx + php-fpm), pero a menudo se olvida: php-eastereggs, que se puede cambiar a través de php.ini
expose_php = off
no es tan terrible como dejar un phpinfo.php atrás, pero por lo general es una sugerencia para una administración de sistemas muy perezosa.
vea easter-eggs
Utilice la última versión de apache, parche su sistema operativo y también de terceros como openssl o cualquier otro.
Bloquear puertos no deseados.
Esto lo protegerá de algunas vulnerabilidades conocidas, pero siempre será susceptible a un día de 0 días, por supuesto.
Buen hilo convertido. Muchas personas dicen la verdad.
Se olvidaron de uno, OpenBSD :
En OpenBSD, el servidor httpd (8) de Apache ha sido chroot (2) ed por defecto
enlace
Puedes repetirlo fácilmente con apache2 o nginx en cualquier otro sistema operativo tipo Unix.
Aquí hay 6 pasos clave:
modsecurity
para proteger su aplicación de ataques de nivel de aplicación. No confíe en el firewall de su red, es inútil cuando se habla de seguridad web.
Lea otras preguntas en las etiquetas webserver apache hardening configuration