漏洞內容
服務器支持 TLS Client-initiated 重協商攻擊(CVE-2011-1473)【原理掃描】
該漏洞存在於SSL renegotiation的過程中。對於使用SSL重協商功能的服務都會受其影響。
特別的,renegotiation被用於瀏覽器到服務器之間的驗證。
雖然目前可以在不啟用renegotiation進程的情況下使用HTTPS,但很多服務器的默認設置均啟用了renegotiation功能。
該漏洞只需要一台普通電腦和DSL連接即可輕易攻破SSL服務器。
而對於大型服務器集群來說,則需要20台電腦和120Kbps的網絡連接即可實現。
SSL是銀行、網上電子郵件服務和其他用於服務器和用戶之間保護私人數據並安全通信必不可少的功能。
所以本次拒絕服務漏洞影響范圍非常廣危害非常大。
判斷處理辦法
因為rocketmq使用tls協議來處理通信,但是仍然使用tlsV1協議版本,改漏洞應該是因為tls協議版本過低導致的,所以需要通過一些方案修改tls協議版本。
提供方案
rocketmq不釋放或者映射端口,然后部署一個nginx的容器。
將nginx容器與rocketmq-namesrv容器通過docker網橋進行連接,使用nginx代理rocketmq-namesrv的9876端口;
然后在nginx代理層對“TLS Client-initiated 重協商攻擊”漏洞進行修復,然后釋放nginx端口,映射為9876.
遇見問題
因為rocketmq的9876端口采用TCP進行連接,所以需要在nginx上要采用stream的配置方式。但是,nginx默認不會安裝tcp的ssl組件(ngx_stream_ssl_module ),
所以需要重新編譯nginx
最終配置
stream {
server {
listen 9876 ssl;
access_log logs/ldap_access.log tcp;
ssl_protocols TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# 設置服務端使用的密碼套件
ssl_certificate ssl/www_nginxbar_org.pem;
ssl_certificate_key ssl/www_nginxbar_org.key;
ssl_session_timeout 5m; # SSL TCP會話緩存超時時間為10分鍾
ssl_prefer_server_ciphers on;
proxy_pass rocketmq-namesrv:9876;
proxy_ssl on; # 啟用SSL/TLS協議,與被代理服務器建立連接
proxy_ssl_session_reuse on; # 與被代理服務器SSL TCP連接的SSL會話重用功能
}
}