上次網(wǎng)站被人當(dāng)后花園這事真給我惡心壞了。就那個(gè)放客戶小程序的站,大清早收到老板連環(huán)call,點(diǎn)開一看首頁愣是被換成骷髏頭,數(shù)據(jù)庫還被刪得只剩一行臟話??照{(diào)房里硬是給我氣出一身汗。
把主機(jī)當(dāng)破屋收拾
先登進(jìn)虛擬主機(jī)后臺翻家底。跟查違章建筑似的,把犄角旮旯掃了個(gè)遍:
- 揪出仨后門腳本:在圖片文件夾里翻到"*"這種掛羊頭賣狗肉的,打開全是eval(base64)解碼的鬼畫符
- 清掉古董插件:兩年前裝的相冊插件早停更了,更新記錄里明晃晃寫著"修復(fù)高危漏洞",臊得我直接拖進(jìn)回收站
- 掃出配置裸奔:發(fā)現(xiàn)根目錄躺著*,點(diǎn)開差點(diǎn)背過氣——數(shù)據(jù)庫賬號密碼全用明文晾著
給服務(wù)器大門換鎖芯
打電話催主機(jī)商升PHP版本那叫個(gè)費(fèi)勁。客服非說老程序兼容不了PHP7,我直接把測試站甩過去:"你看看這站跑7.4三個(gè)月了出過事兒嗎?" 這才磨磨蹭蹭給升了。
改文件夾權(quán)限時(shí)差點(diǎn)翻車。學(xué)網(wǎng)上教程給目錄設(shè)555權(quán)限,結(jié)果用戶上傳功能直接罷工。急吼吼把upload目錄權(quán)限回調(diào)755才救回來,現(xiàn)在想想還后怕。
數(shù)據(jù)庫加裝防盜網(wǎng)
重點(diǎn)收拾SQL注入這個(gè)老賴:
- 給用戶輸入拴鏈子:所有$_GET和$_POST塞進(jìn)htmlspecialchars里滾三圈
- SQL語句穿盔甲:把$conn->query("SELECT FROM user WHERE id=".$_GET['id']) 這種自殺寫法全換成帶問號的prepare語句
- 錯(cuò)誤日志當(dāng)警報(bào)器:在*里把display_errors關(guān)掉,錯(cuò)誤日志存到public_html外頭的私密路徑
給登錄口焊鐵欄桿
看后臺登錄記錄差點(diǎn)心梗:
- 用awstats日志分析工具發(fā)現(xiàn),黑客拿"admin"賬號每半小時(shí)撞庫一次
- 登錄頁驗(yàn)證碼形同虛設(shè),四位數(shù)驗(yàn)證碼十年不換
連夜給后臺加了雙保險(xiǎn):
- 登錄熔斷機(jī)制:同IP五分鐘錯(cuò)三次直接封半小時(shí)
- 驗(yàn)證碼動(dòng)態(tài)埋雷:改成點(diǎn)觸式圖形驗(yàn)證,每次加載隨機(jī)扭曲字母
- 密碼學(xué)螞蟻搬家:把用的mysql_escape_string這種老古董全換成password_hash()
天亮查監(jiān)控逮耗子
凌晨三點(diǎn)設(shè)完所有防護(hù),特意在根目錄留了個(gè)蜜罐文件叫"database_*"。第二天午飯時(shí)查看訪問日志,果然逮到痕跡:
- 凌晨4:17有巴西IP訪問/wp-admin(可我這是純手寫站)
- 蜜罐文件被下載了11次
- 登錄失敗記錄里出現(xiàn)暴躁嘗試:"fuckyou!@#","你媽死了123"
現(xiàn)在這套組合拳打了四個(gè)月,安全預(yù)警郵件再?zèng)]亮過紅燈。前兩天朋友服務(wù)器又被掛黑鏈,我直接把這篇攻略甩過去,那小子看完回了八個(gè)字:"早看見這個(gè)多省心。"