Vamos a suponer que tenemos nuestra página web, servicio o servidor protegido por Cloudfare.
Esto implica que toda la entrada/tráfico va a entrar por Cloudfare, peeeeeeeero que sucedería si alguien entra por la IP directamente (https://139.162.206.138) o modifica sus entradas DNS locales (hosts o /etc/hosts)? Va a saltarse la seguridad de CloudFare y llegaría directamente a nuestro servidor.
En primer lugar, vamos a localizar los rangos de Cloudfare.
Una vez tengamos los rangos e IP’s controlados crearemos un fichero con la configuración necesaria:
cat > /etc/httpd/conf/cloudfare.conf <<EOF
order deny,allow
deny from all
allow from 127.0.0.1
allow from 139.162.206.138
allow from 173.245.48.0/20
allow from 103.21.244.0/22
allow from 103.22.200.0/22
allow from 103.31.4.0/22
allow from 141.101.64.0/18
allow from 108.162.192.0/18
allow from 190.93.240.0/20
allow from 188.114.96.0/20
allow from 197.234.240.0/22
allow from 198.41.128.0/17
allow from 162.158.0.0/15
allow from 104.16.0.0/13
allow from 104.24.0.0/14
allow from 172.64.0.0/13
allow from 131.0.72.0/22
EOF
Seguidamente, añadiremos en nuestro httpd.conf el siguiente código:
<Directory />
Options FollowSymLinks
AllowOverride None
Include /etc/httpd/conf/cloudfare.conf
</Directory>
Antes de reiniciar el servicio, realizaremos una prueba de acceso. Entraremos a https://139.162.206.138 donde veremos que la petción llega al servidor y devuelve un código exitoso (200)
==> /var/log/httpd/ssl_access_log <==
163.116.176.127 - - [27/Mar/2024:16:46:15 +0100] "GET / HTTP/1.1" 200 34123
Vamos a reiniciar, y volvemos a acceder a https://139.162.206.138
service httpd reload
Ahora el resultado es diferente. Nos aparece un error de denegacion (Forbidden) por lo que ya obtendremos un código 403. El esperado
==> /var/log/httpd/ssl_access_log <==
163.116.176.127 - - [27/Mar/2024:16:51:21 +0100] "GET / HTTP/1.1" 403 -
Por si a alguien le interesa, con Imperva (Incapsula) lo podríamos automatizar del siguiente modo:
15 0 * * * /usr/bin/curl -k -s --data "resp_format=apache" https://my.incapsula.com/api/integration/v1/ips