Linux 伺服器加固清單

15 分鐘閱讀 - 2026年5月8日

hero section cover
目錄
  • Linux 伺服器加固清單
  • 鎖定 SSH
  • 設定防火牆和 Fail2Ban
  • 修補程式與自動化更新
  • 強化檔案系統與權限
  • 啟用強制存取控制
  • 設定稽核記錄與監控
  • 持續維護
分享

強化 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 = ufwbanaction = nftables)。

審核服務並移除舊有通訊協定

使用ss -tlnp檢查正在監聽的服務,並使用systemctl list-units --type=service --state=running 檢查正在執行的服務。停用任何您不需要的服務:藍牙、CUPS、avahi-daemon、rpcbind。

移除以明碼傳輸資料的傳統通訊協定:

傳統通訊協定連接埠安全替代方案
Telnet23SSH
RSH / Rlogin512, 513, 514SSH
FTP21SFTP / FTPS
TFTP69SFTP / 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中設定全局umask027,以防止新檔案為世界可讀。

使用find / -xdev -type f -perm -0002 -ls 來尋找並修復世界可寫檔案。對於必須保持世界可寫的目錄 (如/tmp),應用黏住位元:chmod 1777 /tmp

安全掛載選項

編輯/etc/fstab以限制關鍵磁碟分割上可能發生的情況:

磁碟分割掛載選項用途
/tmpnodev、nosuid、noexec防止惡意軟體在世界可寫區域執行
/var/tmpnodev, nosuid, noexec與 /tmp 相同的保護
/dev/shmnodev, nosuid, noexec保護共用記憶體
/homenodev, nosuid封鎖 setuid 二進位檔和裝置節點
/var/lognodev、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,以便日誌包含每次成功登入的金鑰指紋。對於管理多台伺服器的生產環境,WazuhOSSEC等工具可提供主機型入侵偵測與集中式日誌分析。

持續維護

硬體加固不是一次性的工作。設定會改變、新的弱點會出現、員工變動會留下遺棄的帳號。

每週一次:檢閱 Fail2Ban 記錄、檢查故障更新、驗證備份。

每月:審核使用者帳號和權限、檢視執行中的服務、使用LynisOpenSCAP 執行全面掃描。

每季一次:輪換憑證、更新防火牆規則、測試災難恢復。

使用 Ansible 等基礎建設即程式工具與dev-sec.io加固角色,在您的機群中強制執行一致的組態,並防止稽核之間的偏移。

FDC 的專用伺服器提供您完全 root 存取權限,並可完全控制您的安全堆疊。探索專用伺服器選項,在您可以控制每層的平台上建立。

background image
您的服务器是否阻碍了您的发展?

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。

立即升级

博客

本周特色

更多文章
Linux 伺服器加固清單

Linux 伺服器加固清單

強化 Linux 伺服器的逐步清單。涵蓋 SSH、防火牆、修補程式、檔案權限、SELinux/AppArmor 和稽核記錄

15 分鐘閱讀 - 2026年5月8日

iperf3 教學:測試 Linux 與 Windows 上的網路速度

10 分鐘閱讀 - 2026年5月7日

更多文章