English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Guía de seguridad y refuerzo del servidor web Apache

APACHE
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Una guía práctica para proteger y fortalecer el servidor HTTP Apache.

El servidor web es una parte fundamental de las aplicaciones basadas en web. Apache Web Server a menudo se coloca en el borde de la red, por lo que se convierte en uno de los servicios más vulnerables a los ataques.

Tener una configuración predeterminada proporciona mucha información confidencial que puede ayudar a los piratas informáticos a prepararse para un ataque a las aplicaciones. La mayoría de los ataques a aplicaciones web se producen a través de XSS, pérdida de información, administración de sesiones y ataques de inyección SQL que se deben a un código de programación débil y a la falta de limpieza de la infraestructura de la aplicación web.

Interesante investigación de Tecnologías positivas revela, el 52% de la aplicación escaneada tenía altas vulnerabilidades.

informe de vulnerabilidad

En este artículo, hablaré sobre algunas de las mejores prácticas para proteger el servidor HTTP Apache en la plataforma Linux.

Los siguientes se prueban en la versión Apache 2.4.x.

  • Esto supone que ha instalado Apache en la plataforma UNIX. Si no, puedes pasar la guía de instalación.
  • Llamaré al directorio de instalación de Apache / opt / apache como $ Web_Server a lo largo de esta guía.
  • Se recomienda realizar una copia de seguridad del archivo de configuración existente antes de realizar cualquier modificación.

Audiencia

Esto está diseñado para el administrador de Middleware, el soporte de aplicaciones, el analista de sistemas o cualquier persona que trabaje o desee aprender las pautas de seguridad y protección.

Es obligatorio tener un conocimiento cabal del servidor web Apache y el comando UNIX.

Notas

Necesita alguna herramienta para examinar los encabezados HTTP para verificar parte de la implementación. Hay dos maneras de hacer esto.

  1. Utilice herramientas de desarrollo integradas en el navegador para inspeccionar los encabezados HTTP. Por lo general, está en la pestaña Red
  2. Usar en línea Herramienta de verificación de encabezado de respuesta HTTP

Eliminar el banner de la versión del servidor

Yo diría que esta es una de las primeras cosas a considerar, ya que no desea exponer qué versión de servidor web está utilizando. Exponer la versión significa que está ayudando al hacker a acelerar el proceso de reconocimiento.

La configuración predeterminada expondrá la versión de Apache y el tipo de sistema operativo como se muestra a continuación.

banner-del-servidor-apache

  • Vaya a la carpeta $ Web_Server / conf
  • Modifique httpd.conf usando el editor vi
  • Agregue la siguiente directiva y guarde httpd.conf
ServerTokens Prod
ServerSignature Off
  • Reiniciar apache

ServerSignature eliminará la información de la versión de la página generada por Apache.

ServerTokens cambiará el encabezado a solo producción, es decir, Apache

Como puede ver a continuación, la información sobre la versión y el sistema operativo ha desaparecido.

apache-server-banner-enmascarado

Deshabilitar la lista del navegador de directorio

Deshabilite la lista de directorios en un navegador, para que el visitante no vea todos los archivos y carpetas que tiene en la raíz o el subdirectorio.

Probemos cómo se ve en la configuración predeterminada.

  • Vaya al directorio $ Web_Server / htdocs
  • Crea una carpeta y algunos archivos dentro de ella.
# mkdir test
# touch hi
# touch hello

Ahora, intentemos acceder a Apache por http://localhost/test

apache-directory-listing

Como puede ver, revela todos los archivos / carpetas que tiene y estoy seguro de que no quiere exponer eso.

  • Vaya al directorio $ Web_Server / conf
  •  Abierta httpd.conf usando vi
  •  Busque Directorio y cambie la directiva Opciones a Ninguno o - Índices
<Directory /opt/apache/htdocs>
Options -Indexes
</Directory>

(o)

<Directory /opt/apache/htdocs>
Options None
</Directory>
  • Reiniciar Apache

Nota:: si tiene varias directivas de directorio en su entorno, debería considerar hacer lo mismo para todas.

Ahora, intentemos acceder a Apache por http://localhost/test

lista de directorios deshabilitados

Como puede ver, muestra un error prohibido en lugar de mostrar la lista de carpetas de prueba.

etag

