2011年报出的Openssl重新密钥协商会导致DoS攻击,漏洞报出后没多久一个黑客组织放出了DoS攻击工具,这个代号CVE-2011-1473的漏洞至今openssl upstream并没有具体的修复方案,这个烂摊子留给了具体的应用程序开发者,比如Apache2给了相应的配置文件可以直接关闭密钥重新协商:
服务器端的重新密钥协商的开销是客户端的15倍,在带宽足够的情况下一台i7的CPU可以fuc*掉足够多的服务器,以下是测评数据:
测试环境:SLES 11 SP2 , 虚拟机中分配了2 cores + 1GB内存
Case I:
Server: openssl s_server -key server-key.pem Client: thc-ssl-dos 192.168.0.1 4433 --accept -l 10000
最坏的情况:
Cpu0 : 1.3%us, 1.7%sy, 0.0%ni, 97.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 53.1%us, 5.1%sy, 0.0%ni, 37.1%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st
Case II: 使用了开源加固方案,在netfilter上限制连接的速率和用固定的特征码去匹配
#sh iptables.sh
#iptables -A INPUT -d 192.168.0.1 -p tcp --dport 4433 -j LIMIT_RENEGOCIATION
Server: openssl s_server -key server-key.pem
Client: thc-ssl-dos 192.168.0.1 4433 --accept -l 10000
最坏的情况:
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.7%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st