13 Consejos de seguridad y endurecimiento del servidor web Apache

13 Consejos de seguridad y endurecimiento del servidor web Apache

Todos estamos muy familiarizados con apache servidor web, es un servidor web muy popular para alojar sus archivos web o su sitio web en la web. Aquí hay algunos enlaces que pueden ayudarlo a configurar el servidor web Apache en su caja de Linux.

Consejos de seguridad y endurecimiento de Apache
  1. Instalar el servidor web Apache
  2. Configurar su sitio web en su caja de Linux

Aquí en este tutorial, cubriré algunos consejos principales para asegurar su servidor web. Antes de aplicar estos cambios en su servidor web, debe tener algunos conceptos básicos del servidor Apache.

  1. Directorio de la raíz del documento: /var/www/html o /var/www
  2. Archivo de configuración principal: /etc/httpd/conf/httpd.confusión (Rhel/Centos/Fedora) y /etc/apache2/apache2.confusión (Debian/Ubuntu).
  3. Puerto HTTP predeterminado: 80 TCP
  4. Puerto HTTPS predeterminado: 443 TCP
  5. Pruebe la configuración de su archivo de configuración y la sintaxis: httpd -t
  6. Acceda a archivos de registro del servidor web: /var/log/httpd/access_log
  7. Archivos de registro de error del servidor web: /var/log/httpd/error_log

1. Cómo ocultar la versión Apache y la identidad del sistema operativo de los errores

Cuando instalas apache con fuente o cualquier otro instalador de paquetes como beque, Muestra el Versión de tu apache servidor web instalado en su servidor con el Nombre del sistema operativo de su servidor en Errores. También muestra la información sobre Módulos apache instalados en tu servidor.

Mostrar versión de Apache

En la imagen de arriba, puedes ver que apache está mostrando su versión con el OS instalado en tu servidor. Esta puede ser una gran amenaza de seguridad para su servidor web, así como para su caja de Linux. Para prevenir apache Para no mostrar esta información al mundo, necesitamos hacer algunos cambios en el archivo de configuración principal de Apache.

Abra el archivo de configuración con el editor VIM y busque "Servidor", Es por defecto en. Necesitamos que Apagado Estas firmas del servidor y la segunda línea "Prodirverkens prod"Le dice a Apache que devuelva solo a Apache como producto en el encabezado de respuesta del servidor en cada solicitud de página, suprime el sistema operativo, la información de la versión mayor y menor.

# vim/etc/httpd/conf/httpd.conf (rhel/centos/fedora) # vim/etc/apache2/apache2.conf (Debian/Ubuntu)
Servidor de la firma Off Servertokens prod
# Servicio HTTPD REINT (RHEL/CENTOS/FUNORA) # Servicio Apache2 Reintert (Debian/Ubuntu)
Ocultar versión de Apache

2. Desactivar la lista de directorio

Por defecto, la lista de apache todo el contenido de Document Root Directory en ausencia de archivo índice. Consulte la imagen a continuación.

Listado de directorio de Apache

Podemos apagar Listado de directorio utilizando Directiva de opciones En el archivo de configuración para un directorio específico. Para eso necesitamos hacer una entrada en httpd.confusión o apache2.confusión archivo.

 Opciones -dexes 
Ocultar listado de directorio de Apache

3. Sigue actualizando a Apache regularmente

Apache Developer Community está trabajando continuamente en temas de seguridad y liberando su Versión actualizada con nuevo opciones de seguridad. Por lo tanto, siempre se recomienda usar el ultima versión de apache Como su servidor web.

Verificar Versión apache: Puede consultar su versión actual con httpd -v dominio.

# httpd -v versión del servidor: apache/2.2.15 (UNIX) servidor construido: 13 de agosto de 2013 17:29:28

Puede actualizar su versión con el siguiente comando.

# yum actualización httpd # apt-get install apache2

También se recomienda mantener su Núcleo y Sistema operativo Actualizado a las últimas versiones estables si no está ejecutando ninguna aplicación específica que funcione solo en un sistema operativo o kernel específico.

4. Desactivar módulos innecesarios

Siempre es bueno menos las posibilidades de ser víctima de cualquier ataque web. Entonces se recomienda deshabilitar todos esos módulos que no están en uso actualmente. Puede enumerar todos los módulos compilados del servidor web, utilizando el siguiente comando.

