我如何检查特定服务使用了哪些防火墙规则以及端口是否被阻止以限制外部用户的访问?
IE
netstat -tulnp | grep 123
udp 0 0 0.0.0.0:123 0.0.0.0:* 1542/ntpd
我在输出中看不到LISTEN
或。ESTABLISHED
答案1
当前生效的防火墙规则显示如下:
iptables -L -n -v
用于监听的端口显示为
ss -lntp
ss -lnup
分别用于 TCP 和 UDP 连接。
如果你愿意的话,你可以通过以下方式很好地了解另一台机器上发生的事情(并且,为了完整起见,也可以在你自己机器上发生)nmap
:
nmap -p PORT_NUMBERS IP_ADDRESS
这将返回端口的状态为open
(一个进程正在监听它,并且没有防火墙),closed
(没有人在监听它),filtered
(防火墙正在保护端口,并且nmap
无法判断端口是否打开),unfiltered
当端口响应时nmap
,无法判断端口是否打开。
您发布的命令(已过时,请使用ss
)用于显示监听端口,因此如果您感兴趣的端口未显示,则表示应该使用该端口的进程未运行。
答案2
一种方法是使用tcpdump
工具。你绑定到一个接口并说什么然后你就可以调试正在发生的事情。
因此,您想要查看端口 123 上的 UDP 数据包。您可以使用如下命令:
tcpdump -i any -n udp port 123
在那里,您将看到您的机器在该端口上接收的数据报。如果您没有看到任何 UDP 数据报,它甚至可以帮助您调试其他一些问题。如果这还不够,您可以使用LOG
iptables 命令中的操作,因此您的规则也将类似于:
iptables -I INPUT -i eth0 -s 1.2.3.4 -p udp --dport 123 -j LOG
这样,任何匹配的规则都将被记录到您的系统日志中,您可以跟踪它是否按预期工作。