Permite a los atacantes remotos obtener información confidencial como el número de inodo, el límite MIME de varias partes y el proceso secundario a través del encabezado Etag.

Para prevenir esta vulnerabilidad, implementémosla como se muestra a continuación. Esto es necesario para corregir el cumplimiento de PCI.

  • Vaya al directorio $ Web_Server / conf
  • Agregue la siguiente directiva y guarde httpd.conf
FileETag None
  • Reiniciar apache

Ejecute Apache desde una cuenta sin privilegios

Una instalación predeterminada se ejecuta como nadie o demonio. Usar un usuario sin privilegios separado para Apache es bueno.

La idea aquí es proteger otros servicios en ejecución en caso de cualquier agujero de seguridad.

  • Crea un usuario y un grupo llamado apache
# groupadd apache
# useradd –G apache apache
  • Cambie la propiedad del directorio de instalación de apache a un usuario sin privilegios recién creado
# chown –R apache:apache /opt/apache
  •  Vaya a $ Web_Server / conf
  •  Modifique httpd.conf usando vi
  •  Busque Directiva de usuario y grupo y cámbiela como cuenta apache sin privilegios
User apache 
Group apache
  •  Guarde el httpd.conf
  •  Reiniciar Apache

grep para ejecutar el proceso http y asegurarse de que se esté ejecutando con el usuario de apache

# ps –ef |grep http

Debería ver que un proceso se está ejecutando con root. Eso es porque Apache está escuchando en el puerto 80 y debe iniciarse con root.

Proteger el permiso del directorio de configuración y binarios

De forma predeterminada, el permiso para binarios y configuración es 755, lo que significa que cualquier usuario de un servidor puede ver la configuración. Puede impedir que otro usuario acceda a la carpeta conf y bin.

  • Vaya al directorio $ Web_Server
  • Cambiar el permiso de la carpeta bin y conf
# chmod –R 750 bin conf

Protección de la configuración del sistema

En una instalación predeterminada, los usuarios pueden anular la configuración de Apache usando .htaccess. Si desea evitar que los usuarios cambien la configuración de su servidor apache, puede agregar AllowOverride a None como se muestra a continuación.

Esto debe hacerse a nivel de raíz.

  • Vaya al directorio $ Web_Server / conf
  •  Abra httpd.conf usando vi
  •  Buscar directorio a nivel raíz
<Directory /> 
Options -Indexes 
AllowOverride None
</Directory>
  •  Guarde el httpd.conf
  •  Reiniciar Apache

Métodos de solicitud HTTP

El protocolo HTTP 1.1 admite muchos métodos de solicitud que pueden no ser necesarios y algunos de ellos tienen un riesgo potencial.

Por lo general, es posible que necesite métodos de solicitud GET, HEAD, POST en una aplicación web, que se puede configurar en la directiva de directorio correspondiente.

La configuración predeterminada admite el método OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT en el protocolo HTTP 1.1.

  •  Vaya al directorio $ Web_Server / conf
  •  Abra httpd.conf usando vi
  • Busque Directorio y agregue lo siguiente
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
  • Reiniciar Apache

Deshabilitar la solicitud HTTP de seguimiento

De forma predeterminada, el método de seguimiento está habilitado en el servidor web Apache.

Tener esto habilitado puede permitir un ataque de rastreo de sitios cruzados y potencialmente dar una opción a un pirata informático para robar información de cookies. Veamos cómo se ve en la configuración predeterminada.

  •  Hacer una IP de servidor web telnet con puerto de escucha
  •  Realice una solicitud de TRACE como se muestra a continuación
#telnet localhost 80 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.1 Host: test
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2013 02:13:24 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: message/http 20
TRACE / HTTP/1.1
Host: test 
0
Connection closed by foreign host.
#

Como puede ver en la solicitud TRACE anterior, ha respondido a mi consulta. Desactivemos y probemos.

  •  Vaya al directorio $ Web_Server / conf
  • Agregue la siguiente directiva y guarde httpd.conf
TraceEnable off
  •  Reiniciar apache

Haga una IP de servidor web telnet con puerto de escucha y haga una TRACE solicitud como se muestra a continuación

#telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.1 Host: test
HTTP/1.1 405 Method Not Allowed
Date: Sat, 31 Aug 2013 02:18:27 GMT
Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> 
<title>405 Method Not Allowed</title> </head><body> 
<h1>Method Not Allowed</h1>
<p>The requested method TRACE is not allowed for the URL /.</p> </body></html>
Connection closed by foreign host.
#

