最近在客戶提出了軟件運(yùn)行環(huán)境的三個安全問題,Redis未授權(quán)訪問、mysql root賬戶密碼太簡單和ftp服務(wù)器可以anonymous匿名訪問。經(jīng)過仔細(xì)檢查代碼發(fā)現(xiàn)ftp服務(wù)器已經(jīng)限制了匿名訪問,root賬戶密碼也比較好修改,只有Redis未授權(quán)訪問不太清楚是什么意思,一番溝通后才了解客戶想要什么效果。
Redis未授權(quán)訪問
Redis在默認(rèn)情況下會綁定在0:0:0:0:6379這樣的IP端口上,這樣這個端口就會暴露在互聯(lián)網(wǎng)上,沒有開啟認(rèn)證的時候任何用戶都可以訪問Redis服務(wù)器讀取Redis數(shù)據(jù),還可以利用腳本修改Redis數(shù)據(jù),可以利用Redis相關(guān)的方法寫入公鑰進(jìn)而使用對應(yīng)的私鑰訪問目標(biāo)服務(wù)器。
了解了Redis在公網(wǎng)上未授權(quán)訪問的漏洞,其危害也不用多說,很容易被黑客利用攻擊目標(biāo)服務(wù)器。

修復(fù)Redis漏洞
修改綁定的IP端口
默認(rèn)綁定的0:0:0:0:6379,所有計(jì)算機(jī)都可以訪問,我們可以綁定特定的IP,只允許特定的IP訪問,6379是默認(rèn)端口眾所周知,數(shù)字比較小的也比容易試出來,我們可以開放數(shù)字比較大的端口號如10073。我們修改Redis的配置文件redis.conf,Windows版本可能是redis.windows.conf。找到port修改端口號,然后找到bind開頭的文字,去掉注釋符號#,修改綁定IP。如下圖所示:

實(shí)際運(yùn)行環(huán)境中可以需要很多臺電腦訪問Redis服務(wù),因此修改綁定IP可能不是很適用,要看情況設(shè)置。
添加密碼驗(yàn)證
Redis默認(rèn)是沒有密碼的,我們需要添加密碼驗(yàn)證,通過驗(yàn)證才能訪問Redis,在配置文件找到requirepass開頭語句,如下圖所示:

去掉注釋符號#,設(shè)置密碼驗(yàn)證
requirepass 你的密碼
密碼盡量設(shè)置復(fù)雜一點(diǎn),由數(shù)字、字母、特殊符號組成,滿足復(fù)雜性、隨機(jī)性、不可預(yù)測性。
禁止高危命令
Redis還有一些命令設(shè)置也可能帶來隱患,應(yīng)該禁止這些命令,如遠(yuǎn)程修改DB文件地址的命令,我們可以在Redis配置文件redis.windows.conf中添加如下語句:
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
此外還有應(yīng)該禁止其他用戶添加新的密鑰等等,還有在服務(wù)器上添加防火墻設(shè)置過濾規(guī)則等,在工作中我們應(yīng)該實(shí)際情況設(shè)置,保證網(wǎng)絡(luò)安全。
想了解更多精彩內(nèi)容,快來關(guān)注程序猿小董