一、四张表五条链
组成部分:四张表 + 5条链(Hook point) + 规则
四张表:filter nat mangle raw
五条链:PREROUTING INPUT FORWARD OUTPUT POSTROUTING
iptables | table | command | chain | Parameter & Xmatch | target |
-t filter nat | -A #追加 -D #删除 -L #列出 -F #恢复默认 -P #设置默认规则 -I #插入 -R #替换 -n #只显示 IP 地址和端口号 | PREROUTING INPUT FORWARD OUTPUT POSTROUTING | -p tcp #协议名称 -s #发起的原地址 -d #目标地址 --sport #源端口 --dport #目标端口 --dports #目标端口段 -m tcp #补充 state multiport | -j ACCEPT DROP REJECT DNAT SNAT |
1、对所有的地址开放本机的tcp(80、22、10-21)端口的访问
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPTiptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPTiptables -t filter -I INPUT -p tcp --dport 10:21 -j ACCEPT
2、允许对所有的地址开放本机的基于ICMP协议的数据包访问
iptables -t filter -I INPUT -p icmp -j ACCEPT
3、其他未被允许的端口则禁止访问
iptables -t filter -A INPUT -j REJECT
二、删除某条规则
找到规则号:
iptables -L INPUT --line-numbersiptables -L ufw-user-input --line-numbers
结果如下:
Chain ufw-user-input (1 references)num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh2 ACCEPT udp -- anywhere anywhere udp dpt:ssh3 ACCEPT tcp -- anywhere anywhere tcp dpt:http4 ACCEPT udp -- anywhere anywhere udp dpt:http5 ACCEPT tcp -- anywhere anywhere tcp dpt:mysql6 ACCEPT udp -- anywhere anywhere udp dpt:mysql7 ACCEPT tcp -- anywhere anywhere tcp dpt:818 ACCEPT udp -- anywhere anywhere udp dpt:819 ACCEPT tcp -- anywhere anywhere tcp dpt:1121110 ACCEPT udp -- anywhere anywhere udp dpt:1121111 ACCEPT tcp -- anywhere anywhere tcp dpt:1121212 ACCEPT udp -- anywhere anywhere udp dpt:11212
然后删除:
iptables -D ufw-user-input 7 iptables -D ufw-user-input 8
三、访问回环地址和访问外部网络
iptables -I INPUT -i lo -j ACCEPT ;-i 对应的网卡iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
四、只允许某IP可以访问某端口
iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 80 -j ACCEPTiptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPTiptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 10:21 -j ACCEPT
注意:进行iptables操作时要允许本机连接22端口,否则可能会失去对服务器控制。