Linux服务器广泛应用于互联网服务和企业系统中,随着网络攻击手段的日益复杂,服务器安全加固成为运维工作的重中之重。本文提供了一份实用的安全加固清单,适用于大多数Linux发行版(如Ubuntu、CentOS、Debian等),特别适合部署在生产环境中的服务器,也可作为测试和开发环境的安全基线。
安全加固原理
安全加固的核心是遵循"最小权限原则"和"深度防御策略"。最小权限原则指系统组件、用户和程序只应拥有完成其任务所必需的最小权限;深度防御策略则通过多层安全措施保护系统,即使一层被突破,其他层仍能提供保护。此外,安全加固还包括确保系统使用安全的默认配置,建立完善的日志和监控系统,以及定期更新和维护系统。
操作步骤
1. 系统基础安全配置
首先更新系统并禁用不必要的服务:
# 更新系统
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS/RHEL
# 检查并禁用不必要的服务
sudo systemctl list-unit-files --state=enabled
sudo systemctl disable service_name配置防火墙规则:
# UFW防火墙配置(Ubuntu)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
# firewalld配置(CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload2. 用户和权限管理
创建标准用户账户并配置sudo权限:
# 创建新用户
sudo adduser newuser
# 添加到sudo组
sudo usermod -aG sudo newuser
# 设置密码策略
sudo nano /etc/login.defs
# 设置: PASS_MAX_DAYS 90 PASS_MIN_DAYS 10 PASS_WARN_AGE 7禁用或删除默认账户:
# 禁用root SSH登录
sudo nano /etc/ssh/sshd_config
# 设置: PermitRootLogin no
sudo systemctl restart sshd3. 网络安全配置
配置系统网络参数增强安全性:
# 编辑sysctl.conf
sudo nano /etc/sysctl.conf
# 添加以下安全参数:
net.ipv4.ip_forward=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.log_martians=1
sudo sysctl -p配置SSH安全设置:
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 设置以下参数:
Port 2222 # 更改默认端口
PermitRootLogin no
PasswordAuthentication no # 仅使用密钥认证
MaxAuthTries 44. 服务安全配置
配置Web服务器安全参数:
# Nginx安全配置
sudo nano /etc/nginx/nginx.conf
# 添加安全头:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;数据库安全配置:
# MySQL/MariaDB安全初始化
sudo mysql_secure_installation
# 设置root密码,移除匿名用户,禁止远程root登录等5. 日志与监控
配置系统日志轮转:
# 编辑logrotate配置
sudo nano /etc/logrotate.conf
# 添加自定义规则:
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 root root
}安装入侵检测系统:
# 安装AIDE
sudo apt install aide # Debian/Ubuntu
sudo yum install aide # CentOS/RHEL
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db6. 定期维护与更新
创建自动更新脚本:
# 创建安全更新脚本
sudo nano /usr/local/bin/security_updates.sh
#!/bin/bash
apt update
apt upgrade -y
apt autoremove -y
# 添加到cron
sudo crontab -e
# 每周日运行: 0 0 * * 0 /usr/local/bin/security_updates.sh常见问题与注意事项
- 过度加固可能导致系统功能受限,需在安全性和可用性之间找到平衡点
- 安全配置变更前应充分测试,避免影响生产环境
- 不同Linux发行版的配置文件位置和命令可能有所不同,需根据实际情况调整
- 记录所有安全变更,便于问题排查和审计
排错思路
- 检查系统日志:
/var/log/syslog、/var/log/auth.log等 - 使用
netstat或ss命令检查异常网络连接 - 使用
top、htop或ps命令检查异常进程 - 检查系统文件完整性:使用
md5sum或sha256sum验证关键文件
总结
Linux服务器安全加固是保障系统安全的基础工作,需要从系统配置、用户管理、网络安全、服务配置等多个方面进行。本文提供的清单可作为安全加固的参考,但实际应用中需要根据具体环境和业务需求进行调整。安全加固不是一次性工作,而是需要持续关注和改进的过程,只有建立完善的安全体系,才能有效防范各类安全威胁。
主楼