Como puede ver en la solicitud TRACE anterior, ha bloqueado mi solicitud con el método HTTP 405 no permitido.

Ahora, este servidor web no permite la solicitud de TRACE y ayuda a bloquear el ataque de rastreo de sitios cruzados.

Establecer cookie con HttpOnly y Secure flag

Puede mitigar la mayoría de los ataques comunes de Cross Site Scripting utilizando HttpOnly y Secure flag en una cookie. Sin tener HttpOnly y Secure, es posible robar o manipular la sesión de la aplicación web y las cookies, y es peligroso.

  •  Asegúrese de que mod_headers.so esté habilitado en su httpd.conf
  •  Vaya al directorio $ Web_Server / conf
  •  Agregue la siguiente directiva y guarde httpd.conf
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  •  Reiniciar apache

Ataque de clickjacking

Clickjacking es una conocida vulnerabilidad de las aplicaciones web.

  •  Asegúrese de que mod_headers.so esté habilitado en su httpd.conf
  •  Vaya al directorio $ Web_Server / conf
  •  Agregue la siguiente directiva y guarde httpd.conf
Header always append X-Frame-Options SAMEORIGIN
  •  Reiniciar apache

apache-x-frame-opciones

X-Frame-Options también admite dos opciones más que expliqué aquí.

El lado del servidor incluye

La inclusión del lado del servidor (SSI) tiene el riesgo de aumentar la carga en el servidor. Si ha compartido el entorno y las aplicaciones web de tráfico pesado, debería considerar la posibilidad de desactivar SSI agregando la directiva Incluye en Opciones.

El ataque SSI permite la explotación de una aplicación web inyectando scripts en páginas HTML o ejecutando códigos de forma remota.

  • Vaya al directorio $ Web_Server / conf
  •  Abra httpd.conf usando vi
  •  Buscar directorio y agregar inclusiones en la directiva Opciones
<Directory /opt/apache/htdocs>
Options –Indexes -Includes
Order allow,denyAllow from all
</Directory>
  • Reiniciar Apache

Nota: si tiene varias directivas de directorio en su entorno, debería considerar hacer lo mismo para todas.

Protección X-XSS

La protección de Cross Site Scripting (XSS) se puede omitir en muchos navegadores. Puede aplicar esta protección a una aplicación web si el usuario la deshabilita. Esto es utilizado por la mayoría de empresas web gigantes como Facebook, Twitter, Google, etc.

  • Vaya al directorio $ Web_Server / conf
  • Abra httpd.conf usando vi y agregue la siguiente directiva de encabezado
Header set X-XSS-Protection "1; mode=block"
  •  Reiniciar Apache

Como puede ver, XSS-Protection se inyecta en el encabezado de respuesta.

apache-xss

Deshabilitar el protocolo HTTP 1.0

Cuando hablamos de seguridad, debemos proteger tanto como podamos. Entonces, ¿por qué usamos una versión HTTP anterior del protocolo, vamos a deshabilitarlos también?

HTTP 1.0 tiene una debilidad de seguridad relacionada con el secuestro de sesiones. Podemos deshabilitar esto usando el módulo mod_rewrite.

  • Asegúrese de cargar el módulo mod_rewrite en el archivo httpd.conf
  •  Habilite la directiva RewriteEngine de la siguiente manera y agregue la condición Rewrite para permitir solo HTTP 1.1
RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]

Configuración del valor de tiempo de espera

De forma predeterminada, el valor de tiempo de espera de Apache es de 300 segundos, lo que puede ser víctima de un ataque lento de Loris y DoS. Para mitigar esto, puede reducir el valor de tiempo de espera a tal vez 60 segundos.

  • Vaya al directorio $ Web_Server / conf
  • Abra httpd.conf usando vi
  •  Agregue lo siguiente en httpd.conf
Timeout 60

SSL

Tener SSL es una capa adicional de seguridad que está agregando a la aplicación web. Sin embargo, la configuración SSL predeterminada conduce a ciertas vulnerabilidades, y debería considerar modificar esas configuraciones.

Clave SSL

Romper la clave SSL es difícil, pero no imposible. Es solo una cuestión de tiempo y poder computacional.

Como ya sabrá, si usa una PC de la era de 2009 durante unos 73 días, puede aplicar ingeniería inversa a una clave de 512 bits.

Entonces, cuanto mayor sea la longitud de la clave, más complicado se volverá romper la clave SSL. La mayoría de las empresas web gigantes utilizan claves de 2048 bits, como se muestra a continuación, ¿por qué nosotros no?

  •  Outlook.com
  •  Microsoft.com
  •   Live.com
  •  Skype.com
  •  Apple.com
  •  Yahoo.com
  •  Bing.com
  •  Hotmail.com
  •  Twitter.com

Puede usar OpenSSL para generar CSR con 2048 bits como se muestra a continuación.

openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

Generará una CSR que deberá enviar a un Autoridad certificada para firmarlo. Una vez que reciba el archivo de certificado firmado, puede agregarlo en el archivo httpd-ssl.conf

SSLCertificateFile #Certificate signed by authority
SSLCertificateChainFile #Certificate signer given by authority
SSLCertificateKeyFile #Key file which you generated above
  • Reinicie el servidor web Apache e intente acceder a la URL con https

Cifrado SSL

SSL Cipher es un algoritmo de cifrado que se utiliza como clave entre dos computadoras a través de Internet. El cifrado de datos es el proceso de convertir texto sin formato en códigos cifrados secretos.

Se basa en la configuración de cifrado SSL de su servidor web, el cifrado de datos se llevará a cabo. Por eso es importante configurar SSL Cipher, que es más fuerte y no vulnerable.

  • Vaya a la carpeta $ Web_Server / conf / extra
  •  Modifique la directiva SSLCipherSuite en httpd-ssl.conf como se muestra a continuación para aceptar solo algoritmos de cifrado superiores
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  •  Guarde el archivo de configuración y reinicie el servidor apache

Nota: si tiene muchos cifrados débiles en su informe de auditoría SSL, puede rechazarlos rápidamente. al principio.

Deshabilitar SSL v2 y v3

SSL v2 y v3 tiene muchas fallas de seguridad, y si está trabajando para una prueba de penetración o cumplimiento de PCI, se espera que cierre el hallazgo de seguridad para deshabilitar SSL v2 / v3.

Cualquier comunicación SSL v2 / v3 puede ser vulnerable a un ataque Man-in-The-Middle que podría permitir la manipulación o divulgación de datos.

Implementemos el servidor web apache para aceptar solo el TLS más reciente y rechazar la solicitud de conexión SSL v2 / v3.

  • Vaya a la carpeta $ Web_Server / conf / extra
  • Modifique la directiva SSLProtocol en httpd-ssl.conf como se muestra a continuación para aceptar solo TLS 1.2+
SSLProtocol –ALL +TLSv1.2

Una vez que haya terminado con la configuración de SSL, es una buena idea probar su aplicación web con herramienta de certificado SSL / TLS en línea para encontrar cualquier error de configuración.

Mod Security

Mod Security es un código abierto Firewall de aplicaciones web, que puede usar con Apache.

Viene como un módulo que debes compilar e instalar. Si no puede pagar un comercial firewall de aplicaciones web, esta sería una excelente opción para hacerlo.

Para proporcionar protección genérica a las aplicaciones web, las reglas básicas utilizan las siguientes técnicas:

  • Protección HTTP: detección de violaciones del protocolo HTTP y una política de uso definida localmente
  • Búsquedas de listas negras en tiempo real: utiliza la reputación de IP de terceros
  • Detección de malware basada en la web: identifica el contenido web malicioso comprobándolo con la API de navegación segura de Google.
  • Protecciones de denegación de servicio HTTP: defensa contra inundaciones HTTP y ataques de denegación de servicio HTTP lentos.
  • Protección contra ataques web comunes: detección de ataques de seguridad de aplicaciones web comunes
  • Detección de automatización: detección de bots, rastreadores, escáneres y otra actividad superficial maliciosa
  • Integración con AV Scanning for File Uploads: identifica los archivos maliciosos cargados a través de la aplicación web.
  • Seguimiento de datos confidenciales: realiza un seguimiento del uso de la tarjeta de crédito y bloquea las fugas.
  • Protección contra troyanos: detecta el acceso a los caballos de Troya.
  • Identificación de defectos de la aplicación: alertas sobre configuraciones incorrectas de la aplicación.
  • Detección y ocultación de errores: ocultación de los mensajes de error enviados por el servidor.

