Configuración Avanzada de Apache: Optimización y Seguridad del Servidor
Clasificado en Informática
Escrito el en español con un tamaño de 7,49 KB
Configuración y Optimización del Servidor Apache
Ajuste del Nivel de Registro (LogLevel)
Para modificar el nivel de registro en Apache, sigue estos pasos:
- Abre el archivo de configuración principal:
/etc/apache2/apache2.conf
. - Busca la directiva
LogLevel
y ajusta su valor según tus necesidades (por ejemplo,warn
,info
,debug
).
Personalización de la Ruta de los Archivos de Registro
Para cambiar la ubicación donde se guardan los archivos de registro:
- Crea la carpeta de destino si no existe.
- Abre
/etc/apache2/apache2.conf
. - Localiza la directiva
ErrorLog
y modifica la ruta. Asegúrate de que termine en/error.log
. - Añade la directiva
CustomLog
debajo deErrorLog
. La ruta debe terminar en/access.log
y estar entrecomillada, seguida de un espacio y la palabracommon
. Ejemplo:CustomLog "/var/miapache/access.log" common
. - Reinicia Apache:
sudo apachectl restart
.
Ajuste del Número Máximo de Instancias al Iniciar
Para configurar el número máximo de instancias de Apache al arrancar:
- Edita el archivo de configuración del módulo MPM prefork: Normalmente se encuentra en
/etc/apache2/mods-enabled/mpm_prefork.conf
(o el archivo MPM que esté habilitado). - Modifica el valor de
StartServers
. - Reinicia Apache:
sudo apachectl restart
.
Configuración de Múltiples Sitios Web (Virtual Hosts)
Para configurar el servidor y dar acceso a dos sitios:
a) Sitio 1: Ubicado en /home/usuario/empresas/edicionesuno
, accesible por el puerto 8088 (localhost) y por el puerto 80 (www.edicionesuno.com y edicionesuno.com).
- Abre el archivo de configuración del sitio virtual (por ejemplo,
000-default.conf
o un archivo específico ensites-available
). - Dentro del bloque
<VirtualHost *:80>
, añade:ServerName www.edicionesuno.com
ServerAlias edicionesuno.com
ServerAdmin [email protected]
DocumentRoot /home/usuario/empresas/edicionesuno
DirectoryIndex inicio.html
- Las directivas
ErrorLog
yCustomLog
(configuradas previamente).
- Crea un bloque
<VirtualHost *:8088>
similar, pero con:ServerName localhost
DocumentRoot
apuntando al mismo directorio.
- Crea las páginas HTML en el directorio especificado.
- Edita el archivo
/etc/hosts
y añade:127.0.0.1 www.edicionesuno.com
127.0.0.1 edicionesuno.com
- Si hay problemas de acceso, verifica la configuración de
<Directory>
en/etc/apache2/apache2.conf
y asegúrate de que esté configurado comoRequire all granted
.
Implementación de Acceso Restringido con Contraseña
Para restringir el acceso a un directorio mediante usuario y contraseña:
- Crea una carpeta para almacenar el archivo de contraseñas (ejemplo:
/etc/apache2/.seguridad
; el punto inicial hace que la carpeta sea oculta). - Crea el archivo de contraseñas:
sudo htpasswd -c /etc/apache2/.seguridad/.passwd nombre_usuario
(usa-c
solo la primera vez para crear el archivo; luego, omítelo para añadir usuarios). - Abre el archivo
apache2.conf
o el archivo de configuración del VirtualHost correspondiente. - Dentro de la sección
<Directory>
correspondiente al directorio que quieres proteger, añade:
Reemplaza `nombre_usuario` con el usuario real. Puedes usar `Require valid-user` para permitir el acceso a cualquier usuario válido en el archivo .passwd.Options Indexes FollowSymLinks AllowOverride AuthConfig AuthType Basic AuthName "Introduzca usuario y contraseña" AuthUserFile /etc/apache2/.seguridad/.passwd Require user nombre_usuario
Creación y Configuración de un Certificado Digital (SSL)
Para crear e instalar un certificado digital en el servidor:
- Ve a
/etc/apache2
. - Instala OpenSSL:
sudo apt install openssl
. - Habilita el módulo SSL:
sudo a2enmod ssl
. - Genera una clave RSA:
sudo openssl genrsa -out nombre_clave.key 2048
. - Genera una solicitud de firma de certificado (CSR):
sudo openssl req -new -key nombre_clave.key -out nombre_csr.csr
. - Completa los datos solicitados. En Common Name, introduce el nombre de dominio completo (FQDN) o la dirección IP pública del servidor.
- Genera el certificado SSL:
sudo openssl x509 -req -days 365 -in nombre_csr.csr -signkey nombre_clave.key -out nombre_certificado.crt
. - Mueve los archivos:
sudo mv nombre_certificado.crt /etc/ssl/certs
sudo mv nombre_clave.key /etc/ssl/private
- Configura tu VirtualHost para usar SSL (añade un bloque <VirtualHost *:443> y configura las directivas SSLCertificateFile y SSLCertificateKeyFile).
Cambio del Documento por Defecto
Para cambiar el documento que se abre por defecto (por ejemplo, a indice.html
):
Modifica la directiva DirectoryIndex
en apache2.conf
(para una configuración global) o dentro del bloque <VirtualHost>
correspondiente. Ejemplo: DirectoryIndex indice.html
.
Configuración de la Carga de Módulos Dinámicos
Para cargar un módulo dinámico:
- Utiliza el comando
a2enmod
:sudo a2enmod modulo_deseado
. - Reinicia Apache:
sudo apachectl restart
.
Función del Comando apache2ctl configtest
apache2ctl configtest
se utiliza para verificar la sintaxis de los archivos de configuración de Apache antes de reiniciar el servidor. Esto ayuda a prevenir errores que podrían causar una caída del servicio.
Definición de un Host Virtual Adicional
Para definir un host virtual llamado miservidorapache.midominio.es
en el puerto 81:
- Crea la estructura de directorios necesaria (por ejemplo,
/var/www/miapache/midominio/index.html
). - Añade el puerto 81 a la escucha de Apache: Edita
/etc/apache2/ports.conf
y añadeListen 81
. - Crea un archivo de configuración para el nuevo sitio virtual:
sudo nano /etc/apache2/sites-available/midominio.conf
. - Dentro del archivo
midominio.conf
, añade:<VirtualHost *:81> ServerName www.miapache.midominio.es ServerAdmin [email protected] ServerAlias miapache.midominio.es DocumentRoot /var/www/miapache/midominio <Directory /var/www/miapache/midominio> Require all granted </Directory> </VirtualHost>
- Habilita el nuevo sitio virtual:
sudo a2ensite midominio.conf
. - Añade el dominio al archivo
/etc/hosts
:127.0.0.1 www.miapache.midominio.es
. - Reinicia Apache:
sudo apachectl restart
.