enable and disable modsecurity env_var
parent
8050fb4fe4
commit
e6325c9618
28
dd-ctl
28
dd-ctl
|
@ -75,8 +75,6 @@ Generate .orig and .patch files to compare with upstream: ./dd-ctl genpatches
|
|||
Start the project when stopped: ./dd-ctl up
|
||||
Upgrade plugins: ./dd-ctl upgrade-plugins
|
||||
Regenerate docker-compose.yml from conf: ./dd-ctl yml
|
||||
Regenerate docker-compose.yml from conf: ./dd-ctl disable-waf
|
||||
Regenerate docker-compose.yml from conf: ./dd-ctl enable-waf
|
||||
EOF
|
||||
}
|
||||
|
||||
|
@ -874,26 +872,6 @@ special_image_tags() {
|
|||
done
|
||||
}
|
||||
|
||||
enable_waf() {
|
||||
# Enable waf
|
||||
echo "Enable rules ModSecurity"
|
||||
docker exec dd-waf-apache bash -c 'sed -i.orig -e "s/modsecurity Off/modsecurity On/" /etc/apache2/sites-available/000-default.conf'
|
||||
echo "Done"
|
||||
echo "Restart Apache - ModSecurity"
|
||||
docker restart dd-waf-apache
|
||||
echo "Done"
|
||||
}
|
||||
|
||||
disable_waf() {
|
||||
# Enable waf
|
||||
echo "Disable rules ModSecurity"
|
||||
docker exec dd-waf-apache bash -c 'sed -i.orig -e "s/modsecurity On/modsecurity Off/" /etc/apache2/sites-available/000-default.conf'
|
||||
echo "Done"
|
||||
echo "Restart Apache - ModSecurity"
|
||||
docker restart dd-waf-apache
|
||||
echo "Done"
|
||||
}
|
||||
|
||||
push_images() {
|
||||
#
|
||||
# Note this requires docker login on the registry
|
||||
|
@ -1008,12 +986,6 @@ case "$OPERATION" in
|
|||
securize)
|
||||
securize
|
||||
;;
|
||||
enable-waf)
|
||||
enable_waf
|
||||
;;
|
||||
disable-waf)
|
||||
disable_waf
|
||||
;;
|
||||
setconf)
|
||||
setconf "$@"
|
||||
;;
|
||||
|
|
|
@ -4,6 +4,9 @@ Instalación de los servicios Apache2 ModSecurity y HAProxy.
|
|||
|
||||
* En el servicio de Apache2 con ModSecurity V3 se incluyen las reglas OWASP
|
||||
* En servicio HAProxy actua de frontend de la aplicación, gestiona y negocia el certificado del dominio a través de letsencrypt.
|
||||
* En la instalación el ModSecurity se encuentra deshabilitado para no interferir en el proceso de setup inicial del DD.
|
||||
* La instalación se puede realizar con o sin la parte WAF.
|
||||
* Si tenemos instalado el WAF podemos tenerlo activo o en modo bypass
|
||||
|
||||
|
||||
## HAProxy
|
||||
|
@ -13,11 +16,11 @@ Podemos encontrar la configuración del servicio en [dd-waf/haproxy](dd-waf/harp
|
|||
La versión por defecto que se usara en HAProxy es `haproxy:2.4.12-alpine3.15` pero podemos definir usar otra versión
|
||||
definiendo el valor de la variable `HAPROXY_IMG` en nuestro fichero dd.conf
|
||||
|
||||
La configuración del servicio se encuentra en fichero haproxy.cfg. El fichero ya esta configurado
|
||||
para enrutar todo el tráfico a través del servicio Apache2-ModSecurity.
|
||||
La configuración del servicio se encuentra en fichero haproxy.cfg. Todo el tráfico que pasa por el haproxy se enruta al Apache2-ModSecurity.
|
||||
|
||||
El servicio de HAProxy se encarga de negociar y configurar el certicado del dominio de instalación
|
||||
La comunicación externa es cifrada, pero internamente la comunción usa el protocolo http
|
||||
|
||||
La comunicación desde fuera del stack de la aplicación es cifrada pero internamente la comunción usa el protocolo http
|
||||
|
||||
|
||||
## Apache - ModSecurity
|
||||
|
@ -32,40 +35,43 @@ Tenemos diferentes ficheros para configurar este servicio
|
|||
* En el fichero rules_apps.conf se configuran los falsos positivos, de las diferentes aplicaciones, que se tienen idenficados hasta el momento.
|
||||
|
||||
|
||||
## Instalación
|
||||
## Instalación WAF
|
||||
|
||||
Para la instalación del haproxy + modsecurity debemos que definir a `true` la variable `BEHIND_PROXY` en el fichero `dd.conf`
|
||||
Podemos hacer la intalación del proyecto con o sin servico waf.
|
||||
|
||||
### Instalación
|
||||
|
||||
Para la instalación del haproxy + modsecurity debemos definir a `true` la variable `BEHIND_PROXY` en el fichero `dd.conf`
|
||||
|
||||
* Instalación del servicio WAF
|
||||
```
|
||||
BEHIND_PROXY=true
|
||||
```
|
||||
|
||||
* No se instala el servicio WAF
|
||||
```
|
||||
BEHIND_PROXY=true
|
||||
```
|
||||
|
||||
|
||||
### Enable/Disable
|
||||
|
||||
Si tenemos instalado la parte del WAF en nuestro proyecto podemos tenerlo activo o desactivado.
|
||||
|
||||
* HAProxy activado
|
||||
```
|
||||
DISABLE_WAF=false
|
||||
```
|
||||
|
||||
* HAProxy desactivado
|
||||
```
|
||||
DISABLE_WAF=true
|
||||
```
|
||||
|
||||
### Configuración
|
||||
|
||||
Ahora tenemos que desplegar el modsecurity + haproxy ejecutando el comando `update` del `dd-ctl`
|
||||
|
||||
```
|
||||
./dd-ctl update
|
||||
```
|
||||
|
||||
## Configuración
|
||||
|
||||
En la instalación el ModSecurity se encuentra deshabilitado para no interferir en el proceso de setup inicial del DD.
|
||||
|
||||
Una vez finalizada la parte de setup, podemos activarlo o desactivarlo según necesitemos,
|
||||
|
||||
Se configuran los siguientes directorios como volumen para persistir la configuración.
|
||||
|
||||
* En el directorio [dd-waf/haproxy](dd-waf/modsecurity/rules) podemos añadir las reglas que necesitemos para excluir los falsos positivos que nos da el modsecurity. El nombre de los ficheros debe terminar en `.conf`
|
||||
i* En del directorio [dd-waf/haproxy](dd-waf/modsecurity/vhosts) se encuentra el fichero de configuración del Virtual Host del Apache2
|
||||
|
||||
|
||||
### Activar ModSecurity con las reglas OWASP
|
||||
|
||||
```
|
||||
./dd-ctl enable_waf
|
||||
```
|
||||
|
||||
### Desactivar ModSecurity con las reglas OWASP
|
||||
|
||||
```
|
||||
./dd-ctl disable_waf
|
||||
```
|
||||
|
|
|
@ -7,10 +7,10 @@ services:
|
|||
dockerfile: Dockerfile
|
||||
target: production
|
||||
container_name: dd-waf-apache
|
||||
env_file:
|
||||
- .env
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- ${BUILD_WAF_ROOT_PATH}/docker/modsecurity/rules:/etc/apache2/modsecurity.d/dd-rules:rw
|
||||
- ${BUILD_WAF_ROOT_PATH}/docker/modsecurity/vhosts:/etc/apache2/sites-available:rw
|
||||
networks:
|
||||
- dd_net
|
||||
|
|
|
@ -50,20 +50,18 @@ ADD crs-setup.conf /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf
|
|||
|
||||
# Activate ModSecurity
|
||||
RUN mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.old
|
||||
#ADD 000-default.conf /etc/apache2/sites-available/
|
||||
#ADD rules_apps.conf /etc/apache2/modsecurity.d/owasp-crs/rules/000-dd-apps.conf
|
||||
ADD 000-default.conf /etc/apache2/sites-available/
|
||||
ADD rules_apps.conf /etc/apache2/modsecurity.d/owasp-crs/rules/000-dd-apps.conf
|
||||
|
||||
RUN a2enmod proxy_http
|
||||
|
||||
#EXPOSE 80
|
||||
#USER www-data
|
||||
#HEALTHCHECK --interval=5s --timeout=3s CMD curl --fail http://localhost || exit 1
|
||||
CMD apachectl -D FOREGROUND
|
||||
# Set and run a custom entrypoint
|
||||
COPY docker-entrypoint.sh /
|
||||
RUN chmod 777 /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
|
||||
# Testing ModSecurity
|
||||
#curl http://<SERVER-IP/DOMAIN>/index.php?exec=/bin/bash
|
||||
|
||||
# TODO
|
||||
# Juntas capas y reducir peso
|
||||
# user no root
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash -e
|
||||
set -e
|
||||
|
||||
if [ "$DISABLE_WAF" == "true" ]; then
|
||||
sed -i.orig -e "s/modsecurity On/modsecurity Off/" /etc/apache2/sites-available/000-default.conf
|
||||
else
|
||||
sed -i.orig -e "s/modsecurity Off/modsecurity On/" /etc/apache2/sites-available/000-default.conf
|
||||
fi
|
||||
|
||||
apachectl -D FOREGROUND
|
|
@ -1,4 +1,3 @@
|
|||
Include "/etc/apache2/modsecurity.d/modsecurity.conf"
|
||||
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"
|
||||
#Include "/etc/apache2/modsecurity.d/dd-rules/*.conf"
|
||||
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"
|
||||
|
|
|
@ -149,6 +149,9 @@ IPA_ADMIN_PWD=freeipafreeipa
|
|||
## WORKS BEHIND PROXY
|
||||
BEHIND_PROXY=false
|
||||
|
||||
## MODSECURITY
|
||||
DISABLE_WAF=true
|
||||
|
||||
# SOURCES & SYSTEM VARS
|
||||
|
||||
## MOODLE
|
||||
|
|
Loading…
Reference in New Issue