Servidor Web Apache Seguro: Guía completa para administradores de sistemas
Una colección de configuraciones y scripts de ejemplo para ayudar a los administradores de sistemas a reforzar los servidores web Apache.
Apache, fuera de la caja, es sorprendentemente inseguro. Muchas de las mejores prácticas y configuraciones de seguridad tienen que ser configuradas manualmente antes de desplegar Apache en un entorno de producción. Puedes usar este repositorio de GitHub como punto de partida para asegurar tus instancias de Apache.
Instalando ModSecurity con OWASP Core Rule Set
Paso 1: Actualizar Repositorios
En Ubuntu/Debian:
sudo apt-get update -y
On CentOS/RHEL:
sudo yum update -y
Paso 2: Instalar ModSecurity para Apache
En Ubuntu/Debian:
sudo apt-get install -y libapache2-modsecurity
sudo systemctl restart apache2
On CentOS/RHEL:
sudo yum install -y mod_security
sudo systemctl restart httpd.service
Paso 3: Configurar ModSecurity
ModSecurity por defecto sólo está configurado para registrar eventos de las reglas por defecto. Tendremos que editar el fichero de configuración para modificar las reglas para detectar y bloquear tráfico malicioso.
Copie y renombre el fichero:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Cambiar el modo de detección de ModSecurity editando el fichero de configuración:
sudo nano /etc/modsecurity/modsecurity.conf
Cambiar “DetectionOnly” a “On”.
SecRuleEngine DetectionOnly
SecRuleEngine On
Si estás usando nano puedes pulsar CTRL+X, luego Y y Enter para guardar y salir.
**Reiniciar Apache
En Ubuntu\ Debian:
sudo systemctl restart apache2
On CentOS\ RHEL:
sudo systemctl restart httpd.service
Paso 4: Descarga e Instalación del Conjunto de Reglas OWASP ModSecurity Core
cd /apache/conf
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
tar -xvzf v3.3.0.tar.gz
sudo ln -s coreruleset-3.3.0 /apache/conf/crs
cp crs/crs-setup.conf.example crs/crs-setup.conf
rm v3.3.0.tar.gz
**Reiniciar Apache
En Ubuntu\ Debian:
sudo systemctl restart apache2
On CentOS\ RHEL:
sudo systemctl restart httpd.service
Paso 5: Material de lectura adicional
**Instrucciones de instalación adicionales
Install OWASP ModSecurity Core Rule Set
Certificados SSL
Autofirmado
Siguiendo las instrucciones de Digital Ocean
Para este tutorial, asumo que vas a usar el archivo ejemplo.com.conf del repositorio.
Paso 1: Crear el certificado SSL
sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Rellene los campos correctamente. La línea más importante es la que solicita el Nombre Común (por ejemplo, FQDN del servidor o SU nombre). Debe introducir el nombre de dominio asociado a su servidor o, más probablemente, la dirección IP pública de su servidor. Si utiliza para el certificado de acceso sólo IP en el ejemplo.com.conf por favor utilice “NA “ para todos los valores donde sea posible.
Configuración de Perfect Forward Secrecy
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Automatizar con LetsEncrypt y Certbot
Siguiendo el tutorial de Certbot
Paso 1: Instalar Certbot
sudo apt-get update -y
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-apache
Paso 2: Elige cómo quieres ejecutar Certbot
Obtenga e instale sus certificados…
sudo certbot --apache
O, simplemente consigue un certificado
sudo certbot certonly --apache
Paso 3: Probar la renovación automática
sudo certbot renew --dry-run