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
|
Start the project when stopped: ./dd-ctl up
|
||||||
Upgrade plugins: ./dd-ctl upgrade-plugins
|
Upgrade plugins: ./dd-ctl upgrade-plugins
|
||||||
Regenerate docker-compose.yml from conf: ./dd-ctl yml
|
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
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -874,26 +872,6 @@ special_image_tags() {
|
||||||
done
|
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() {
|
push_images() {
|
||||||
#
|
#
|
||||||
# Note this requires docker login on the registry
|
# Note this requires docker login on the registry
|
||||||
|
@ -1008,12 +986,6 @@ case "$OPERATION" in
|
||||||
securize)
|
securize)
|
||||||
securize
|
securize
|
||||||
;;
|
;;
|
||||||
enable-waf)
|
|
||||||
enable_waf
|
|
||||||
;;
|
|
||||||
disable-waf)
|
|
||||||
disable_waf
|
|
||||||
;;
|
|
||||||
setconf)
|
setconf)
|
||||||
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 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 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
|
## 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
|
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
|
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
|
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.
|
||||||
para enrutar todo el tráfico a través del servicio Apache2-ModSecurity.
|
|
||||||
|
|
||||||
El servicio de HAProxy se encarga de negociar y configurar el certicado del dominio de instalación
|
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
|
## 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.
|
* 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
|
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`
|
Ahora tenemos que desplegar el modsecurity + haproxy ejecutando el comando `update` del `dd-ctl`
|
||||||
|
|
||||||
```
|
```
|
||||||
./dd-ctl update
|
./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
|
dockerfile: Dockerfile
|
||||||
target: production
|
target: production
|
||||||
container_name: dd-waf-apache
|
container_name: dd-waf-apache
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /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:
|
networks:
|
||||||
- dd_net
|
- dd_net
|
||||||
|
|
|
@ -50,20 +50,18 @@ ADD crs-setup.conf /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf
|
||||||
|
|
||||||
# Activate ModSecurity
|
# Activate ModSecurity
|
||||||
RUN mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.old
|
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 000-default.conf /etc/apache2/sites-available/
|
||||||
#ADD rules_apps.conf /etc/apache2/modsecurity.d/owasp-crs/rules/000-dd-apps.conf
|
ADD rules_apps.conf /etc/apache2/modsecurity.d/owasp-crs/rules/000-dd-apps.conf
|
||||||
|
|
||||||
RUN a2enmod proxy_http
|
RUN a2enmod proxy_http
|
||||||
|
|
||||||
#EXPOSE 80
|
#EXPOSE 80
|
||||||
#USER www-data
|
#USER www-data
|
||||||
#HEALTHCHECK --interval=5s --timeout=3s CMD curl --fail http://localhost || exit 1
|
#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
|
# Testing ModSecurity
|
||||||
#curl http://<SERVER-IP/DOMAIN>/index.php?exec=/bin/bash
|
#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/modsecurity.conf"
|
||||||
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.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"
|
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"
|
||||||
|
|
|
@ -149,6 +149,9 @@ IPA_ADMIN_PWD=freeipafreeipa
|
||||||
## WORKS BEHIND PROXY
|
## WORKS BEHIND PROXY
|
||||||
BEHIND_PROXY=false
|
BEHIND_PROXY=false
|
||||||
|
|
||||||
|
## MODSECURITY
|
||||||
|
DISABLE_WAF=true
|
||||||
|
|
||||||
# SOURCES & SYSTEM VARS
|
# SOURCES & SYSTEM VARS
|
||||||
|
|
||||||
## MOODLE
|
## MOODLE
|
||||||
|
|
Loading…
Reference in New Issue