Ir al contenido
ice

Tips de seguridad en Apache Web Server

Recommended Posts

Apache_PoweredBy.png

 

Hablar de seguridad en servidores es un tema que da para rato, éste no será el caso, pero si dejaré algunos "tips" de como podemos estar un poco, si, un poco más tranquilos con respecto a la seguridad en nuestro servidor web Apache.

 

1 - Ocultar la versión de nuestro servidor en Apache y en PHP

Cuándo instalamos por defecto apache, éste viene sin modificar muchos parámetros, entonces como consecuencia podemos llegar a encontrar fallos o vulnerabilidades, una de ellas es dar a conocer la versión del servidor ya que damos información precisa de nuestro sistema. Ésto podemos solucionarlo simplmente editando el arhcivo de configuración y agregamos las líneas del ServerSignature dentro del directorio de Apache, normalmente en /etc/httpd/conf/httpd.conf.

# nano /etc/httpd/conf/httpd.conf

y agregamos al final las siguientes dos líneas:

ServerSignature Off ServerTokens Prod

Guardamos y salimos. Explico un poco: La línea ServerSignature Off oculta la versión de Apache en cualquier página de error y la línea ServerTokens Prod garantiza que no se muestre dicha información en las cabeceras de respuesta HTTP. Ahora reiniciamos el servicio:

# systemctl restart httpd

Para la parte de PHP también podemos ocultar la información que se puede mostrar en nuestro servidor, para hacer ésto debemos editar el archivo de configuración de PHP, que se llama php.ini que se encuentra en /etc/php/php.ini.

# nano /etc/php/php.ini

Y vamos a buscar la líena expose_php = On, ésta se encuentra en la línea número 374 y la vamos a cambiar por expose_php = Off. Guardamos y salimos. Reiniciamos los servicios y vemos el resultado:

# systemctl restart httpd

Y listo!  

 

2 - Deshabilitar los módulos que no usamos Apache normalmente viene con una configuración de módulos que se podrían decir genéricos para que te funcione todo a la primera (básicamente), entonces una medida de seguridad sería deshabilitar los que no utilizamos. Para mirar cuáles módulos están activos podemos escribir ésta orden:

# grep -n LoadModule /etc/httpd/conf/httpd.conf

Aquí vamos a ver un listado con todos los módulos que nuestro Apache carga; buscaremos en la lista cuáles son los que no usamos y simplemente en el mismo archivo de configuración vamos a comentarlos colocando un "#" delante de la línea y listo.  

 

3 - Limitar el tamaño de las solicitudes Normalmente algunos ataques pueden comienzar con los viejos y conocidos DOS (Denial Of Service) debido a que permitimos demasiadas solicitudes, en realidad a que permitimos solicitudes de grandes tamaños en nuestro servidor, teniendo en cuenta que Apache no limita ésto, pero podemos evitarlo, simplemente colocando la línea

# LimitRequestBody

En éste caso, el limite lo podremos según a las necesidades que tengamos, pueden probar hasta encontrar el límite deseado.  

 

4 - Acceso a los directorios fuera del root Darles el privilegio a los intrusos que tengan acceso a directorios fuera de su raíz es dejar una puerta abierta, salvo que realmente necesitemos que Apache acceda a éstos. Para deshabilitar ésta opción tenemos que modificar la entrada de DocumentRoot. Por defecto viene con AllowOverride None, pero podemos agregar algunas más:

Order Deny, Allow Deny from all Options None

Detallo un poco lo que es None, Deny Allow, Deny from all. None: No permite a los usuarios activar ninguna funcionalidad en éste directorio. Deny, Allow: Son las órdenes que son procesadas respectivamente. Deny from all: Denega el acceso de peticiones de todos los usuarios al directorio "root". En el caso que deseamos dar acceso a ciertas áreas por ejemplo podemos crear un bloque o editar uno dejandolo de ésta manera:

Require all granted Require all granted

 

  5 - Los módulos mod_security y mod_evasive Sería importante de contar con éstos módulos en parte, asi que detallo brevemente cada uno: mod_security se podría decir que es un firewall para las web-apps, además de monitorear el tráfico de nuestro server en tiempo real, cosa importante a la hora de evitar ataques por fuerza bruta. mod_evasive intenta prevenir ataques DDOS y vía fuerza bruta, procesando cada petición y analizando su composición por ejemplo: * Si detecta muchas peticiones en poco tiempo. * Si cualquier proceso trata de realizar X cantidad de peticiones. * Si una IP que se encuentra en una lista negra (black list) sigue intentando hacer peticiones.  

 

6 - Deshabilitar los enlaces simbólicos Parece una tontería, por pequeña que sea, siempre puede ser útil a la hora cuidarnos y evitarnos problemas mayores, normalmente en las últimas versiones ya viene habilitada, pero por las dudas se las dejo presente:

Options -FollowSymLinks

  7 - Revisar los logs! Cosa que en ocaciones cuando recién comenzamos, no somos de mirar ésto, MAL! Es muy importante hacer un seguimiento y estar al día con los archivos de logs que se van generando ya que éstos nos reportan que es lo pasó en X momento. Además nos facilitan a la hora de entender algunos ataques además de que también nos ayudan a futuro para prevenirlos.  

 

8 - Desactivar las opciones para explorar directorios Para evitar que apache muestre, en el caso que no exista un index.html por ejemplo, mostrará los directorios con los archivos, para evitar ésto pondremos dentro de la etiqueta directorio lo siguiente:

Options -Indexes

  9 - Desactivar todas las opciones Si directamente queremos desactivar todas las opciones antes mencionadas, directamente podemos dejarlo así:

Options None

  10 - Finalmente, las actualizaciones Normalmente soy de ésas personas que piensa que "lo que funciona bién, no se toca", pero tener actualizado nuestro servidor web considero que es importante a la hora de ahorrarnos un dolor de cabeza, asi que en lo posible tenerlo actualizado sería ideal.  

 

Bueno espero que les haya servido y que puedan ponerlo en práctica, recuerden que éstos "tips" son básicos, pero por ahí si recién comienzan en éste mundo de los servidores, les vendrá bién.

 

Datos: Ésto fué configurado en un servidor LAMP en Archlinux32 (En el caso que quieran saber más de ésta distro, aquí les dejo info).

 

En el caso que quieran consultar o compartir sus configuraciones también pueden encontrarnos en el grupo de Telegram de LinuxerOS o comentar aquí.

 

Recuerden en lo posible compartir el blog así seguimos creciendo!

 

Abrazo de gol!

Editado por ice

Compartir este post


Enlace al post
Compartir en otros sitios

Me interesa el tema, me suscrivo para estar al dia

 

Los puntos 2 y 3 no los tengo claros, no llego tan profundo

 

2 - Deshabilitar los módulos que no usamos

3 - Limitar el tamaño de las solicitudes

 

No se de que módulos puedo prescindir,  por mucho que googlee a ver para que sirve cada módulo activo, no acabo de aclararme si es prescindible o no

Y sobre limitar los tamaños, ante la dudo prefiero dejar las opciones por defecto

 

El comando # grep -n LoadModule /etc/httpd/conf/httpd.conf

 

En mi caso con debian 8 y 9 (tengo los dos en distintas particiones), la ruta sería

# grep -n LoadModule /etc/apache2/apache2.conf

 

Y no vuelca ninguna información. Otra fórmula que he encontrado en google para ver los modulos cargados de apache 2.4 (Debian), es

# /usr/sbin/apache2ctl -t -D DUMP_MODULES

Lo que me arroja esta información:

 

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 headers_module (shared)
 include_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)
 vhost_alias_module (shared)

 

¿En una situación típica, cuales no se suelen usar?

Compartir este post


Enlace al post
Compartir en otros sitios
Los puntos 2 y 3 no los tengo claros, no llego tan profundo
 
2 - Deshabilitar los módulos que no usamos
3 - Limitar el tamaño de las solicitudes
 
No se de que módulos puedo prescindir,  por mucho que googlee a ver para que sirve cada módulo activo, no acabo de aclararme si es prescindible o no
Y sobre limitar los tamaños, ante la dudo prefiero dejar las opciones por defecto
 
El comando # grep -n LoadModule /etc/httpd/conf/httpd.conf
 
En mi caso con debian 8 y 9 (tengo los dos en distintas particiones), la ruta sería

# grep -n LoadModule /etc/apache2/apache2.conf

 
Y no vuelca ninguna información. Otra fórmula que he encontrado en google para ver los modulos cargados de apache 2.4 (Debian), es

# /usr/sbin/apache2ctl -t -D DUMP_MODULES

Lo que me arroja esta información:
 
>Loaded Modules:core_module (static)so_module (static)watchdog_module (static)http_module (static)log_config_module (static)logio_module (static)version_module (static)unixd_module (static)access_compat_module (shared)actions_module (shared)alias_module (shared)auth_basic_module (shared)auth_digest_module (shared)authn_core_module (shared)authn_file_module (shared)authz_core_module (shared)authz_host_module (shared)authz_user_module (shared)autoindex_module (shared)cgi_module (shared)dav_module (shared)dav_fs_module (shared)deflate_module (shared)dir_module (shared)env_module (shared)filter_module (shared)headers_module (shared)include_module (shared)mime_module (shared)mpm_prefork_module (shared)negotiation_module (shared)php5_module (shared)reqtimeout_module (shared)rewrite_module (shared)setenvif_module (shared)socache_shmcb_module (shared)ssl_module (shared)status_module (shared)vhost_alias_module (shared)

 
¿En una situación típica, cuales no se suelen usar?


Es que esa pregunta da para cualquiera, porque dependerá del uso, algunos no usan los virtual host por ejemplo, los cgi, que se yo... Yo normalmente por default, porque lo uso solo local y para probar exploits, practicar, etc. Así que no desactivo tanto los módulos.

Enviado desde mi MotoG3 mediante Tapatalk

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

×