meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
aplicaciones:apache:bastionado [022017/08/ 13:30] lcaplicaciones:apache:bastionado [182023/01/ 13:35] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +{{tag>apache bastionado hardening}}
 +====== Bastionar Apache ======
  
 +==== Instalación ====
 +  * Mejor compilar que instalar de binarios.
 +  * Mejor en un entorno chroot
 +
 +==== Actualizaciones. ====
 +Hay que mantener el servidor actualizado con las últimas actualizaciones. A la hora de actualizar comprobar el changelog para ver si hay incompatibilidades.
 +
 +  * Descargar las actualizaciones de las fuentes oficiales http://httpd.apache.org/download.cgi
 +  * Comprobar el hash y las firmas del fichero que te descargues http://www.apache.org/dist/httpd/KEYS
 +Si lo hemos instalado desde los repositorios podemos hacer <sxh>yum update httpd</sxh>
 +
 +==== Desactivar los módulos innecesarios ====
 +Para ver los módulos cargados ejecutar <sxh> httpd -t -D DUMP_MODULES</code> o bien <sxh bash>grep LoadModule /etc/httpd/conf/httpd.conf</sxh>
 +<sxh bash>grep LoadModule /etc/apache2/apache2.conf</sxh>
 +
 +para ver los módulos con los que se compiló<sxh> httpd -V</sxh>
 +
 +<note>Todos los módulos que hay para Apache están documentados en la siguiente URL: http://modules.apache.org/</note>
 +
 +Módulos que se suelen cargar por defecto:
 +  * mod_imap: Que ofrece servicio de mapeo automático de ficheros de índice del lado del servidor.
 +  * mod_include: Habilita los includes de ficheros del lado del seridor. Los .shtml.
 +  * mod_info: Da información sobre el servidor. Los escáneres rastrean la información que ofrece. Se suele habilitar en pruebas y desarrollo, pero no en producción.
 +  * mod_userdir: Para mapear los directories personales de los usuarios. También está el mod-ldap-userdir para hacerlo vía árboles ldap.
 +  * mod_status: Para tener estadísticas.
 +  * mod_cgi: Ofrece soporte para ejecución de cgis. Si no tienes programas cgi en tu servidor deshabilítalo.
 +  * mod_autoindex: Listados de directorio para cuando no hay archivo por defecto.
 +
 +
 +Para desactivar un módulo y que no se cargue basta con poner un comentario en la línea que carga el módulo en el fichero de configuración
 +Como minimo eliminar o deshabilitar los siguientes módulos 
 +  * mod_negotiation
 +  * mod_user_dir
 +
 +En CentOS / Redhat (RHEL) / Fedora para deshabilitar un módulo deberemos de renombrar dicho módulo quitándole la extensión **.conf ** y reiniciamos el servicio del  apache
 +
 +Por ejemplo para deshabilitar el modulo **mod_python** vamos a la carpeta /etc/httpd/conf.d/ y renombramos el fichero **python.conf** a **python.bak** y reiniciamos el servidor apache
 +
 +Para habilitar un módulo basta con hacer el proceso contrario. Renombramos el fichero a su extensión **.conf** y reiniciamos el servicio de apache
 +
 +En Debian / Ubuntu para deshabilitar un módulo podemos usar dos scripts :
 +  *  a2enmod es un script para habilitar un módulo dentro de la configuración del apache2.
 +  *  a2dismod es un script para deshabilitar un módulo
 +
 +La forma de deshabilitar un módulo sería ejecutarlo <sxh>a2dismod {nombre-módulo}</sxh> y para habilitar un módulo sería con <sxh>a2enmod {nombre-módulo}</sxh>
 +
 +<note warning> con el comando **apachectl configtest** debemos de comprobar que no hemos deshabilitado un módulo que estemos usando</note>
 +
 +==== Instalar módulos ====
 +Para agregar **nuevos módulos** mediante el comando **config-status.**
 +
 +**Ejemplo Instalación de Módulos** 
 +
 +Para instalar módulos, el **primer módulo** que debe ser activado es el **módulo para módulos**, esto se realiza mediante el comando: 
 +<code>
 +./config.status --activate-module=src/modules/standard/mod_so.c</code>
 +
 +El comando anterior agrega mod_so (el módulo de módulos) a **config.status**; para instalar otros módulos se utilizan parámetros similares: 
 +<code>
 +./config.status --enable-module=proxy </code>
 +
 +=== Módulos que pueden aumentar la seguridad ===
 +  * mod_rewrite
 +  * mod_headers
 +  * mod_setenvif
 +  * mod_security
 +  * mod_auth
 +  * mod_ssl
 +
 +El **mod_security** hace las veces de firewall de las aplicaciones web  y nos permite además monitorizar el tráfico en tiempo real.
 +
 +El  **mod_evasive** nos protege de ataques por fuerza bruta y DDos
 +
 +Para instalar ambos módulos 
 +<code>yum install mod_security mod_evasive</code>
 +<note>reiniciar el servicio httpd para aplicar los cambios </code>
 +
 +==== Permisos ====
 +  - Sólo el administrador debe poder modificar los archivos de configuración para que nadie más pueda manipularlos.
 +  - Crear una cta para arrancar y parar los servicios
 +  - Crear un grupo para gestionar el servidor
 +
 +==== Suministrar la menor información ====
 +
 +Modificamos /etc/httpd/conf/httpd.conf
 +<file>
 +ServerTokens ProductOnly
 +ServerSignature Off</file>
 +
 +==== Quitar el acceso a los listados de directorios  ====
 +quitar o comentar el acceso a los index
 +<file>
 +## option indexes FlollowSymLinks
 +</file>
 +
 +También podemos podemos editar la configuración y usar la orden options
 +<code>
 +<Directory /var/www/html>
 +     Options -Indexes
 +</directory>
 +</code>
 +=== Desactivar la directiva de uso como proxy ===
 +<file>ProxyRequests off</file>
 +
 +==== Directiva FilesMacth Limitar los ficheros a descargar ====
 +<file>
 +<FilesMatch "\.(old|bak|tgz|sql|inc|tar\.gz|zip|rar)$">
 +   Order Deny,Allow
 +   Deny from All
 +</FilesMatch>
 +</file>
 +
 +
 +==== Fortificar con Varnish ====
 +http://terminus.ignaciocano.com/k/2011/05/26/mejorando-la-seguridad-de-apache-con-varnish/
 +
 +==== Herramientas ====
 +  * [[http://tools.dynamicdrive.com/userban/| genera .htaccess para banear visitantes]]
 +  * [[http://www.htaccesseditor.com/en.shtml| otro generador de ficheros .htaccess para banear visitantes]]
 +  * http://hpantaleev.wordpress.com/2011/09/06/monitorizacion-de-apache-con-apachetop-en-debian-6/
 +
 +===== Referencias =====
 +  * http://www.rediris.es/cert/doc/reuniones/fs2008/archivo/apache-rediris08.pdf
 +  * http://www.petefreitag.com/item/505.cfm
 +  * http://xianshield.org/guides/apache2.0guide.html
 +  * http://terminus.ignaciocano.com/k/2012/09/21/comprobar-que-no-tenemos-configurado-apache-como-un-proxy-abierto/
 +  * http://httpd.apache.org/docs/2.4/misc/security_tips.html
 +  * http://blog.spiderlabs.com/modsecurity-rules/