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 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。设置全局 umask027/etc/profile ,以防止新文件被设为对所有人可读。

使用 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 会在内核层面对进程的行为施加限制。请使用您所用发行版自带的方案: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:514

Set LogLevel VERBOSE ,确保日志包含每次成功登录的密钥指纹。对于管理多台服务器的生产环境,WazuhOSSEC 等工具可提供基于主机的入侵检测及集中式日志分析。

持续维护

系统加固并非一次性任务。配置会随时间推移发生漂移,新漏洞不断出现,人员变动还会留下无人管理的账户。

每周:审查 Fail2Ban 日志,检查更新失败情况,验证备份。

每月:审核用户账户及权限,检查运行中的服务,使用 LynisOpenSCAP 进行全面扫描。

每季度:轮换凭据、更新防火墙规则、测试灾难恢复。

使用 Ansible 等基础设施即代码工具,结合 dev-sec.io 的加固角色,可在整个服务器集群中强制执行一致的配置,防止审计间隔期间出现配置漂移。

FDC 的专用服务器为您提供完整的 root 访问权限,让您能够全面掌控安全架构。探索专用服务器选项,在您能掌控每一层的平台上构建系统。

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

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

立即升级

博客

本周特色

更多文章
Linux 内存管理:交换、OOM 杀手和 Cgroups

Linux 内存管理:交换、OOM 杀手和 Cgroups

Linux swap、OOM 杀手和 cgroups 如何协同工作--附带数据库、Web 服务器和多租户 VPS 主机的配置示例。

12 分钟阅读 - 2026年5月31日

Prometheus 和 node_exporter 安装指南

15 分钟阅读 - 2026年5月29日

更多文章