监控 SSH 日志最直接的办法是定期查看安全日志文件,配合自动化工具如 Fail2ban 进行拦截,同时建议修改默认端口并启用密钥登录以减少被扫描的概率。
先说结论:手动查日志适合应急排查,长期防护建议部署 Fail2ban 自动封禁,并结合 SSH 配置加固。
- 先判断:确认日志路径及当前是否有异常 IP 频繁尝试
- 优先做:创建备用 sudo 用户,安装自动防护工具并设置白名单
- 再验证:检查防护状态并测试登录限制是否生效
前置准备:创建备用管理用户
重要警告:在禁止 root 登录或修改 SSH 端口前,务必先创建一个具备 sudo 权限的普通用户,防止配置错误导致无法登录服务器。
# 创建用户(以 admin 为例)
useradd -m -s /bin/bash admin
# 设置密码
passwd admin
# 赋予 sudo 权限(CentOS 使用 wheel,Ubuntu 使用 sudo)
usermod -aG wheel admin
# 或 Ubuntu 系统
usermod -aG sudo admin手动排查日志
以下命令可直接在终端执行,用于快速筛选失败登录尝试和统计高频 IP。注意不同发行版日志路径不同。
查看失败密码尝试记录:
# CentOS/RHEL
grep "Failed password" /var/log/secure
# Ubuntu/Debian
grep "Failed password" /var/log/auth.log统计失败次数最多的 IP(注意:awk 字段位置可能因系统版本而异,以下为常见格式):
# CentOS/RHEL 常见格式
awk '/Failed password/ {print $(NF-3)}' /var/log/secure | sort | uniq -c | sort -nr | head
# Ubuntu 常见格式
awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nr | head部署 Fail2ban 自动防护
Fail2ban 通过监控日志自动拦截恶意 IP。安装后不要直接修改 jail.conf,而是创建 jail.local 覆盖配置。
1. 安装 Fail2ban:
# CentOS
yum install fail2ban -y
# Ubuntu
apt install fail2ban -y2. 配置防护规则:
创建或编辑 /etc/fail2ban/jail.local,添加以下配置段:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1/8 你的管理 IP 地址注意:Ubuntu 系统 logpath 通常为 /var/log/auth.log。务必将当前管理 IP 加入 ignoreip 白名单。
3. 重启服务:
systemctl restart fail2ban
systemctl enable fail2ban加固 SSH 配置
编辑 /etc/ssh/sshd_config,建议执行以下操作。修改前请确保新端口已在防火墙放行,且备用用户可登录。
# 修改默认端口(示例:62367)
Port 62367
# 禁止 root 远程登录(确保已有 sudo 用户)
PermitRootLogin no
# 建议使用密钥登录
PasswordAuthentication no修改完成后重启服务:
systemctl restart sshd验证防护是否生效
1. 检查 Fail2ban 状态:
fail2ban-client status sshd
# 查看当前封禁的 IP
fail2ban-client get sshd banned2. 测试登录限制:
尝试使用错误密码多次登录 SSH,观察是否被暂时拒绝连接,并再次查看 fail2ban 状态确认 IP 是否被加入黑名单。
3. 确认 SSH 端口:
ss -tunlp | grep sshd
# 或
netstat -tunlp | grep sshd常见坑与排查
- 把自己封在外面:配置 Fail2ban 时务必将当前管理 IP 加入 ignoreip 白名单,修改 SSH 端口前务必测试新端口连通性。
- 日志路径混淆:CentOS 通常在 /var/log/secure,Ubuntu 在 /var/log/auth.log,配置工具时需指定正确路径。
- 防火墙未放行:修改 SSH 端口后,记得在安全组或防火墙(firewalld/ufw)中放行新端口,否则重启服务后会失联。
- 弱密码隐患:即使有防护,也应设置复杂登录口令,包含大小写字母、数字及特殊符号组合。