Cómo asegurar su servidor Apache

Cómo asegurar su servidor Apache
Apache es un servidor web popular de código abierto disponible para los sistemas Linux y Windows. Permite la configuración para una gama diversa de casos de uso, desde páginas web HTML hasta contenido de aplicación dinámica de preprocesador de hipertexto (PHP).Apache proporciona una plataforma segura y robusta para implementar sus aplicaciones web. Sin embargo, aún es importante instalar los últimos parches de seguridad y configurar el servidor correctamente para establecer un entorno seguro para sus aplicaciones web.
En este artículo, encontrará algunos consejos y trucos para fortalecer las configuraciones de su servidor web Apache y mejorar la seguridad general.

Cuenta de usuario no privilegiada

El propósito de una cuenta de usuario no raíz o no invivilizada es restringir al usuario del acceso innecesario a ciertas tareas dentro de un sistema. En el contexto de un servidor web Apache, esto significa que debería funcionar en un entorno restringido con solo los permisos necesarios. Por defecto, Apache se ejecuta con privilegios de cuenta de Daemon. Puede crear una cuenta de usuario no raíz separada para evitar amenazas en caso de vulnerabilidades de seguridad.

Además, si Apache2 y MySQL están bajo las mismas credenciales de usuario, cualquier problema en el proceso de una vez el servicio tendrá un impacto en el otro. Para cambiar el usuario y los privilegios de grupo para el servidor web, vaya a /etc /apache2, abra el archivo envvars y configure el usuario y el grupo en un nuevo usuario de cuenta no privilegiado, digamos, "apache", y guarde el archivo.

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/envvars
... Snip ..
Exportar apache_run_user = apache
Exportar apache_run_group = apache
... Snip ..

También puede usar el siguiente comando para cambiar la propiedad del directorio de instalación al nuevo usuario no raíz.

ubuntu@ubuntu ~: $ sudo chown -r apache: apache /etc /apache2
Emita el siguiente comando para guardar los cambios:
ubuntu@ubuntu ~: $ sudo service apache2 reiniciar

Mantenga a Apache actualizado

Apache es famoso por proporcionar una plataforma segura con una comunidad de desarrolladores altamente preocupada que rara vez enfrenta ningún error de seguridad. Sin embargo, es normal descubrir problemas una vez que se libera el software. Por lo tanto, es esencial mantener el servidor web actualizado para aprovechar las últimas funciones de seguridad. También se recomienda seguir las listas de anuncios de Apache Server para mantenerse actualizado sobre nuevos anuncios, lanzamientos y actualizaciones de seguridad de la comunidad de desarrollo de Apache.

Para actualizar su apache usando apt, escriba lo siguiente:

ubuntu@ubuntu ~: $ sudo apt-get actualización
ubuntu@ubuntu ~: $ sudo apt-get actualización

Deshabilitar la firma del servidor

La configuración predeterminada de un servidor Apache expone muchos detalles sobre el servidor y su configuración. Por ejemplo, las directivas habilitadas Serversignature y Servertokens en/etc/apache2/apache2.Archivo Conf Agregue un encabezado adicional a la respuesta HTTP que expone información potencialmente confidencial. Esta información incluye los detalles de configuración del servidor, como la versión del servidor y el sistema operativo de alojamiento, que pueden ayudar al atacante con el proceso de reconocimiento. Puede deshabilitar estas directivas editando el Apache2.Archivo conf Vim/Nano y agregue la siguiente directiva:

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/apache2.confusión
... Snip ..
Servidor de laignatura apagada
... Snip ..
Prodirverkens prod
... Snip ..

Reinicie Apache para actualizar los cambios.

Deshabilitar listados de directorio de servidores

Los listados de directorio muestran todo el contenido guardado en la carpeta raíz o subdirectorios. Los archivos de directorio pueden incluir información confidencial que no está destinada a la visualización pública, como scripts PHP, archivos de configuración, archivos que contienen contraseñas, registros, etc.
Para no permitir los listados de directorio, cambie el archivo de configuración del servidor Apache editando el apache2.archivo conf como:

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/apache2.confusión
... Snip ..

Opciones -dexes

... Snip ..

O

... Snip ..

Opciones -dexes

... Snip ..

También puede agregar esta directiva en el .archivo htaccess de su directorio de sitio web principal.

Proteger la configuración del sistema

