如何在Linux中查看失败登录 Linux lastb命令使用

发布时间 - 2025-08-31 00:00:00    点击率:
要查看Linux中失败的登录尝试,最应依赖的命令是lastb。它从/var/log/btmp文件读取数据,显示用户名、终端、来源IP、登录时间等信息,帮助识别暴力破解或配置错误。lastb与last命令不同,后者记录成功登录,而lastb专注失败尝试,是安全审计的关键工具。通过分析其输出模式,如频繁尝试特定用户或密集时间戳,可发现攻击行为。结合Fail2Ban等工具,能有效阻止重复攻击,提升系统安全性。

在Linux系统中,要快速有效地查看失败的登录尝试,你最应该依赖的命令是

lastb
。它能直接从系统日志中提取所有未成功通过认证的记录,帮助你迅速发现潜在的入侵行为或配置问题,是系统安全审计不可或缺的工具。

要查看Linux中的失败登录记录,最直接且常用的工具就是

lastb
命令。这个命令会从
/var/log/btmp
文件中读取数据,并以易读的格式展示所有失败的登录尝试。

当你直接在终端输入

lastb
并回车时,你会看到一个按时间倒序排列的列表。每一行通常包含以下信息:

  • 用户名 (Username): 哪个用户尝试登录失败。
  • 终端 (TTY): 尝试登录的终端或伪终端,例如
    tty1
    pts/0
    。对于远程登录,常见的是
    ssh:notty
  • 来源IP或主机名 (From): 登录尝试的来源IP地址或主机名。如果是本地登录,可能显示
    :
    reboot
  • 登录时间 (Login Time): 尝试登录的日期和时间。
  • 登出时间 (Logout Time): 对于失败登录,通常显示
    down
    still logged in
    ,但实际上是失败了,所以这个字段可能不那么直观,或者显示
    logged out
    。这里的
    still logged in
    lastb
    的语境下,其实是指登录尝试未能成功完成并退出。

示例输出:

lastb
root     ssh:notty    192.168.1.100    Tue May 14 10:30   still logged in
testuser ssh:notty    10.0.0.5         Tue May 14 10:29   still logged in
invalid  ssh:notty    172.16.0.20      Tue May 14 10:28   still logged in
(unknown) ssh:notty    192.168.1.1      Tue May 14 10:27   still logged in
...

lastb
命令也支持一些选项来过滤或格式化输出:

  • -a
    :显示主机名在最后一列。
  • -d
    :显示DNS解析后的主机名。
  • -F
    :显示完整的日期和时间。
  • -n count
    -count
    :只显示最近的
    count
    条记录。
  • -s time
    :从指定时间开始显示记录。
  • -t time
    :显示到指定时间为止的记录。

例如,查看最近10条失败登录记录:

lastb -n 10

或者,如果你想看看某个特定用户(比如

root
)的失败登录尝试:

lastb root

理解这些输出对于快速识别潜在的暴力破解攻击或未经授权的访问尝试至关重要。

为什么
lastb
命令会成为你系统安全审计的“利器”?

说实话,作为一名系统管理员,或者哪怕是自己管理一台VPS的普通用户,你最不希望看到的就是有人在偷偷摸摸地尝试闯入你的系统。而

lastb
命令,在我看来,简直就是系统安全审计中的一个“探照灯”。它不像
last
命令那样记录成功的登录,而是专注于那些“碰壁”的尝试,这正是它的价值所在。

首先,它提供了一个清晰的入侵尝试历史。想象一下,如果你的服务器每隔几分钟就有一个来自不同IP地址的

root
用户登录失败记录,这几乎就是明摆着的暴力破解攻击。
lastb
能让你一眼识别出这些模式:是针对特定用户的?还是广撒网式的?来源IP是否集中在某个区域?这些信息都是你判断攻击性质和采取防御措施的基础。

其次,它帮助你发现潜在的配置错误。有时候,用户可能因为密码输入错误、账户被锁定或者SSH配置问题而无法登录。如果某个合法用户反复出现在

lastb
的记录里,可能就需要你介入,检查他们的账户状态或指导他们正确登录。这虽然不是安全攻击,但也是系统健康的一部分,
lastb
同样能帮你揪出这些“小插曲”。

再者,它的数据来源可靠。

lastb
读取的是
/var/log/btmp
这个二进制文件,这个文件通常只有root用户有写入权限,并且系统日志服务(如
systemd-journald
rsyslog
)会负责其维护。这意味着,即使攻击者成功登录,他们也很难轻易地篡改这些失败登录的记录,从而保留了重要的取证线索。当然,如果攻击者获得了root权限,那又是另一回事了,但对于初级的攻击尝试,
lastb
的记录是相当坚固的。

我个人在处理一些入侵事件时,

lastb
总是我的第一步。它能迅速勾勒出攻击的轮廓,让我知道攻击者在尝试什么,从哪里来。这比漫无目的地翻阅
/var/log/auth.log
(虽然那个也很重要)要高效得多,因为它已经帮你过滤掉了所有成功的、无关的日志,只剩下你最关心的——失败。

lastb
last
命令有何区别?如何更有效地解读
lastb
的输出信息?

在Linux的世界里,

