666 words
3 minutes
使用 iptables 限制特定 IP 範圍訪問80Port
起因
最近有一個需求,需要使用Cloudflare Zero Trust來限制一些東西,但是若是Source IP洩漏就可以輕易的繞過這個限制,所以需要使用iptables來限制特定IP範圍訪問80Port,所以我就紀錄一下 水一篇,如果有
這邊有Cloudflare的IP範圍可以參考Cloudflare IP範圍
或是文字清單版Cloudflare IP範圍
使用iptables限制特定IP範圍訪問80Port
首先我們需要先確認一下iptables是否有安裝,如果沒有安裝的話可以使用以下指令安裝
apt-get install iptables -y
接著我們需要先確認一下目前的iptables規則
iptables -L
也可以清除目前的規則
iptables -F
接著我們需要新增
# 允許所有已建立的連接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允許指定的 IP 範圍訪問 80 端口
iptables -A INPUT -p tcp --dport 80 -s 173.245.48.0/20 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 103.21.244.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 103.22.200.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 103.31.4.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 141.101.64.0/18 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 108.162.192.0/18 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 190.93.240.0/20 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 188.114.96.0/20 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 197.234.240.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 198.41.128.0/17 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 162.158.0.0/15 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 104.16.0.0/13 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 104.24.0.0/14 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 172.64.0.0/13 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 131.0.72.0/22 -j ACCEPT
# 拒絕其他所有訪問 80 端口的請求
iptables -A INPUT -p tcp --dport 80 -j DROP
# 允許所有其他入站流量
iptables -P INPUT ACCEPT
這樣就完成了,可以使用iptables -L
來確認一下目前的規則 大概會長這樣
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- 173.245.48.0/20 anywhere tcp dpt:http
ACCEPT tcp -- 103.21.244.0/22 anywhere tcp dpt:http
ACCEPT tcp -- 103.22.200.0/22 anywhere tcp dpt:http
ACCEPT tcp -- 103.31.4.0/22 anywhere tcp dpt:http
ACCEPT tcp -- 141.101.64.0/18 anywhere tcp dpt:http
ACCEPT tcp -- 108.162.192.0/18 anywhere tcp dpt:http
ACCEPT tcp -- 190.93.240.0/20 anywhere tcp dpt:http
ACCEPT tcp -- 188.114.96.0/20 anywhere tcp dpt:http
ACCEPT tcp -- 197.234.240.0/22 anywhere tcp dpt:http
ACCEPT tcp -- 198.41.128.0/17 anywhere tcp dpt:http
ACCEPT tcp -- 162.158.0.0/15 anywhere tcp dpt:http
ACCEPT tcp -- 104.16.0.0/13 anywhere tcp dpt:http
ACCEPT tcp -- 104.24.0.0/14 anywhere tcp dpt:http
ACCEPT tcp -- 172.64.0.0/13 anywhere tcp dpt:http
ACCEPT tcp -- 131.0.72.0/22 anywhere tcp dpt:http
DROP tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
結論
這樣就完成了,這樣就可以限制特定IP範圍訪問80Port了,另外在下規則之前記得先看一下,不然會把自己擋在外面,親身經歷。