Shell
脚本使用nmap
工具来扫描目标服务器的所有开放端口,并列出每个端口支持的TLS协议
和加密套件
。这对于检查服务器的安全配置和确保只支持安全的TLS版本
非常有用。
基于 nmap
工具和ssl-enum-ciphers脚本
#!/bin/bash
# 检查是否提供了目标服务器IP或域名
if [ -z "$1" ]; then
echo "Usage: $0 <target>"
TARGET=localhost
else
TARGET=$1
fi
# 使用nmap扫描目标服务器的开放端口并测试每个端口支持的TLS协议
nmap -p- --open --script ssl-enum-ciphers -T4 $TARGET
-p-
:扫描所有端口。--open
:只显示开放的端口。--script ssl-enum-ciphers
:使用ssl-enum-ciphers
脚本来列出每个端口支持的TLS协议和加密套件。-T4
:设置扫描速度为4,以加快扫描速度
基于 openssl
工具,结合 nmap
实现
#!/bin/bash
# 检查是否提供了目标服务器的IP或域名
if [ -z "$1" ]; then
echo "Usage: $0 <target>"
TARGET=localhost
else
TARGET=$1
fi
# 使用nmap扫描目标服务器的开放端口
echo "Scanning open ports on $TARGET..."
OPEN_PORTS=$(nmap -p- --open -T4 $TARGET | grep '^[0-9]' | cut -d '/' -f 1)
# 检查每个开放端口的TLS支持情况
for PORT in $OPEN_PORTS; do
echo "Testing TLS protocols on port $PORT..."
for PROTOCOL in ssl3 tls1 tls1_1 tls1_2 tls1_3; do
echo -n " Checking $PROTOCOL... "
RESULT=$(echo | openssl s_client -connect $TARGET:$PORT -$PROTOCOL 2>&1)
if echo "$RESULT" | grep -q "handshake failure\|no peer certificate available"; then
echo "Not supported"
else
echo "Supported"
fi
done
done
nmap -p- --open -T4 $TARGET
:扫描所有端口,显示开放的端口。grep '^[0-9]' | cut -d '/' -f 1
:从nmap的输出中提取开放端口号。openssl s_client -connect $TARGET:$PORT -$PROTOCOL
:尝试使用指定的TLS协议连接到每个端口。