iptables HTTP 白名单:
iptables -N httpacl
# 放行不带 Host:头的数据
iptables -A httpacl -m string ! --hex-string "|0d0a|Host:" --algo bm --from 12 -j RETURN
# 放行百度
iptables -A httpacl -m string --hex-string "
baidu.com|0d0a|" --algo bm --from 17 -j RETURN
# 屏蔽其他数据
iptables -A httpacl -p tcp -j REJECT --reject-with tcp-reset
# 只匹配 80 端口 HTTP GET 或 HEAD 数据包到白名单
iptables -A INPUT -p tcp --dport 80 -m u32 --u32 "0x0>>0x16&0x3c@0xc>>0x1a&0x3c@0x0=0x47455420" -j httpacl
iptables -A INPUT -p tcp --dport 80 -m u32 --u32 "0x0>>0x16&0x3c@0xc>>0x1a&0x3c@0x0=0x48454144" -j httpacl
其中:
0d0a == "\r\n"
47455420 == "GET "
48454144 == "HEAD"