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

我正在尝试对在我们的Linux RHEL 5.3服务器上运行的启用SSL的端口/服务进行审计。 我试图find我们的服务器上的哪些端口是SSL启用。我不知道如何find这个。我需要知道如何检查哪些端口使用SSL启用服务。

我在下面运行命令

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

但从这些输出我不知道如何确定哪些端口正在运行SSL。我不知道该找什么

任何帮助,请注意,我知道SSLscan实用程序,但是当我运行它不会返回任何值,并吐出一个错误…无法打开一个连接到端口443主机127.0.0.1

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

请帮助

我不确定是否有自动的方式来做到这一点。

首先,列出所有正在侦听的端口,并将端口与进程/可执行文件进行匹配(例如,使用netstat -t -l -p ,以root身份可以看到进程ID(PID))。

[编辑]

你会得到这样的条目,其中的PID是:

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

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

我只专注于绑定到外部接口的条目(并忽略localhost条目)。

通常,您可能会看到端口22(ssh),80(http),443(https),…

您将不得不逐一testing它们,具体取决于下面描述的方法。

例如echo "" | openssl s_client -connect your.host.name:80 echo "" | openssl s_client -connect your.host.name:80应该显示一个错误信息,因为你的web服务器不会(或不应该)监听这个端口上的SSL / TLS请求, echo "" | openssl s_client -connect your.host.name:443 echo "" | openssl s_client -connect your.host.name:443应该工作并显示一些关于证书和连接的信息。

[/编辑]

对于前期的SSL / TLS ,你可以检查它是否接受TLS ClientHello (即从连接开始是一个TLS服务器),但是使用echo "" | openssl s_client -connect hostname:port echo "" | openssl s_client -connect hostname:portecho "" |是可选的,只要build立了连接,它就会停止openssl,因为你可能不想发送任何特定的东西)。

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

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

这对于LDAP(如果configuration为使用启动TLS而不是预先TLS),MySQL,PostgreSQL,…都没有帮助。对于这些,您可能只需查看它们各自的configuration文件即可。 使这个过程自动化将需要一个能够理解所有这些协议的工具,这可能是相当困难的。

如果要进行更一般的安全审计,还需要加上几点:

  • 启用S​​SL / TLS很less。 您还需要确保其configuration正确:有效证书,SSLv2已禁用,如果您的用户基础足够,则尝试通过禁用旧版本来移至较高的SSL / TLS(SSLv3,TLSv1.0,TLSv1.1 +)兼容,不安全的重新协商,如果可能的话,合理的强密码套件。

  • 尽pipe使用OpenSSL库,但OpenSSH(和一般的SSH)并不基于SSL / TLS。 即使您的政策是使用SSL / TLS专用服务,您仍然可能需要保留此服务。