09 - 基础安全加固(fail2ban、unattended-upgrades) 🛡️
前提条件 ✅
- 已完成 Debian 12 Bookworm 基础安装、网络配置、SSH 端口改为 2222 并启用公钥认证
- ops 用户已配置好 sudo 权限并可通过密钥登录
- SSH 服务正常运行在 2222 端口(PermitRootLogin no、PasswordAuthentication no)
- 虚拟机环境:VMware Workstation Pro
详细步骤 🛠️
- 启用 unattended-upgrades(自动安全更新)
安装并配置自动安装安全更新(生产强烈推荐):
sudo apt update
sudo apt install -y unattended-upgrades apt-listchanges
运行配置向导(或直接编辑配置文件):
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 选择 Yes → 启用自动更新
编辑主要配置文件:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
确保以下部分已启用(取消注释或添加):
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-backports";
};
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false"; // 生产建议 false
启用自动更新定时任务:
sudo systemctl enable --now unattended-upgrades.timer
sudo systemctl status unattended-upgrades.timer
- 安装并配置 fail2ban(防暴力破解)
sudo apt install -y fail2ban
创建本地自定义配置文件(不要直接改 jail.conf):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
在文件末尾添加/修改以下 jail(针对 SSH):
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600 ; 封禁 1 小时
findtime = 600 ; 10 分钟内
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 ; 白名单你的管理网段
[sshd-ddos]
enabled = true
port = 2222
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400 ; 封禁 24 小时
重启服务:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
-
验证 fail2ban 运行状态
sudo fail2ban-client status sudo fail2ban-client status sshd sudo fail2ban-client status sshd-ddos # 查看封禁记录 sudo fail2ban-client log -
基础防火墙预备(ufw 简单启用)
(第 13 章会详细配置,这里只做最小化开启)sudo apt install -y ufw sudo ufw allow 2222/tcp comment 'SSH custom port' sudo ufw --force enable sudo ufw status verbose -
其他快速安全检查
# 确认 root 密码登录已禁 sudo grep PermitRootLogin /etc/ssh/sshd_config sudo grep PasswordAuthentication /etc/ssh/sshd_config # 检查开放端口 sudo ss -tuln
实践任务 🎯
- 启用 unattended-upgrades 并配置只自动安装 security 更新
- 安装 fail2ban,配置 sshd jail 使用 2222 端口,maxretry=5
- 用另一台机器/工具故意尝试错误密码登录 SSH 5 次以上,观察 fail2ban 是否封禁
- 查看
sudo fail2ban-client status sshd和/var/log/fail2ban.log确认封禁记录
自测问题 ❓
- unattended-upgrades 默认会自动重启系统吗?如何关闭?
- fail2ban 中
bantime和findtime参数分别代表什么? - 为什么要在 jail.local 而不是 jail.conf 中做自定义配置?
- 如何临时解除某个 IP 的 fail2ban 封禁?
总结 📌
完成了基础安全加固的两大核心组件:
- unattended-upgrades → 保持系统安全补丁最新
- fail2ban → 有效防御 SSH 暴力破解
结合前面的 SSH 端口变更、公钥认证、禁止 root 登录,形成 Debian 服务器初始安全基线。后续章节的 nftables/ufw 将进一步收紧网络边界。