當前位置: 妍妍網 > 碼農

我的資料庫被勒索了!

2024-05-09碼農

最近一個多月,朋友蒼何哥全身心投入到 「開源計畫」 中,其中踩了很多的坑,今天分享的是 「資料庫被勒索」 的經歷,希望大家足夠重視資料庫的安全防護。

因為是開源計畫嘛,為了控制成本,資料庫使用的是阿裏雲 1 核 2G 的 ECS 伺服器自己搭建的。

想著還在測試階段,密碼幹脆就設定的比較簡單,沒錯,就是 123456 😂。並且怎麽簡單怎麽來,用的 docker 快速就搭建了,並沒有設定好許可權。

搭建好後過了一晚,一直在重新開機,看了下日誌,以為是記憶體不足導致,又給 MySQL 加了 「記憶體限制和記憶體保留」

過了一天又發現,還是重新開機,且數據都不見了,查了下資料庫,只有這一張表,且看了下要我支付 「5825.97」 元,直接就給我整無語了。

勒索資訊

於是用 AI 查了下,發現原來是被黑客勒索了,一直關註開發,對運維、安全和備份確實有失關註了,還好只是測試數據,於是針對於此,做了很多資料庫安全加固,給大家做個分享。

解決措施

1、復混成資料庫密碼

原先的 root 密碼是:123456,現在需要更復雜才行,由於是跑在 docker 中,啟動命令設定強密碼。密碼盡量包含大小寫及特殊字元,特別是對於線上環境,一定要把 root 密碼設定的復雜些。

2、修改資料庫預設埠

有經驗的開發人員,計畫部署到正式環境,會把 Mysql 資料庫的預設埠 「替換成不常見的埠」 ,例如:33706

docker run -p 33706:3306 --name mysql \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
--memory 1.5g \
--restart=always \
-e MYSQL_ROOT_PASSWORD=填密碼 -d mysql:5.7

原先套用伺服器埠要刪除 3306 埠,並增加 33706 埠,安全組設定如下:

安全組設定

並關閉關閉套用伺服器防火墻埠:

sudo ufw delete allow 3306/tcp

開啟防火墻

開啟資料庫伺服器33706 埠:

sudo ufw enable
ufw allow 80/tcp
ufw allow 22/tcp
ufw allow 33706/tcp

3、限制資料庫使用者許可權

一般不適用 root 使用者來隨意操作資料庫,需要單獨 「新建一個使用者」 來操作,特別是開放遠端連線,一定不能是 root 使用者。

先用 docker logs mysql,看下日誌,看下有沒有啟動報錯,然後進入容器直接看:

檢視許可權

預設 root 使用者有最高許可權:

預設root許可權

新增一個開發使用者,並設定相應許可權:

#切換到mysql庫,mysql柯瑞存放著user表
use mysql;
#檢視user表現有
select host,user password from user;
#建立開發階段所需臨時使用者:dev_laigeoffer,自訂密碼,盡量復混成
create user 'dev_laigeoffer'@'%' identified by '設定密碼';
#如果密碼設定錯了還可以修改
ALTER USER 'dev_laigeoffer'@'%' IDENTIFIED BY '更改密碼';

#給開發使用者分配存取許可權,暫時允許任何主機連線,授權使用者除了將許可權授予其他帳戶的能力
GRANT ALL PRIVILEGES ON *.* TO 'dev_laigeoffer'@'%';
# 修改後重新整理許可權
flush privileges;
#結束mysql資料庫
exit;
mysql -u dev_laigeoffer -p


本地用 navicate 連線,

連線成功

4、準備資料庫伺服器

我被黑的 Mysql 資料庫是和套用伺服器(程式碼打包後部署的伺服器)安裝在一起的(為了省錢😂),為了安全正式環境應該 「把資料庫單獨放一台伺服器」 ,只允許讓套用伺服器IP來存取資料庫伺服器,透過獨立兩者,就算其中一台發生問題,另一台也是好的,進一步 「降低了危險性」

於是買了個新的小記憶體的伺服器專門用來做資料庫。開源不易啊,等計畫上線, 「還望大家多多支持」

另外對於資料庫, 「最好不要用 docker 安裝」 ,硬是要 docker,也一定要做好 「磁盤掛載」 才行,否則 docker 掛了,數據都不見了,磁盤掛載還可以把數據放在磁盤上永久保存。

5、定時備份資料庫數據

可以定時的備份資料庫,開發定時備份功能,每天晚上備份一下資料庫,如果沒有備份伺服器,可以把備份數據存在套用伺服器上。

我用的是阿裏雲內建的 「雲盤快照」 解決:

雲盤快照

快照策略

6、伺服器安全加固

觀察下伺服器是否存在異常行程占用過多的伺服器資源,可以參考這個文件做下作業系統加固:另外安全組不要放行不必要的埠,修改安全組規則。


總之還是那句忠告:不要覺得攻擊不會發生在自己身上,安全防護意識很重要。

👇🏻 點選下方閱讀原文,獲取魚皮往期編程幹貨。

往期推薦