# GREP LoadModule/etc/httpd/conf/httpd.Conf # tiene que colocar las líneas 'LoadModule' correspondientes en esta ubicación para que los módulos # loadmodule foo_module/mod_foo.Entonces loadmodule auth_basic_module módulos/mod_auth_basic.Entonces loadmodule auth_digest_module módulos/mod_auth_digest.Entonces loadmodule authn_file_module módulos/mod_authn_file.Entonces loadmodule authn_alias_module módulos/mod_authn_alias.Entonces loadmodule authn_anon_module módulos/mod_authn_anon.Entonces LoadModule Authn_dbm_module módulos/mod_authn_dbm.Entonces loadmodule authn_default_module módulos/mod_authn_default.Entonces LoadModule AuthZ_Host_Module Modules/Mod_authz_host.Entonces LoadModule Authz_user_module módulos/mod_authz_user.Entonces LoadModule AuthZ_OWN_MODULE MODULOS/MOD_AUTHZ_OWNER.Entonces LoadModule AuthZ_GroupFile_Module Modules/Mod_Authz_GroupFile.Entonces loadModule AuthZ_DBM_MODULE MODULOS/MOD_AUTHZ_DBM.Entonces loadmodule authz_default_module módulos/mod_authz_default.Entonces loadmodule ldap_module módulos/mod_ldap.Entonces loadmodule authnz_ldap_module módulos/mod_authnz_ldap.Entonces loadmodule include_module módulos/mod_include.Entonces loadmodule log_config_module módulos/mod_log_config.Entonces loadmodule logio_module módulos/mod_logio.Entonces loadmodule env_module módulos/mod_env.Entonces loadmodule ext_filter_module módulos/mod_ext_filter.entonces… 

Arriba está la lista de módulos que están habilitados de forma predeterminada pero que a menudo no son necesarias: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Para deshabilitar el módulo en particular, puede insertar un "#"Al comienzo de esa línea y reinicie el servicio.

5. Ejecute Apache como usuario y grupo separados

Con una instalación predeterminada apache ejecuta su proceso con el usuario nadie o demonio. Por razones de seguridad se recomienda ejecutar apache en su cuenta no privilegiado cuenta. Por ejemplo: http-web.

Crear un usuario y grupo de apache
# groupAdd http -web # userAdd -d/var/www/-g http -web -s/bin/nologin http -web

Ahora necesitas decir apache Para ejecutar con este nuevo usuario y hacerlo, necesitamos hacer una entrada en /etc/httpd/conf/httpd.confusión y reiniciar el servicio.

Abierto /etc/httpd/conf/httpd.confusión con el editor VIM y busca la palabra clave "Usuario" y "Grupo"Y allí deberá especificar el nombre de usuario y Nombre del grupo usar.

Usuario HTTP-WEB Group HTTP-Web

6. Use Permitir y negar para restringir el acceso a los directorios

Podemos restringir el acceso a directorios con "Permitir" y "Denegar"Opciones en httpd.confusión archivo. Aquí en este ejemplo, estaremos asegurando directorio raíz, para eso estableciendo lo siguiente en el httpd.confusión archivo.

 Opciones Ninguno Orden Denegar, Permitir Denegar de todos 
  1. Opciones "Ninguno" - Esta opción no permitirá a los usuarios habilitar ninguna función opcional.
  2. Ordenar negar, permitir - Este es el orden en el que el "Denegar" y "PermitirSe procesarán las directivas. Aquí lo hará "denegar" primero y "permitir" próximo.
  3. Negar todo - Esto negará la solicitud de todos a la directorio raíz, nadie podrá acceder al directorio root.

7. Use módulos mod_security y mod_evasive para asegurar Apache

Estos dos módulos "mod_securidad" y "mod_evasivo"Son módulos muy populares de Apache en términos de seguridad.

Mod_securidad

Dónde mod_securidad funciona como un cortafuegos para nuestras aplicaciones web y nos permite monitorear el tráfico en tiempo real. También nos ayuda a proteger nuestros sitios web o servidor web de ataques de fuerza bruta. Simplemente puedes instalar mod_securidad en su servidor con la ayuda de sus instaladores de paquete predeterminados.

Instalar mod_security en Ubuntu/Debian
$ sudo apt-get install libapache2-modsecurity $ sudo a2enmod mods-seguridad $ sudo /etc /init.D/APOCHE2 Relegación de fuerza
Instale MOD_SECURITY en RHEL/Centos/Fedora/
# yum instalación mod_security # /etc /init.D/httpd reiniciar
Mod_evasivo

