iptables
一、在服务器上打开 22、80、9011端口:
iptables -A INPUT -p tcp --dport 9011 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9011 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
二:关闭所有其他的端口:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
三:查看iptables:
iptables -L -n --line-number
---------------------------------
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:9011
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
四:删除第三条规则:
iptables -D INPUT 3
iptables -D OUTPUT 3
五: iptables配置顺序
如下: 想要增加 9021 端口, 执行
iptables -A INPUT -p tcp --dport 9021 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9021 -j ACCEPT
后发现 9021 端口还是不通。查看 配置的规则, 因为 第六条规则 reject-with icmp-host-prohibited 拒绝了所有的请求,在这条规则后面的 允许9021 、9020 的 都没有生效。
[root@localhost nginx]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9020 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9020 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9021 10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9021 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:9020 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:9021
要想允许访问 9021 端口,需要执行:
iptables -I INPUT 3 -p tcp --dport 9021 -j ACCEPT
把 允许 9021 的规则插入到 icmp-host-prohibited 前面。
[root@localhost nginx]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9021 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9020 8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9020 10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9021 11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9021 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:9020 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:9021
这样 telnet 该机器的 9021 端口才能通。