Linux服务器安全策略详解
摘要
本文档旨在为系统管理员、运维工程师和安全爱好者提供一套全面、系统且可操作的Linux服务器安全加固指南,内容涵盖了从物理安全、账户管理、系统加固、网络安全、日志审计到入侵响应的全生命周期安全策略,通过遵循本文档的最佳实践,可以显著提升服务器的安全性,有效抵御各类网络攻击,保护数据和服务的机密性、完整性和可用性。

目录
-
- 1. 为什么服务器安全至关重要?
- 2. 安全的核心理念:纵深防御
- 3. 本文档适用范围
-
安全策略核心模块
- 1. 物理安全 - 安全的基石
- 2. 账户与访问控制 - 第一道防线
- 3. 系统与服务加固 - 减少攻击面
- 4. 网络安全 - 边界防护
- 5. 文件系统与日志审计 - 追踪与溯源
- 6. 备份与灾难恢复 - 最后的保障
- 7. 安全监控与入侵响应 - 持续对抗
-
常用安全工具与资源
- 1. 系统加固工具
- 2. 入侵检测与防御系统
- 3. 日志分析工具
- 4. 官方安全资源
1. 为什么服务器安全至关重要?
在当今数字化时代,服务器承载着企业的核心业务、敏感数据和关键应用,一旦服务器被攻破,可能导致:
- 数据泄露:客户信息、商业机密、财务数据等被窃取,造成巨大经济损失和声誉损害。
- 服务中断:服务器被勒索软件加密或被用于发起DDoS攻击,导致业务瘫痪。
- 成为跳板:被攻陷的服务器可能成为攻击内网其他设备的“跳板”。
- 法律与合规风险:违反数据保护法规(如GDPR、网络安全法)面临巨额罚款。
2. 安全的核心理念:纵深防御
没有任何单一的安全措施是绝对可靠的,纵深防御策略强调构建多层、多维度的安全防护体系,即使一层防御被突破,还有其他层可以阻止攻击者或限制其造成的损害,它包括:

- 边界防护:防火墙、WAF
- 网络隔离:VLAN、安全组
- 主机加固:系统配置、最小权限原则
- 应用安全:代码审计、输入验证
- 数据安全:加密、访问控制
- 监控与响应:SIEM、应急响应计划
3. 本文档适用范围
本文档主要面向运行主流Linux发行版(如CentOS/RHEL, Ubuntu/Debian)的服务器,策略分为通用策略和特定发行版策略,管理员需根据实际情况进行调整。
安全策略核心模块
1. 物理安全 - 安全的基石
物理安全是所有数字安全的前提,如果攻击者能物理接触到服务器,任何软件层面的防护都可能失效。
- 策略:
- 将服务器放置在带锁、有监控的机房或机柜中。
- 严格控制机房出入权限,并记录访问日志。
- 禁用或使用密码保护BIOS/UEFI,防止从USB或CD-ROM启动。
- 启用BIOS密码,防止未授权的硬件配置更改。
- 考虑使用带IPMI/iDRAC等管理口的远程卡,并对其进行严格的安全配置。
2. 账户与访问控制 - 第一道防线
-
2.1. 账户管理
- 禁用或删除无用账户:如
lp,sync,shutdown,halt等,以及测试用户。 - 使用强密码策略:
- 强制要求用户使用复杂密码(长度、大小写、数字、特殊符号)。
- 定期更换密码(如每90天)。
- 禁止使用连续的或常见的弱密码。
- 使用
pam_pwquality或libpam-cracklib模块实现。
- 设置密码过期策略:
# /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_MIN_LEN 8 PASS_WARN_AGE 7
- 锁定长期未使用的账户:定期检查并锁定超过指定天数未登录的账户。
# 查找超过90天未登录的用户 lastlog | awk -F' ' 'NF>2 && $9 !~ "Never" {if(strtonum($9) < (time()-7776000)) print $1}'
- 禁用或删除无用账户:如
-
2.2. 权限管理
(图片来源网络,侵删)- 遵循最小权限原则:用户和程序只应拥有完成其任务所必需的最小权限。
- 谨慎使用
sudo:- 为特定用户或用户组授予
sudo权限,而不是直接使用root。 - 在
/etc/sudoers文件中精确定义允许执行的命令,避免使用NOPASSWD。 - 使用
visudo命令安全编辑sudoers文件。
- 为特定用户或用户组授予
- 禁用直接
root远程登录: 编辑/etc/ssh/sshd_config文件,设置PermitRootLogin no,然后重启SSH服务。 - 使用SSH密钥认证:
- 禁止密码登录,强制使用密钥对,极大提高安全性。
- 在
sshd_config中设置:PasswordAuthentication no PubkeyAuthentication yes
- 定期审计
sudo和su日志:检查谁在何时以什么身份执行了敏感操作。
3. 系统与服务加固 - 减少攻击面
-
3.1. 系统更新与补丁管理
- 保持系统最新:这是最重要也是最基本的安全措施。
- RHEL/CentOS:
sudo yum update -y - Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y
- RHEL/CentOS:
- 配置自动安全更新:对于生产环境,可以配置自动安装安全更新。
- RHEL/CentOS: 安装
yum-security或使用dnf-automatic。 - Ubuntu/Debian: 安装
unattended-upgrades包。
- RHEL/CentOS: 安装
- 保持系统最新:这是最重要也是最基本的安全措施。
-
3.2. 服务最小化
- 移除不必要的服务和软件包:每运行一个多余的服务,就增加一个潜在的攻击面。
- 使用
systemctl list-units --type=service --state=running查看运行中的服务。 - 对于不需要的服务,使用
systemctl disable <service_name>禁用并停止。
- 使用
- 使用
firewalld或ufw:只开放必要的端口。
- 移除不必要的服务和软件包:每运行一个多余的服务,就增加一个潜在的攻击面。
-
3.3. 内核安全参数优化
-
通过修改
/etc/sysctl.conf文件来增强系统安全性。 -
常见配置:
# 防止IP欺骗攻击 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # 防止重放攻击 net.ipv4.tcp_syncookies = 1 # 忽略ICMP重定向请求 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # 防止发送ICMP重定向 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 # 禁用IPv6路由(如果不需要) net.ipv6.conf.all.forwarding = 0
-
使配置生效:
sysctl -p
-
-
3.4. 使用安全增强型Linux
- SELinux是一个强大的强制访问控制安全模块。
- 策略:
- 在生产环境中启用SELinux,并设置为
Enforcing模式。 - 使用
sestatus检查SELinux状态。 - 使用 `getsebool -a |
- 在生产环境中启用SELinux,并设置为