Descarga e instalación

Los siguientes requisitos previos deben instalarse en el servidor donde desea utilizar Mod Security con Apache. Si alguno de estos no existe, la compilación de Mod Security fallará. Puede usar yum install en Linux o Centos para instalar estos paquetes.

  • apache 2.xo superior
  • paquete libpcre
  •  paquete libxml2
  • paquete liblua
  • paquete libcurl
  •  paquete libapr y libapr-util
  •  módulo mod_unique_id incluido con el servidor web Apache

Ahora, descarguemos la última versión estable de Mod Security 2.7.5 de aquí

  • Transferir el archivo descargado a / opt / apache
  • Extraiga modsecurity-apache_2.7.5.tar.gz
# gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • Vaya a la carpeta extraída modsecurity-apache_2.7.5
# cd modsecurity-apache_2.7.5
  • Ejecute el script de configuración, incluida la ruta apxs a Apache existente
# ./configure –with-apxs=/opt/apache/bin/apxs
  • Compilar e instalar con make script
# make
# make install
  • Una vez realizada la instalación, verá mod_security2.so en la carpeta de módulos en / opt / apache

Ahora esto concluye, ha instalado el módulo Mod Security en el servidor web Apache existente.

Configuración

Para usar la función de seguridad Mod con Apache, tenemos que cargar el módulo de seguridad Mod en httpd.conf. El módulo mod_unique_id es un requisito previo para Mod Security.

Este módulo proporciona una variable de entorno con un identificador único para cada solicitud, que Mod Security rastrea y usa.

  • Agregue siguiendo una línea para cargar el módulo para Mod Security en httpd.conf y guarde el archivo de configuración
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule security2_module modules/mod_security2.so
  •  Reinicie el servidor web apache

¡Mod Security ya está instalado!

Lo siguiente que debe hacer es instalar la regla principal de Mod Security para aprovechar al máximo su función.

La última regla básica se puede descargar siguiendo un enlace, que es gratuito. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Copie el zip de la regla principal descargada en la carpeta / opt / apache / conf
  • Descomprimir el archivo de reglas principales
  • Es posible que desee cambiar el nombre de la carpeta a algo corto y fácil de recordar. En este ejemplo, cambiaré el nombre a crs.
  • Vaya a la carpeta crs y cambie el nombre de modsecurity_crs10_setup.conf.example a modsecurity_crs10_setup.conf

Ahora, habilitemos estas reglas para que funcione con el servidor web Apache.

  •  Agregue lo siguiente en httpd.conf
<IfModule security2_module>
Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf
</IfModule>

En la configuración anterior, estamos cargando el archivo de configuración principal de Mod Security modsecurity_crs_10_setup.conf y las reglas base base_rules / *. Conf proporcionadas por Mod Security Core Rules para proteger las aplicaciones web.

  •  Reinicie el servidor web apache

¡Ha configurado con éxito Mod Security con Apache!

Bien hecho. Ahora, el servidor web Apache está protegido por el firewall de la aplicación web Mod Security.

Cómo Empezar

Comencemos con algunas de las configuraciones críticas en Mod Security para fortalecer y proteger las aplicaciones web.

En esta sección, haremos todas las modificaciones de configuración en /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

Nos referiremos a /opt/apache/conf/crs/modsecurity_crs_10_setup.conf como setup.conf en esta sección por ejemplo.

Es importante comprender cuáles son las reglas de OWASP que se proporcionan de forma gratuita. Hay dos tipos de reglas proporcionadas por OWASP.

Reglas básicas - estas reglas están muy probadas y probablemente la proporción de falsas alarmas sea menor.

Reglas experimentales - estas reglas tienen un propósito experimental y es posible que tenga una falsa alarma alta. Es importante configurar, probar e implementar en UAT antes de usarlos en un entorno de producción.

Reglas opcionales - Estas reglas opcionales pueden no ser adecuadas para todo el entorno. Según sus necesidades, puede utilizarlos.

Si está buscando protección CSRF, seguimiento de usuarios, secuestro de sesiones, etc., puede considerar el uso de reglas opcionales. Tenemos las reglas básicas, opcionales y experimentales después de extraer el archivo zip crs descargado de la página de descarga de OWASP.

