Linux 服务器加固清单

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

hero section cover
目录
  • Linux 服务器加固清单
  • 锁定 SSH
  • 配置防火墙和 Fail2Ban
  • 打补丁和自动更新
  • 加固文件系统和权限
  • 启用强制访问控制
  • 设置审计日志和监控
  • 持续维护
分享

加固 Linux 服务器的分步核对表。涵盖 SSH、防火墙、打补丁、文件权限、SELinux/AppArmor 和审计日志

Linux 服务器加固清单

默认的 Linux 安装不是安全的 Linux 安装。错误配置(如开放 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。

删除以明文传输数据的传统协议:

传统协议端口安全替代方案
远程登录23SSH
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阻止设置二进制文件和设备节点
/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

跟踪所有 root 级命令的执行情况:

-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

使用augenrules --load加载规则,并在规则文件末尾添加-e 2,以防止配置被篡改(更改后需要重启)。

使用 AIDE 监控文件完整性

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 进行全面扫描。

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

使用基础设施即代码工具(如带有dev-sec.io加固角色的 Ansible)在整个机群中执行一致的配置,并防止审计之间的偏移。

FDC 的专用服务器为您提供完全 root 访问权限,让您完全控制安全堆栈。探索专用服务器选项,在您可以控制每一层的平台上进行构建。

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

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

立即升级

博客

本周特色

更多文章
Linux 服务器加固清单

Linux 服务器加固清单

加固 Linux 服务器的分步核对表。涵盖 SSH、防火墙、打补丁、文件权限、SELinux/AppArmor 和审计日志

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

iperf3 教程:在 Linux 和 Windows 上测试网络速度

10 分钟阅读 - 2026年5月7日

更多文章