Redis 默認(rèn)情況下,會綁定在 0.0.0.0:6379,這樣將會將 Redis 服務(wù)暴露到公網(wǎng)上,
如果在沒有開啟認(rèn)證的情況下,可以導(dǎo)致任意用戶在可以訪問目標(biāo)服務(wù)器的情況下未授權(quán)訪問Redis 以及讀取 Redis 的數(shù)據(jù)。
攻擊者在未授權(quán)訪問 Redis 的情況下可以利用 Redis 的相關(guān)方法,可以成功在 Redis 服務(wù)器上寫入公鑰,進(jìn)而可以使用對應(yīng)私鑰直接登錄目標(biāo)服務(wù)器。
入侵特征:
Redis 可能遭受入侵者執(zhí)行FLUSHALL命令,整個 Redis 數(shù)據(jù)庫被清空。
入侵者會在 Redis 數(shù)據(jù)庫中新建了一個名為 crackit(網(wǎng)上流傳的命令指令) 的鍵值對,內(nèi)容為一個 SSH 公鑰。
在 /root/.ssh 文件夾下新建或者修改了 authorized_keys 文件,內(nèi)容為 Redis 生成的 db 文件,包含上述公鑰。
加固建議:
1、限制偵聽地址,禁止外網(wǎng)訪問Redis:
修改redis.conf文件,添加或修改
bind 127.0.0.1 只偵聽本機(jī),適用于只在本機(jī)使用的redis服務(wù)
如果redis并不是只用在本機(jī),而是用于給內(nèi)網(wǎng)的其它服務(wù)器使用的話,那就指定具體本機(jī)的內(nèi)網(wǎng)IP地址,如:
bind 172.16.0.2 之類
2、修改默認(rèn)端口6379為其它端口
3、設(shè)置密碼驗證:
修改redis.conf,添加或修改:
requirepass mypassword (mypassword替換成你要設(shè)置的密碼)
4、以低權(quán)限運(yùn)行Redis服務(wù)
為Redis服務(wù)創(chuàng)建單獨(dú)的用戶和家目錄,并且配置禁止登錄。
5、將高危命令修改成自定義的別名或直接禁用(可選)
例如禁止高危命令:
在配置文件中加入以下:
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
來禁用遠(yuǎn)程修改DB文件地址