如何快速高效地查看Ubuntu SSH连接日志,优化安全监控流程?
- 内容介绍
- 文章标签
- 相关推荐
在服务器的幕后SSH 日志像一面镜子,映照着每一次远程连接的轨迹。它既是审计的依据,也是平安防线的前哨。要想真正做到“快、准、稳”,就得把日志管理变成一门艺术,而不是枯燥的数据堆砌,得了吧...。
一、了解日志的地盘:位置与结构
Ubuntu 的 SSH 日志默认保存在 /var/log/auth.log。如果你使用的是更老的发行版, 地道。 可能会出现在 /var/log/secure。这些文件记录了:
- Accepted – 成功登录事件。
- Failed password – 密码错误尝试。
- PAM auntication failure – PAM 层面的失败。
- User root from … is not allowed because ... – 权限或策略导致拒绝。
另起炉灶。 掌握文件路径后你就能精准定位信息源,避免盲目翻找。
二、 基础查看:从“cat”到“less”
1️⃣ 用 tail -f 实时捕捉流动的信息
sudo tail -f /var/log/auth.log
"tail -f" 就像把终端变成了实时监视器,每当有新行写入时你都能第一时间看到。尤其在你刚修改完 sshd_config 后 立刻打开一个窗口观察是否出现报错,能够迅速定位问题所在。
2️⃣ 用 less 做回放式审查
wc -l /var/log/auth.log && 我傻了。 sudo less /var/log/auth.log
我血槽空了。 "less" 能让你按页翻阅, 还支持搜索,向前后跳转。这对追踪某个时间段内的登录情况特别友好。当你怀疑某个 IP 在某个时刻多次尝试,就可以直接定位到那几行。
3️⃣ 用 grep 快速筛选关键词
# 查看所有成功登录 sudo grep "Accepted" /var/log/auth.log # 找出 root 的登录记录 sudo grep "Accepted" 客观地说... /var/log/auth.log | grep "root" # 搜索失败密码 sudo grep "Failed password" /var/log/auth.log
三、 系统级别:journalctl 的力量
Ubuntu 自带 systemd-journald,将日志统一管理。相比传统文本文件,它提供了更丰富的元数据和更细粒度的过滤,栓Q!。
1️⃣ 实时跟踪 SSH 服务日志:
# 查看 ssh 服务最新事件并持续跟踪 sudo journalctl -u ssh -f,就这?
2️⃣ 按时间范围查询:
# 最近一小时内发生的事件 sudo journalctl --since "1 hour ago" -u ssh # 某天的全部 哈基米! 记录 sudo journalctl --since "2026-05-20" --until "2026-05-21" -u ssh
四、 精细化分析:awk、sort 与 uniq 的组合拳
AWS 或者企业环境中,单纯看 “Failed password” 已经不够;你需要知道到底是哪些 IP 最为活跃,出岔子。。
# 提取失败尝试中的 IP, 并统计出现次数
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head
# 输出示例:
# 1248 192.168.1.100
# 342 203.0.113.45
# 67 198.51.100.23
这条命令把失败尝试提炼成“IP + 次数”的列表,让你直观判断谁是最执着的不法分子。
五、 防护升级:Fail2Ban 与自定义规则相结合
1️⃣ 基本安装与启用:
# 安装 Fail2Ban
sudo apt-get install fail2ban
# 启动并设置开机自启动
sudo systemctl enable --now fail2ban.service
# 检查状态
sudo fail2ban-client status sshd
Fail2Ban 会自动读取 auth.log,并在检测到超过阈值后封锁对应 IP。
2️⃣ 自定义配置信息:
# 编辑 jail.local
sudo nano /etc/fail2ban/jail.local
enabled = true # 开启服务监控
port = ssh # 默认端口, 可改为自定义端口名或数字如2224
filter = sshd # 使用预置过滤器,也可自定义 filter 文件
logpath = /var/log/auth.log
maxretry = 5 # 最大重试次数
bantime = h:12 # 封禁12小时
# 保存后重载配置:
sudo fail2ban-client reload
通过手动调整 `maxretry` 和 `bantime`,可以让系统更贴合业务需求;如果你只关心密码攻击,可进一步开启 `ignoreip` 来排除自己的办公网络。
情感小结:
"Fail2Ban 并不是防火墙, 它是一个自动化警报系统,把被动防御升级为主动打击。"——这句话告诉我们,不仅要看日志,更要让系统主动去识别异常,然后采取行动。没有它,你只是在不断刷屏 “Failed password”,而对手却在悄无声息地逼近。
提示:
If you find log noise overwhelming, simply change default SSH port from **22** to a higher random number . This will reduce automated scans and make your logs cleaner.
💡小技巧:
SCP 或 Rsync 将日志定期同步到平安存档服务器,确保即使本机被破坏也能追溯历史记录,那必须的!。
Mozart 的 logwatch 可以每日生成摘要邮件,让你随时掌握全局情况。
Bash 脚本定期施行 `gzip` 压缩旧日志, 再移至 `/srv/archive`,避免磁盘占满导致服务崩溃。
一句话:`
将 SSH 日志从被动收集升级为主动分析和自动防护,是每位运维人员必须掌握的一门技术;只有这样才能在面对无休止的扫描和攻击时保持冷静与优势。
在服务器的幕后SSH 日志像一面镜子,映照着每一次远程连接的轨迹。它既是审计的依据,也是平安防线的前哨。要想真正做到“快、准、稳”,就得把日志管理变成一门艺术,而不是枯燥的数据堆砌,得了吧...。
一、了解日志的地盘:位置与结构
Ubuntu 的 SSH 日志默认保存在 /var/log/auth.log。如果你使用的是更老的发行版, 地道。 可能会出现在 /var/log/secure。这些文件记录了:
- Accepted – 成功登录事件。
- Failed password – 密码错误尝试。
- PAM auntication failure – PAM 层面的失败。
- User root from … is not allowed because ... – 权限或策略导致拒绝。
另起炉灶。 掌握文件路径后你就能精准定位信息源,避免盲目翻找。
二、 基础查看:从“cat”到“less”
1️⃣ 用 tail -f 实时捕捉流动的信息
sudo tail -f /var/log/auth.log
"tail -f" 就像把终端变成了实时监视器,每当有新行写入时你都能第一时间看到。尤其在你刚修改完 sshd_config 后 立刻打开一个窗口观察是否出现报错,能够迅速定位问题所在。
2️⃣ 用 less 做回放式审查
wc -l /var/log/auth.log && 我傻了。 sudo less /var/log/auth.log
我血槽空了。 "less" 能让你按页翻阅, 还支持搜索,向前后跳转。这对追踪某个时间段内的登录情况特别友好。当你怀疑某个 IP 在某个时刻多次尝试,就可以直接定位到那几行。
3️⃣ 用 grep 快速筛选关键词
# 查看所有成功登录 sudo grep "Accepted" /var/log/auth.log # 找出 root 的登录记录 sudo grep "Accepted" 客观地说... /var/log/auth.log | grep "root" # 搜索失败密码 sudo grep "Failed password" /var/log/auth.log
三、 系统级别:journalctl 的力量
Ubuntu 自带 systemd-journald,将日志统一管理。相比传统文本文件,它提供了更丰富的元数据和更细粒度的过滤,栓Q!。
1️⃣ 实时跟踪 SSH 服务日志:
# 查看 ssh 服务最新事件并持续跟踪 sudo journalctl -u ssh -f,就这?
2️⃣ 按时间范围查询:
# 最近一小时内发生的事件 sudo journalctl --since "1 hour ago" -u ssh # 某天的全部 哈基米! 记录 sudo journalctl --since "2026-05-20" --until "2026-05-21" -u ssh
四、 精细化分析:awk、sort 与 uniq 的组合拳
AWS 或者企业环境中,单纯看 “Failed password” 已经不够;你需要知道到底是哪些 IP 最为活跃,出岔子。。
# 提取失败尝试中的 IP, 并统计出现次数
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head
# 输出示例:
# 1248 192.168.1.100
# 342 203.0.113.45
# 67 198.51.100.23
这条命令把失败尝试提炼成“IP + 次数”的列表,让你直观判断谁是最执着的不法分子。
五、 防护升级:Fail2Ban 与自定义规则相结合
1️⃣ 基本安装与启用:
# 安装 Fail2Ban
sudo apt-get install fail2ban
# 启动并设置开机自启动
sudo systemctl enable --now fail2ban.service
# 检查状态
sudo fail2ban-client status sshd
Fail2Ban 会自动读取 auth.log,并在检测到超过阈值后封锁对应 IP。
2️⃣ 自定义配置信息:
# 编辑 jail.local
sudo nano /etc/fail2ban/jail.local
enabled = true # 开启服务监控
port = ssh # 默认端口, 可改为自定义端口名或数字如2224
filter = sshd # 使用预置过滤器,也可自定义 filter 文件
logpath = /var/log/auth.log
maxretry = 5 # 最大重试次数
bantime = h:12 # 封禁12小时
# 保存后重载配置:
sudo fail2ban-client reload
通过手动调整 `maxretry` 和 `bantime`,可以让系统更贴合业务需求;如果你只关心密码攻击,可进一步开启 `ignoreip` 来排除自己的办公网络。
情感小结:
"Fail2Ban 并不是防火墙, 它是一个自动化警报系统,把被动防御升级为主动打击。"——这句话告诉我们,不仅要看日志,更要让系统主动去识别异常,然后采取行动。没有它,你只是在不断刷屏 “Failed password”,而对手却在悄无声息地逼近。
提示:
If you find log noise overwhelming, simply change default SSH port from **22** to a higher random number . This will reduce automated scans and make your logs cleaner.
💡小技巧:
SCP 或 Rsync 将日志定期同步到平安存档服务器,确保即使本机被破坏也能追溯历史记录,那必须的!。
Mozart 的 logwatch 可以每日生成摘要邮件,让你随时掌握全局情况。
Bash 脚本定期施行 `gzip` 压缩旧日志, 再移至 `/srv/archive`,避免磁盘占满导致服务崩溃。
一句话:`
将 SSH 日志从被动收集升级为主动分析和自动防护,是每位运维人员必须掌握的一门技术;只有这样才能在面对无休止的扫描和攻击时保持冷静与优势。

