Linux 系统安全加固实现
前言
Linux 服务器的安全加固涉及多个层面的措施,包括用户管理、权限控制、系统更新、防火墙与网络配置、日志监控等。
用户与权限管理
- 禁止使用
root
直接登录,改为普通用户登录后使用sudo
提权。 - 强制使用强密码策略(复杂密码、定期更换)。
- 禁止未授权用户和无用账户,如:
- 禁用默认账户
guest
等。 - 删除无用或过期账户。
- 禁用默认账户
- 严格分配权限,采用最小权限原则(Least Privilege Principle)。
- 使用
/etc/sudoers
文件精确管理用户sudo
权限。 - 锁定长期未使用账号:
- 使用命令
faillock
或设置登录失败限制锁定账户。 - 配置密码最长使用期限(例如 60-90 天)。
- 使用命令
文件系统与目录权限
- 对关键系统文件和目录施加严格权限:
/etc/passwd
、/etc/shadow
、/etc/ssh/sshd_config
等文件应设置为600
或更高。- 应用
chattr +i
对一些重要配置文件设置不可修改属性。
- 使用
umask
配置默认权限掩码以防止文件权限默认过宽。 - 将敏感信息存储在受权限保护的安全目录下(如
/var/secrets/
)。 - 禁止或限制某些危险命令,如:
- 禁用普通用户运行
compilers
、编译器文件(gcc
)。 - 删除一部分危险的命令工具,如
wget
和curl
,防止恶意下载。
- 禁用普通用户运行
SSH 安全加固
- 修改默认的 SSH 端口(避免使用 22)。
1
Port 2222
- 禁用
root
登录:1
PermitRootLogin no
- 使用 SSH 密钥认证(禁用密码认证):
1
PasswordAuthentication no
- 限制允许登录的 IP 地址(通过
hosts.allow
和hosts.deny
或者防火墙规则)。 - 配置 SSH 登录失败自动封禁机制,推荐工具:
- Fail2ban:监控认证日志,封禁可疑 IP。
- DenyHosts:自动锁定失败尝试的 IP 地址。
系统更新与漏洞修复
- 定期更新系统和软件包,修补已知漏洞。
- 使用包管理工具,如
yum
、dnf
、apt
。1
yum update -y
- 使用包管理工具,如
- 安装自动更新工具,如
unattended-upgrades
。 - 确保内核实时修复(例如
livepatch
工具)。 - 移除不必要的服务和软件,尤其是过时或未维护的服务(例如 FTP 等)。
网络与防火墙配置
- 配置防火墙,默认阻止所有访问,只允许必要端口开放:
- 使用 iptables 或 firewalld 设置规则。
- 推荐工具:
UFW
(简单使用)或nftables
。1
2ufw default deny incoming
ufw allow 22
- 检查开放的端口:
- 查看当前端口
netstat -tuln
或ss -tuln
。 - 持续扫描异常访问,避免暴露无关的服务。
- 查看当前端口
- 启用 TCP 连接限制,比如
SYN cookie
防御 SYN 洪水攻击:1
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
- 使用 VPN 或安全代理访问服务器的重要服务。
日志与监控
- 开启系统日志服务(如
rsyslog
、journald
)并定期分析日志。 - 使用
logrotate
避免日志文件过于庞大。 - 关注关键日志文件:
/var/log/auth.log
或/var/log/secure
/var/log/messages
(系统日志)
- 配置自动报警工具,如:
- OSSEC:主动入侵监测系统。
- Fail2ban:监控并阻止可疑的登录异常。
- 定期检查磁盘空间和文件完整性:
- 使用
auditd
来监控文件的读写操作。 - 使用工具 Tripwire 检测文件改动。
- 使用
应用层加固
- 数据加密
- 采用 SSL/TLS 保护数据传输,确保 HTTPS、SFTP、SMTPS 的使用。
- 加固数据库访问权限,对于 MySQL 等仅允许本地授权访问。
- 禁用不必要的服务(如 NFS、Telnet 等易受攻击服务)。
- 设置常见服务限制:
- 限制 Apache/Nginx 并发连接和流量。
- 限制邮件端口可能的 SMTP 攻击。
文件系统安全
- 配置挂载点的权限:
/tmp
、/var/tmp
:设为noexec
,防止执行程序。/boot
:设为只读。1
echo '/tmp /var/tmp defaults,noexec,nosuid 0 0' >> /etc/fstab
- 启用
SELinux
或AppArmor
增强内核安全抓控。 - 配置
sysctl
变量增强内核网络安全,如:1
2
3net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
备份与灾难恢复
- 定期备份重要文件、配置和数据库:
- 使用 rsync 或备份工具(如
tar
+crontab
)。
- 使用 rsync 或备份工具(如
- 测试备份的可用性,制定灾难恢复计划。
- 利用 RAID、快照(Snapshot)实现更高级别的存储保护方案。
入侵检测和防御
- 部署入侵检测系统(IDS),如:
- Snort 监控网络入侵。
- AIDE 检查文件系统完整性。
- 使用 WAF(Web 应用防火墙)保护应用层,推荐:
- ModSecurity 或 Cloudflare。