mod_evasivo funciona de manera muy eficiente, se necesita una solicitud para procesarlo y procesarla muy bien. Previene Ataques DDoS de hacer tanto daño. Esta característica de mod_evasivo le permite manejar el Http fuerza bruta y Dos o Ddos ataque. Este módulo detecta ataques con tres métodos.

  1. Si tantas solicitudes llegan a una misma página en varias veces por segundo.
  2. Si algún proceso infantil intenta hacer más de 50 Solicitudes concurrentes.
  3. Si alguna IP todavía tratando de hacer nuevas solicitudes cuando sea temporalmente listado negro.

mod_evasivo se puede instalar directamente desde la fuente. Aquí, tenemos una guía de instalación y configuración de estos módulos que lo ayudarán a configurar estos módulos Apache en su caja de Linux.

  1. Proteger a Apache usando mod_security y mod_evasive

8. Deshabilitar el seguimiento de Apache de enlaces simbólicos

Por defecto apache seguimiento Symlinks, podemos apagar esta característica con Seguidsymlinks con Directiva de opciones. Y para hacerlo necesitamos hacer la siguiente entrada en el archivo de configuración principal.

Opciones -Fuecirsymlinks

Y, si algún particular usuario o sitio web necesidad Seguidsymlinks Habilitar, simplemente podemos escribir una regla en ".htaccessArchivo de ese sitio web.

# Habilitar opciones de enlaces simbólicos +SIGOSYMLINKS

Nota: Para habilitar las reglas de reescritura dentro ".htaccess" archivo "Permateverride todo"Debe estar presente en la configuración principal a nivel mundial.

9. Apague el lado del servidor incluye y la ejecución de CGI

Podemos apagar El lado del servidor incluye (mod_include) y CGI ejecución si no es necesario y, para hacerlo, necesitamos modificar el archivo de configuración principal.

Opciones: incluye opciones -execcgi

También podemos hacer esto para un directorio en particular con la etiqueta de directorio. Aquí en este ejemplo, estamos apagando Incluye ejecuciones de archivos CGI para "/var/www/html/web1"Directorio.

 Opciones -incluye -execcgi 

Aquí hay algunos otros valores con pueden ser encendido o apagado Con directiva de opciones.

  1. Opciones todas - Para habilitar todas las opciones a la vez. Este es el valor predeterminado, si no desea especificar ningún valor explícitamente en el archivo apache conf o .htaccess.
  2. Las opciones incluyennoExec - Esta opción permite que el lado del servidor incluya sin el permiso de ejecutar a un comando o archivos CGI.
  3. Opciones Multiviews - Permite el contenido negociado múltiples con el módulo MOD_Negotiation.
  4. Opciones symlinksifowneMatch - Es similar a los siguientes. Pero, esto seguirá solo cuando el propietario sea el mismo entre el enlace y el directorio original al que está vinculado.

10. Tamaño de solicitud de límite

Por defecto apache no tiene límite en el tamaño total de la solicitud HTTP I.mi. ilimitado y cuando permita solicitudes grandes en un servidor web, es posible que pueda ser víctima de Ataques de denegación de servicio. Podemos limitar el tamaño de las solicitudes de una directiva Apache "LimitRequestbody"Con la etiqueta de directorio.

Puede establecer el valor en bytes de 0 (ilimitado) a 2147483647 (2GB) que están permitidos en un cuerpo de solicitud. Puede establecer este límite de acuerdo con las necesidades de su sitio, suponga que tiene un sitio donde permite cargas y desea limitar el tamaño de carga para un directorio en particular.

Aquí en este ejemplo, user_uploads es un directorio que contiene archivos cargados por usuarios. Estamos poniendo un límite de 500k para esto.

 LimitRequestbody 512000 

11. Proteger los ataques y endurecer DDoS

