在CentOS系统上查看用户登录记录的方法

   保留、维护和分析日志(如某个特定时期内发生过的,或正在发生的帐号事件),是Linux系统管理员最基础和最重要的任务之一。对于用户管理,检查用户的登入和登出日志(不管是失败的,还是成功的)可以让我们对任何潜在的安全隐患或未经授权使用系统的情况保持警惕。例如,工作时间之外或放假期间的来自未知IP地址或帐号的远程登录应当发出红色警报。

  在CentOS系统上,用户登录历史存储在以下这些文件中:

  /var/run/utmp(用于记录当前打开的会话)被who和w工具用来记录当前有谁登录以及他们正在做什么,而uptime用来记录系统启动时间。

  /var/log/wtmp (用于存储系统连接历史记录)被last工具用来记录最后登录的用户的列表。

  /var/log/btmp(记录失败的登录尝试)被lastb工具用来记录最后失败的登录尝试的列表。


  在本文中,我将介绍如何使用utmpdump,这个小程序来自sysvinit-tools包,可以用于转储二进制日志文件到文本格式的文件以便检查。此工具默认在CentOS 6和7系列上可用。utmpdump收集到的信息比先前提到过的工具的输出要更全面,这让它成为一个胜任该工作的很不错的工具。除此之外,utmpdump可以用于修改utmp或wtmp。如果你想要修复二进制日志中的任何损坏条目,它会很有用(LCTT 译注:我怎么觉得这像是做坏事的前奏?)。

  Utmpdump的使用及其输出说明

  正如我们之前提到的,这些日志文件,与我们大多数人熟悉的其它日志相比(如/var/log/messages,/var/log/cron,/var/log/maillog),是以二进制格式存储的,因而我们不能使用像less或more这样的文件命令来查看它们的内容。所以,utmpdump的出现拯救了世界。

  为了要显示/var/run/utmp的内容,请运行以下命令:

  代码如下:

  # utmpdump /var/run/utmp


  同样要显示/var/log/wtmp的内容:

  代码如下:

  # utmpdump /var/log/wtmp | tail -15[code]

  

最后,对于/var/log/btmp:

