Está en la página 1de 16

LinuxParty

Buscar... Buscar... Ya!

13 consejos para reforzar la seguridad del servidor web Apache en


Servidores Linux
Publicado: 31 Marzo 2023 | Escrito por Javier Orovengua | Correo electrónico | Visto: 11

Por favor, vote Voto 5 Votar

Descubre las opciones de financiamiento


para tus objetivos - busca ahora
Préstamos | Anuncios de búsqueda

sponsored by: Préstamos LEARN MORE


Todos estamos muy familiarizados con el servidor web Apache , 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 refuerzo de Apache

Descubre las opciones de financiamiento


para tus objetivos - busca ahora
Préstamos | Anuncios de búsqueda

sponsored by: Préstamos LEARN MORE

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 raíz del documento: /var/www/html o /var/www


2. Archivo de configuración principal: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) y
/etc/apache2/apache2.conf (Debian/Ubuntu).
3. Puerto HTTP predeterminado: 80 TCP
4. Puerto HTTPS predeterminado: 443 TCP
5. Pruebe los ajustes y la sintaxis de su archivo de configuración: httpd -t
6. Acceda a los archivos de registro del servidor web: /var/log/httpd/access_log
7. Archivos de registro de errores del servidor web: /var/log/httpd/error_log

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

Cuando instala Apache con fuente o cualquier otro instalador de paquetes como yum , muestra la versión de
su servidor web Apache instalado en su servidor con el nombre del sistema operativo de su servidor en
Errores . También muestra la información sobre los módulos de Apache instalados en su servidor.
Mostrar versión de Apache

En la imagen de arriba, puede ver que Apache muestra su versión con el sistema operativo instalado en su
servidor. Esto puede ser una gran amenaza para la seguridad de su servidor web, así como también para su caja
de Linux. Para evitar que Apache no muestre esta información al mundo, debemos realizar algunos cambios en
el archivo de configuración principal de Apache.

Abra el archivo de configuración con el editor vim y busque " ServerSignature ", está activado de forma
predeterminada. Necesitamos desactivar esta firma del servidor y la segunda línea " ServerTokens Prod " le
dice a Apache que devuelva solo Apache como producto en el encabezado de respuesta del servidor en cada
solicitud de página. Suprime la información del sistema operativo, versión principal y secundaria.
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache2/apache2.conf (Debian/Ubuntu)

ServerSignature Off
ServerTokens Prod

# service httpd restart (RHEL/CentOS/Fedora)


# service apache2 restart (Debian/Ubuntu)
Ocultar versión de Apache

2. Deshabilitar el listado de directorios

Por defecto, Apache enumera todo el contenido del directorio raíz del documento en ausencia de un archivo de
índice . Por favor, vea la imagen de abajo.

Listado de directorios de Apache

Podemos desactivar la lista de directorios usando la directiva Opciones en el archivo de configuración para un
directorio específico. Para eso necesitamos hacer una entrada en el archivo httpd.conf o apache2.conf .
<Directory /var/www/html>
Options -Indexes
</Directory>

Ocultar lista de directorios de Apache

3. Sigue actualizando Apache regularmente

La comunidad de desarrolladores de Apache trabaja continuamente en temas de seguridad y lanza su versión


actualizada con nuevas opciones de seguridad . Por lo tanto, siempre se recomienda utilizar la última versión
de Apache como servidor web.

Para verificar la versión de Apache : puede verificar su versión actual con el comando httpd -v .
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:29:28

Puede actualizar su versión con el siguiente comando.


# yum update httpd
# apt-get install apache2

También se recomienda mantener su kernel y sistema operativo actualizados 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. Deshabilitar módulos innecesarios

Siempre es bueno minimizar las posibilidades de ser víctima de cualquier ataque web . Por lo que se
recomienda deshabilitar todos aquellos módulos que no estén en uso actualmente. Puede enumerar todos los
módulos compilados del servidor web, usando el siguiente comando.
# grep LoadModule /etc/httpd/conf/httpd.conf

# have to place corresponding `LoadModule' lines at this location so the


# 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
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
....

Arriba está la lista de módulos que están habilitados por defecto pero que a menudo no son necesarios:
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 reiniciar el servicio.

5. Ejecute Apache como Usuario y Grupo separados

Con una instalación predeterminada, Apache ejecuta su proceso con el usuario none o daemon . Por razones de
seguridad, se recomienda ejecutar Apache en su propia cuenta sin privilegios . Por ejemplo: http-web .

