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 移除 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,並在/etc/dnf/automatic.conf 中設定upgrade_type = security。
設定更新結果的電子郵件通知。停用生產伺服器上的自動重新開機(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。在/etc/profile中設定全局umask為027,以防止新檔案為世界可讀。
使用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 會新增核心層級的限制,以限制程序可以做什麼。請使用您的發行版隨附的版本:SELinux 適用於 RHEL/CentOS/Fedora,AppArmor 適用於 Ubuntu/Debian/SUSE。在兩者之間切換會造成相容性問題。
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追蹤所有 root 層級指令的執行:
-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。設定每天執行aide --check的 cron 作業,並將結果以電子郵件傳送給管理員。
集中化日誌
如果擁有 root 存取權限的攻擊者刪除本機日誌,這些日誌就毫無用處。使用具備 TLS 加密功能的 rsyslog 即時將日誌轉寄到遠端伺服器。新增至/etc/rsyslog.conf:
*.* @@remote-host:514在 SSH 配置中設定LogLevel VERBOSE,以便日誌包含每次成功登入的金鑰指紋。對於管理多台伺服器的生產環境,Wazuh或OSSEC等工具可提供主機型入侵偵測與集中式日誌分析。
持續維護
硬體加固不是一次性的工作。設定會改變、新的弱點會出現、員工變動會留下遺棄的帳號。
每週一次:檢閱 Fail2Ban 記錄、檢查故障更新、驗證備份。
每月:審核使用者帳號和權限、檢視執行中的服務、使用Lynis或OpenSCAP 執行全面掃描。
每季一次:輪換憑證、更新防火牆規則、測試災難恢復。
使用 Ansible 等基礎建設即程式工具與dev-sec.io加固角色,在您的機群中強制執行一致的組態,並防止稽核之間的偏移。
FDC 的專用伺服器提供您完全 root 存取權限,並可完全控制您的安全堆疊。探索專用伺服器選項,在您可以控制每層的平台上建立。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
iperf3 教學:測試 Linux 與 Windows 上的網路速度
10 分鐘閱讀 - 2026年5月7日