Bueno, es cierto que no puede proteger completamente su sitio web de Ataques DDoS. Aquí hay algunas directivas que pueden ayudarlo a tener un control sobre ello.

  1. Se acabó el tiempo : Esta directiva le permite establecer la cantidad de tiempo que el servidor esperará a que se complete ciertos eventos antes de que falle. Su valor predeterminado es 300 segundos. Es bueno mantener este valor bajo en aquellos sitios que están sujetos a Ataques DDoS. Este valor depende totalmente del tipo de solicitud que esté recibiendo en su sitio web. Nota: Podría plantear problemas con ven CGI guiones.
  2. Clientes maximos : Esta directiva le permite establecer el límite en las conexiones que se servirán simultáneamente. Cada nueva conexión se pondrá en cola después de este límite. Está disponible con Prefork y Obrero ambos Mpm. El valor predeterminado es 256.
  3. Mantener con vida el tiempo de espera : Es la cantidad de tiempo que el servidor esperará una solicitud posterior antes de cerrar la conexión. El valor predeterminado es 5 segundos.
  4. LimitRequestfields : Nos ayuda a establecer un límite en la cantidad de campos de encabezado de solicitudes HTTP que serán aceptados de los clientes. Su valor predeterminado es 100. Se recomienda reducir este valor si Ataques DDoS están ocurriendo como resultado de tantos encabezados de solicitudes HTTP.
  5. LimitRequestFieldsize : Nos ayuda a establecer un límite de tamaño en el encabezado de solicitud HTTP.

12. Habilitar el registro de Apache

Apache le permite registrarse independientemente de su Registro del sistema operativo. Es aconsejable habilitar el registro de Apache, porque proporciona más información, como los comandos ingresados ​​por los usuarios que han interactuado con su servidor web.

Para hacerlo, debes incluir el mod_log_config módulo. Hay tres directivas principales relacionadas con el registro disponibles con Apache.

  1. Transferleg: Creación de un archivo de registro.
  2. Logformat : Especificando un formato personalizado.
  3. Custodleg : Creación y formateo de un archivo de registro.

También puede usarlos para un sitio web en particular que está haciendo Alojamiento virtual y para eso debe especificarlo en la sección de host virtual. Por ejemplo, aquí está la configuración de host virtual de mi sitio web con registro habilitado.

 Documentroot/var/www/html/ejemplo.com/ servername www.ejemplo.COM DirectoryIndex Índice.índice HTM.índice HTML.Ejemplo de PHP Serveralias.com Errordocument 404 /Story.PHP ErrorLog /var/log/httpd/ejemplo.com_error_log Custodleg /var/log/httpd/ejemplo.com_access_log combinado 

13. Asegurar apache con certificados SSL

Por último pero no menos importante Certificados SSL, Puede asegurar toda su comunicación de manera encriptada a través de Internet con el certificado SSL. Supongamos que tiene un sitio web en el que las personas inician sesión demostrando sus credenciales de inicio de sesión o tiene un sitio web de comercio electrónico donde la gente proporciona su Detalles del banco o Débito/Crédito Detalles de la tarjeta para comprar productos, por defecto, su servidor web envía estos detalles en formato de texto simple pero cuando usa Certificados SSL a tus sitios web, apache Envía toda esta información en texto encriptado.

Puede comprar certificados SSL de tantos proveedores de SSL diferentes como namecheap.comunicarse. Si está ejecutando un negocio web muy pequeño y no está dispuesto a comprar un certificado SSL aún puedes asignar un Certificado autoestimado a tu sitio web. apache usa el mod_ssl módulo para soportar Certificado SSL.

# OpenSSL Genrsa -des3 -Out Ejemplo.comunicarse.Clave 1024 # OpenSSL REQ -NEW -Key Ejemplo.comunicarse.Key -Out Exmaple.CSR # OpenSSL x509 -req -days 365 -En Ejemplo.comunicarse.comunicarse.CSR -signkey Ejemplo.comunicarse.comunicarse.Clave -Ejemplo.comunicarse.comunicarse.CRT

Una vez que su certificado haya sido creado y firmado. Ahora necesita agregar esto en la configuración de Apache. Abra el archivo de configuración principal con el editor VIM y agregue las siguientes líneas y reinicie el servicio.

 SSLEngine en SSLCertificateFile/Etc/PKI/TLS/Certs/Ejemplo.comunicarse.CRT SSLCertificAtekeyFile/Etc/PKI/TLS/Certs/Ejemplo.comunicarse.clave sslcertificateCheCainFile/etc/pki/tls/certs/sf_bundle.CRT ServerAdmin [correo electrónico protegido] Ejemplo de nombre de servidor.com documentroot/var/www/html/ejemplo/errorlog/var/log/httpd/ejemplo.com-error_log customlog/var/log/httpd/ejemplo.com-access_log común 

Abre tu navegador, escriba https: // ejemplo.comunicarse, y podrás ver el nuevo certificado autofirmado.

Estos son pocos consejos de seguridad a los que puede usar Asegure su servidor web Apache instalación. Para obtener consejos e ideas de seguridad más útiles, consulte la documentación oficial en línea del servidor Apache HTTP.