主要使用iptables的string扩展模块,使用string参数阻止访问特定网站的http/https服务,使用hex-string参数阻止对特定域名进行DNS解析。
比如,阻止访问baidu.com的http/https服务。其中--string参数指定需要屏蔽的网站地址中包含的字符串关键字, --algo指定字符串匹配算法,支持bm和kmp两种算法。
#disable some http/https requestiptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROPiptables -A INPUT -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROPiptables -A FORWARD -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROP
阻止对包含baidu.com的域名进行解析的代码如下。其中--hex-string参数中的05和03表示字符串的长度。
#disable some dns query.iptables -A OUTPUT -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A INPUT -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A FORWARD -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A OUTPUT -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A INPUT -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A FORWARD -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROP
完整代码如下:
iptables -Fiptables -Xiptables -Ziptables -t nat -Fiptables -t nat -Xiptables -t nat -Ziptables -t mangle -Fiptables -t mangle -Xiptables -t mangle -Ziptables -t raw -Fiptables -t raw -Xiptables -t raw -Ziptables -t security -Fiptables -t security -Xiptables -t security -Zif [ "$1" = "stop" ]thenecho "WARNING:iptables stopped."iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P INPUT ACCEPTiptables -t nat -P OUTPUT ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPTiptables -t mangle -P OUTPUT ACCEPTiptables -t mangle -P PREROUTING ACCEPTiptables -t raw -P PREROUTING ACCEPTiptables -t raw -P OUTPUT ACCEPTiptables -t security -P INPUT ACCEPTiptables -t security -P OUTPUT ACCEPTiptables -t security -P FORWARD ACCEPTiptables -L -n -v --line-numbersexitfiiptables -P INPUT ???DROPiptables -P OUTPUT ??DROPiptables -P FORWARD ?DROPiptables -t mangle -P OUTPUT ACCEPTiptables -t mangle -P PREROUTING ACCEPTiptables -t raw -P PREROUTING ACCEPTiptables -t raw -P OUTPUT ACCEPTiptables -t security -P INPUT ACCEPTiptables -t security -P OUTPUT ACCEPTiptables -t security -P FORWARD ACCEPT#localhostiptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPTiptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPTiptables -A INPUT ??-s ${IP_WAN} -d ${IP_WAN} -j ACCEPTiptables -A OUTPUT ?-s ${IP_WAN} -d ${IP_WAN} -j ACCEPTiptables -A INPUT ??-s ${IP_LAN} -d ${IP_LAN} -j ACCEPTiptables -A OUTPUT ?-s ${IP_LAN} -d ${IP_LAN} -j ACCEPT#inside subnet.iptables -A INPUT -s ${IP_INSIDE} ?-j REJECT iptables -A OUTPUT -d ${IP_INSIDE} -j REJECT#disable some http/https requestiptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROPiptables -A INPUT -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROPiptables -A FORWARD -p tcp -m multiport --dports 80,443 -m string --string "baidu.com" --algo bm -j DROP#disable some dns query.iptables -A OUTPUT -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A INPUT -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A FORWARD -p tcp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A OUTPUT -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A INPUT -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A FORWARD -p udp -m multiport --dports 53 -m string --hex-string "|05|baidu|03|com" --algo bm -j DROPiptables -A OUTPUT -p tcp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROPiptables -A INPUT -p tcp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROPiptables -A FORWARD -p tcp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROPiptables -A OUTPUT -p udp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROPiptables -A INPUT -p udp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROPiptables -A FORWARD -p udp -m multiport --dports 53 -m string --hex-string "|03|163|03|com" --algo bm -j DROP#ping xxxiptables -A OUTPUT -o ${ETH_WAN} -p icmp -s ${THIS_SERVER} -j ACCEPTiptables -A INPUT -i ${ETH_WAN} -p icmp -d ${THIS_SERVER} ?-j ACCEPT#dns lookupiptables -A OUTPUT -o ${ETH_WAN} -p udp ??-s ${THIS_SERVER} ?-d ${DNS_SERVER} --dport ${DNS_PORT} -j ACCEPTiptables -A INPUT -i ${ETH_WAN} -p udp ??-s ${DNS_SERVER} --sport ${DNS_PORT} -d ${THIS_SERVER} ?-j ACCEPT iptables -A OUTPUT -o ${ETH_WAN} -p tcp ??-s ${THIS_SERVER} ?-d ${DNS_SERVER} --dport ${DNS_PORT} -j ACCEPTiptables -A INPUT -i ${ETH_WAN} -p tcp ??-s ${DNS_SERVER} --sport ${DNS_PORT} -d ${THIS_SERVER} -m state --state RELATED,ESTABLISHED ?-j ACCEPT #http browseriptables -A OUTPUT -o ${ETH_WAN} -p tcp --match multiport --dports ${HTTP_PORT} -j ACCEPTiptables -A INPUT -i ${ETH_WAN} -p tcp --match multiport --sports ${HTTP_PORT} -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A INPUT ?-j LOG --log-prefix "iptables"iptables-save > /etc/sysconfig/iptables
Linux系统安全04使用iptables阻止访问特定网站
原文地址:https://www.cnblogs.com/coe2coe/p/9060092.html