feat(haproxy): ship trusted-proxy source lists for header gating

This commit is contained in:
2026-08-13 13:23:52 -07:00
parent 77b8cb029b
commit af9fb1d2f0
4 changed files with 51 additions and 0 deletions
+2
View File
@@ -31,6 +31,8 @@ COPY haproxy_manager.py /haproxy/
COPY scripts /haproxy/scripts
COPY trusted_ips.list /etc/haproxy/trusted_ips.list
COPY trusted_ips.map /etc/haproxy/trusted_ips.map
COPY cloudflare_ips.list /etc/haproxy/cloudflare_ips.list
COPY trusted_proxies.list /etc/haproxy/trusted_proxies.list
# /etc/haproxy is a named volume in deployed containers, so baked-in files
# under that path get shadowed by the volume on existing deployments.
# Place errorfiles outside the volumed path; the HAProxy config references
+34
View File
@@ -0,0 +1,34 @@
# Cloudflare edge ranges — peers allowed to set CF-Connecting-IP / X-Real-IP /
# X-Forwarded-For. Referenced by templates/hap_listener.tpl:
# acl from_trusted_proxy src -f /etc/haproxy/cloudflare_ips.list -f /etc/haproxy/trusted_proxies.list
#
# PUBLIC DATA — safe to commit. Source: https://www.cloudflare.com/ips-v4
# and https://www.cloudflare.com/ips-v6. Keep in sync with the IPv4 snapshot in
# WHP's ssl_renewal_orchestrator.php::isCloudflareIP() (that one is IPv4-only).
# Refresh at release time; Cloudflare has not added a range since 2021.
#
# IPv4
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/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22
#
# IPv6
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
+2
View File
@@ -21,6 +21,8 @@ set -eo pipefail
mkdir -p /etc/haproxy
[ -f /etc/haproxy/trusted_ips.list ] || : > /etc/haproxy/trusted_ips.list
[ -f /etc/haproxy/trusted_ips.map ] || : > /etc/haproxy/trusted_ips.map
[ -f /etc/haproxy/cloudflare_ips.list ] || : > /etc/haproxy/cloudflare_ips.list
[ -f /etc/haproxy/trusted_proxies.list ] || : > /etc/haproxy/trusted_proxies.list
cron &
+13
View File
@@ -0,0 +1,13 @@
# Additional trusted reverse proxies — peers permitted to set CF-Connecting-IP,
# X-Real-IP and X-Forwarded-For. Anything NOT matched here or in
# cloudflare_ips.list has those headers stripped before real-IP resolution.
#
# Referenced by templates/hap_listener.tpl.
#
# Leave EMPTY unless a real proxy sits in front of HAProxy on this host. Adding
# a range here lets that peer assert any client identity, which bypasses rate
# limits, IP blocks and the WAF for it.
#
# Do NOT commit real IPs — this repo is mirrored publicly. Add entries directly
# on the server; the file lives in the /etc/haproxy named volume and persists
# across container recreates.