如何在 Linux RHEL 5.3 上查找启用 SSL 的端口或 SSL 实例

如何在 Linux RHEL 5.3 上查找启用 SSL 的端口或 SSL 实例

我正在尝试审核在我们的 Linux RHEL 5.3 服务器上运行的启用 SSL 的端口/服务。我正在尝试查找我们服务器上哪些端口启用了 SSL。我不确定如何找到它。我需要知道如何检查哪些端口正在使用启用 SSL 的服务。

我已经运行以下命令

lsof -i -n -P
netstat -ntulp 
netstat -nap  

但从这些输出中,我不确定如何确定哪些端口正在运行 SSL。我不确定要寻找什么。

我知道 SSLscan 实用程序,但当我运行它时,它没有返回任何值并弹出错误“无法在端口 443 上打开与主机 127.0.0.1 的连接”

SSLscan 似乎可以在我们的 Windows 环境中运行,没有任何错误,但在 Linux 中却不行。我也知道 nmap,但出于安全原因,不能在我们的环境中使用它。

答案1

我不确定是否有自动化的方法可以做到这一点。

首先,我会列出所有正在监听的端口,并将端口与进程/可执行文件进行匹配(例如,以netstat -t -l -proot 身份查看进程 ID(PID))。

[编辑]

您将获得如下条目,其中 PID 为:

tcp        0      0 *:https            *:*                LISTEN      5221/apache2

这会告诉您哪个程序正在端口 上运行https。(netstat -t -l -p -n如果您只想要端口号,请使用 ,在这种情况下,您将看到*:443而不是)。这会告诉您有一个套接字正在监听端口 443。此外,这里的 5221 是 apache2 的 PID,因此它还会告诉您正在使用哪个应用程序。有时,可能无法立即看到正在使用哪个应用程序(例如,*:https您可以查看 的内容以了解更多详细信息)。/proc/5221/cmdline

我只会关注绑定到外部接口的条目(并忽略这些localhost条目)。

通常,您可能会看到某些程序在端口 22(ssh)、80(http)、443(https)等上进行监听...

然后您必须根据下面描述的方法逐一进行测试。

例如echo "" | openssl s_client -connect your.host.name:80应该显示一条错误消息,因为您的 Web 服务器不会(或不应该)监听此端口上的 SSL/TLS 请求,所以echo "" | openssl s_client -connect your.host.name:443应该可以工作并向您显示有关证书和连接的一些信息。

[/编辑]

为了预置 SSL/TLS,您可以检查它是否会接受 TLS ClientHello(即从连接开始就是 TLS 服务器),但使用echo "" | openssl s_client -connect hostname:portecho "" |是可选的,它会在建立连接后立即停止 openssl,因为您可能不想发送任何特定内容)。

为了“升级” SSL/TLS 连接,在应用程序协议级别的命令之后完成(例如STARTTLS),这可能会更加棘手。

您可以通过添加来做到这-starttls the_name_of_the_protocol一点openssl s_client命令。根据 OpenSSL 文档,“目前仅支持的 [协议名称] 是“smtp”、“pop3”、“imap”和“ftp”“。

这对于 LDAP(如果配置为使用 Start TLS 而不是 up-front TLS)、MySQL、PostgreSQL 等没有帮助。对于这些,您可能只需查看它们各自的配置文件。自动化此过程需要一个可以理解所有这些协议的工具,这可能非常困难。

如果是为了进行更一般的安全审计,还有几点需要补充:

  • 启用 SSL/TLS 很少能满足需求。您还需要确保其配置正确:有效证书、禁用 SSLv2、尝试通过禁用旧版本(如果用户群足够兼容)迁移到更高的 SSL/TLS 值(SSLv3、TLSv1.0、TLSv1.1+)、尽可能禁用不安全的重新协商、合理强大的密码套件。

  • 尽管使用了 OpenSSL 库,但 OpenSSH(以及一般的 SSH)并不基于 SSL/TLS。即使您的策略是使用仅 SSL/TLS 服务,您可能仍想保留这一项。

相关内容