Crear usuario y grupo de Apache

# groupadd http-web
# useradd -d /var/www/ -g http-web -s /bin/nologin http-web

Ahora necesita decirle a Apache que se ejecute con este nuevo usuario y para hacerlo, debemos hacer una
entrada en /etc/httpd/conf/httpd.conf y reiniciar el servicio.

Abra /etc/httpd/conf/httpd.conf con el editor vim y busque la palabra clave " User " y " Group " y allí deberá
especificar el nombre de usuario y el nombre de grupo a usar.
User http-web
Group http-web

6. Utilice Permitir y Denegar para restringir el acceso a los directorios

Podemos restringir el acceso a los directorios con las opciones " Permitir " y " Denegar " en el archivo
httpd.conf . Aquí, en este ejemplo, aseguraremos el directorio raíz , para eso configuramos lo siguiente en el
archivo httpd.conf .
<Directory />
Options None
Order deny,allow
Deny from all
</Directory>

Opciones "None" : esta opción no permitirá a los usuarios habilitar ninguna función opcional.

1. Order deny, allow: este es el orden en el que se procesarán las directivas " Denegar " y " Permitir ". Aquí
"denegará " primero y " permitirá " a continuación.
2. Deny from all: esto denegará la solicitud de todos al directorio raíz, nadie podrá acceder al directorio
raíz.

7. Utilice los módulos mod_security y mod_evasive para proteger Apache

Estos dos módulos “ mod_security ” y “ mod_evasive ” son módulos muy populares de Apache en términos de
seguridad.

Mod_seguridad
Donde mod_security funciona como un firewall para nuestras aplicaciones web y nos permite monitorear el
tráfico en tiempo real. También nos ayuda a proteger nuestros sitios web o servidores web de ataques de
fuerza bruta . Simplemente puede instalar mod_security en su servidor con la ayuda de los instaladores de
paquetes predeterminados.

Instalar mod_security en Ubuntu/Debian

$ sudo apt-get install libapache2-modsecurity


$ sudo a2enmod mod-security
$ sudo /etc/init.d/apache2 force-reload

Instale mod_security en RHEL/CentOS/Fedora/

# yum install mod_security


# /etc/init.d/httpd restart

Mod_evasivo

mod_evasive funciona de manera muy eficiente, se necesita una solicitud para procesarla y la procesa muy
bien. Evita que los ataques DDOS hagan tanto daño. Esta característica de mod_evasive le permite manejar la
fuerza bruta HTTP y el ataque Dos o DDos . Este módulo detecta ataques con tres métodos.

1. Si tantas solicitudes llegan a una misma página en unas pocas veces por segundo.
2. Si algún proceso secundario intenta realizar más de 50 solicitudes simultáneas.
3. Si alguna IP aún intenta realizar nuevas solicitudes cuando está temporalmente en la lista negra .

mod_evasive 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á a configurar estos módulos de Apache en su caja de Linux.

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

Por defecto , Apache sigue los enlaces simbólicos , podemos desactivar esta función con la directiva
FollowSymLinks with Options . Y para hacerlo necesitamos hacer la siguiente entrada en el archivo de
configuración principal.
Options -FollowSymLinks

Y, si algún usuario o sitio web en particular necesita habilitar FollowSymLinks , simplemente podemos
escribir una regla en el archivo " .htaccess " de ese sitio web.
# Habilitar enlaces simbólicos
Options +FollowSymLinks

Nota: Para habilitar las reglas de reescritura dentro del archivo " .htaccess ", " AllowOverride All " debe estar
presente en la configuración principal globalmente.

9. Desactive las inclusiones del lado del servidor y la ejecución CGI

Podemos desactivar las inclusiones del lado del servidor ( mod_include ) y la ejecución de CGI si no es
necesario y, para hacerlo, debemos modificar el archivo de configuración principal.
Options -Includes
Options -ExecCGI

También podemos hacer esto para un directorio en particular con la etiqueta Directory. Aquí En este ejemplo,
estamos desactivando las ejecuciones de archivos incluidos y Cgi para el directorio " /var/www/html/web1 ".
<Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>

