引言

在当今数字化时代,服务器安全成为组织信息安全的核心环节。Linux服务器因其稳定性、灵活性和开源特性被广泛采用,但也因此成为攻击者的主要目标。本文提供一份实用的Linux服务器安全加固清单,涵盖系统基础、网络安全、日志监控等方面,帮助系统管理员构建防御纵深,降低安全风险。适用于生产环境中的各类Linux服务器,包括但不限于Ubuntu、CentOS、Debian等主流发行版。

系统基础加固

用户和权限管理

系统用户是安全的第一道防线,应遵循最小权限原则。

# 禁用或删除不必要的账户
sudo userdel -r username  # 删除用户及其主目录
sudo passwd -l username   # 锁定用户账户

# 确保root账户有强密码
sudo passwd root

# 添加sudo用户并配置sudo权限
adduser adminuser
visudo  # 编辑sudoers文件,添加以下行:
# adminuser ALL=(ALL:ALL) ALL

# 设置密码策略
sudo apt install libpam-pwquality  # 对于Debian/Ubuntu
# 编辑 /etc/security/pwquality.conf
# minlen = 12
# minclass = 3

服务和端口管理

最小化运行的服务可以减少攻击面。

# 查看当前运行的服务
systemctl list-units --type=service --state=running

# 禁用不必要的服务
sudo systemctl disable servicename
sudo systemctl stop servicename

# 使用netstat检查监听端口
sudo netstat -tulpn

# 使用nmap扫描开放端口
sudo nmap -sT -O localhost

系统更新和补丁管理

保持系统最新是防御已知漏洞的关键。

# 更新软件包列表
sudo apt update  # Debian/Ubuntu
sudo yum check-update  # CentOS/RHEL

# 升级已安装的软件包
sudo apt upgrade  # Debian/Ubuntu
sudo yum update  # CentOS/RHEL

# 设置自动安全更新
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

网络安全加固

防火墙配置

防火墙是网络安全的第一道屏障。

# 安装和配置ufw (Uncomplicated Firewall)
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh  # 允许SSH访问
sudo ufw enable

# 使用iptables高级配置
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # 允许HTTPS
sudo iptables -A INPUT -j DROP  # 默认拒绝所有输入
# 保存规则 (根据发行版不同)
sudo iptables-save > /etc/iptables/rules.v4

SSH 安全配置

SSH是服务器管理的主要入口,需要特别加固。

# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config

# 修改以下配置:
Port 2222  # 更改默认SSH端口
PermitRootLogin no  # 禁止root直接登录
PasswordAuthentication no  # 仅允许密钥认证
AllowUsers adminuser  # 只允许特定用户登录
MaxAuthTries 3  # 限制认证尝试次数
LoginGraceTime 30  # 登录超时时间
UseDNS no  # 禁用DNS查询以提高性能

# 重启SSH服务
sudo systemctl restart sshd

网络服务安全

限制不必要的网络服务可以减少攻击面。

# 使用fail2ban防止暴力破解
sudo apt install fail2ban
sudo nano /etc/fail2ban/jail.local

# 添加以下配置:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

# 启动fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

日志和监控

系统日志配置

完善的日志记录是安全审计的基础。

# 配置日志轮转
sudo nano /etc/logrotate.conf

# 添加自定义日志轮转规则
/var/log/myapp/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 root root
}

# 安装和配置logwatch日志分析工具
sudo apt install logwatch
sudo nano /etc/cron.daily/00logwatch

# 添加以下内容:
#!/bin/bash
test -x /usr/sbin/logwatch || exit 0
/usr/sbin/logwatch --mailto admin@example.com --range Yesterday

安全审计

启用系统审计功能可以跟踪安全事件。

# 安装auditd
sudo apt install auditd

# 配置审计规则
sudo nano /etc/audit/audit.rules

# 添加以下规则:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudo_actions
-w /var/log/auth.log -p wa -k auth_logs

# 启动auditd
sudo systemctl start auditd
sudo systemctl enable auditd

入侵检测

部署入侵检测系统可以及时发现异常活动。

# 安装和配置rkhunter
sudo apt install rkhunter
sudo rkhunter --propupd  # 更新文件属性数据库
sudo nano /etc/rkhunter.conf

# 修改以下配置:
MAIL_ON_WARNING="yes"
MAIL_TO="admin@example.com"
WEB_CMD="/usr/bin/sudo /usr/bin/rkhunter --check --sk --summary"

# 设置定期检查
sudo nano /etc/cron.weekly/rkhunter
#!/bin/sh
rkhunter --checkall --skip-keypress

常见问题与排错

SSH连接失败

问题:修改SSH配置后无法连接服务器。

解决方案:

  1. 通过控制台或物理访问服务器
  2. 检查SSH配置文件语法:sudo sshd -t
  3. 恢复默认配置并逐步修改
  4. 检查防火墙是否阻止SSH端口

系统服务启动失败

问题:安全加固后某些服务无法启动。

解决方案:

  1. 查看系统日志:sudo journalctl -xe
  2. 检查服务配置:sudo systemctl status servicename
  3. 逐步回滚配置更改
  4. 使用strace命令跟踪系统调用:sudo strace -f -o /tmp/strace.log systemctl start servicename

防火墙阻止合法流量

问题:防火墙配置过于严格导致合法服务无法访问。

解决方案:

  1. 暂时禁用防火墙测试:sudo ufw disable
  2. 逐步添加规则,每次测试一项服务
  3. 使用tcpdump监控网络流量:sudo tcpdump -i eth0 port 80
  4. 使用nmap验证端口状态:sudo nmap -sT -p 80 localhost

总结

Linux服务器安全加固是一个持续的过程,需要定期审查和更新本文提及的各项配置。通过实施系统基础加固、网络安全防护、日志监控等措施,可以显著提高服务器的安全性。安全加固应遵循深度防御原则,结合技术措施和管理制度,构建多层次的安全防护体系。记住,没有绝对安全的系统,只有持续改进的安全实践。

主楼