[code]# utmpdump /var/log/btmp


  正如你所能看到的,三种情况下的输出结果是一样的,除了utmp和btmp的记录是按时间排序,而wtmp的顺序是颠倒的这个原因外(LCTT 译注:此处原文有误,实际上都是按照时间顺序排列的)。

  每个日志行格式化成了多列,说明如下。第一个字段显示了会话识别符,而第二个字段则是PID。第三个字段可以是以下值:--(表示运行等级改变或系统重启),bw(启动守候进程),数字(表示TTY编号),或者字符和数字(表示伪终端)。第四个字段可以为空或用户名、重启或运行级别。第五个字段是主TTY或PTY(伪终端),如果此信息可获得的话。第六个字段是远程主机名(如果是本地登录,该字段为空,运行级别信息除外,它会返回内核版本)。第七个字段是远程系统的IP地址(如果是本地登录,该字段为0.0.0.0)。如果没有提供DNS解析,第六和第七字段会显示相同的信息(远程系统的IP地址)。最后一个(第八)字段指明了该记录创建的日期和时间。

  Utmpdump使用样例

  下面提供了一些utmpdump的简单使用情况。

  1、 检查8月18日到9月17日之间某个特定用户(如gacanepa)的登录次数。

  代码如下:

  # utmpdump /var/log/wtmp | grep gacanepa


  如果你需要回顾先前日期的登录信息,你可以检查/var/log下的wtmp-YYYYMMDD(或wtmp.[1...N])和btmp-YYYYMMDD(或btmp.[1...N])文件,这些是由logrotate生成的旧wtmp和btmp的归档文件。

  2、 统计来自IP地址192.168.0.101的登录次数。

  代码如下:

  # utmpdump /var/log/wtmp | grep 192.168.0.101


  3、 显示失败的登录尝试。

  代码如下:

  # utmpdump /var/log/btmp


  在/var/log/btmp输出中,每个日志行都与一个失败的登录尝试相关(如使用不正确的密码,或者一个不存在的用户ID)。上面图片中高亮部分显示了使用不存在的用户ID登录,这警告你有人尝试猜测常用帐号名来闯入系统。这在使用tty1的情况下是个极其严重的问题,因为这意味着某人对你机器上的终端具有访问权限(该检查一下谁拿到了进入你数据中心的钥匙了,也许吧?)

  4、 显示每个用户会话的登入和登出信息

  代码如下:

  # utmpdump /var/log/wtmp


  在/var/logwtmp中,一次新的登录事件的特征是,第一个字段为‘7’,第三个字段是一个终端编号(或伪终端id),第四个字段为用户名。相关的登出事件会在第一个字段显示‘8’,第二个字段显示与登录一样的PID,而终端编号字段空白。例如,仔细观察上面图片中PID 1463的行。

  在 [Fri Sep 19 11:57:40 2014 ART],TTY1上显示登录提示符。

  在 [Fri Sep 19 12:04:21 2014 ART],用户 root 登入。

  在 [Fri Sep 19 12:07:24 2014 ART],用户 root 登出。

  旁注:第四个字段的LOGIN意味着出现了一次登录到第五字段指定的终端的提示。

  到目前为止,我介绍一些有点琐碎的例子。你可以将utmpdump和其它一些文本处理工具,如awk、sed、grep或cut组合,来产生过滤和加强的输出。

  例如,你可以使用以下命令来列出某个特定用户(如gacanepa)的所有登录事件,并发送输出结果到.csv文件,它可以用像LibreOffice Calc或Microsoft Excel之类的文字或工作簿应用程序打开查看。让我们只显示PID、用户名、IP地址和时间戳:

  代码如下:

  # utmpdump /var/log/wtmp | grep -E "[7].*gacanepa" | awk -v OFS="," 'BEGIN {FS="] "}; {print $2,$4,$7,$8}' | sed -e 's/[//g' -e 's/]//g'


  就像上面图片中三个高亮区域描绘的那样,过滤逻辑操作是由三个管道步骤组成的。第一步用于查找由用户gacanepa触发的登录事件([7]);第二步和第三部用于选择期望的字段,移除utmpdump输出的方括号并设置输出字段分隔符为逗号。

  当然,如果你想要在以后打开来看,你需要重定向上面的命令输出到文件(添加“>[文件名].csv”到命令后面)。


  在更为复杂的例子中,如果你想要知道在特定时间内哪些用户(在/etc/passwd中列出)没有登录,你可以从/etc/passwd中提取用户名,然后运行grep命令来获取/var/log/wtmp输出中对应用户的列表。就像你看到的那样,有着无限可能。

  在进行总结之前,让我们简要地展示一下utmpdump的另外一种使用情况:修改utmp或wtmp。由于这些都是二进制日志文件,你不能像编辑文件一样来编辑它们。取而代之是,你可以将其内容输出成为文本格式,并修改文本输出内容,然后将修改后的内容导入回二进制日志中。如下:

  代码如下:

  # utmpdump /var/log/utmp > tmp_output

  <使用文本编辑器修改 tmp_output>

  # utmpdump -r tmp_output > /var/log/utmp

  这在你想要移除或修复二进制日志中的任何伪造条目时很有用。

  下面小结一下,utmpdump从utmp、wtmp和btmp日志文件或轮循的旧归档文件来读取详细的登录事件,来补充如who,w,uptime,last,lastb之类的标准工具的不足,这也使得它成为一个很棒的工具。

时间: 2024-11-03 11:48:37

在CentOS系统上查看用户登录记录的方法的相关文章

在CentOS系统上安装Java的openjdk的方法_java

CentOS 6.X 和 5.X 自带有OpenJDK runtime environment  (openjdk).它是一个在linux上实现开源的java 平台.CentOS  yum 命令 安装 Java SDK openjdk centos linux JAVA(openjdk)软件包名 1.java-1.7.0-openjdk - OpenJDK Runtime Environment 2.java-1.7.0-openjdk-devel - OpenJDK Development E

你会做Web上的用户登录功能吗?

  Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关系到用户安全的功能,希望大家能从下面的文章中能知道什么样的方法才是一个好的用户登录功能.以下内容,转载时请保持原文一致,并请注明作者和出处 . 用户名和口令 首先,我们先来说说用户名和口令的事.这并不是本站第一次谈论这个事了.如何管理自己的口令让你知道怎么管理自己的口令,破解你的口令让你知道在现

