我正在编写一个需要检查iptables是否为空的脚本。
我唯一的想法就是“iptables-save”并将其与空iptables的“iptables-save”进行比较。
但是,我不确定我是否可以指望“iptables-save”在每个主机上为空iptables产生相同的结果。
有什么想法吗?
答案 0 :(得分:2)
您可以使用iptables-save
和grep来查看以-
开头的行:
清空iptables:
sudo iptables-save | grep '^\-' | wc -l
0
非空:
sudo iptables-save | grep '^\-' | wc -l
13
答案 1 :(得分:1)
您是否尝试过--list
( - L)参数?
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
该输出显示没有防火墙条目。
如果确实输出了,你会看到类似的东西......
$ sudo iptables -n -L -v --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
5 wanin all -- 0.0.0.0/0 0.0.0.0/0
6 wanout all -- 0.0.0.0/0 0.0.0.0/0
7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain wanin (1 references)
num target prot opt source destination
Chain wanout (1 references)
num target prot opt source destination
编辑:这是您可以使用的一个班轮:echo "$(sudo iptables -n -L -v --line-numbers)" | egrep "^[0-9]"
。那么只测试$?是1还是0.如果为0,则存在活动的防火墙规则,如果为1则没有活动规则。
$ echo "$(sudo iptables -n -L -v --line-numbers)" | egrep "^[0-9]"
1 0 0 DROP all -- * * 202.54.1.2 0.0.0.0/0
$
$ echo $?
0
$
$ sudo iptables -D INPUT 1
$
$ echo "$(sudo iptables -n -L -v --line-numbers)" | egrep "^[0-9]"
$ echo $?
1
编辑:或者使用wc -l可能会更好....
echo "$(sudo iptables -n -L -v --line-numbers)" | egrep "^[0-9]" | wc -l