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 命令的联合使用

若需对比成功与失败登录记录,可结合 lastlastb

echo "成功登录记录:"  
last | head -n 5  

echo "失败登录记录:"  
lastb | head -n 5  

4.2 清空失败日志(慎用)

若需清空 /var/log/btmp 文件(例如测试环境),可用 > /var/log/btmpecho > /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 文件为空或权限不足;
  • 系统日志配置未启用失败记录(需检查 logrotatersyslog 配置)。

5.2 注意事项:避免误判

登录失败可能由以下正常操作引起:

  • 用户误输密码;
  • 自动化脚本配置错误;
  • 网络连接短暂中断。

因此,需结合其他日志(如 auth.log)综合分析,避免过度依赖单一工具。


结论:守护系统安全的第一道防线

Linux lastb 命令 是系统管理员和开发者维护安全的重要工具。通过解析登录失败记录,它帮助我们识别潜在威胁、优化配置并防范未授权访问。掌握 lastb 的核心用法与进阶技巧,不仅能提升问题排查效率,更能为系统构建起更坚固的安全屏障。

在实际应用中,建议将 lastb 与其他工具(如 fail2ban)结合,形成自动化防护体系。同时,定期检查日志并分析异常模式,是保障系统稳定运行的关键步骤。希望本文能为读者提供清晰的指导,助您在 Linux 系统运维的道路上更进一步。

最新发布