我试图对我们的LinuxRHEL5.3服务器上运行的启用SSL的端口/服务进行审计。我正在试图查找我们服务器上的哪些端口启用了SSL。我不知道如何找到这个.I,需要知道如何检查哪些端口正在使用启用SSL的服务。
我已经运行了以下命令
lsof -i -n -P
netstat -ntulp
netstat -nap 但是,从这些输出中,我不确定如何确定哪些端口正在运行SSL。我不知道该找什么。
我知道SSLscan实用程序,但当我运行它时,它不返回任何值,并发出一个错误“无法打开连接到端口443上的主机127.0.0.1”
SSLscan似乎在我们的Windows环境中工作,没有任何错误,但没有Linux。我也知道nmap,但出于安全原因不能在我们的环境中使用它。
发布于 2011-12-09 13:21:11
我不确定是否有一种自动化的方法。
首先,我将列出正在侦听的所有端口,并将端口与进程/可执行文件相匹配(例如,使用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)、.
然后,根据下面描述的方法,您必须逐个测试它们。
例如,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:port (echo "" |是可选的,它将在建立连接后立即停止openssl,因为您可能不想发送任何特定的内容)。
对于在应用程序协议级别的命令(如“升级”SSL/TLS连接 )之后执行的STARTTLS,这可能会更棘手。
您可以通过将-starttls the_name_of_the_protocol添加到这个openssl s_client命令来完成这一任务。根据OpenSSL文档,“目前,唯一受支持的协议名是"smtp”、"pop3“、"imap”和“ftp”。
这将无助于LDAP (如果配置为使用Start TLS而不是前置TLS)、MySQL、PostgreSQL、.对于这些文件,您可能只需查看它们各自的配置文件。自动化这个过程需要一个能够理解所有这些协议的工具,这是相当困难的。
还有几点,如果是为了更一般的安全审计:
https://serverfault.com/questions/339365
复制相似问题