Linux / Bash:testing我的服务器是否以编程方式/通过CLI打开到Internet

RHEL 6和Bash。 如果我有一个远程服务器来运行nmap ,甚至curl / wget ,但是我只能访问防火墙一侧的服务器,那很容易。

我知道我可以手动检查使用基于互联网的端口扫描工具,并且我认为答案将是提供脚本的站点之一,可以通过命令行访问。 如何在使用服务器的Bash shell时检查服务器上的互联网端口?

TL; DR我希望能够使用该服务器上的Bash来检查服务器上的外部可用端口。

您可以使用netstat -Wplunt获取侦听TCP或UDP端口的每个进程的列表。 这将列出比你想知道的更多。 您可以忽略绑定到::1127.0.0.1所有端口,因为这些端口只能由服务器本身访问。 其余的可能从外面到达。

如何testing防火墙规则是一个单独的问题。 我不知道有一个工具可以使用,但是这个问题之前已经被问过了,关于如何完成这个问题有一些build议。

从外部运行端口扫描不会为您提供所需的最有用的数据。 对外界来说,被防火墙阻塞的端口看起来应该与防火墙中打开的端口相同,但是服务器不在监听。 这意味着您需要进行两次configuration错误才能对外部端口扫描可见。

如果您正确configuration了防火墙或服务器,则外部端口扫描将永远不会显示您在其他位置所做的configuration错误。

这并不是说外部端口扫描是完全没有用的,但是在你的标准程序中,你应该分别关注两层。 一次性的端口扫描可以很容易地从家里的互联网连接完成。

您可以使用像您提到的外部端口扫描服务,它提供了一个可以使用Curl / Wget调用的API。 这里有两个我发现的服务

  1. http://viewdns.info/api/docs/
  2. http://hackertarget.com/port-check/

会有很多其他类似的服务,或者你甚至可以自己托pipe类似的东西,例如 – http://codehill.com/2012/07/a-simple-port-scanner-in-php/