Introducción
1. Manténgase actualizado Apache
Inicie sesión en el sistema con una cuenta de usuario privilegiada root o sudo. comprobar el Apache versión ejecutando el siguiente comando.
httpd -v
2. Ocultar la versión de Apache y la información del sistema operativo del servidor .
Lo primero que debemos tener en cuenta, ya que no queremos exponer qué versión del servidor web estamos usando en nuestro sistema. Exponer la versión y la información del sistema operativo significa que estamos ayudando a los piratas informáticos a ser rápidos en el proceso de ataque. En la imagen de abajo, podemos ver que Apache muestra su versión con el SO instalado en nuestro servidor.
Para evitar Apache de exponer su versión e información del sistema operativo, necesitamos cambiar Apache El archivo de configuración principal. abra el archivo de configuración ejecutando el siguiente comando-
nano /etc/httpd/conf/httpd.conf
nano /etc/apache2/apache.conf (Ubuntu / Debian)
Ahora agregue dos directivas a continuación al archivo de configuración principal y guárdelo.
ServerTokens Prod
ServerSignature Off
Y reiniciar Apache servidor ejecutando el siguiente comando-
systemctl restart httpd.service
Como podemos ver en la siguiente imagen, el Apache la versión no está expuesta y la información de funcionamiento tampoco está visible.
3. Deshabilitar la indexación de directorios
Por defecto, Apache muestra todo el contenido del directorio Webroot en ausencia de un archivo de índice. Al igual que la imagen de abajo,
para evitar la indexación de directorios en un navegador, debemos cambiar la directiva de opciones en Apache archivo de configuración. Abra la configuración y cambie la entrada como se muestra a continuación.
<Directory /var/www/html>
Options -Indexes
</Directory>
Ahora abra el navegador y escriba IP o URL en la barra de direcciones. Y veremos una imagen como la siguiente
4. Deshabilitar ETag
Etiquetar se usa en encabezados HTTP para administrar el comportamiento de almacenamiento en caché web. Sin embargo, Etag puede causar problemas de seguridad. Permite a los atacantes remotos obtener información confidencial como el número de inodo, el tipo de MIME y el proceso a través de ETag. encabezamiento. Para evitar ataques y filtraciones de información, agregue la siguiente directiva a Apache configuración.
para lograr esto, simplemente agregue la siguiente línea a Apache archivo de configuración y reinicie Apache .
FileEtag None
5. Desactivar CGI y SSI
SSI (incluye del lado del servidor) son directivas que se usan para escribir una página HTML con contenido dinámico y CGI se usa para inyectar scripts maliciosos en su código web. Restrinja CGI y SSI agregando las siguientes directivas de opción a la configuración de Apache:
Options -Includes -ExecCGI
6. Restringir el acceso al directorio
Es una buena práctica de seguridad restringir el acceso al directorio webroot mediante “Permitir y denegar” sintaxis. Para lograr esto, realice los siguientes cambios en apache archivo de configuración. Abra el archivo de configuración y el servidor para Directorio bloquee y escriba la directiva del directorio de la siguiente manera y guárdela. ahora reinicie Apache para cambiar los efectos
<Directory />
Options None
Order deny,allow
Deny from all
</Directory>
La configuración anterior denegará las solicitudes de cualquier persona al directorio raíz. Nadie puede acceder al directorio raíz.
7. Apache seguro con Mod_Security
Mod_security es una herramienta de seguridad, funciona como un firewall para sitios web o aplicaciones. Ayuda a proteger sitios web o aplicaciones del acceso no autorizado por la ONU y también de ataques de fuerza bruta. Instale mod_security ejecutando el siguiente comando y reinicie Apache para que funcione con mod_security.
dnf -y install mod_security
8. Definir métodos de solicitud HTTP
En el HTTP actual protocolo, muchas solicitudes no son necesarias y algunas tienen un riesgo de seguridad. Sin embargo, es bastante bonito que una aplicación web permita GET , CABEZA y POST métodos de solicitud. Podemos configurar esta configuración agregando la directiva Directorio respectiva. para lograrlo abre el Apache archivo de configuración, busque Directorio y agregue la siguiente directiva interna y reinicie Apache
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
9. Habilitar encabezado de protección XSS
Las secuencias de comandos entre sitios se conocen como (XSS) y es una vulnerabilidad común que se encuentra en las aplicaciones web. La protección de Cross-Site Scripting (XSS) podría omitirse en muchos navegadores. Sin embargo, podemos prevenir algunos ataques XSS agregando la siguiente entrada a nuestro Apache archivo de configuración y guardarlo. Y reinicie el Apache servidor.
Header set X-XSS-Protection "1; mode=block"
Ahora verifique el encabezado de solicitud en la herramienta de desarrollo del navegador, podemos en la imagen a continuación, ese encabezado se implementó correctamente.
10. Deshabilitar solicitud TRACE HTTP
De forma predeterminada, la solicitud de rastreo HTTP se abre en Apache. para permitir el rastreo entre sitios. Esta opción permite que un hacker robe información de cookies fácilmente. para evitar esto, agregue los siguientes parámetros a Apache archivo de configuración. Y reinicie Apache .
TraceEnable off
11. Evitar ataques de secuestro de clics
secuestro de clics , también conocido como "ataque de reparación de la interfaz de usuario", es una técnica maliciosa para recopilar los clics de un usuario infectado. secuestro de clics engaña a la víctima (visitante) para que haga clic en un sitio infectado. Para evitar este incidente, necesitamos usar "X-FRAME-OPTION" en Apache archivo de configuración. Para hacer esto, agregue la siguiente línea en el archivo de configuración.
Header set X-FRAME-OPTIONS "SAMEORIGIN"
Ahora verifique el encabezado de la solicitud en la herramienta de desarrollo del navegador, ya que podemos ver que hemos agregado con éxito X-FRAME-OPTIONS en Apache archivo de configuración.
13. Cookie segura con indicador HTTPOnly
Sin tener HttpOnly y Secure, es posible robar o manipular sesiones y cookies de aplicaciones web, y es peligroso. Para mitigar esto, debemos asegurarnos de que mod_header El módulo se ejecuta en el lado del servidor.
apachectl -M | grep header
En la imagen de arriba, podemos ver que el módulo mod_header se cargó y habilitó en Apache . Ahora agregue la siguiente línea en el archivo de configuración principal de Apache y reinicie Apache servidor.
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
14. Limitar tamaño de solicitud
De forma predeterminada, la solicitud HTTP en Apache es ilimitado; por lo tanto, el servidor web es susceptible a los ataques DoS al mantenerlo abierto para la gran cantidad de solicitudes. Entonces es importante establecer el límite para la solicitud de archivos. Esto se puede hacer agregando LimitRequestBody directiva en Apache archivo de configuración.
Por ejemplo, unixcop es un directorio que contiene archivos cargados por usuarios. Ahora estamos limitando el tamaño de carga a 2K para que el usuario no pueda cargar más archivos que este.
<Directory "/var/www/html/unixcop">
LimitRequestBody 20000
</Directory
Conclusión
De este tutorial, aprendimos cómo podemos proteger nuestro servidor Apache de un atacante. Espero que nuestro artículo le ayude a proteger su servidor. también puedes seguir mis otros artículos.