Este archivo de configuración de reglas está disponible en las carpetas crs / base_rules, crs / optional_rules y crs / experimental_rules. Familiaricémonos con algunas de las reglas básicas.

  • modsecurity_crs_20_protocol_violations.conf: esta regla protege de las vulnerabilidades del protocolo, como la división de respuestas, el contrabando de solicitudes, el uso de protocolos no permitidos (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: Esto es para proteger de una solicitud, que falta con Host, Accept, User-Agent en el encabezado.
  • modsecurity_crs_23_request_limits.conf: esta regla depende de la aplicación específica, como el tamaño de la solicitud, el tamaño de carga, la longitud de un parámetro, etc.
  • modsecurity_crs_30_http_policy.conf: Esto es para configurar y proteger métodos permitidos o no permitidos como CONNECT, TRACE, PUT, DELETE, etc.
  • modsecurity_crs_35_bad_robots.conf: Detecta robots maliciosos
  • modsecurity_crs_40_generic_attacks.conf: Esto es para proteger de la inyección de comandos del sistema operativo, la inclusión de archivos remotos, etc.
  • modsecurity_crs_41_sql_injection_attacks.conf: esta regla para proteger SQL y la solicitud de inyección de SQL ciego.
  • modsecurity_crs_41_xss_attacks.conf: Protección contra solicitud de secuencia de comandos entre sitios.
  • modsecurity_crs_42_tight_security.conf: Detección y protección de cruce de directorio.
  • modsecurity_crs_45_trojans.conf: esta regla para detectar la salida de administración de archivos genéricos, carga de la página de puerta trasera HTTP, firma conocida.
  • modsecurity_crs_47_common_exceptions.conf: Esto se usa como un mecanismo de excepción para eliminar falsos positivos comunes que se pueden encontrar como una conexión ficticia interna de Apache, un pinger SSL, etc.

Inicio de sesión

El registro es una de las primeras cosas que debe configurar para que pueda crear registros para lo que está haciendo Mod Security. Hay dos tipos de registro disponibles; Registro de depuración y auditoría.

Debug Log: esto es para duplicar los mensajes de error, advertencia y aviso de Apache del registro de errores.

Registro de auditoría: esto es para escribir los registros de transacciones que están marcados por la regla Mod Security. Mod Security le brinda la flexibilidad de configurar el registro de auditoría, depuración o ambos.

Por defecto, la configuración escribirá ambos registros. Sin embargo, puede cambiar según sus necesidades. El registro se controla en SecDefaultAction directiva. Veamos la configuración de registro predeterminada en setup.conf

SecDefaultAction “phase:1,deny,log”

Para registrar Debug, Audit log: use "log" Para registrar solo el registro de auditoría: use "nolog, auditlog" Para registrar solo el registro de depuración: use "log, noauditlog" Puede especificar la ubicación del registro de auditoría que se va a almacenar, que está controlada por SecAuditLog directiva.

Escribamos el registro de auditoría en /opt/apache/logs/modsec_audit.log agregando como se muestra a continuación.

  • Agregue la directiva SecAuditLog en setup.conf y reinicie el servidor web Apache
SecAuditLog /opt/apache/logs/modsec_audit.log
  • Después del reinicio, debería ver que se genera modsec_audit.log

Habilitar motor de reglas

Por defecto, la regla del motor está desactivada, lo que significa que si no habilita Rule Engine, no está utilizando todas las ventajas de Mod Security.

La habilitación o deshabilitación del motor de reglas está controlada por SecRuleEngine Directiva.

  • Agregue la directiva SecRuleEngine en setup.conf y reinicie el servidor web Apache
SecRuleEngine On

Hay tres valores para SecRuleEngine:

  • Activado: para habilitar Rule Engine
  • Desactivado: para deshabilitar el motor de reglas
  • DetectionOnly: habilita Rule Engine pero nunca ejecuta acciones como bloquear, denegar, eliminar, permitir, proxy o redireccionar

Una vez que Rule Engine está activado, Mod Security está listo para proteger con algunos de los tipos de ataques comunes.

Protección de tipo de ataque común

Ahora el servidor web está listo para protegerse con tipos de ataques comunes como XSS, inyección SQL, violación de protocolo, etc., ya que hemos instalado Core Rule y activado Rule Engine. Probemos algunos de ellos.

Ataque XSS

  •  Abre Firefox y accede a tu aplicación y pon tag at the end or URL
  •  Supervise el modsec_audit.log en la carpeta apache / logs

Notará la solicitud de bloques de seguridad de Mod ya que contiene tag which is the root of XSS attack.

Ataque transversal de directorio: - Los ataques transversales de directorio pueden crear mucho daño al aprovechar estas vulnerabilidades y acceder a archivos relacionados con el sistema. Ex - / etc / passwd, .htaccess, etc.

  •  Abra Firefox y acceda a su aplicación con cruce de directorio
  •  Supervise el modsec_audit.log en la carpeta apache / logs
http://localhost/?../.../boot
  • Notará la solicitud de bloques de seguridad de Mod ya que contiene un recorrido de directorio.

Cambiar banner del servidor

Anteriormente en esta guía, aprendió cómo eliminar Apache y el tipo de sistema operativo, ayuda de la versión de la directiva ServerTokens.

Avancemos un paso, ¿qué tal mantener el nombre del servidor como desee? Es posible con SecServerSignature directiva en Mod Security. Ves que es interesante.

Nota: para utilizar Mod Security para manipular el banner del servidor desde un encabezado, debe establecer ServerTokesn en Full en httpd.conf del servidor web Apache.

  • Agregue la directiva SecServerSignature con el nombre de su servidor deseado en setup.conf y reinicie el servidor web Apache.
SecServerSignature YourServerName

por ejemplo:

[/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf
SecServerSignature geekflare.com
[/opt/apache/conf/crs] #

General Configuration

Veamos algunas de las configuraciones generales como mejores prácticas.

Configurar Escuchar

Cuando tiene varias interfaces e IP en un solo servidor, se recomienda tener la directiva Listen configurada con IP absoluta y número de puerto.

Cuando deja la configuración de Apache para escuchar en todas las IP con algún número de puerto, puede crear el problema al reenviar la solicitud HTTP a algún otro servidor web. Esto es bastante común en el entorno compartido.

  • Configure la directiva Listen en httpd.conf con IP absoluta y puerto como se muestra a continuación
Listen 10.10.10.1:80

Registro de acceso

Es esencial configurar correctamente el registro de acceso en su servidor web. Algunos de los parámetros importantes para capturar en el registro serían el tiempo necesario para atender la solicitud, ID DE SESIÓN.

De forma predeterminada, Apache no está configurado para capturar estos datos. Tienes que configurarlos manualmente de la siguiente manera.

  • Para capturar el tiempo necesario para atender la solicitud y el ID de SESIÓN en un registro de acceso
  •  Agregue% T &% sessionID en httpd.conf bajo la directiva LogFormat
LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

Puedes referir http://httpd.apache.org/docs/2.2/mod/mod_log_config.html para obtener una lista completa de los parámetros admitidos en la directiva LogFormat en el servidor web Apache.

Desactivar la carga de módulos no deseados

Si ha compilado e instalado todos los módulos, hay muchas posibilidades de que tenga muchos módulos cargados en Apache, lo que puede no ser necesario.

La mejor práctica es configurar Apache con los módulos necesarios en sus aplicaciones web. Los siguientes módulos tienen problemas de seguridad y es posible que le interese deshabilitar httpd.conf del servidor web Apache.

WebDAV (creación y control de versiones distribuidos basados ​​en la web) Este módulo permite a los clientes remotos manipular archivos en el servidor y someterlos a varios ataques de denegación de servicio. Para deshabilitar el seguimiento de comentarios en httpd.conf

#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#Include conf/extra/httpd-dav.conf

Módulo de información El módulo mod_info puede filtrar información confidencial usando .htaccess una vez que este módulo está cargado. Para deshabilitar el seguimiento de comentarios en httpd.conf

#LoadModule info_module modules/mod_info.so

Referencia: esto no sería posible sin la orientación del siguiente enlace:

Así que esas fueron algunas de las mejores prácticas que puede utilizar para proteger su servidor web Apache.

Consulta este enlace si quieres implementar una página de error personalizada en Apache.

Si es nuevo en Apache HTTP, le recomendaría tomar el curso de administración de Apache HTTP.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre Apache HTTP
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder