Apache es uno de los servidores web más utilizados y populares del mundo, y alimenta casi el 40% de todos los servidores del mundo. Si usted es un webmaster o administrador que mantiene un servidor Apache, es importante que sepa cómo asegurar Apache y evitar que sea pirateado. En este artículo, describiremos algunos consejos y trucos que puede utilizar para proteger su servidor Apache.
Nota: estamos usando Ubuntu 14.04 para este tutorial.
Instalar y actualizar Apache
Primero, debe actualizar e instalar Apache en su sistema.
Para esto, ejecute el siguiente comando:
sudo apt-get update sudo apt-get install apache2
Ocultar versión de Apache
Por defecto, Apache muestra la versión de su servidor web Apache instalado en su sistema con el nombre del sistema operativo de su servidor.
En la captura de pantalla anterior, puede ver la versión de Apache y el sistema operativo instalado en su servidor. Esto puede ser un problema de seguridad importante para su servidor web. Para ocultar esta información, debe editar el archivo de configuración principal de Apache (“/etc/apache2/conf-enabled/security.conf”).
sudo nano /etc/apache2/conf-enabled/security.conf
Agregue/edite la siguiente línea:
ServerSignature Off ServerTokens Prod
Guarde el archivo y reinicie el servicio de apache.
sudo /etc/init.d/apache2 restart
Desactive la exploración de directorios y deshabilite los enlaces simbólicos
Por defecto, la lista de directorios está habilitada en el servidor Apache. La lista de directorios muestra todo el directorio con todos los archivos del servidor Apache. Si está habilitado, un atacante puede ver fácilmente cualquier archivo, analizarlo y obtener información confidencial sobre una aplicación.
Puede ver la lista de directorios predeterminada en la imagen a continuación.
Puede deshabilitar esta configuración editando el archivo de configuración de Apache.
sudo nano /etc/apache2/apache2.conf
Agregue/edite la siguiente línea:
Options -FollowSymLinks AllowOverride None Require all granted
Nota: el código anterior asume que sus páginas web se sirven desde la carpeta «/var/www/html». Si ha cambiado la carpeta pública a una ubicación personalizada, cambie la Directory
ruta en el código anterior.
La línea Options -FollowSymLinks
también deshabilita los enlaces simbólicos. Si desea habilitar enlaces simbólicos, elimine el signo «-» delante de FollowSymLinks
por lo que se convierte Options FollowSymLinks.
Guarde el archivo y reinicie el servidor Apache.
Después de esto, intente visitar la Web en un navegador y obtendrá un error prohibido que se muestra en la imagen a continuación.
Deshabilitar módulos innecesarios
Por defecto, Apache viene con varios módulos instalados que no son necesarios para el uso normal. Se recomienda recortar la grasa y deshabilitar todos esos módulos innecesarios. Puede enumerar todos los módulos habilitados en su servidor usando el siguiente comando:
sudo ls /etc/apache2/mods-enabled/
Esto mostrará la salida como se muestra en la imagen de abajo.
De los módulos mencionados anteriormente, algunos módulos como «estado» y «autoíndice» están habilitados pero no son necesarios.
Puede deshabilitar estos módulos usando el siguiente comando:
sudo a2dismod autoindex sudo a2dismod status sudo /etc/init.d/apach2 restart
Hacer uso de ModSecurity
Mod security es un módulo gratuito de Apache que se utiliza para proteger su servidor web de varios ataques como inyección de SQL, secuencias de comandos entre sitios, secuestro de sesión, fuerza bruta y muchas otras vulnerabilidades. También le permite monitorear el tráfico en tiempo real.
Puede instalar mod security usando el siguiente comando:
sudo apt-get install libapache2-modsecurity
Para verificar si el módulo mod_security se está ejecutando, use el siguiente comando:
sudo apachectl -M | grep --color security
La imagen que se muestra a continuación indica que el módulo se cargó.
Para habilitar las reglas de mod_security, debe cambiar el nombre y editar el archivo de configuración recomendado de mod security y configurar el SecRuleEngine
opción a On
.
Para esto ejecute el siguiente comando:
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf sudo nano /etc/modsecurity/modsecurity.conf
Agregue/edite la siguiente línea:
Ahora reinicie Apache para que los cambios surtan efecto.
Hay muchas reglas de seguridad que vienen con Modesecurity (llamado Conjunto de reglas básicas) que se encuentran en el directorio «/usr/share/modsecurity-crs». Ahora necesita habilitar estas reglas para que funcione con Apache.
Puede hacerlo editando el archivo “/etc/apache2/mods-enabled/security2.conf”.
sudo nano /etc/apache2/mods-enabled/security2.conf
Agregue/edite la siguiente línea:
IncludeOptional /etc/modsecurity/*.conf IncludeOptional "/usr/share/modsecurity-crs/*.conf" IncludeOptional "/usr/share/modsecurity-crs/base_rules/*.conf
Guarde el archivo y reinicie Apache.
Desactive las inclusiones del lado del servidor y la ejecución CGI.
Se recomienda deshabilitar las inclusiones del lado del servidor y la ejecución de CGI si no es necesario.
Para ello, debe editar el archivo de configuración principal de Apache.
sudo nano /etc/apache2/apache2.conf
Agregue/edite la siguiente línea:
Options -FollowSymLinks -Includes -ExecCGI AllowOverride None Require all granted
Guarde el archivo y reinicie Apache.
También puede hacer esto para un directorio específico. Por ejemplo, para desactivar las inclusiones del lado del servidor y las ejecuciones de archivos cgi para el directorio «/var/www/html/webdir1», ddd/editar la siguiente línea:
Options -Includes -ExecCGI
Guarde el archivo y reinicie Apache.
Limitación de solicitudes grandes
Por defecto, Apache no tiene límite en el tamaño de la solicitud HTTP. Esto permitirá que un atacante envíe una gran cantidad de datos. Apache tiene varias directivas que le permiten establecer un tamaño de solicitud adecuado. Esto protegerá su servidor web de un ataque de denegación de servicio.
Puede establecer el valor de 0 (ilimitado) a 2147483647 (2 GB) en el archivo de configuración principal de Apache.
Por ejemplo, limite el tamaño de la solicitud del directorio «/var/www/html/webdir1» a 200K.
sudo nano /etc/apache2/apache2.conf
Agregue/edite la siguiente línea:
Guarde el archivo y reinicie Apache.
No permitir la exploración fuera de la raíz del documento
Se recomienda que Apache solo pueda acceder al directorio raíz del documento. Puede proteger el directorio raíz (/) configurando la siguiente línea:
sudo nano /etc/apache2/apache2.conf
Agregue/edite la siguiente línea:
Options None Order deny,allow Deny from all
Esto es lo que hace el código:
Options None
: Esto apagará todas las opciones.Order deny,allow
: el orden en que se aplican los comandos allow y deny.Deny from all
: Esto denegará una solicitud de todos al directorio raíz.
Guarde el archivo y reinicie Apache.
Mantenga Apache actualizado
Las nuevas actualizaciones de Apache contendrán nuevas correcciones y parches que reducirán la vulnerabilidad de su servidor Apache, por lo que se recomienda utilizar la última versión del servidor Apache.
Puede actualizar su Apache a la última versión usando el siguiente comando:
sudo apt-get install apache2 --reinstall
Conclusión
Espero que esta publicación lo ayude a proteger su servidor Apache. Encontrará más consejos y trucos de seguridad avanzados para asegurar el servidor Apache en mi próxima publicación. Siéntase libre de comentar a continuación si tiene alguna pregunta.