伺服器安全工作記:從一次泄露到系統加固
一個博客從上線第一天起,就要面對互聯網的「熱情」。這篇文章記錄「島上隨筆」與主站 1dao.cc 背後的伺服器,在上線四天裡經歷的安全事件與加固過程。
起點:一台裸奔的伺服器
8 月 9 日,伺服器上線。當天就迎來了互聯網的「問候」:
- SSH 端口開放不到幾小時,暴力破解嘗試源源不斷,三天累計 15,440 次失敗嘗試,日均約 5,000 次
- 各種漏洞掃描器輪番探測:
/.env、/.git/config、wp-config.php、phpunit遠程執行漏洞、SQL 注入……
好在從第一天起就只允許密鑰登入,所有爆破嘗試全部鎩羽而歸。但掃描器的「熱情」提醒我:安全不是事後補救,而是與生俱來的要求。
事件一:備份目錄泄露
8 月 12 日,例行安全檢查時發現一個嚴重問題:網站備份目錄因為之前改版時移除了認證保護,處於完全公開狀態——而且已經被 AI 爬蟲整包下載。
- OpenAI 的 GPTBot 通過一個寄生域名找到了入口,把 8 個歷史版本備份一網打盡
- 百度爬蟲也抓取了目錄,備份頁面已被搜索引擎收錄
- 備份包內含個人證件掃描件、運維元數據、內部變更記錄
教訓:
- 任何對外服務,默認都該是「關閉」狀態
- 移除安全措施前,先想清楚後果
- 敏感文件永遠不要出現在可下載的目錄裡
已泄露的數據無法追回,但這次事件讓我下定決心:把安全加固提到最高優先級。
事件二:寄生域名
檢查中發現,有外部域名(martale.com、ifalao.cn 系列)被解析到本機 IP。由於 nginx 沒有配置默認拒絕,任何指向本機的未知域名都會「白嫖」主站內容,還會被 AI 爬蟲當作獨立站點收錄——GPTBot 正是經由這條路徑進入備份目錄的。
加固行動:六項防線
事件之後,陸續完成了一系列加固:
1. 登入驗證碼
emlog 後台開啟圖形驗證碼,字典爆破基本失效。
2. 上傳目錄禁止執行 PHP
nginx 層面攔截:即使上傳白名單被繞過,上傳目錄裡的任何 PHP 文件也無法執行——圖片馬、Webshell 這條路徹底堵死。
3. fail2ban 自動封禁
安裝 fail2ban,配置四個監控規則(SSH 爆破、登入嘗試、惡意掃描、403 重試):
- 5 次失敗 → 自動封 IP 一小時
- 系統是純 nftables(Debian 13),踩了不少配置坑,最終全部打通
- 實測:暴力破解 IP 會被 nftables 鏈直接 reject
4. AI 接口 SSL 校驗
emlog 的 AI 功能原本關閉了證書校驗,已修復——消除中間人竊聽風險。
5. 管理員強密碼
後台管理員密碼重置為強隨機密碼,使用官方哈希算法驗證通過。
6. 訪問統計
主站與博客都加了訪問計數器(排除爬蟲),方便觀察真實訪客。
現狀:多層防線
| 防線 | 狀態 |
|---|---|
| SSH | 密鑰-only + fail2ban 自動封禁 |
| 後台 | 驗證碼 + 強密碼 + 登入監控 |
| 上傳 | 三重白名單 + nginx 禁止執行 |
| 網路 | 四個 fail2ban 規則實時監控 |
| 監控 | 訪問統計 + 日誌審計 |
未完的事
安全是持續的過程,不是一次性的任務。待辦清單還有:恢復備份頁認證、配置默認拒絕兜底、robots.txt、自動安全更新、防火牆。
互聯網很熱鬧,但我們可以把自己的院子守好。這篇記錄既是提醒,也是開始——安全這條路,會一直走下去。
本文由「島上隨筆」編輯整理,記錄 1dao.cc 與博客伺服器的安全加固歷程。