做个备忘,
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
establieshed和related不允许,就不能持续传输数据,等于没放开。
icmp不允许的话,不能ping通这机器。
lo本机回环,加上吧!
22是ssh默认端口,如果是其他端口,就写其他的。不允许就不能远程管理。
REJECT一切,表示只要不是上面所列的允许项目的一概禁止。
如果需要对一大堆端口放行,就加上下面这行
-A INPUT -p tcp -m multiport --destination-port 22,80,443,8080 -j ACCEPT
如果是对一个范围的端口放行,比如vnc的5901-5944放行,那就写下面这行
-A INPUT -p tcp -m multiport --destination-port 5901:5944 -j ACCEPT
还可以把这一堆全连起来写,如下:
-A INPUT -s 123.112.0.0/12,135.227.0.128/25 -m state --state NEW -p tcp -m multiport --dports 22,80,443,8080,5901:5944 -j ACCEPT
如果是取反,就加叹号。比如不允许123.112.0.0/12,135.227.0.128/25访问,就在-s前面加个叹号别忘了叹号后面有空格。例如filter表INPUT链第三条规则插个禁止访问,走下面这条儿。
iptables -I INPUT 3 ! -s 123.112.0.0/12,135.227.0.128/25 -m state --state NEW -p tcp -m multiport --dports 22,80,443,8080,5901:5944 -j DROP
查看现有规则(带行号)
iptables -t 表名儿 -nvL 链名儿 --line
比如iptables -t nat -nvL wan_icmp_input --line其中wan_icmp_input是自定义链名儿,就是自己建立的链里面包含一堆相同目的的规则,便于启停管理。
比如iptables -t filter -nvL OUTPUT查看filter表的网络上行规则。