Pregunta

Estoy a punto de lidiar con la administración y ejecución de mi primer servidor web Apache conectado a Internet y me preguntaba si hay administradores de sistemas y desarrolladores que deseen compartir algunos de sus conocimientos sobre seguridad y consejos de optimización para ejecutar Apache. servidor web.

Tal vez pueda compartir su lista de las cinco (o diez) principales de las cosas que hace inmediatamente después de instalar el servidor web Apache (en una caja de Linux).

Cualquier ayuda muy apreciada.

¿Fue útil?

Solución

Básico

  1. Asegúrese de tener instalada la última versión estable . La ejecución de una versión antigua o inestable de Apache podría exponer su sistema a fallas de seguridad o soluciones no probadas
  2. Asegúrese de que solo se procesen realmente las solicitudes previstas . Debe considerar quién tiene que acceder a los recursos web expuestos por Apache y cómo .
  3. Evita ejecutar Apache como root . Esto es un deber.
  4. Maneja tus registros . Los troncos tienden a volverse más y más grandes; Considere la posibilidad de configurar logrotate o limpiar su registro periódicamente.
  5. Supervise el estado de Apache con un sistema de monitoreo . Me gusta juntar munin y monit, ambos fáciles de configurar y mantener. Nagios y otros merecen una mirada.
  6. Si Apache está sirviendo aplicaciones web (es decir, PHP, Perl, Rails) asegúrese de que el módulo correcto maneje las solicitudes en el orden correcto .
  7. Escribe un buen mensaje 404 y 500 . Tarde o temprano, sus visitantes detectarán un error.
  8. Detenga y reinicie Apache , de modo que pueda estar seguro de que tanto el procedimiento de reducción de voz como el de inicio están funcionando sin problemas.
  9. Utilice mod_security

Seguridad

  1. Protege Apache contra DOS.
  2. Cargue solo los módulos que realmente se necesitan.
  3. Supervise su registro para averiguar si algo extraño está sucediendo.

Rendimiento

  1. Si está compilando Apache desde el código fuente, asegúrese de usar MPM (Módulos de multiprocesamiento).
  2. Cargue solo los módulos que realmente se necesitan.
  3. Verifique la configuración de MaxClients para que su servidor no genere tantos hijos que comience a intercambiar.
  4. Utilice el módulo mod_deflate, que proporciona el filtro de salida DEFLATE que permite que la salida de su servidor se comprima antes de enviarla al cliente a través de la red.

Otros consejos

  • Asegúrese de que el proceso de Apache no se esté ejecutando como root.
  • Asegúrese de estar en la última versión estable
  • Si el cuadro es directamente conectado a internet Asegúrate de que has pensado en todo otros servicios, como ssh.
  • Inspeccione cuidadosamente las reglas de su cortafuegos local, ajústelas. (Ver iptables)
  • No active las opciones que no entiende o no planea usar
  • Considere la posibilidad de suscribirse a una lista de correo de seguridad de Apache para que aprenda de inmediato de cualquier parche crítico
  1. Chroot el servidor web
  2. Deshabilita cualquier módulo que no vayas a necesitar
  3. Lo que necesita es mod_security
  4. Configure un comprobador de integridad de archivos para su webroot
  5. Asegure todo lo demás en el mismo servidor y apague todo lo que no se use
  6. Ejecute pruebas en su servidor con herramientas como nmap o Metasploit

Voy a interpretar " después de instalar Apache en una caja " como " Preparación de una nueva instalación de servidor para uso de producción " ;, porque, por supuesto, todo esto se haría en un servidor de desarrollo y se asignaría a SCM o se integraría en una instalación automatizada.

Todo lo que haga para optimizar debe hacerse en base a mediciones reales. Configure un entorno de prueba con su aplicación real que pretende ejecutar, de la manera más realista posible. Algunos puntos a considerar son:

  • No establezca MaxClients demasiado alto. Puede usar una gran cantidad de RAM, especialmente con servidores prefork con una gran aplicación incorporada (por ejemplo, mod_perl, PHP, etc.). Usar demasiada memoria es contraproducente. Es mejor para los clientes esperar un servicio exitoso que recibir un error.
  • Considera cuidadosamente si tienes Keepalives encendido. Estos pueden acelerar y ralentizar dependiendo de su entorno. Si elige tenerlos encendidos, debe pensar en su tiempo de espera de mantenimiento basado en el caso de uso real.
  • Realice pruebas de rendimiento con HTTPS habilitado si está utilizando HTTPS en producción
  • Establecer " Última modificación " y " Caduca " encabezar adecuadamente los objetos que cambian con poca frecuencia (para maximizar el almacenamiento en caché del lado del cliente). Pruebe el almacenamiento en caché del lado del cliente en una variedad de navegadores.
  • Asegúrese de que su aplicación use HTTPS correctamente, no de manera que los navegadores generen advertencias de seguridad (esta es otra buena razón por la que debe usar HTTPS durante las pruebas)

Si está ejecutando un entorno LAMP estándar (Linux, Apache, MySQL, PHP / PEARL / PYTHON): ponga MySQL en otra máquina que no sea Apache. Será un poco más lento con solo unos pocos procesos concurrentes (debido a la latencia de la red), pero será MUCHO más rápido con muchos procesos concurrentes.

Asegúrese de que lo haya configurado para detectar ataques de DOS (denegación de servicio).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top