Linux 伺服器加固清單
15 分鐘閱讀 - 2026年5月8日

強化 Linux 伺服器的逐步清單。涵蓋 SSH、防火牆、修補程式、檔案權限、SELinux/AppArmor 和稽核記錄
Linux 伺服器強化檢查清單
預設的 Linux 安裝並非安全的 Linux 安裝。諸如開放 root SSH 存取、防火牆設定薄弱以及軟體未修補等錯誤設定,是造成多數安全漏洞的主因。新伺服器一上線,幾分鐘內就會面臨自動化掃描,因此強化防護應是首要任務。
本檢查清單涵蓋核心步驟:鎖定 SSH 存取、設定防火牆、套用修補程式、收緊檔案權限、啟用強制存取控制,以及設定稽核記錄。
鎖定 SSH
SSH 是您的主要存取點,也是攻擊者首先試探的目標。預設設定(密碼驗證、root 登入、22 號埠)正是自動化掃描工具所鎖定的目標。
生成一組 Ed25519 密鑰對,其安全性與效能均優於 RSA:
ssh-keygen -t ed25519當基於金鑰的登入功能正常運作後,請更新 /etc/ssh/sshd_config:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2將預設埠號從 22 改為較不顯眼的數字。此舉雖無法阻擋決心已定的攻擊者,但能大幅減少自動化掃描產生的干擾。
在關閉當前工作階段前,請務必透過第二個終端機測試變更。執行 sudo sshd -t 檢查語法錯誤,接著執行 systemctl reload sshd 以套用變更,同時不中斷現有連線。
新增雙因素驗證
2FA 意味著攻擊者必須同時擁有您的 SSH 金鑰以及對您裝置的實體存取權限。安裝 Google Authenticator PAM 模組:
sudo apt install libpam-google-authenticator # Debian/Ubuntu
sudo dnf install google-authenticator # RHEL/Fedora執行 google-authenticator 為每位使用者執行此指令,以產生密鑰與恢復碼。請將恢復碼離線儲存。
將此行加入 /etc/pam.d/sshd:
auth required pam_google_authenticator.so然後更新 /etc/ssh/sshd_config:
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive測試時請保持一個活躍的連線。TOTP 驗證碼取決於精確的系統時間,因此請確保 NTP 正在運行。
設定防火牆與 Fail2Ban
即使您的伺服器位於網路防火牆之後,仍應運行基於主機的防火牆。其原則很簡單:預設拒絕所有傳入流量,然後僅允許您所需的流量。
適用於 Ubuntu/Debian (UFW):
ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enable針對 RHEL/Rocky/AlmaLinux (Firewalld):
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload透過在 /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1安裝 Fail2Ban
Fail2Ban 會監控登入嘗試,並在多次失敗後封鎖 IP 位址。建立 /etc/fail2ban/jail.local (請勿直接編輯 jail.conf ,更新會覆蓋該檔案),並設定為在 10 分鐘內連續失敗三次後,將 IP 封鎖一小時。為您的防火牆設定正確的後端(banaction = ufw 或 banaction = nftables).
審計服務與移除舊版協定
使用 ss -tlnp ,並使用 systemctl list-units --type=service --state=running。停用所有非必要服務:藍牙、CUPS、avahi-daemon、rpcbind。
移除以明文傳輸資料的舊式協定:
| 舊式通訊協定 | 埠號 | 安全的替代方案 |
|---|---|---|
| Telnet | 23 | SSH |
| RSH / Rlogin | 512、513、514 | SSH |
| FTP | 21 | SFTP / FTPS |
| TFTP | 69 | SFTP / SCP |
| NIS | 變數 | LDAP / Kerberos |
在 Debian/Ubuntu 上: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. 在基於 RHEL 的系統上: yum erase xinetd ypserv tftp-server telnet-server rsh-server. 使用 ss -tulpn.
修補程式與自動更新
更新系統是彌補已知安全漏洞的最快方法。請在系統部署完成後立即執行更新:
apt update && apt upgrade -y # Debian/Ubuntu
dnf update -y # RHEL/Rocky接著將安全修補程式自動化。在 Debian/Ubuntu 系統上,安裝 unattended-upgrades 並設定為僅套用安全修補程式。在 RHEL/Rocky 系統上,安裝 dnf-automatic 並設定 upgrade_type = security 設定為 /etc/dnf/automatic.conf.
設定更新結果的電子郵件通知。在生產伺服器上停用自動重新啟動(Automatic-Reboot = false),確保重啟僅發生於預定的維護時段。對於高可用性環境,請考慮使用 Canonical Livepatch(Ubuntu)或 kpatch(RHEL)進行即時修補。
強化檔案系統與權限設定
首先審查 SUID 和 SGID 二進位檔。這些檔案會以提升的權限執行,是攻擊者最常鎖定的目標:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls收緊關鍵檔案的權限: /etc/shadow 應為 600, /etc/passwd 應設定為 644, /etc/ssh/sshd_config 應設定為 600。設定全域 umask 為 027 在 /etc/profile ,以防止新建立的檔案對所有人可讀。
使用 find / -xdev -type f -perm -0002 -ls。對於必須保持世界可寫的目錄(例如 /tmp),請套用黏著位元: chmod 1777 /tmp.
安全掛載選項
編輯 /etc/fstab 以限制關鍵分割區上的操作:
| 分區 | 掛載選項 | 用途 |
|---|---|---|
/tmp | nodev, nosuid, noexec | 防止惡意軟體在全域可寫區域中執行 |
/var/tmp | nodev, nosuid, noexec | 與 /tmp 相同的保護機制 |
/dev/shm | nodev, nosuid, noexec | 保護共用記憶體 |
/home | nodev, nosuid | 阻止 setuid 二進位檔及裝置節點 |
/var/log | nodev、nosuid、noexec | 保護日誌完整性 |
請在重新開機前使用 mount -o remount ,以避免開機問題。
啟用強制存取控制
SELinux 和 AppArmor 會在核心層級對程序的行為施加限制。請使用您所使用發行版預設搭載的方案:RHEL/CentOS/Fedora 採用 SELinux,Ubuntu/Debian/SUSE 採用 AppArmor。在兩者之間切換會導致相容性問題。
SELinux:使用 getenforce。請先以寬容模式(setenforce 0) 至少兩週,以記錄工作負載行為而不造成系統故障。透過 ausearch -m avc -ts recent。使用 audit2why 來診斷阻擋情況,並使用 audit2allow -M [module_name] 來建立政策模組。待日誌清空後,使用 setenforce 1,並在 /etc/selinux/config.
AppArmor 中使其永久生效:使用 aa-status。安裝 apparmor-utils 以執行管理指令。使用 aa-complain,待確認無誤後,再切換至強制模式 aa-enforce 。當您有把握時,使用 aa-genprof 來為自訂應用程式建立設定檔。
設定稽核記錄與監控
若無記錄,事件便無從追蹤。安裝 auditd:
sudo apt-get install auditd audispd-plugins為關鍵檔案新增檔案系統監控:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity追蹤所有根目錄層級的指令執行:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands載入規則並 augenrules --load 並在 -e 2 至規則檔案末尾,使設定具備防篡改功能(變更需重新開機)。
使用 AIDE 進行檔案完整性監控
AIDE 透過將當前狀態與已知正常的基準進行比對,來偵測未經授權的檔案變更。安裝它,並使用 aideinit,並將生成的檔案移至 /var/lib/aide/aide.db.gz。設定每日 cron 任務以執行 aide --check ,並將結果透過電子郵件發送給管理員。
集中化日誌
若擁有 root 權限的攻擊者刪除本地日誌,這些日誌將毫無用處。請使用 rsyslog 並搭配 TLS 加密,將日誌即時轉發至遠端伺服器。請將 /etc/rsyslog.conf:
*.* @@remote-host:514Set LogLevel VERBOSE ,使日誌包含每次成功登入的金鑰指紋。對於管理多台伺服器的生產環境,Wazuh 或 OSSEC 等工具可提供基於主機的入侵偵測,並具備集中式日誌分析功能。
持續維護
系統強化並非一次性任務。系統設定會隨時間產生偏差,新漏洞不斷出現,而人員異動更會留下無人管理的帳戶。
每週:檢視 Fail2Ban 日誌、檢查更新失敗紀錄、驗證備份。
每月:審核使用者帳戶與權限、檢視運行中的服務、使用 Lynis 或 OpenSCAP 執行全面掃描。
每季:輪替憑證、更新防火牆規則、測試災難復原。
使用 Ansible 等基礎架構即代碼 (Infrastructure-as-Code) 工具,搭配 dev-sec.io 的強化角色,以確保整個機群配置的一致性,並防止審計期間發生設定漂移。
FDC 的專用伺服器提供完整的 root 存取權限,讓您能全面掌控安全架構。探索專用伺服器方案,在您能掌控每個層級的平台上建構系統。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
Prometheus 和 node_exporter 設定指南
安裝 Prometheus 和 node_exporter、設定 scrape 目標、設定 systemd 服務並保護您的監控堆疊。針對 Linux 逐步進行。
15 分鐘閱讀 - 2026年5月29日
Linux 封包處理的 XDP 與 eBPF
14 分鐘閱讀 - 2026年5月27日