Linux 伺服器上線後必做的 15 件事
當你在雲端平台或實體機器上部署好一台 Linux 伺服器時,系統雖然已經可以運作,但距離「安全、穩定且高效」的生產環境還有一段距離。對於系統管理員或 DevOps 工程師而言,上線後的初始設定(Post-Installation Hardening)至關重要。這不僅能防止資安漏洞,更能確保伺服器在長期運行中的穩定性。
以下將這 15 個關鍵步驟分為「基礎安全」、「系統優化」與「監控備份」三大區塊,並提供在 Ubuntu 22.04 / Debian 12 上可直接執行的指令。
一、 基礎安全強化
伺服器上線的第一要務是防禦。許多攻擊源於預設配置的疏忽。
-
更新系統套件 首先,確保所有基礎套件都是最新狀態,以修補已知漏洞。
sudo apt update && sudo apt upgrade -y -
建立非 root 使用者並授予 sudo 權限 絕對不要直接使用 root 帳號登入。建立一個具有 sudo 權限的普通使用者。
sudo adduser newuser sudo usermod -aG sudo newuser -
配置 SSH 金鑰認證 禁用密碼登入,改用 SSH 金鑰,這是防禦暴力破解最有效的手段。
ssh-keygen -t ed25519 ssh-copy-id newuser@your_server_ip -
修改 SSH 預設端口並禁用 Root 登入 編輯
/etc/ssh/sshd_config,將Port改為非 22 的端口(如 2222),並將PermitRootLogin設為no。隨後重新啟動服務:sudo systemctl restart sshd。 -
安裝並配置防火牆 (UFW) Ubuntu 預設帶有 UFW。允許 SSH(新端口)、HTTP 和 HTTPS 流量。
sudo ufw allow 2222/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable -
安裝 Fail2Ban 防禦暴力破解 Fail2Ban 可監控日誌,自動封鎖多次登入失敗的 IP。
sudo apt install fail2ban -y sudo systemctl enable fail2ban
二、 系統時間與環境優化
穩定的時間環境是日誌分析、SSL 憑證驗證及分散式系統同步的關鍵。
-
設定正確的時區 錯誤的時區會導致日誌時間混亂,影響除錯。
sudo timedatectl set-timezone Asia/Taipei -
設定 NTP 時間同步 確保系統時間與網路時間伺服器同步。Ubuntu 預設使用 systemd-timesyncd,通常無需額外安裝,但可確認其狀態:
timedatectl status -
安裝基礎效能監控工具 安裝
htop和tmux。htop提供直觀的資源監控,tmux允許在網路斷線時維持工作階段。sudo apt install htop tmux -y -
設定 Swap 虛擬記憶體 若伺服器記憶體較小,建議建立 Swap 檔案以防記憶體溢出。
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 寫入 fstab 以永久生效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
三、 監控、備份與日常維護
最後,建立可視化監控與自動備份機制,是確保業務連續性的保險。
-
安裝防火牆日誌監控工具 雖然 UFW 已啟用,但建議安裝
ufw的日誌查看工具或結合fail2ban的日誌進行分析。 -
設定 Logrotate 日誌輪轉 確保系統日誌不會無限增長佔滿磁碟空間。Ubuntu 預設已配置,但可檢查
/etc/logrotate.d/下的設定是否合理。 -
安裝並配置自動備份腳本 使用
rsync或tar定期備份重要資料至遠端儲存空間。建議編寫 crontab 腳本:crontab -e # 加入:0 2 * * * /path/to/backup_script.sh -
啟用自動安全更新 安裝
unattended-upgrades以自動套用安全修補程式。sudo apt install unattended-upgrades -y sudo dpkg-reconfigure --priority=low unattended-upgrades -
定期進行磁碟空間檢查 建立習慣,定期使用
df -h檢查磁碟使用率,並使用du -sh /*找出大檔案。
常見問題解答
Q1: 修改 SSH 端口後無法連線怎麼辦?
這通常是由於防火牆未開放新端口所致。請確認 UFW 規則已正確新增並啟用,或者檢查雲端供應商(如 AWS、GCP、Azure)的安全群組(Security Group)是否已允許該 TCP 端口。若仍無法連線,請透過雲端控制台的 VNC 或控制台終端機登入,檢查 sshd_config 設定是否正確載入。
Q2: 如何確認 Fail2Ban 是否正在運作並封鎖了 IP? 可以使用以下指令查看封鎖狀態:
sudo fail2ban-client status sshd
若看到 Jail list: sshd 且 Currently banned 有數字,表示運作正常。若無效,請檢查 /var/log/fail2ban.log 是否有錯誤訊息。
小結
完成這 15 個步驟後,你的 Linux 伺服器將具備堅固的資安防護、穩定的運行環境以及基本的監控能力。記住,系統管理是一個持續的過程,建議定期審查這些設定,並根據業務需求調整監控與備份策略。安全無小事,預防勝於治療。