Aquí hay algunos otros valores que se pueden activar o desactivar con la directiva Opciones.
1. Opciones All: para habilitar (ALL) todas las opciones a la vez. Este es el valor predeterminado, si no desea
especificar ningún valor explícitamente en el archivo conf de Apache o .htaccess.
2. Opciones IncludesNOEXEC: esta opción permite incluir del lado del servidor sin el permiso de ejecución a
un comando o archivos cgi.
3. Opciones MultiViews: permite negociar contenido multiviews con el módulo mod_negotiation.
4. Opciones SymLinksIfOwnerMatch: es similar a FollowSymLinks. Pero, esto seguirá solo cuando el
propietario sea el mismo entre el enlace y el directorio original al que está vinculado.

10. Limite el tamaño de la solicitud

Por defecto, Apache no tiene límite en el tamaño total de la solicitud HTTP, es decir, ilimitado y cuando permite
solicitudes grandes en un servidor web, es posible que sea víctima de ataques de denegación de servicio .
Podemos limitar el tamaño de las solicitudes de una directiva de Apache " LimitRequestBody " con la etiqueta
del directorio.

Puede establecer el valor en bytes de 0 ( ilimitado ) a 2147483647 ( 2 GB ) que están permitidos en el cuerpo de
una 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 los usuarios. Estamos
poniendo un límite de 500K para esto.
<Directory "/var/www/myweb1/user_uploads">
LimitRequestBody 512000
</Directory>

11. Proteger ataques DDOS y endurecimiento

Bueno, es cierto que no puedes proteger completamente tu sitio web de los ataques DDos . Aquí hay algunas
directivas que pueden ayudarlo a tener un control sobre él.

1. TimeOut : esta directiva le permite establecer la cantidad de tiempo que el servidor esperará para que se
completen ciertos eventos antes de que falle. Su valor predeterminado es de 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 reciba en su sitio web. Nota : podría plantear problemas con los scripts
CGI .
2. MaxClients : esta directiva le permite establecer el límite de conexiones que se atenderán
simultáneamente. Cada nueva conexión se pondrá en cola después de este límite. Está disponible con
Prefork y Worker ambos MPM . El valor predeterminado es 256 .
3. KeepAliveTimeout : 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
solicitud HTTP que se aceptarán de los clientes. Su valor predeterminado es 100 . Se recomienda reducir
este valor si se producen ataques DDos como resultado de tantos encabezados de solicitud http.
5. LimitRequestFieldSize : Nos ayuda a establecer un límite de tamaño en el encabezado de la solicitud
HTTP.

12. Habilitar el registro de Apache

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

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

1. TransferLog : creación de un archivo de registro.


2. LogFormat : especificando un formato personalizado.
3. CustomLog : Crear y formatear un archivo de registro.

También puede usarlos para un sitio web en particular si está realizando un alojamiento virtual y para eso
debe especificarlo en la sección de alojamiento virtual. Por ejemplo, aquí está la configuración de host virtual de
mi sitio web con el registro habilitado.
<VirtualHost *:80>
DocumentRoot /var/www/html/example.com/
ServerName www.example.com
DirectoryIndex index.htm index.html index.php
ServerAlias example.com
ErrorDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log combined
</VirtualHost>

13. Protección de Apache con certificados SSL

Por último, pero no menos importante , los certificados SSL , puede proteger todas sus comunicaciones de
forma encriptada a través de Internet con un 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 las personas brindan sus datos bancarios o los detalles de la tarjeta de débito / crédito para
comprar productos, de manera predeterminada, su servidor web envía estos detalles en texto sin formato. pero
cuando utiliza certificados SSL en sus sitios web, Apache envía toda esta información en texto cifrado.

Puede comprar certificados SSL de tantos proveedores SSL diferentes como namecheap.com . Si tiene una
empresa web muy pequeña y no está dispuesto a comprar un certificado SSL, aún puede asignar un
certificado autofirmado a su sitio web. Apache usa el módulo mod_ssl para admitir el certificado SSL .
# openssl genrsa -des3 -out ejemplo.com.key 1024
# openssl req -new -key ejemplo.com.key -out ejemplo.csr
# openssl x509 -req -days 365 -in ejemplo.com.com.csr -signkey ejemplo.com.com.key -out ejemplo.com.com.crt

Una vez que su certificado ha 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.
<VirtualHost 172.16.25.125:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt
ServerAdmin ravi.saive@example.com
ServerName example.com
DocumentRoot /var/www/html/example/
ErrorLog /var/log/httpd/example.com-error_log
CustomLog /var/log/httpd/example.com-access_log common
</VirtualHost>

Abra su navegador, escriba https://example.com y podrá ver el nuevo certificado autofirmado .

