第 6 課 · 安全基線:拿到新服務器的第一小時
新服務器上線第一小時做完這份清單,能擋掉絕大多數自動化攻擊——互聯網上無差別的掃描與爆破每分鍾都在發生,安全不是買來的產品,而是一組默認動作。本課的清單可直接照抄執行。
第一小時清單(照抄執行)
# 1) 創建普通用戶並給 sudo,日常不用 root
adduser deploy && usermod -aG sudo deploy
# 2) 生成密鑰並用密鑰登入(本機執行,然後推送公鑰)
ssh-keygen -t ed25519 -C "deploy@$(hostname)"
ssh-copy-id deploy@服務器IP
# 3) SSH 加固:禁密碼、禁 root 直登(確認密鑰登入成功後再改!)
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
# 4) 防火牆:默認拒絕入站,只放行必需端口
ufw default deny incoming && ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
# 5) 防爆破 + 自動安全更新
apt install -y fail2ban unattended-upgrades && systemctl enable --now fail2ban
# 6) 自查對外暴露面:除 22/80/443 外不應有公網監聽
ss -tlnp
服務與面板的收斂
每多跑一個服務,就多一分暴露面。數據庫綁定本地地址(bind 127.0.0.1)或內網地址,絕不對公網監聽;不用的服務一律停用。使用寶塔、1Panel 這類面板時:改掉默認端口、開啓面板 SSL、綁定訪問白名單或二次驗證——面板本身權限極高,它被打穿等於整臺機器易主。
備份 3-2-1
3 份數據、2 種介質、1 份異地。實操底線:數據庫每日 dump + 站點目錄快照,加密後同步到對象存儲或另一臺服務器;每季度做一次恢復演練——沒驗證過恢復的備份等於沒有備份。只放在同一臺服務器上的「備份」,在勒索場景下會和原數據一起被加密。
# 最小備份示例:數據庫 dump + 目錄打包 + 同步異地(rsync 到備份機)
mysqldump --all-databases | gzip > /backup/db-$(date +%F).sql.gz
tar czf /backup/site-$(date +%F).tar.gz /var/www
rsync -az /backup/ backupuser@備份機:/data/backup/
日志與時間
保留登入與提權日志(auth.log / secure)、Web 訪問日志、數據庫慢查詢日志,並集中收集(哪怕只是每日打包傳異地)。日志時間必須準,否則排障與取證時對不上時間線:
timedatectl set-timezone Asia/Shanghai
timedatectl status | grep -E 'synchronized|Time zone'
怎麼判斷被入侵了
- CPU 長期滿載而業務量沒漲,
top裏有陌生進程——大概率被挖礦; ss -antp出現到陌生 IP 的持續外連(礦池常用 3333/5555/14444 等端口);- crontab、啓動項裏出現不認識的條目;
last/lastb裏有成功的陌生登入。
應急響應四步
- 隔離:防火牆切斷除管理口外的流量,阻止橫向擴散;先別急着重裝(證據會消失);
- 取證:保存 last/lastb、auth 日志、crontab、
ss -antp異常外連、近 3 天變更文件清單(find / -mtime -3); - 清除與加固:更換全部憑據(SSH、面板、數據庫、雲 API token),清計劃任務與啓動項,修補入口漏洞;無法確認幹淨時,遷移數據後重裝系統;
- 復盤:確定入侵路徑,把缺口補進你的第一小時清單,必要時向相關方通報。
Web 與數據庫層的三條紀律
- 更新時效:CMS 與插件的漏洞利用通常在全網知曉後數小時內開始,自動安全更新開着,大版本升級排進每周日程;
- 最小暴露:數據庫只監聽本地/內網,管理後臺加訪問白名單或二次驗證,上傳目錄禁用腳本執行;
- 最小權限:應用連數據庫用專屬賬號,只給需要的庫表權限,絕不用 root 賬號跑業務。
一次挖礦感染的處置時間線(演練)
假設監控告警 CPU 滿載:第 0 分鍾,top 確認陌生進程名與路徑;第 5 分鍾,ss -antp 找到它的外連目標(礦池 IP 與端口),crontab -l 與 /etc/cron.* 裏發現持久化條目;第 10 分鍾,防火牆切斷該進程外連、刪除計劃任務與二進制文件;第 30 分鍾,排查入口——最近的 Web 漏洞、弱口令面板或暴露在公網的管理端口;第 1 小時起,換全部憑據、修補入口,若無法確認幹淨則備份數據後重裝。全程先取證再清除,順序反了就只能靠重裝兜底。
合規 basics
面向中國內地用戶的站點完成 ICP 備案;日志留存滿足當地監管要求;處理個人數據遵循最小化收集與加密存儲。海外機房無備案要求,但內容合規責任始終在運營者——侵權、詐騙與垃圾郵件在任何地區都會導致封機。
最後強調一次優先級:安全動作的價值排序是「備份可恢復 > 暴露面收斂 > 登入加固 > 檢測告警」。預算與精力有限時,從前往後做——能被恢復的系統才有資格談其他一切。
本節小結
- 第一小時六件事:普通用戶+sudo、密鑰登入、禁密碼禁 root、ufw 默認拒絕、fail2ban+自動更新、ss -tlnp 自查暴露面。
- 備份 3-2-1 且每季度演練恢復;異地副本是勒索場景的唯一保險;面板與數據庫絕不暴露公網。
- 入侵信號看三樣:陌生進程、異常外連、計劃任務;應急四步隔離→取證→清除加固→復盤,先保證據再恢復。