Linux lastb命令(一文讲透)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战(已更新的所有项目都能学习) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新开坑项目:《Spring AI 项目实战》 正在持续爆肝中,基于 Spring AI + Spring Boot 3.x + JDK 21..., 点击查看 ;
- 《从零手撸:仿小红书(微服务架构)》 已完结,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言:Linux 系统安全日志的“侦探”——lastb 命令解析
在 Linux 系统运维和开发过程中,系统安全始终是核心关注点之一。当用户频繁尝试登录失败时,如何快速定位问题并防范潜在风险?本文将围绕 Linux lastb 命令 展开,通过深入浅出的讲解和实战案例,帮助读者掌握这一工具的核心功能,理解其与系统日志的关联,并学会在实际场景中灵活应用。
一、基础概念:lastb 是什么?
1.1 命令定位:与 last 命令的“兄弟关系”
lastb
是 Linux 系统中用于查看 登录失败记录 的工具,与 last
命令形成互补:
- last:显示所有成功登录的记录(包括本地和远程登录)。
- lastb:仅显示 失败登录尝试 的记录,例如密码错误、SSH 连接中断或认证失败等。
可以将 lastb
比喻为系统日志的“侦探”——它专门追踪那些未成功的入侵或误操作尝试,帮助管理员快速定位异常行为。
1.2 核心功能:日志文件的“翻译器”
lastb
的数据来源于系统日志文件,通常存储在 /var/log/btmp
中。该文件以二进制格式保存登录失败记录,无法直接用文本编辑器查看。lastb
的作用正是将这些二进制数据解析为人类可读的文本信息。
二、命令详解:如何使用 lastb?
2.1 基础语法与输出解析
基础命令:
lastb
执行后,输出示例如下:
invalid-user ssh:notty 192.168.1.100 Tue Aug 15 12:34:56 +0800 2023
reboot system boot 5.15.0-60-generic Tue Aug 15 10:23:12 +0800 2023
字段含义:
| 字段 | 含义说明 |
|---------------------|-----------------------------------------|
| invalid-user
| 尝试登录的用户名(若不存在则显示 invalid-user) |
| ssh:notty
| 登录类型(如 SSH 连接) |
| 192.168.1.100
| 登录来源的 IP 地址 |
| Tue Aug 15 12:34:56
| 登录尝试的时间戳 |
2.2 关键参数与扩展功能
参数 1:指定时间范围(-s
和 -t
)
若需查看特定时间段的记录,可用 -s
(起始时间)和 -t
(终止时间):
lastb -s "2023-08-14" -t "2023-08-16"
参数 2:限制显示行数(-n
或 --number
)
lastb -n 5 # 只显示最近 5 条记录
参数 3:输出到文件(-f
)
lastb > failed_logins.txt # 将结果保存为文本文件
三、实战案例:从日志中挖掘安全线索
3.1 案例 1:检测暴力破解攻击
假设某服务器频繁收到 SSH 登录失败请求,可通过 lastb
结合 grep
定位攻击来源:
lastb | grep "ssh" | grep "192.168.1.100"
若发现同一 IP 多次尝试,可进一步用 iptables
封禁该 IP:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
3.2 案例 2:分析登录失败原因
某开发者多次尝试登录失败,日志显示:
myuser ssh:notty 192.168.1.200 Mon Aug 14 15:00:00 +0800 2023
可能原因包括:
- 密码错误;
- SSH 密钥未正确配置;
- 系统账户被锁定(如超过登录失败次数限制)。
3.3 案例 3:结合其他工具深度分析
通过 awk
提取失败登录的 IP 地址并统计频次:
lastb | awk '{print $3}' | sort | uniq -c | sort -nr
此命令将输出类似结果:
20 192.168.1.100
5 192.168.1.200
帮助快速识别高频攻击源。
四、进阶技巧:lastb 的隐藏能力
4.1 与 last 命令的联合使用
若需对比成功与失败登录记录,可结合 last
和 lastb
:
echo "成功登录记录:"
last | head -n 5
echo "失败登录记录:"
lastb | head -n 5
4.2 清空失败日志(慎用)
若需清空 /var/log/btmp
文件(例如测试环境),可用 > /var/log/btmp
或 echo > /var/log/btmp
。但生产环境中需谨慎操作,因这会丢失历史数据。
4.3 自动化监控脚本
编写一个脚本,定时检查失败登录并发送告警:
#!/bin/bash
LOG_FILE="/var/log/failed_login_alert.log"
lastb -s "-1 hour" | tee -a $LOG_FILE
COUNT=$(lastb -s "-1 hour" | wc -l)
if [ $COUNT -gt 5 ]; then
mail -s "High Failed Login Attempts" admin@example.com < $LOG_FILE
fi
五、常见问题与注意事项
5.1 问题 1:为何 lastb
没有输出?
可能原因:
/var/log/btmp
文件为空或权限不足;- 系统日志配置未启用失败记录(需检查
logrotate
或rsyslog
配置)。
5.2 注意事项:避免误判
登录失败可能由以下正常操作引起:
- 用户误输密码;
- 自动化脚本配置错误;
- 网络连接短暂中断。
因此,需结合其他日志(如 auth.log
)综合分析,避免过度依赖单一工具。
结论:守护系统安全的第一道防线
Linux lastb 命令 是系统管理员和开发者维护安全的重要工具。通过解析登录失败记录,它帮助我们识别潜在威胁、优化配置并防范未授权访问。掌握 lastb
的核心用法与进阶技巧,不仅能提升问题排查效率,更能为系统构建起更坚固的安全屏障。
在实际应用中,建议将 lastb
与其他工具(如 fail2ban
)结合,形成自动化防护体系。同时,定期检查日志并分析异常模式,是保障系统稳定运行的关键步骤。希望本文能为读者提供清晰的指导,助您在 Linux 系统运维的道路上更进一步。