Linux安全加固指南
⚠️ 重要提示:在执行任何安全加固操作前,请确保有完整的系统备份,并在测试环境中验证。错误的配置可能导致系统无法访问。
在数字化时代,服务器安全不再是可选项,而是必需品。Linux系统虽然相对安全,但默认配置往往存在诸多安全隐患。本文提供一套完整的Linux安全加固方案,帮助您构建坚如磐石的服务器环境。
1. 系统更新与补丁管理
保持系统更新是安全的第一道防线:
# Ubuntu/Debian
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
# CentOS/RHEL
sudo yum update -y
sudo yum clean all
# 设置自动安全更新
# Ubuntu/Debian
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# CentOS/RHEL 8+
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
2. 用户与权限管理
最小权限原则是安全的核心:
# 创建新用户(避免使用root)
sudo adduser username
sudo usermod -aG sudo username # 授予sudo权限
# 禁用root SSH登录
sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
# 设置密码策略
sudo apt install libpam-pwquality # Ubuntu/Debian
sudo yum install libpwquality # CentOS/RHEL
# 编辑密码策略
sudo nano /etc/security/pwquality.conf
# 设置最小长度、复杂度要求等
3. SSH安全配置
SSH是攻击者的主要入口,必须严格加固:
# 备份原始配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 推荐配置
Port 2222 # 修改默认端口
PermitRootLogin no # 禁用root登录
PasswordAuthentication no # 禁用密码登录,使用密钥
PubkeyAuthentication yes # 启用公钥认证
MaxAuthTries 3 # 最大尝试次数
ClientAliveInterval 300 # 客户端活动间隔
ClientAliveCountMax 2 # 最大活动计数
AllowUsers username # 只允许特定用户登录
# 重启SSH服务
sudo systemctl restart sshd
💡 提示:修改SSH端口后,确保防火墙允许新端口,并测试连接后再关闭旧端口。
4. 防火墙配置
使用防火墙控制网络访问:
# Ubuntu/Debian (UFW)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH新端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
# CentOS/RHEL (Firewalld)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --remove-service=ssh # 移除默认SSH
sudo firewall-cmd --reload
5. 文件系统安全
保护关键文件和目录:
# 设置文件权限
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 700 /root
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/shadow
# 安装文件完整性监控工具
sudo apt install aide # Ubuntu/Debian
sudo yum install aide # CentOS/RHEL
# 初始化AIDE数据库
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 定期检查
sudo aide --check
6. 服务最小化
关闭不必要的服务:
# 查看运行中的服务
sudo systemctl list-units --type=service --state=running
# 禁用不必要的服务
sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon
# 检查监听端口
sudo netstat -tulpn
sudo ss -tulpn
7. 日志监控与分析
建立有效的日志监控机制:
# 安装日志分析工具
sudo apt install logwatch # Ubuntu/Debian
sudo yum install logwatch # CentOS/RHEL
# 配置logwatch
sudo nano /etc/logwatch/conf/logwatch.conf
# 查看关键日志
sudo tail -f /var/log/auth.log # 认证日志
sudo tail -f /var/log/syslog # 系统日志
sudo journalctl -f # systemd日志
# 设置日志轮转
sudo nano /etc/logrotate.conf
8. 入侵检测系统
部署入侵检测系统:
# 安装Fail2ban
sudo apt install fail2ban # Ubuntu/Debian
sudo yum install fail2ban # CentOS/RHEL
# 配置Fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 添加SSH保护规则
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
# 启动Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
9. 定期安全扫描
使用自动化工具进行安全扫描:
# 安装Lynis安全审计工具
sudo apt install lynis # Ubuntu/Debian
sudo yum install lynis # CentOS/RHEL
# 运行安全审计
sudo lynis audit system
# 安装ClamAV病毒扫描
sudo apt install clamav clamav-daemon
sudo freshclam # 更新病毒库
sudo clamscan -r /home # 扫描目录
10. 安全备份策略
最后但同样重要的是备份:
# 创建备份脚本
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
# 备份重要目录
tar -czf $BACKUP_DIR/etc_backup_$DATE.tar.gz /etc
tar -czf $BACKUP_DIR/home_backup_$DATE.tar.gz /home
tar -czf $BACKUP_DIR/var_backup_$DATE.tar.gz /var/www
# 备份数据库(如果有)
# mysqldump -u root -p database > $BACKUP_DIR/db_backup_$DATE.sql
# 保留最近7天的备份
find $BACKUP_DIR -type f -mtime +7 -delete
# 设置定时任务
# sudo crontab -e
# 0 2 * * * /path/to/backup_script.sh
安全不是一次性的任务,而是一个持续的过程。定期审计、及时更新、持续监控是保持系统安全的关键。记住:最安全的系统是那些你了解并持续维护的系统。
安全加固检查清单
- ✅ 系统已更新到最新版本
- ✅ 禁用root SSH登录
- ✅ 使用SSH密钥认证
- ✅ 修改SSH默认端口
- ✅ 配置防火墙规则
- ✅ 设置强密码策略
- ✅ 关闭不必要的服务
- ✅ 安装Fail2ban防暴力破解
- ✅ 配置日志监控
- ✅ 建立定期备份机制
- ✅ 定期进行安全扫描
通过实施以上安全措施,您的Linux服务器将具备强大的防御能力。但请记住,安全是一个动态的过程,需要根据新的威胁和技术发展不断调整策略。