centos系统添加/删除用户和用户组的例子

1.建用户: adduser phpq                            //新建phpq用户 passwd phpq                            //给phpq用户设置密码 2.建工作组 groupadd test                          //新建test工作组 3.新建用户同时增加工作组 useradd -g test phpq               //新建phpq用户并增加到test工作组 注::-g 所属组

怎么查看QQ登录记录?QQ登录记录查看方法

使用浏览器查询QQ登录记录 1.我们利用ff浏览器打开,然后直接输入"aq.qq.com"进入到QQ安全中心. 2.如果进入到网站你QQ没有登录,我们可以输入要查询的登录记录的QQ号码,如图所示. 3.登录QQ成功之后你就会如下图所示看到详细信息了,这里就会显示出你QQ登录记录了哦,是不是非常的方便呀 使用腾讯电脑管家查看QQ登录记录 1.电脑管家中最新的有了一个叫"帐号宝"插件了,我们可以直接使用它来快速查询QQ登录记录,而且不用登录官网,非常的方便   2.如下

俄安全公司:iPhone自动向苹果服务器上传用户通话记录

北京时间11月18日消息,据外媒报道,俄罗斯安全公司Elcomsoft周四指出,即便在关闭iCloud备份功能的情况下,iPhone依旧向苹果服务器上传用户通话记录,而且接近实时上传.同时,这些通话记录最长可以在苹果服务器上保存4个月. Elcomsoft面向政府和企业销售iPhone破解工具.Elcomsoft CEO弗拉基米尔·卡特洛夫(Vladimir Katalov)表示,iPhone上传的不仅是传统通话记录,还有所有FaceTime通话记录.自iOS 10推出后,WhatsApp.Sk

删除XP系统中多余用户帐号的方法

删除XP系统中多余用户帐号的方法   方法一: 1.点击开始-运行.输入lusrmgr.msc 然后点击确定即可进入上面的操作界面了! 2.如果我们是想启用来宾账户是不需要新建账户的.我们点击控制面板.进入用户账户设置.. 3.然后进入Guest.我们点击启用来宾账户即可! 4.然后我们在登录电脑系统或者是锁屏的时候就能看到在administrative下面就会多出一个Guest账户, 这个就可以不用密码就能进入. Xp系统如何删除用户账号的具体方法二: 1.打开控制面板中的用户头像图标, 2.

win7系统使用360浏览器登录邮箱的方法

  win7系统使用360浏览器登录邮箱的方法.windows操作系统自带IE浏览器,win7旗舰版系统也不例外,但是一些用户选择下载安装第三方浏览器,360浏览器.最近有位用户询问小编想要使用360浏览器登录邮箱查看邮件内容,但是不知道怎么使用360浏览器登录邮箱?其实登录方法很简单,阅读下文,为大家介绍win7旗舰版系统使用360浏览器登录邮箱的方法. 具体方法如下: 1.在网上搜索360浏览器; 2.安装后打开360浏览器; 3.选择浏览器左侧的邮件; 4.点击选择添加账号; 5.输入邮箱

打开win7系统事件查看器的四种方法

  方法一. 依次点击"开始菜单-控制面板-管理工具-事件查看器",就可以打开事件查看器窗口了. 方法二. 打开运行对话框,然后输入eventvwr,回车就可以打开事件查看器; 方法三. 首先鼠标右击电脑桌面上的"计算机"图标选择"管理",然后就可以在管理界面中的左侧中可以打开"事件查看器"; 方法四. 在"运行"对话框中键入"%SystemRoot%system32eventvwr.msc /s

手机QQ查看最近登录的设备方法图解

1)先在手机界面点击右上角的头像[账户头像],点击[设置].(如下图)   2)之后在帐号管理中点击[设备锁.账号安全],之后我们再找到[最近登录设备]点击它打开.   3)之后在这里你就可以看到QQ号最近的登录设备.(如下图) 好了这样你就可以判断你QQ是不是登录异常了哦,在此手机QQ查看最近登录的设备方法就介绍完了哦.