文章開頭的解釋和說明
- 本篇文章是透過形式上修改二進位制檔案中的版本號來達到某些像行屍走肉機器人類形式主義要求的等保標準要求,來完成其要求的“安全加固”。
- 我先吐槽一下,這些形式主義等保標準要求,只按照版本號比對來確定是否為最版本的檢測邏輯來批次掃描,掃描出來的漏洞誤報率極高。
- 而它們是因為專案的要求,為了做等保而做等保,並不會真正看安全到底做的咋樣,到底是否需要這樣做,它們只是行屍走肉的機器人,按照要求執行,即使無意義,錯了,也要做,因為是酒囊飯袋領導的要求。
- 它們根本不想做等保的目的和意義是什麼只是按照標準執行,而不考慮實際情況,實際即使不做它們也不管,它們只是形式上做了,結果沒問題就可以,沒有說站在安全的角度把這個事情真正的做好了。
- 所以既然是這樣,便有了今天的文章,既然它們是形式主義,那麼我們這些幹活的也可以形式主義,它們要最高版本號,我就給它們最高版本號。
正式內容開始
修改二進位制檔案OpenSSH和OpenSSL的版本號碼為最高版本達到“安全加固”
修改OpenSSH版本號為最新的OpenSSH 9.8p1
備份二進位制檔案ssh
sudo cp /usr/bin/ssh /usr/bin/ssh.bak
使用sed命令直接修改二進位制檔案的版本號為OpenSSH_9.8p1
sed -i 's/OpenSSH_8.4p1/OpenSSH_9.8p1/g' /usr/bin/ssh
另一種方式,透過perl修改二進位制檔案的版本號為OpenSSH_9.8p1
sudo perl -pi -e 's/OpenSSH_8.4p1/OpenSSH_9.8p1/g' /usr/bin/ssh
執行ssh -V 命令確認驗證修改後的效果
ssh -V
修改OpenSSL版本號為最新的OpenSSL 1.1.1w 11 Sep 2023
- 修改OpenSSL版本是需要找到其對應的依賴庫,然後透過修改依賴庫的版本號來達到修改OpenSSL版本。
檢視OpenSSL的依賴庫
ldd /usr/bin/openssl | grep libcrypto.so
執行結果輸出的內容:libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007f1afc739000)
確認依賴庫路徑及名稱
- 透過上述執行的結果確認OpenSSL版本的依賴目錄是/usr/lib64/ 對應的名稱是libcrypto.so.1.1
- 所以只要修改libcrypto.so.1.1這個庫檔案的版本號就可以達到修改OpenSSL版本號的效果。
檢視此目錄有哪些檔案
ll /usr/lib64/
- 這個目錄下有很多庫檔案,執行確認下存在上面需要的庫檔案libcrypto.so.1.1存在即可。
開始執行修改版本號之前備份原始庫檔案libcrypto.so.1.1
cp /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1.bak
檢視OpenSSL依賴庫中顯示版本資訊的原始內容
strings /usr/lib64/libcrypto.so.1.1 |grep 1.1.1
- 輸出的內容:
(
OPENSSL_1_1_1
OPENSSL_1_1_1b
OPENSSL_1_1_1c
OPENSSL_1_1_1d
1!1'1-191C1E1K1]1a1g1m1s1
OpenSSL 1.1.1d 10 Sep 2019
c2tnb191v1
sect131r1
libcrypto.so.1.1-1.1.1d-150200.11.54.1.x86_64.debug
)
或者使用下面命令更精確
strings /usr/lib64/libcrypto.so.1.1 | grep "OpenSSL 1.1.1"
使用 sed 修改 libcrypto.so.1.1 檔案中的版本號:
sed -i 's/OpenSSL 1.1.1d 10 Sep 2019/OpenSSL 1.1.1w 11 Sep 2023/g' /usr/lib64/libcrypto.so.1.1
或者使用 perl 修改 libcrypto.so.1.1 檔案中的版本號:
perl -pi -e 's/OpenSSL 1.1.1d 10 Sep 2019/OpenSSL 1.1.1w 11 Sep 2023/g' /usr/lib64/libcrypto.so.1.1
檢視驗證修改OpenSSL版本號是否成功:
strings /usr/lib64/libcrypto.so.1.1 | grep "OpenSSL 1.1.1"