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 权限的攻击者删除了本地日志,这些日志将毫无用处。请使用支持 TLS 加密的 rsyslog 将日志实时转发至远程服务器。添加到 /etc/rsyslog.conf:
*.* @@remote-host:514Set LogLevel VERBOSE ,确保日志包含每次成功登录的密钥指纹。对于管理多台服务器的生产环境,Wazuh 或 OSSEC 等工具可提供基于主机的入侵检测及集中式日志分析。
持续维护
系统加固并非一次性任务。配置会随时间推移发生漂移,新漏洞不断出现,人员变动还会留下无人管理的账户。
每周:审查 Fail2Ban 日志,检查更新失败情况,验证备份。
每月:审核用户账户及权限,检查运行中的服务,使用 Lynis 或 OpenSCAP 进行全面扫描。
每季度:轮换凭据、更新防火墙规则、测试灾难恢复。
使用 Ansible 等基础设施即代码工具,结合 dev-sec.io 的加固角色,可在整个服务器集群中强制执行一致的配置,防止审计间隔期间出现配置漂移。
FDC 的专用服务器为您提供完整的 root 访问权限,让您能够全面掌控安全架构。探索专用服务器选项,在您能掌控每一层的平台上构建系统。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
Linux 内存管理:交换、OOM 杀手和 Cgroups
Linux swap、OOM 杀手和 cgroups 如何协同工作--附带数据库、Web 服务器和多租户 VPS 主机的配置示例。
12 分钟阅读 - 2026年5月31日
Prometheus 和 node_exporter 安装指南
15 分钟阅读 - 2026年5月29日