Ejemplo de protección bajo el enorme paragüas de CloudFlare. CloudFlare además de protección DDoS incluye opciones de CDN, caché y demás, con lo que mejora la velocidad del sitio. Tiene soporte total SSL (https en la pestaña Crypto con opciones Full, Full Strict, Flexible) e incluye numerosas opciones extras como:
- Prevención y protección Hotlinking (imágenes)
- Caché páginas (CDN y offline) (Optimización CSS, JS y HTML)
- Ofuscación e-mails
- Verificación integridad del navegador (empty user agent)
- Previene usuarios se hagan pasar por GoogleBot usando User-Agent mirando el rango de ip (66.249.64.0/19) (Prevent fake googlebots from crawling)
- Reglas personalizadas en una página (Page Rules)
- Optimización de imágenes (Plan pro y superiores)
- Web Aplication Firewall (WAF) OWASP
¿Cómo funciona CloudFlare?
Para el que no lo sepa CloudFlare es como un servidor proxy enorme, CloudFlare sirve la página a los usuarios, pero primero se conecta al servidor real, y luego le sirve la página al visitante, simplemente hace de intermediario, de proxy transparente.CloudFlare tiene 4 planes:
- Gratuito
- Pro - 20$ mes
- Professional - 200$ mes
- Enterprise - Media de 5.000$ mes
Se puede instalar el mod_cloudflare para el servidor web Apache 2.2.x y 2.4.x para ver las ip's reales que acceden y que en los logs salgan las ip's reales de acceso y no las ip's de CloudFlare.
La "lista blanca" la cantidad inmensa de ip's que tiene CloudFlare (servidores también en Madrid)
El rango 188.114.98.0/24 se encuentra en Madrid en ESPanix
https://www.cloudflare.com/ips
Podemos usar iptables para denegar el tráfico http y https que no provengan de las ip's de CloudFlare:IPv4
199.27.128.0/21
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/12
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -s $i --dport http -j ACCEPT; done
Reglas iptables
# cloudflare ips rangeO usando la opción multiport de iptables:
#http
-A INPUT -s 199.27.128.0/21 -p tcp --dport http -j ACCEPT
-A INPUT -s 173.245.48.0/20 -p tcp --dport http -j ACCEPT
-A INPUT -s 103.21.244.0/22 -p tcp --dport http -j ACCEPT
-A INPUT -s 103.22.200.0/22 -p tcp --dport http -j ACCEPT
-A INPUT -s 103.31.4.0/22 -p tcp --dport http -j ACCEPT
-A INPUT -s 141.101.64.0/18 -p tcp --dport http -j ACCEPT
-A INPUT -s 108.162.192.0/18 -p tcp --dport http -j ACCEPT
-A INPUT -s 190.93.240.0/20 -p tcp --dport http -j ACCEPT
-A INPUT -s 188.114.96.0/20 -p tcp --dport http -j ACCEPT
-A INPUT -s 197.234.240.0/22 -p tcp --dport http -j ACCEPT
-A INPUT -s 198.41.128.0/17 -p tcp --dport http -j ACCEPT
-A INPUT -s 162.158.0.0/15 -p tcp --dport http -j ACCEPT
-A INPUT -s 104.16.0.0/12 -p tcp --dport http -j ACCEPT
-A INPUT -s 172.64.0.0/13 -p tcp --dport http -j ACCEPT
#https
-A INPUT -s 199.27.128.0/21 -p tcp --dport https -j ACCEPT
-A INPUT -s 173.245.48.0/20 -p tcp --dport https -j ACCEPT
-A INPUT -s 103.21.244.0/22 -p tcp --dport https -j ACCEPT
-A INPUT -s 103.22.200.0/22 -p tcp --dport https -j ACCEPT
-A INPUT -s 103.31.4.0/22 -p tcp --dport https -j ACCEPT
-A INPUT -s 141.101.64.0/18 -p tcp --dport https -j ACCEPT
-A INPUT -s 108.162.192.0/18 -p tcp --dport https -j ACCEPT
-A INPUT -s 190.93.240.0/20 -p tcp --dport https -j ACCEPT
-A INPUT -s 188.114.96.0/20 -p tcp --dport https -j ACCEPT
-A INPUT -s 197.234.240.0/22 -p tcp --dport https -j ACCEPT
-A INPUT -s 198.41.128.0/17 -p tcp --dport https -j ACCEPT
-A INPUT -s 162.158.0.0/15 -p tcp --dport https -j ACCEPT
-A INPUT -s 104.16.0.0/12 -p tcp --dport https -j ACCEPT
-A INPUT -s 172.64.0.0/13 -p tcp --dport https -j ACCEPT
#Block HTTP from other sources
-A INPUT -p tcp --dport http -j LOG --log-prefix "Ataque http " --log-level 4
-A INPUT -p tcp --dport http -j DROP
#Block HTTPS from other sources
-A INPUT -p tcp --dport https -j LOG --log-prefix "Ataque https " --log-level 4
-A INPUT -p tcp --dport https -j DROP
#http y https
-A INPUT -p tcp -m multiport --dports http,https -s 199.27.128.0/21 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 173.245.48.0/20 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 103.21.244.0/22 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 103.22.200.0/22 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 103.31.4.0/22 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 141.101.64.0/18 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 108.162.192.0/18 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 190.93.240.0/20 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 188.114.96.0/20 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 197.234.240.0/22 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 198.41.128.0/17 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 162.158.0.0/15 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 104.16.0.0/12 -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s 172.64.0.0/13 -j ACCEPT
#Block HTTP from other sources
-A INPUT -p tcp --dport http -j LOG --log-prefix "Ataque http " --log-level 4
-A INPUT -p tcp --dport http -j DROP
#Block HTTPS from other sources
-A INPUT -p tcp --dport https -j LOG --log-prefix "Ataque https " --log-level 4
-A INPUT -p tcp --dport https -j DROP
Configurando CloudFlare
Lo primero que hay que hacer para usar CloudFlare es usar sus servidores DNS, en nuestro caso los servidores dns asignados son:- lily.ns.cloudflare.com
- sri.ns.cloudflare.com
Cuando esté OFF la Ip será directamente la de nuestro servidor web y cuando esté ON apuntará a las ip's de CloudFlare
Estadísticas (Dashboard) de CloudFlare (Analytics)
Esconder-ocultar la ip real del servidor en CloudFlare
En futuras entradas explicaremos cómo esconder la ip real (CloudFlare "bypass") del servidor. La única manera de sacarla es por el servidor de e-mail (mirando las cabeceras del e-mail), pero se puede poner el servicio de e-mail en otro servidor con otra ip totalmente diferente (ni del mismo rango). También hay que vigilar las entradas dns como ftp, etc. Y los registros SPF del correo del las entradas DNS, dónde se indican los servidores de e-mail reales (válidos).We added a FTP subdomain for you that does not pass through the CloudFlare network. If in the past you FTPed directly to elhacker.net, now you should FTP to ftp.elhacker.net. You can change the default name of the subdomain to something other than ftp for enhanced security.
http://blog.cloudflare.com/ddos-prevention-protecting-the-origin/
Opciones del Firewall - Bloqueo de CloudFlare
CloudFlare tiene 5 modos de acceso de países, ips o rangos de ip's, ASN, o redes como Tor :
- Bloqueado: (blackList) sin acceso
- Captcha: (imagen para verificar que la petición es humana) y si puede validar por x tiempo.
- Whitelist: (lista blanca)
- JavaScript Challange: (comprobación del navegador, 5 segundos de espera para ver si la petición es correta).
Opciones de Configuracion de CloudFlare
elhacker.NET no era nada partidario de usar CloudFlare, pero la verdad es que no ha quedado más remedio, llevando baneadas más 6.600 ip's y seguían saliendo de nuevas...
Fácil, simple y efectivo.
Seguridad
Niveles de Seguridad
- Off
- Low (bajo)
- Medium
- High
- I'm Under Attack
Ajuste el nivel de seguridad básica para modificar el comportamiento CloudFlare de protección en relación con la cual los visitantes se muestran una página Captcha / desafío. Una configuración de baja seguridad desafiará sólo los visitantes más amenazantes. Un entorno de alta seguridad desafiará a todos los visitantes que han exhibido un comportamiento amenazante en los últimos 14 días. Esencialmente off actuará sólo contra los delincuentes más graves. Se recomienda iniciar a cabo en medio (el valor predeterminado) para proteger adecuadamente a su sitio.
Estoy En Modo Ataque (I'm Under Attack) sólo debe utilizarse cuando un sitio está teniendo un ataque DDoS. Los visitantes recibirán una página intersticial durante unos cinco segundos, mientras se analiza el tráfico y el comportamiento para asegurarse de que es un visitante humano legítimo tratar de acceder a su sitio.
- Ejemplo página "I'm Under Attack"
API CloudFlare
Puedes usar la API de CloudFlare para activar automáticamente el modo I'm Under Attack, por ejemplo cuando las cargas (Lod Average) sean superiores a x:
Script Bash:
#!/bin/sh
curl https://www.cloudflare.com/api_json.html \
-d 'a=sec_lvl' \
-d 'tkn=XXXXXXXXXXXXX' \
-d 'email=XXXXXXX@elhacker.net' \
-d 'z=elhacker.net' \
-d 'v=help'
Otros ejemplos usando la API de CloudFlare
https://www.cloudflare.com/docs/client-api.html
La nueva API de CloudFlare es la v4:
https://api.cloudflare.com/
La nueva API permite cambiar los valores por:
- Zones (Zona, dominios, This Website) Usando https://api.cloudflare.com/client/v4/zones/xxxxx/
- Usuario (Todos los dominios, All your websites) Usando https://api.cloudflare.com/client/v4/user
Ejemplo anterior usando la nueva API:
#!/bin/shCuando bajen las cargas podemos poner de nuevo en "norma"l con --data '{"value":"low"}'
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/xxxx/settings/security_level" \
-H "X-Auth-Email:xxxxx@elhacker.net" \
-H "X-Auth-Key: xxxxx" \
-H "Content-Type: application/json" \
--data '{"value":"under_attack"}'
Otro ejemplo: se puede poner un País, en este caso España con la protección JavaScript Challange:
#!/bin/shPodemos luego poner el mismo país en la lista blanca (Whitelist) con "mode":"whitelist",
curl -X POST "https://api.cloudflare.com/client/v4/zones/xxxxx/firewall/access_rules/rules" \
-H "X-Auth-Email: xxxxx@elhacker.net" \
-H "X-Auth-Key: xxxxxxx" \
-H "Content-Type: application/json" \
--data '{"mode":"js_challenge","configuration":{"target":"country","value":"ES"}}'
Aquí puedes configurar el TTL del "Challenge Passage"
Puede especificar el tiempo que se permite a un visitante el acceso a su sitio luego de completar con éxito un reto (como un CAPTCHA de). Una vez transcurrido el TTL el visitante tendrá que completar un nuevo desafío. Recomendamos a 15 - 45 minutos y ajuste intentaremos honrar cualquier ajuste por encima de 45 minutos. Se puede llegar a la opción de desafío Page TTL yendo a: Settings-> CloudFlare Settings-> Configuración de seguridad
Ejemplo de gráfica de ataque en CloudFlare (Analytics - Dashboard)
- 50 millones de hits (peticiones)
- 310gb de tráfico (transferencia) en un día.
5 millones de hits por hora
60Gb de Ancho de banda por hora (Bandwidth)
Nivel de Cacheo (Rendimiento)
Caching level
Adjust your caching level to modify CloudFlare's caching behavior. Learn more…
Aggressive: http://elhacker.net/pic.jpg?with=query
Simplified: http://elhacker.net/pic.jpg?ignore=this-query-string
Basic: http://elhacker.net/pic.jpg
Panel de control (Threat control) ahora llamado IP Firewall
CloudFlare permite banear a la cantidad de ip's que quieras, países enteros, miles y millones de ip's y podrán seguir entrando y visitando tu página web gracias a CloudFlare, ya que si entran usando CloudFlare las ip's que se conectan al servidor web son todas de CloudFlareWeb Application Firewall (WAF)
Web CloudFlare Application Firewall detiene los ataques en tiempo real como la inyección SQL, cross-site scripting (XSS), los comentarios no deseados y otros abusos en el borde de la red. Los ajustes por defecto incluyen cobertura para las vulnerabilidades fundamentales de OWASP. Puedes activar o desactivar reglas individuales a continuación.Permite CloudFlare para CMS y motores PHP
- CloudFlare Plone
- CloudFlare Php
- CloudFlare Whmcs
- CloudFlare Joomla
- CloudFlare Magento
- CloudFlare Plone
- CloudFlare WordPress
- CloudFlare Flash
- CloudFlare Drupal
- OWASP ModSecurity Core Rule Set
- OWASP Protocol Violations
- OWASP Bad Robots
- OWASP Protocol Anomalies
- OWASP Slr Et PhpBB Attacks
- OWASP Request Limits
- OWASP HTTP Policy
- OWASP Generic Attacks
- OWASP XSS Attacks
- OWASP Slr Et SQLi Attacks
- OWASP Slr Et Lfi Attacks
- OWASP Slr Et WordPress Attacks
- OWASP Slr Et XSS Attacks
- OWASP Common Exceptions
- OWASP Slr Et RFI Attacks
- OWASP Tight Security
- OWASP Trojans
- OWASP Slr Et Joomla Attacks
- Empty User-Agent
- IE6 Binary POST Botnet
- CtrlFunc Botnet
- Numbers Botnet
- Uppercase Letters Botnet
- Six or more numbers
- Missing or Empty User-Agent and Referer
- Generic LFI against common paths
- Newsletter Tailor RFI
- Generic RCE against common commands
- SQLi probing
- SQLi attempt
- SQLi probe
- Request arguments containing NUL byte
- 80 legs crawler
- Filter out any HTML links
- Block X-Forwarded-Host header
- Block requests on non standard ports
- Block requests to version control systems
- Block Wow! Signal Comment Bot
- Generic LFI against common paths
- Request arguments containing NUL byte (nyet.gif (PUT request))
- Generic RCE against common commands
- Common DDoS flood
- Empty User-Agent
- Missing or Empty User-Agent and Referer
Personalización de Errores en CloudFlare (Custom Errors)
Con el plan Pro y superiores se pueden personalizar las páginas de "error" o avisos que se muestran a los usuarios de nuestra página web cuando ocurre un error, en vez de usar la plantilla por defecto que usa CloudFlareInstrucciones:
- Construye tu página personalizada, y ponlo en línea. El uso del token se requiere como se indica.
- URL de entrada de su página personalizada, que puede estar alojado en cualquier lugar.
- Vista previa para revisar su página tal como aparecerá a sus visitantes, o publicar en subir a la red de CloudFlare.
Tokens
Tokens son de texto simple en el código HTML (:: :: CAPTCHA_BOX) que se sustituyen por módulos predefinidos en su página publicada. Se necesitan algunos tokens; estos se enumeran a continuación el campo correspondiente a continuación.
Token list
::CAPTCHA_BOX::
Displays a styleable CAPTCHA on pages questioning the human-ness of a visitor.
- ::ALWAYS_ONLINE_NO_COPY_BOX::
- Message explaining that Always Online has no cached copy of the requested page.
- ::IM_UNDER_ATTACK_BOX::
- Message explaining that the site is under attack.
- ::CLOUDFLARE_ERROR_1000S_BOX::
- Message explaining that a CloudFlare 10XX error has occurred.
::CLOUDFLARE_ERROR_500S_BOX::
Message explaining that a 5XX error was received from the origin.














No hay comentarios:
Publicar un comentario