Redes y Sistemas

8 Consejos de seguridad servidores Apache

8 Consejos de seguridad que debes seguir para tener tu Apache bien seguro y que no te puedan atacar.

Publicado el 02 de Marzo de 2016
Compartir

Vamos a ver unos consejos con los que asegurar un poco una instalación por defecto de Apache y evitar ser víctimas de la mayoría de los ataques.

Conviértete en SysAdmin
Domina las tecnologías más demandadas. Accede a cursos, talleres y laboratorios prácticos de Linux, VMware, Tomcat, IPv6 y más.
Comenzar gratis ahora

1. Ocultar versión y sistema

Mediante la instalación por defecto de Apache muchas configuraciones que aplica, son excelentes para entornos de desarrollo, no obstante encontramos que pueden ser fuente de origen a la hora de encontrar vulnerabilidades.

En este apartado destaca el que por defecto muestre la versión con la que estamos trabajando, que ya de por sí en entornos en producción es algo nefasto, pero no queda ahí ya que también muestra el sistema operativo e incluso la IP y el puerto al que tenemos escuchando.

Esto podemos solucionarlo llegando al fichero de configuración y buscando el parámetro ‘ServerSignature’ en el directorio de instalación de Apache (/etc/httpd/conf/httpd.conf en RHEL, CentOS o Fedora; y /etc/apache/apache2.conf en Debian/Ubuntu). Por defecto lo encontraremos como 'On’, cosa que cambiaremos y estableceremos ‘Off’ para evitar este inconveniente que hemos encontrado.

nano /etc/httpd/conf/httpd.conf //CentOS, Fedora, RHEL

nano /etc/apache/apache2.conf  // Debian, Ubuntu

ServerSignature Off
ServerTokens Prod

Y tras la configuración deberemos reiniciar los servicios si queremos comprobar que todo funciona como debería.

service httpd restart
service apache2 restart

2. Desactivar listado de directorios

Otro aspecto por defecto bastante molesto si somos mínimamente precavidos en cuanto a seguridad. Esto de que Apache muestre los directorios y archivos que tenemos alojados no termina de convencer a muchos, por lo que vamos a corregirlo.

Para ello nos dirigiremos al fichero de configuración correspondiente según el sistema donde nos encontremos y buscaremos la directiva ‘Options’, debiendo quedar de la siguiente forma:

<Directory /var/www/html>

    Options –Indexes

</directory>

3. Mantenernos actualizados

Tener nuestra instalación actualizada puede salvarnos de más de una situación incómoda, ya que las correcciones principales son en base a vulnerabilidades que se han corregido, por lo que es algo más que recomendable, obligatorio.

yum update httpd
apt-get install apache2

Para ver qué versión tenemos instalada sólo deberemos ejecutar el comando:

httpd –v
apache2 –v

4. Deshabilitar módulos innecesarios

Esto es algo muy destacable, ya que afecta directamente al rendimiento y ocupación de recursos del hosting, además por supuesto de hacer nuestro sitio más frágil en cuanto a ataques a consecuencia de una vulnerabilidad en algún módulo, a más módulos activos, más posibilidades de ser víctimas.

Deshabilitarlos es tan sencillo como comentar las líneas de cada módulo indeseado en el archivo de configuración, y para encontrar los módulos cargados bastará con utilizar el siguiente comando:

grep LoadModule /etc/httpd/conf/httpd.conf
grep LoadModule /etc/apache2/apache2.conf


# have to place corresponding `LoadModule' lines at this location
# LoadModule foo_module modules/mod_foo.so

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so

....

5. Permitir o Denegar acceso a directorios

No se puede resumir más, podemos configurar el acceso a los directorios desde el fichero de configuración con los siguientes parámetros:

None : No permitirá a los usuarios activar ninguna funcionalidad sobre este directorio.

Deny, Allow : Este es el orden en el que serán procesadas las órdenes.

Deny from all : Esta directiva denegará el acceso a las peticiones de todos los usuarios al directorio ‘root’.

<directory />

     Options None

     Order deny, allow

     Deny from all

</directory>

6. Usar Mod_Security y Mod_Evasive

Mod_Security hace las veces de firewall para nuestras web-apps, además de monitorizar el tráfico en tiempo real, ayudándonos a defendernos contra ataques por fuerza bruta.

Instalar este módulo no es más complejo que ejecutar los siguientes comandos:

En Debian/Ubuntu:

sudo apt-get install libapache2-modsecurity
sudo a2enmod mod-security
sudo /etc/init.d/apache2 force-reload

En CentOS, RHEL, Fedora:

sudo yum install mod_security
/etc/init.d/httpd restart

Mod_evasive previene ataques DDoS y ataques por fuerza bruta, procesando cada petición con detenimiento analizando su composición. Usa tres métodos de detección:

  • Si detecta muchas peticiones a una misma página un unos pocos segundos.
  • Si cualquier proceso trata de realizar más de cincuenta peticiones concurrentes.
  • Si una IP sigue intentando hacer nuevas peticiones cuando ésta se encuentra en lista negra.

Para su instalación sólo deberemos ejecutar estos comandos:

sudo yum install mod_evasive (para CentOS, Fedora, RHEL)

sudo apt-get install libapache2-mod-evasive (Para Ubuntu, Debian)

7. Deshabilitar Enlaces Simbólicos

Por defecto la instalación de Apache sigue los symlinks o enlaces simbólicos, pero es un inconveniente fácilmente reparable. Bastará con encontrar el apartado ‘Enable symbolic links’ y añadir la directiva:

# Enable symbolic links
Options –FollowSymLinks

8. Limitar tamaño de peticiones

Por defecto Apache no establece ningún límite para las peticiones, como las peticiones HTTP por ejemplo, y si configurásemos una petición desmesurada al servidor web, podríamos sufrir un ataque por denegación del servicio.

Esto podremos modificarlo aplicando un límite para las peticiones en el fichero de configuración de Apache mediante la directiva ‘LimitRequestBody’ en la etiqueta de Directorio. Podremos establecer un límite comprendido entre 0 (sin límite) y 2147483647 (2GB) que deberemos expresar como habéis visto en bytes.

Si por ejemplo tenemos una web y queremos permitir que se suban archivos de más de 500k, deberemos aplicar esta configuración:

<directory "var/www/web_01/subida_usuario">
; LimitRequestBody 512000
> /directory;
Asegura la infraestructura tecnológica de tu empresa con el menor esfuerzo
Cursos, talleres y laboratorios actualizados para que tus equipos dominen las últimas herramientas para gestionar servidores y aplicaciones.
Solicitar más información

Compartir este post

También te puede interesar...

Tecnología

Seguridad en Apache: modSecurity

18 Septiembre 2013 Antonio Domínguez Crespo
Servidor Web Apache

Servidor Web Apache 2.4

6 horas y 11 minutos · Curso

Estudia las distintas funcionales que nos ofrece el servidor web Apache 2.4. Aprenderemos su instalación, configuraciones habituales y muchas de sus funcionalidades en detalle.

  • Servidores Web
Artículos
Ver todos