lastb
last
这两个命令经常被一起提及,但它们的功能和侧重点却截然不同,理解这一点对于系统监控至关重要。简单来说,
last
命令是你的“成功登录记录簿”,它从
/var/log/wtmp
文件中读取数据,告诉你哪些用户在何时何地成功登录过系统,以及他们在线了多久。而
lastb
,就像我们前面提到的,则是你的“失败登录黑名单”,它关注的是那些未能成功通过认证的尝试,数据来源于
/var/log/btmp

我经常把它们比作两个不同的安全摄像头:一个只拍到成功进入大门的人,另一个则记录了所有在大门外徘徊、试图开门却未成功的人。显然,后者对于发现潜在的威胁更为直接。

更有效地解读

lastb
的输出信息:

解读

lastb
的输出,不仅仅是看谁失败了,更要看失败的“模式”和“细节”。

  1. 频繁的相同用户名失败: 如果你看到大量针对
    root
    admin
    test
    等常见用户名的失败登录,并且这些尝试来自不同的IP地址,那么这几乎可以肯定是一场暴力破解攻击。攻击者通常会尝试这些默认或弱口令用户。
  2. 异常的来源IP: 注意那些来自你平时不熟悉的国家或地区的IP地址。虽然IP地址不能完全代表攻击者所在地,但它可以提供一个初步的地理线索。结合
    whois
    查询这些IP,有时能发现一些有趣的信息。
  3. 时间戳的密集度: 如果在短时间内(比如几秒或几分钟内)有大量的失败登录记录,这表明攻击者可能在使用自动化工具进行快速尝试。正常的误输入不太可能在如此短的时间内产生如此多的记录。
  4. ssh:notty
    的含义:
    lastb
    的输出中,你经常会看到
    ssh:notty
    。这通常表示通过SSH协议进行的登录尝试,但没有分配一个交互式终端(tty)。这对于自动化脚本或SSH客户端来说是正常的,但如果结合其他异常,也可能是攻击者在尝试非交互式的登录方式。
  5. still logged in
    的误解:
    之前提到过,
    lastb
    中显示的
    still logged in
    对于失败登录来说,并非指用户仍然在线,而是表示登录尝试未能成功完成并退出。这其实是
    last
    命令的语义延伸,在
    lastb
    的语境下,就是指该次尝试是失败的。

举个例子,如果我看到:

root     ssh:notty    123.45.67.89     Wed May 15 08:01   still logged in
root     ssh:notty    123.45.67.89     Wed May 15 08:01   still logged in
root     ssh:notty    123.45.67.89     Wed May 15 08:02   still logged in

这立刻会让我警觉。同一个IP,在短时间内反复尝试

root
用户,这就是典型的暴力破解行为。我会立即考虑将这个IP加入防火墙黑名单,并检查
root
用户的密码强度,甚至考虑禁用
root
用户的SSH直接登录,转而使用普通用户登录后再
su
sudo
。这种模式识别比单纯看一行日志要重要得多。

识别失败登录后,如何进一步加强系统安全,防范未来的攻击?

仅仅知道有人尝试入侵是不够的,关键在于你如何利用这些信息来加固你的系统。

lastb
命令给了我们一个预警信号,接下来的行动才是真正的防守反击。我通常会从以下几个方面入手:

  1. 部署和配置Fail2Ban: 这是我首推的自动化防御工具。Fail2Ban会实时监控系统日志(包括

    /var/log/auth.log
    ,它包含了
    lastb
    所记录的失败尝试的更详细信息),一旦发现某个IP地址在短时间内有多次失败登录尝试,它会自动将该IP添加到防火墙规则中,暂时或永久地禁止其访问。这就像给你的系统请了一个不知疲倦的保安,它能自动“踢掉”那些反复敲门却不给密码的家伙。配置Fail2Ban时,务必调整好其
    bantime
    findtime
    参数,以及监控的服务(SSH、FTP等)。

    # 示例:查看Fail2


# linux  # go  # 工具  # ai  # linux系统  # 区别  # 格式化输出  # 排列  # 为什么  # count  # var  # 事件  # ssh  # 自动化  # 的是  # 时间内  # 的人  # 它能  # 让我  # 帮你  # 能在  # 这就  # 得多  # 用户登录 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何在IIS7中新建站点?详细步骤解析  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何在宝塔面板创建新站点?  如何获取上海专业网站定制建站电话?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  详解Android——蓝牙技术 带你实现终端间数据传输  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel如何自定义分页视图?(Pagination示例)  Python制作简易注册登录系统  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  ,网页ppt怎么弄成自己的ppt?  魔方云NAT建站如何实现端口转发?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel如何使用withoutEvents方法临时禁用模型事件  黑客如何通过漏洞一步步攻陷网站服务器?  如何在Tomcat中配置并部署网站项目?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  怎么用AI帮你为初创公司进行市场定位分析?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何在IIS管理器中快速创建并配置网站?  详解CentOS6.5 安装 MySQL5.1.71的方法  图册素材网站设计制作软件,图册的导出方式有几种?  大型企业网站制作流程,做网站需要注册公司吗?  ,交易猫的商品怎么发布到网站上去?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  javascript基于原型链的继承及call和apply函数用法分析  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  如何在服务器上三步完成建站并提升流量?  js实现点击每个li节点,都弹出其文本值及修改  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel定时任务怎么设置_Laravel Crontab调度器配置  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何创建自定义中间件?(Middleware代码示例)  如何基于PHP生成高效IDC网络公司建站源码?  如何用花生壳三步快速搭建专属网站?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何快速搭建高效可靠的建站解决方案?