Diffie-Hellman Keys 小於1024問題研究與整理(CVE-2015–4000解決)
對應到dockerio的jenkins的lts要改JVM設定要用
"JAVA_OPTS"或"JENKINS_JAVA_OPTS"
特別對於JenkinsController的設定要用後者:
有找到一篇Sonatype的分析文章(LINK),整理的滿好的
可以透過nmap工具來檢測
#安裝nmap:
sudo yum install nmap -y
#範例檢查(需要nmap版本7以上)8443 PORT:
nmap --script ssl-enum-ciphers -p 8443 192.168.2.73
會有類似以下輸出各種TLS版本的(參考LINK)資訊
如上主要就是會有以下這句:
Key exchange (dh 1024) of lower strength than certificate key
另外有很多Web的SSL設定Cipher相關參考可以看Mozilla網站(LINK)
線上協助掃描SSL弱點的網站Qualys(LINK)
下面重頭戲,我自建一個https的jenkins
#運行指令:
sudo podman run -p 8080:8080 -p 8443:8443 -p 50000:50000 -d -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-https-ver
並開通自己打自己8443
#執行以下:
nmap --script ssl-enum-ciphers -p 8443 35.78.178.188
另外也可以用openssl來看,但是訊息太長,我導入檔案來看
#執行
openssl s_client -connect 35.78.178.188:8443 -msg > check.txt
不過後來沒找到
#執行
openssl s_client -connect 35.78.178.188:8443 -cipher "EDH" | grep "Server Temp Key"
接著嘗試加入
#執行(多增加JENKINS_JAVA_OPTS設定-Djdk.tls.ephemeralDHKeySize=2048):
sudo podman stop {前一個容器}
sudo podman run -p 8080:8080 -p 8443:8443 -p 50000:50000 --env JENKINS_JAVA_OPTS=-Djdk.tls.ephemeralDHKeySize=2048 -d -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-https-ver
再次透過nmap檢測
#執行
nmap --script ssl-enum-ciphers -p 8443 35.78.178.188
接著為了驗證,我嘗試改用JAVA_OPS來給
#執行(驗證改用JAVA_OPTS來設定-Djdk.tls.ephemeralDHKeySize=2048是不是就有問題!?):
sudo podman stop $(sudo podman ps -q)
sudo podman run -p 8080:8080 -p 8443:8443 -p 50000:50000 --env JAVA_OPTS=-Djdk.tls.ephemeralDHKeySize=2048 -d -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-https-ver
其對應的serviced的設置位置是要在:
#執行以下確認:
sudo podman generate systemd --new --name {上面容器名稱serene_blackburn}
然後觀察容器內是否真的載入ephemeralDHKeySize設定
#在容器內看env查看JAVA_HOME位置或看WEB:
env
#find指令查找設定檔java.security:
find /opt/java/openjdk/ -name "java.security"
#看看設定檔是否調整:
cat /opt/java/openjdk/conf/security/java.security |grep ephemeralDHKeySize
(可能是因為security.overridePropertiesFile=true)
#實際看到JVM有確實載入ephemeralDHKeySize設定:
jps -lvm