Estos son algunos consejos de seguridad que puede utilizar para asegurar la instalación de su servidor web
Apache . Para obtener más consejos e ideas de seguridad útiles, consulte la documentación oficial en línea de
Apache HTTP Server .
Me gusta 6 Compartir 6 Twittear Compartir Guardar Whatsapp

Siguiente

Escribir un comentario

Nombre (requerido)

E-mail (requerido)

1000 simbolos

Subscribirse a la notificación de nuevos comentarios

Refescar

Enviar

JComments

Categoría: Apache

Relacionados
Apache
13 consejos para reforzar la seguridad del servidor web Apache en Servidores Linux
Cómo administrar el servidor Apache usando la herramienta "Apache GUI"
Crear un sitio web protegido, con usuario y contraseña
Cómo instalar Joomla en Rocky Linux y AlmaLinux
Incrementar el rendimiento de su Web usando Nginx como Proxy con Apache
¿Cómo usar IPv6 en Apache?
Cómo configurar HTTPS en Apache Web Server con CentOS
Usar el comando occ, cómo funciona.
Redirigir todo tu viejo dominio al nuevo dominio a través de .htaccess
Ejemplos y Trucos de uso y configuración del htaccess de Apache
Seguridad de Joomla: Cómo asegurar su sitio web de Joomla durante la instalación
Securizar tu servidor Web Apache con mod_security
Asegurar tu servidor Web Apache con ModSecurity
¿Cómo utilizar IPv6 en Apache?
No cargar imágenes desde otras páginas con htaccess

Cómo Instalar Linux

Redes:
Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.


Nombre

Correo electrónico

Suscribirse Cancelar suscrib.

Contratar publicidad en LinuxParty.


El Top de LinuxParty

Cambiar la Hora y la Fecha al sistema Linux


Cómo configurar la tarjeta de Red Inalámbrica ( WiFi ) en Linux
Manual para hackear una red wifi
Cómo configurar el Modem USB o Tarjeta GPRS / 3G para Linux.
20 Comandos Netstat para Administradores de Redes Linux
Tutorial de C/C++, programar paso a paso, para Linux, Windows y Mac
29 Prácticos ejemplos de Nmap para Administradores de Sistemas / Redes
Exportar Bases de Datos de Access (MDB) a MySQL
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
20 ejemplos iptables para administradores de sistemas Linux
Cómo Montar tu Propio Wiki
Cómo bloquear fotos e imágenes porno con SafeSquid, servidor proxy
Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate...
Instalar Microsoft Office en Linux (con Wine)
Cómo Crear una Base de Datos MySQL e inicializar los privilegios.
Programar y depurar en un IDE para PHP con Eclipse, plugins PDT, xdebug y Remote debug
40 cosas que probablemente no sepas sobre Linux
Sexo, Violencia, y Tensión en los Juegos.
15 Herramientas de la línea de comandos para supervisar el rendimiento de Linux
Renombrar varios archivos en Linux (quitar espacios, cambiar mayúsculas) a la vez en Linux

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?

Noticias de Linux y tecnología

Tutorial de Linux

Tutorial de Linux
Descarga gratuita aquí. (ver.pdf)

Últimos comentarios

En Italia ha caido un meteorito de más de 45.000 millones de años (2)


Los mejores juegos de GNU/Linux – Una larga lista (1)
Cómo configurar DRBD para replicar el almacenamiento en dos servidores CentOS 7 y 8 (1)
Aprender a programar en Basic con QB64, La versión QuickBASIC para Linux, MacOS y Windows es la
opción que las escuelas deberían escoger (2)
Por qué Linux no triunfa en el Escritorio. (1)
Configuración del servidor DNS en Linux (3)
Los 27 mejores IDEs para programación C/C++ o editores de código de Linux (1)
Q4OS hace que Linux sea fácil para todos (1)
Cómo configurar un servidor de correo con Postfix y Dovecot para diferentes necesidades (9)
Optimizar, cambiar tamaño y peso de las imágenes desde la consola terminal Linux (1)
Filtro por Categorías

Apache
Filtrar Limpiar

Publicidad Contacto | RSS Atom | En Twitter | En Facebook

| Quienes Somos | Condiciones de Uso | Aviso Legal |

Copyleft LinuxParty © 2013.

TECNOLOGÍA

LinuxParty

CIENCIA

Ajuca

ECONOMIA

DedoDigital

Designed by ExtreHost.

También podría gustarte