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 --reload

2. 用户和权限管理

创建标准用户账户并配置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 sshd

3. 网络安全配置

配置系统网络参数增强安全性:

# 编辑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 4

4. 服务安全配置

配置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.db

6. 定期维护与更新

创建自动更新脚本:

# 创建安全更新脚本
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

常见问题与注意事项

  1. 过度加固可能导致系统功能受限,需在安全性和可用性之间找到平衡点
  2. 安全配置变更前应充分测试,避免影响生产环境
  3. 不同Linux发行版的配置文件位置和命令可能有所不同,需根据实际情况调整
  4. 记录所有安全变更,便于问题排查和审计

排错思路

  1. 检查系统日志:/var/log/syslog、/var/log/auth.log等
  2. 使用netstat或ss命令检查异常网络连接
  3. 使用top、htop或ps命令检查异常进程
  4. 检查系统文件完整性:使用md5sum或sha256sum验证关键文件

总结

Linux服务器安全加固是保障系统安全的基础工作,需要从系统配置、用户管理、网络安全、服务配置等多个方面进行。本文提供的清单可作为安全加固的参考,但实际应用中需要根据具体环境和业务需求进行调整。安全加固不是一次性工作,而是需要持续关注和改进的过程,只有建立完善的安全体系,才能有效防范各类安全威胁。

主楼