El .El archivo htaccess es una característica conveniente y potente que permite la configuración fuera del apache2 principal.archivo conf. Sin embargo, en los casos en que un usuario puede cargar archivos en el servidor, un atacante puede explotar esto para cargar su propio ".archivo htaccess ”con configuraciones maliciosas. Entonces, si no está utilizando esta función, puede deshabilitar el .Directiva de Htaccess, yo.mi.:

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/apache2.confusión
... Snip ..
#AccessFileName .htaccess
... Snip ..

O
Deshabilitar el .archivo htaccess excepto por los directorios específicamente habilitados editando apache2.archivo conf y girar la directiva de LeaToverRide a ninguna;

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/apache2.confusión
... Snip ..

Permitirse

... Snip ..

Directorios seguros con autenticación

Puede crear credenciales de usuario para proteger todos o algunos de los directorios utilizando la utilidad htpasswd. Vaya a la carpeta de su servidor y use el siguiente comando para crear un .archivo htpasswd para almacenar hashes de contraseña para las credenciales asignadas a, por ejemplo, un usuario llamado Dev.

ubuntu@ubuntu ~: $ sudo htpasswd -c/etc/apache2/-htpasswd dev

El comando anterior solicitará la nueva confirmación de contraseña y contraseña. Puedes ver el gato ./htpasswd archivo para verificar el hash de las credenciales de usuario almacenadas.

Ahora, puede configurar automáticamente el archivo de configuración en el directorio de su_website que necesita proteger modificando el .archivo htaccess. Use el siguiente comando y directivas para habilitar la autenticación:

ubuntu@ubuntu ~: $ sudo nano/var/www/your_website/.htaccess
... Snip ..
Authtype básico
AuthName "Agregue el indicador de diálogo"
Autuserfile/etc/apache2/user_name/domain_name/.htpasswd
Requerir usuario válido
... Snip ..

Recuerda agregar el camino según el tuyo.

Ejecutar módulos necesarios

La configuración de Apache predeterminada incluye módulos habilitados que es posible que ni siquiera necesite. Estos módulos preinstalados abren puertas para problemas de seguridad de Apache que ya existen o pueden existir en el futuro. Para deshabilitar todos estos módulos, primero debe comprender qué módulos se requieren para el funcionamiento suave de su servidor web. Para este propósito, consulte la documentación del módulo Apache que cubre todos los módulos disponibles.

A continuación, use el siguiente comando para determinar qué módulos se ejecutan en su servidor.

ubuntu@ubuntu ~: $ sudo ls/etc/apache2/mods-habilitado

Apache viene con el poderoso comando A2DISMOD para deshabilitar el módulo. Evita cargar el módulo y le solicita una advertencia al deshabilitar el módulo de que la acción puede afectar negativamente a su servidor.

ubuntu@ubuntu ~: $ sudo a2DISMOD MODULE_NAME

También puede deshabilitar el módulo comentando en la línea LoadModule.

Evite el ataque lento de Loris y Dos

La instalación predeterminada de un servidor Apache lo obliga a esperar las solicitudes de los clientes durante demasiado tiempo, lo que somete al servidor a ralentizar los ataques LORIS y DOS. El apache2.El archivo de configuración de conf proporciona una directiva que puede usar para reducir el valor de tiempo de espera en unos pocos segundos para evitar este tipo de ataques, i.mi.:

ubuntu@ubuntu ~: $ sudo vim/etc/apache2/apache2.confusión
Tiempo de espera 60

Además, el nuevo servidor Apache viene con un práctico módulo mod_reqtimeout que proporciona una directiva request ttimeOut para asegurar el servidor de las solicitudes ilegítimas. Esta directiva viene con algunas configuraciones difíciles, por lo que puede leer la información relacionada disponible en la página de documentación.

Deshabilitar solicitudes HTTP innecesarias

Las solicitudes HTTP/HTTPS ilimitadas también pueden conducir a un bajo rendimiento del servidor o un ataque DOS. Puede limitar las solicitudes HTTP por dirirectorio utilizando LimitRequestBody a menos de 100K. Por ejemplo, para crear una directiva para la carpeta/var/www/your_website, puede agregar la directiva LimitRequestBody a continuación?.mi.:

... Snip ..

Opciones -dexes
Permateverride todo
LimitRequestBody 995367

... Snip ..

Nota: Recuerde reiniciar Apache después de los cambios aplicados para actualizarlo en consecuencia.

Conclusión

La instalación predeterminada del servidor Apache puede proporcionar mucha información confidencial para ayudar a los atacantes en un ataque. Mientras tanto, hay muchas otras formas (no mencionadas anteriormente) para asegurar el servidor web Apache, también. Continuar investigando y manteniéndose actualizado sobre nuevas directivas y módulos para asegurar su servidor aún más.