Linux 服务器安全加固完整指南:从入门到精通
发布时间:2026 年 2 月 | 预计阅读时间:15 分钟
🔐 引言
在云计算和 DevOps 时代,Linux 服务器安全比以往任何时候都更加重要。一次配置疏忽可能导致数据泄露、服务中断,甚至整个基础设施被攻陷。本文将带你从零开始,系统性地加固你的 Linux 服务器。
📋 目录
- 一、基础安全配置
- 二、SSH 安全加固
- 三、防火墙配置
- 四、用户权限管理
- 五、日志监控与审计
- 六、自动化安全脚本
一、基础安全配置
1.1 系统更新
保持系统更新是安全的第一道防线:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
# 启用自动安全更新
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
1.2 禁用不必要的服务
# 查看运行的服务
systemctl list-units --type=service --state=running
# 禁用不需要的服务
sudo systemctl disable cups.service
sudo systemctl disable bluetooth.service
二、SSH 安全加固
2.1 修改 SSH 配置文件
编辑 /etc/ssh/sshd_config:
# 禁用 root 登录
PermitRootLogin no
# 禁用密码认证,仅使用密钥
PasswordAuthentication no
PubkeyAuthentication yes
# 修改默认端口(可选)
Port 2222
# 限制用户登录
AllowUsers yourusername
# 设置登录尝试限制
MaxAuthTries 3
LoginGraceTime 60
# 启用双因素认证(推荐)
AuthenticationMethods publickey,keyboard-interactive
2.2 生成 SSH 密钥
# 生成 ED25519 密钥(推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或使用 RSA 4096
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 复制公钥到服务器
ssh-copy-id -p 2222 yourusername@yourserver.com
2.3 使用 Fail2Ban 防止暴力破解
# 安装 Fail2Ban
sudo apt install fail2ban -y
# 创建 SSH 保护配置
sudo cat > /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF
# 重启服务
sudo systemctl restart fail2ban
三、防火墙配置
3.1 UFW 配置(Ubuntu)
# 安装 UFW
sudo apt install ufw
# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 SSH(如果使用非标准端口)
sudo ufw allow 2222/tcp
# 允许 HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status verbose
3.2 Firewalld 配置(CentOS)
# 启动 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 添加服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载
sudo firewall-cmd --reload
四、用户权限管理
4.1 创建受限用户
# 创建新用户
sudo adduser deploy
# 添加到 sudo 组(谨慎)
sudo usermod -aG sudo deploy
# 或创建仅特定命令的 sudo 权限
sudo visudo
# 添加以下内容(允许特定命令)
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/docker
4.2 文件权限审计
# 查找 SUID 文件
find / -perm -4000 -type f 2>/dev/null
# 查找世界可写文件
find / -perm -0002 -type f 2>/dev/null
# 修复敏感文件权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 644 /etc/passwd
chmod 600 /etc/shadow
五、日志监控与审计
5.1 配置系统日志
# 安装 rsyslog(通常已预装)
sudo apt install rsyslog
# 查看认证日志
sudo tail -f /var/log/auth.log
# 查看系统日志
sudo tail -f /var/log/syslog
5.2 使用 Logwatch 进行日志分析
# 安装 Logwatch
sudo apt install logwatch
# 手动运行
sudo logwatch --detail high --mailto your@email.com
# 配置每日报告
sudo nano /etc/logwatch/conf/logwatch.conf
# 添加:
MailTo = your@email.com
Detail = High
5.3 安装 OSSEC 主机入侵检测
# 下载并安装 OSSEC
wget https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz
tar -xzf 3.6.0.tar.gz
cd ossec-hids-3.6.0
sudo ./install.sh
# 选择本地安装模式
# 配置完成后启动
sudo /var/ossec/bin/ossec-control start
六、自动化安全脚本
6.1 安全加固一键脚本
#!/bin/bash
# security-hardening.sh
echo "🔒 开始 Linux 服务器安全加固..."
# 更新系统
apt update && apt upgrade -y
# 创建新用户
read -p "输入新用户名:" username
adduser $username
usermod -aG sudo $username
# 配置 SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cat > /tmp/sshd_config << EOF
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers $username
MaxAuthTries 3
EOF
mv /tmp/sshd_config /etc/ssh/sshd_config
# 安装安全工具
apt install -y ufw fail2ban unattended-upgrades
# 配置 UFW
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
echo "y" | ufw enable
echo "✅ 安全加固完成!请记得:"
echo "1. 将你的 SSH 公钥添加到 ~/.ssh/authorized_keys"
echo "2. 测试新 SSH 配置后再退出当前会话"
echo "3. 保存新的 SSH 端口:2222"
6.2 安全巡检脚本
#!/bin/bash
# security-audit.sh
echo "📊 安全巡检报告 - $(date)"
echo "================================"
echo -e "\n🔐 登录尝试统计:"
grep "Failed password" /var/log/auth.log | wc -l
echo -e "\n👥 当前登录用户:"
who
echo -e "\n🚀 运行的服务:"
systemctl list-units --type=service --state=running --no-pager
echo -e "\n📁 世界可写文件:"
find /home -perm -0002 -type f 2>/dev/null | head -10
echo -e "\n🔥 防火墙状态:"
ufw status verbose
echo -e "\n💾 磁盘使用:"
df -h
🎯 总结与最佳实践
安全检查清单
- ✅ 系统保持最新
- ✅ SSH 密钥认证,禁用密码
- ✅ 防火墙配置正确
- ✅ Fail2Ban 运行中
- ✅ 最小权限原则
- ✅ 日志监控启用
- ✅ 定期备份
定期维护建议
- 每日:检查日志异常
- 每周:运行安全审计脚本
- 每月:系统更新和补丁
- 每季度:审查用户权限和访问策略
安全是一个持续的过程,而不是一次性的配置。保持警惕,定期审查,你的服务器才能长治久安。
觉得有用?欢迎分享和收藏!👍
文章评论