http://www.freebuf.com/column/158065.html
redis 6379默認端口、綁定所有IP(便於遠程開發)、沒有加密、使用root啟動redis,被掃描到那是自然的事。
借助於redis的持久化功能將病毒腳本寫入到系統的各個角落並執行,比如定時任務crontab,比如
redis 可以把緩存內容寫入本地文件的漏洞,他就可以隨便在服務器的 /root/.ssh/authorized_keys
文件中寫入公鑰,在用本地的私鑰去登陸被寫入公鑰的服務器,就無需密碼就可以登陸,登錄之后就開始定期執行計划任務,下載腳本,還可以利用
masscan 進行全網掃描redis 服務器 6379 的端口,尋找下一個個肉雞,如果你的 redis
端口是默認6379,並且還沒有密碼保護,很容易就被攻破解,最后也就是說這個腳本會迅速在全網裂變式增加。
masscan 是最快的互聯網端口掃描器,最快可以在六分鍾內掃遍互聯網。
解決步驟:
1、清除定時任務
crontab -r
2、找到minerd程序:
find / -name minerd*
去掉執行權限
chmod -x XXX minerd
殺掉進程,kill或pkill隨你喜歡
pkill minerd
pkill AnXqV
清除文件
刪除可疑文件:
find / -name pnscan # 查找並刪除對應目錄
rm -rf /tmp/Aegis-\<Guid5A2C30A2−A87D−490A−9281−6765EDAD7CBA\>
rm -rf /usr/local/aegis/Aegis-\<Guid5A2C30A2−A87D−490A−9281−6765EDAD7CBA\>
清除未知的授權
進入 ~/.ssh/目錄,發現多個異常文件,包括authorized_keys、known_hosts等,需要移除authorized_keys中的未知授權,這里可以看到有REDIS000…的授權key
rm -rf /var/spool/cron
清除/root/.ssh/目錄下的對應密匙
rm -fr /root/.ssh/*
./redis-cli shutdown(關閉redis)
參數:
-f:強制刪除,忽略不存在的文件,從不給出提示。
-i:交互模式刪除文件,刪除文件前給出提示。
-r:遞歸的刪除目錄下面文件以及子目錄下文件。
-R:遞歸的刪除目錄下面文件以及子目錄下文件。
-v:顯示運行時詳細信息
1.禁止一些高危命令
- 服務精細化授權
修改 redis.conf 文件,添加
rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL ""
來禁用遠程修改 DB 文件地址
2.以低權限運行 Redis 服務
- 服務運行權限最小化
1.修改Redis服務運行賬號 (需要重啟redis才能生效)請以較低權限賬號運行Redis服務,並禁用該賬號的登錄權限。以下為創建一個無home目錄和無法登陸的普通權限賬號:
useradd -M -s /sbin/nologin [username]
useradd -s /sbin/nologin -M -g redis redis
-s
表示指定用戶所用的shell,此處為/sbin/nologin
,表示不登錄。-M
表示不創建用戶主目錄。-g
表示指定用戶的組名為redis
。
最后的redis
表示用戶名。
為 Redis 服務創建單獨的用戶和家目錄,並且配置禁止登陸
3.為 Redis 添加密碼驗證
修改 redis.conf 文件,添加
requirepass mypassword
4.禁止外網訪問 Redis
修改 redis.conf 文件,添加或修改
bind 127.0.0.1
使得 Redis 服務只在當前主機可用