nmap
RHEL 6 和 Bash。如果我有一个远程服务器,或者甚至curl
/ ,那么这将很容易运行,wget
但我只能访问防火墙这边的服务器。
我知道我可以使用基于互联网的端口扫描工具手动检查,并且我假设答案将是那些提供可以通过命令行访问的脚本的网站之一。如何使用服务器的 Bash shell 检查服务器上向互联网开放了哪些端口?
TL;DR 我希望能够使用该服务器上的 Bash 检查服务器上有哪些外部可用端口。
答案1
您可以使用netstat -Wplunt
获取侦听 TCP 或 UDP 端口的每个进程的列表。这将列出比您想要了解的更多内容。您可以忽略所有绑定到::1
或的端口127.0.0.1
,因为这些端口只能由服务器本身访问。其余端口可能可以从外部访问。
如何测试防火墙规则是另一个问题。我不知道有什么工具可以做到这一点,但是那个问题之前已经问过,并且有一些关于如何完成的建议。
从外部运行端口扫描不会为您提供最有用的数据。对于外界来说,被防火墙阻止的端口应该看起来与防火墙中打开但服务器未监听的端口相同。这意味着您需要犯两个配置错误,它才会被外部端口扫描发现。
如果您正确配置了防火墙或服务器,外部端口扫描将永远不会揭示您在其他地方所犯的配置错误。
这并不是说外部端口扫描完全没用,但在标准程序中,您应该分别关注这两层。一次性端口扫描可以轻松地通过家中的互联网连接进行。
答案2
您可以使用您提到的外部端口扫描服务,该服务提供了可以使用 Curl/Wget 调用的 API。以下是我发现的两项服务
还有很多其他类似的服务,你甚至可以自己托管一些类似的服务,例如——http://codehill.com/2012/07/a-simple-port-scanner-in-php/