引言
在当今数字化时代,服务器安全成为组织信息安全的核心环节。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.v4SSH 安全配置
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配置后无法连接服务器。
解决方案:
- 通过控制台或物理访问服务器
- 检查SSH配置文件语法:
sudo sshd -t - 恢复默认配置并逐步修改
- 检查防火墙是否阻止SSH端口
系统服务启动失败
问题:安全加固后某些服务无法启动。
解决方案:
- 查看系统日志:
sudo journalctl -xe - 检查服务配置:
sudo systemctl status servicename - 逐步回滚配置更改
- 使用
strace命令跟踪系统调用:sudo strace -f -o /tmp/strace.log systemctl start servicename
防火墙阻止合法流量
问题:防火墙配置过于严格导致合法服务无法访问。
解决方案:
- 暂时禁用防火墙测试:
sudo ufw disable - 逐步添加规则,每次测试一项服务
- 使用
tcpdump监控网络流量:sudo tcpdump -i eth0 port 80 - 使用
nmap验证端口状态:sudo nmap -sT -p 80 localhost
总结
Linux服务器安全加固是一个持续的过程,需要定期审查和更新本文提及的各项配置。通过实施系统基础加固、网络安全防护、日志监控等措施,可以显著提高服务器的安全性。安全加固应遵循深度防御原则,结合技术措施和管理制度,构建多层次的安全防护体系。记住,没有绝对安全的系统,只有持续改进的安全实践。
主楼