
目录SSL原理SSL-ExhaustionSSL 耗尽攻击详解1. SSL-Exhaustion 攻击的原理2. SSL-Exhaustion 主要攻击手法(1) SSL Renegotiation 攻击(2) SSL FloodingSSL 洪水攻击(3) SSL Handshake StarvationSSL 握手阻塞攻击3. SSL-Exhaustion 的检测方法(1) 服务器 CPU 负载监控(2) 监控 SSL 连接数(3) 使用 Wireshark 抓包分析4. 如何防御 SSL-Exhaustion 攻击✅ 使用负载均衡✅ 启用 DDoS 保护✅ 限制 SSL 并发连接✅ 启用 SSL Session Resumption5. 总结6. 结论SSL压力攻击工具1. SlowlorisSSL 版2. hping3模拟 SSL 洪水攻击3. THC-SSL-DOSSSL 资源耗尽攻击模拟4. OpenSSL s_time测试 SSL/TLS 握手性能5. SiegeSSL 压力测试6. LOICLow Orbit Ion Cannon模拟 SSL 流量洪水攻击总结不同 SSL 压测工具的对比防御建议结论详细的服务器安全加固方案 第一部分服务器 SSL/TLS 安全配置✅ 1. 禁用不安全的 SSL/TLS 版本✅ 2. 使用强加密套件✅ 3. 启用 OCSP Stapling减少 SSL 证书验证延迟✅ 4. 启用 HSTS防止 SSL 降级攻击 第二部分防止 SSL/TLS 攻击✅ 1. 防止 SSL 洪水攻击SSL-Exhaustion✅ 2. 防止 TLS 重新协商攻击✅ 3. 防止 Slowloris SSL 攻击✅ 4. 使用 WAF 防止 HTTPS DDoS 第三部分入侵检测与日志分析✅ 1. 监控 SSL 连接实时检测异常请求✅ 2. Fail2Ban 自动封禁恶意 IP 第四部分应急响应发现攻击后的处理✅ 1. 发现 SSL 攻击时快速封锁恶意 IP✅ 2. 临时限制 HTTPS 连接速率 结论SSL原理SSL-ExhaustionSSL 耗尽攻击详解SSL-Exhaustion 攻击也称为TLS 资源耗尽攻击是一种拒绝服务DoS攻击攻击者通过消耗服务器的 SSL/TLS 资源使其无法响应合法用户的请求。1. SSL-Exhaustion 攻击的原理SSL/TLS 连接的建立需要较高的计算资源服务器必须执行以下操作密钥交换如 RSA 或 ECDH对称密钥加密协商计算加密哈希值相比之下客户端的计算消耗要小很多。因此攻击者可以利用这一点通过大量建立 SSL/TLS 连接来耗尽服务器的 CPU、内存或连接数导致服务器崩溃或拒绝合法请求。2. SSL-Exhaustion 主要攻击手法(1) SSL Renegotiation 攻击原理SSL/TLS 允许会话重新协商Renegotiation以便客户端在现有的 SSL 连接上请求更强的加密。但重新协商需要服务器执行大量计算如 RSA 计算。攻击者可以建立 SSL 连接后不断请求重新协商导致服务器 CPU 资源被耗尽。攻击方法建立一个 SSL 连接合法握手。发送ClientHello请求重新协商不断重复。服务器必须执行大量计算来处理每次重新协商。防御措施✅禁用 SSL/TLS 重新协商除非绝对必要。在OpenSSL禁用重新协商SSL_OP_NO_RENEGOTIATION在Nginx配置ssl_session_tickets off;(2) SSL FloodingSSL 洪水攻击原理攻击者通过僵尸网络或脚本短时间内发起大量 SSL 连接请求服务器需要花费大量 CPU 资源进行计算。攻击成本低攻击者只需要发送大量ClientHello而服务器需要进行完整的握手计算。攻击方法发送大量ClientHello数据包伪造新的 TLS 连接请求。服务器不断执行握手计算CPU 资源耗尽。防御措施✅使用 SSL Session Caching减少重复计算在 Nginx 启用ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;✅限制并发连接数在 Apache 限制SSLStrictSNIVHostCheck on在 Nginx 限制limit_conn_zone $binary_remote_addr zonessl_limit:10m; limit_conn ssl_limit 10;(3) SSL Handshake StarvationSSL 握手阻塞攻击原理攻击者建立大量半开的 SSL 连接但不完成握手服务器会一直等待导致资源耗尽。类似 SYN Flood 攻击但针对 SSL/TLS 连接。攻击方法发送ClientHello但不完成握手。服务器进入等待状态占用线程和内存资源。服务器最终达到最大连接数拒绝合法用户。防御措施✅使用 TCP SYN Cookie防止半开连接在 Linux 开启sysctl -w net.ipv4.tcp_syncookies1✅限制 SSL 握手超时时间在 Nginxssl_handshake_timeout 10s;3. SSL-Exhaustion 的检测方法你可以使用以下方法检测 SSL 耗尽攻击(1) 服务器 CPU 负载监控使用htop或top查看 CPU 是否异常升高htop top(2) 监控 SSL 连接数使用netstat查看大量SYN_RECV或ESTABLISHED状态的连接netstat -an | grep :443 | wc -l(3) 使用 Wireshark 抓包分析过滤tls.handshake.type 1观察异常的ClientHello数量。4. 如何防御 SSL-Exhaustion 攻击✅使用负载均衡使用Nginx、HAProxy来分流 SSL 负载。例如在Nginx中worker_processes auto; ssl_stapling on;✅启用 DDoS 保护使用Cloudflare、AWS WAF 或 Akamai 等防护服务。✅限制 SSL 并发连接在Linux 防火墙限制连接速率iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 10 -j DROP✅启用 SSL Session Resumption允许客户端复用 SSL 会话减少服务器计算ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;5. 总结攻击手法原理影响防御方法SSL Renegotiation反复请求 SSL 重新协商高 CPU 负载禁用 SSL 重新协商SSL Flooding发送大量ClientHello请求服务器崩溃限制 SSL 连接数SSL Handshake Starvation建立大量 SSL 连接但不完成握手服务器线程耗尽限制握手超时6. 结论SSL-Exhaustion 攻击主要利用 SSL/TLS 连接计算量大的特点来耗尽服务器资源。防御手段包括禁用 SSL 重新协商、使用缓存、限制连接速率、启用负载均衡等。通过iptables、Nginx、Cloudflare等工具可以有效缓解 SSL 资源耗尽攻击。SSL压力攻击工具如果你想进行合法的 SSL/TLS 压力测试可以使用以下工具1. SlowlorisSSL 版原理通过发送不完整的 HTTP 请求保持连接不断开使服务器的连接池耗尽。适用于Apache、Nginx等 Web 服务器的测试。安装方法Python 版本git clone https://github.com/gkbrk/slowloris.git cd slowloris python3 slowloris.py -hSSL 测试示例针对 HTTPS 服务器python3 slowloris.py -s 100 -v -https https://target.com-s 100同时发送 100 个并发请求。-v启用详细模式。-https对 HTTPS 服务器进行测试。2. hping3模拟 SSL 洪水攻击原理发送大量 TCP SYN 数据包模拟 SSL 连接洪水攻击。安装方法Linuxsudo apt install hping3测试示例向 443 端口发送大量 SYN 包hping3 -S -p 443 --flood target.com-S发送 SYN 数据包。-p 443目标端口为 HTTPS443。--flood快速发送大量数据包。3. THC-SSL-DOSSSL 资源耗尽攻击模拟原理通过大量 SSL/TLS 握手请求占用服务器 CPU 资源。安装方法Linuxgit clone https://github.com/vanhauser-thc/thc-ssl-dos.git cd thc-ssl-dos make测试示例模拟 SSL 握手攻击./thc-ssl-dos -t target.com -p 443-t target.com目标网站。-p 443攻击 HTTPS 端口443。4. OpenSSL s_time测试 SSL/TLS 握手性能原理通过 OpenSSL 自带工具测量服务器处理 SSL 连接的性能评估其承受能力。测试示例模拟 1000 次 SSL 连接openssl s_time -connect target.com:443 -new -time 30-new每次建立新连接。-time 30测试持续 30 秒。5. SiegeSSL 压力测试原理通过多线程方式对 HTTPS 服务器发送大量并发请求测试其吞吐能力。安装方法sudo apt install siege测试示例模拟 50 个并发用户请求siege -c 50 -d 1 -t 30S https://target.com-c 5050 个并发用户。-d 1每个请求间隔 1 秒。-t 30S测试 30 秒。6. LOICLow Orbit Ion Cannon模拟 SSL 流量洪水攻击⚠️ 警告LOIC 主要用于 DDoS 压力测试可能导致服务器崩溃请仅在授权环境下使用。安装方法Windows下载 LOICGitHub运行LOIC.exe输入目标 HTTPS 地址设置请求方式为TCP端口443点击IMMA CHARGIN MAH LAZER开始测试。总结不同 SSL 压测工具的对比工具名称攻击方式适用场景合法性Slowloris慢速 HTTP 连接测试服务器的连接处理能力✅ 适用于 Web 压测hping3TCP SYN 洪水模拟 DDoS 攻击⚠️ 仅限合法测试THC-SSL-DOSSSL 握手资源耗尽测试服务器 CPU 负载⚠️ 需获得授权OpenSSL s_timeSSL 连接性能测试评估 SSL 服务器性能✅ 合法测试SiegeHTTPS 并发请求负载测试✅ 适用于 Web 压测LOICSSL 洪水攻击DDoS 模拟⚠️ 可能违法防御建议如果你的目标是保护服务器免受 SSL 攻击可以采取以下措施 ✅限制 SSL 连接速率iptablesiptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 10 -j DROP✅开启 SYN Cookie防止握手耗尽sysctl -w net.ipv4.tcp_syncookies1✅使用 Cloudflare/CDN过滤恶意请求。✅在 Nginx 限制 SSL 连接数limit_conn_zone $binary_remote_addr zonessl_limit:10m; limit_conn ssl_limit 10;结论你可以使用Slowloris、THC-SSL-DOS、hping3等工具进行 SSL 压测。如果你是为了测试自己服务器的承载能力建议使用OpenSSL s_time和Siege进行合法压力测试。请勿在未经授权的情况下使用这些工具攻击他人服务器否则可能违法你是想测试自己服务器的防御能力还是学习 SSL 攻击的原理我可以提供更详细的教程详细的服务器安全加固方案这里是针对SSL/TLS 相关攻击的全面服务器安全加固方案涵盖配置优化、攻击防护、入侵检测和应急响应。 第一部分服务器 SSL/TLS 安全配置✅1. 禁用不安全的 SSL/TLS 版本在Nginx/Apache配置中确保仅支持 TLS 1.2 和 1.3禁用TLS 1.0/1.1ssl_protocols TLSv1.2 TLSv1.3;SSLProtocol -all TLSv1.2 TLSv1.3✅2. 使用强加密套件Nginx 推荐配置ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on;Apache 推荐配置SSLCipherSuite HIGH:!aNULL:!MD5 SSLHonorCipherOrder on✅3. 启用 OCSP Stapling减少 SSL 证书验证延迟ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid300s;✅4. 启用 HSTS防止 SSL 降级攻击add_header Strict-Transport-Security max-age31536000; includeSubDomains; preload always; 第二部分防止 SSL/TLS 攻击✅1. 防止 SSL 洪水攻击SSL-Exhaustion限制 HTTPS 连接数iptablesiptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 20 -j DROP限制 TLS 握手频率Nginxlimit_conn_zone $binary_remote_addr zonessl_limit:10m; limit_conn ssl_limit 10;✅2. 防止 TLS 重新协商攻击在Nginx中禁用 TLS 重新协商ssl_session_cache shared:SSL:50m; ssl_session_timeout 10m;✅3. 防止 Slowloris SSL 攻击Nginx 限制请求头读取时间client_body_timeout 10s; client_header_timeout 10s;Apache 启用mod_reqtimeoutRequestReadTimeout header10-20,MinRate500 body10,MinRate500✅4. 使用 WAF 防止 HTTPS DDoS部署 Cloudflare / AWS Shield / Nginx ModSecurity WAFNginx 安装 ModSecuritysudo apt install libnginx-mod-security2配置规则server { location / { ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; } } 第三部分入侵检测与日志分析✅1. 监控 SSL 连接实时检测异常请求查看 HTTPS 连接数netstat -anp | grep :443实时监控 SSL 流量tcpdump -i eth0 port 443✅2. Fail2Ban 自动封禁恶意 IP安装Fail2Bansudo apt install fail2ban配置规则/etc/fail2ban/jail.local[nginx-http-auth] enabled true filter nginx-http-auth action iptables-multiport[nameNoAuthFailures, porthttp,https] logpath /var/log/nginx/error.log maxretry 5sudo systemctl restart fail2ban 第四部分应急响应发现攻击后的处理✅1. 发现 SSL 攻击时快速封锁恶意 IPiptables -A INPUT -s ATTACKER_IP -j DROP✅2. 临时限制 HTTPS 连接速率iptables -A INPUT -p tcp --dport 443 -m limit --limit 100/second --limit-burst 200 -j ACCEPT