強化網站安全:只允許 Cloudflare IP 的防火牆設定教學(附指令範例)

2025-03-27 00:07:35 | Linux | 16 Reads

你可以透過兩種方式來實作這個建議,取決於你的伺服器環境:


1. 設定防火牆,只允許 Cloudflare 的 IP(推薦

目的: 避免任何非 Cloudflare 來源直接訪問你的伺服器,強化安全性。

步驟如下(以 Linux 為例):

🔸 1. 取得 Cloudflare 的 IP 列表:

Cloudflare 公開 IP 清單網址(可 script 自動更新):

curl https://www.cloudflare.com/ips-v4 -o cloudflare-ips-v4.txt
curl https://www.cloudflare.com/ips-v6 -o cloudflare-ips-v6.txt

🔸 2. 設定 iptables(或 ufw、firewalld)

🔧 若使用 iptables:

# 先清除現有規則(小心!)
iptables -F

# 允許 Cloudflare IP
for ip in $(cat cloudflare-ips-v4.txt); do
    iptables -A INPUT -p tcp -s $ip --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp -s $ip --dport 443 -j ACCEPT
done

# 阻擋其他來源
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP

❗注意:如果你還需要透過 SSH(例如 port 22)來連線,記得加上:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

🔸 3. 保存規則

依據系統不同:

# Debian/Ubuntu
apt install iptables-persistent
netfilter-persistent save

# CentOS
service iptables save

⚠️ 2. 暫時封鎖特定惡意 IP(應急做法)

如果你不方便立刻設定完整 Cloudflare IP 白名單,可臨時封鎖特定 IP:

iptables -A INPUT -s 54.222.187.25 -j DROP
iptables -A INPUT -s 58.146.59.84 -j DROP
iptables -A INPUT -s 121.1.252.91 -j DROP

記得日後再移除或管理這些規則。


🧠 延伸建議:

  • 可以用 fail2ban 自動封鎖異常 IP

  • 用 Cloudflare 的 "防火牆規則" 限制某些國家或 User-Agent

  • 如果你用的是 Nginx/Apache,也可以設置只接受 Cloudflare 的 X-Forwarded-For 頭部,進一步過濾來源

This article was last edited at 2025-03-27 00:07:35