一、四张表五条链
组成部分:四张表 + 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 ACCEPT iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT iptables -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-numbers
iptables -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:ssh 2 ACCEPT udp -- anywhere anywhere udp dpt:ssh 3 ACCEPT tcp -- anywhere anywhere tcp dpt:http 4 ACCEPT udp -- anywhere anywhere udp dpt:http 5 ACCEPT tcp -- anywhere anywhere tcp dpt:mysql 6 ACCEPT udp -- anywhere anywhere udp dpt:mysql 7 ACCEPT tcp -- anywhere anywhere tcp dpt:81 8 ACCEPT udp -- anywhere anywhere udp dpt:81 9 ACCEPT tcp -- anywhere anywhere tcp dpt:11211 10 ACCEPT udp -- anywhere anywhere udp dpt:11211 11 ACCEPT tcp -- anywhere anywhere tcp dpt:11212 12 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 ACCEPT iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPT iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 10:21 -j ACCEPT
注意:进行iptables操作时要允许本机连接22端口,否则可能会失去对服务器控制。