在iptables里有2个表,filter,nat。
filter表用作包抓取与匹配,nat用于地址转换。
filter表中有两个链,INPUT和FORWARD。
INPUT链匹配目的IP地址是本机的包。
FORWARD链匹配穿过本机的数据包。
nat表中有两个链,PREROUTING和POSTROUTING。
PREROUTING链用于修改目的地址DNAT。
POSTROUTING链用于修改源地址SNAT。
iptables -t 表 命令 链 规则号 匹配条件 -j 动作
阻止与通过:
添加规则,拒绝所有包:
iptables -t filter -A INPUT -j DROP
在INPUT链最初插入规则,拒绝所有的包:
iptables -t filter -I INPUT -j DROP
在INPUT链第二条之前插入规则,拒绝所有的包:
iptables -t filter -I INPUT 2 -j DROP
在INPUT链尾部添加规则,拒绝来自192.168.1.222的包:
iptables -t filter -A INPUT -s 192.168.1.222 -j DROP
在INPUT链中删除第2行规则:
iptables -t filter -D INPUT 2
在INPUT链中,替换第3条规则的动作:
iptables -t filter -R INPUT 3 -j ACCEPT
设置表默认策略为DROP:
iptables -t filter -P INPUT DROP
清空表中的所有规则链(不能清除默认策略):
iptables -t filter -F INPUT
iptables -t nat -F PREROUTING
查看所有的链规则:
iptables -t filter -vnL
iptables -t nat -vnL
iptables -t filter -vnL INPUT
阻止所有从192.168.1.22来的80端口的访问包:
iptables -t filter -A INPUT -s 192.168.1.22 --dport 80 -j DROP
阻止所有从192.168.1.22来的进入eth0的tcp包:
iptables -t filter -A INPUT -s 192.168.1.22 -p tcp -i eth0 -j DROP
阻止所有从本机前往192.168.1.25的包:
iptables -t filter -A OUTPUT -d 192.168.1.25 -o eth0 -j DROP
阻止所有从211.154.172.0网段前往本机的访问80的包:
iptables -t filter -A INPUT -s 211.154.172.0/24 -p tcp --dport 80
加入允许211.154.172.0前往本机访问的udp包:
iptables -t filter -A INPUT -s 211.154.172.0/24 -p udp -j ACCEPT
阻止来源于192.168.1.1的数据包通过本机:
iptables -t filter -A FORWARD -s 192.168.1.1 -j DROP
转发:
把eth0接到的TCP80数据包送往192.168.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把eth0接到的TCP80数据包送往192.168.0.1~192.168.0.10
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10
把eth0接到的TCP80数据包送往192.168.0.1
iptables -t nat -A POSTROUTING -j SNAT --to 10.10.10.1
同时匹配多端口,80和22
iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
WEB服务器防护
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m muoltiport --dports 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
网关:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
限制内网用户:
iptables -A FORWARD -s 192.168.0.3 -j DROP
iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -j DROP
iptables -A FORWARD -d bbs.chinaunix.net -j DROP
内网对外做服务器:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 1521 -j DNAT --to 192.168.1.2:80
必加项:
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses