===== cf_iptables ===== vi /opt/myscripts/cf_iptables.sh #!/bin/sh # Define the interface as a variable INTERFACE="ens3" iptables -A INPUT -j DOCKER-USER ip6tables -A INPUT -j DOCKER-USER # Avoid racking up billing/attacks # WARNING: If you get attacked and CloudFlare drops you, your site(s) will be unreachable. iptables -I DOCKER-USER -i "$INTERFACE" -p tcp -m multiport --dports http,https -j DROP ip6tables -I DOCKER-USER -i "$INTERFACE" -p tcp -m multiport --dports http,https -j DROP # Source: # https://www.cloudflare.com/ips # https://support.cloudflare.com/hc/en-us/articles/200169166-How-do-I-whitelist-CloudFlare-s-IP-addresses-in-iptables- for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I DOCKER-USER -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I DOCKER-USER -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done # Avoid racking up billing/attacks # WARNING: If you get attacked and CloudFlare drops you, your site(s) will be unreachable. #iptables -A DOCKER-USER -p tcp -m multiport --dports http,https -j DROP #ip6tables -A DOCKER-USER -p tcp -m multiport --dports http,https -j DROP # WARNING: This does NOT block Cloudflare's clients from accessing your website over HTTP or HTTPS with a Cloudflare Worker. chmod +x /opt/myscripts/cf_iptables.sh vi /etc/systemd/system/docker-iptables.service [Unit] Description=Apply iptables rule to DOCKER-USER chain after Docker starts After=docker.service Requires=docker.service [Service] Type=oneshot ExecStart=/opt/myscripts/cf_iptables.sh [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable docker-iptables.service systemctl start docker-iptables.service