重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、who命令
创新互联从2013年创立,是专业互联网技术服务公司,拥有项目网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元伊宁做网站,已为上家服务,为伊宁各地企业和个人服务,联系电话:13518219792
who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。使用该命令,系统管理员可以查看当前系统存在哪些不法用户,从而对其进行审计和处理。例如:运行who命令显示如下所示:
# who
root pts/1 2010-02-22 13:02 (:0.0)
root pts/2 2010-02-22 15:57 (:0.0)
root pts/3 2010-02-22 15:57 (:0.0)
如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。例如:运行该命令如下所示:
root :0 2010-01-24 21:47
root pts/1 2010-01-24 21:47 (:0.0)
root :0 2010-02-20 19:36
root pts/1 2010-02-20 19:36 (:0.0)
root :0 2010-02-21 15:21
root pts/1 2010-02-21 15:56 (:0.0)
root pts/2 2010-02-21 16:03 (:0.0)
root :0 2010-02-22 13:01
root pts/1 2010-02-22 13:02 (:0.0)
root pts/2 2010-02-22 15:57 (:0.0)
root pts/3 2010-02-22 15:57 (:0.0)
2、user命令
users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。运行该命令将如下所示:
# users
root root root
3、last 命令
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。系统管理员可以周期性地对这些用户的登录情况进行审计和考核,从而发现起中存在的问题,确定不法用户,并进行处理。运行该命令,如下所示:
# last
root pts/3 :0.0 Mon Feb 22 15:57 still logged in
root pts/2 :0.0 Mon Feb 22 15:57 still logged in
root pts/1 :0.0 Mon Feb 22 13:02 still logged in
root :0 Mon Feb 22 13:01 still logged in
reboot system boot 2.6.18-8.el5 Mon Feb 22 12:56 (03:02)
root pts/2 :0.0 Sun Feb 21 16:03 - down (02:37)
4、ac命令
ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 18.47,如下所示:
# ac
total 18.47
另外,可加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。
5、lastlog命令
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令。
参考资料:《Linux如何学》,部分来源网络
我们知道在Linux系统中有大量的日志文件可以用于查看应用程序的各种信息,但是对于用户的操作行为(如某用户修改删除了某文件)却无法通过这些日志文件来查看,如果我们想实现监管企业员工的操作行为就需要开启审计功能,也就是audit。
1、首先执行以下命令开启auditd服务
| 1 | service auditd start |
2、接着查看看auditd的服务状态,有两种方法可以实现,使用auditctl命令时主要看enabled是否为1,1为开启,0为关闭
[root@ns-master-c01 ~]``# service auditd status` |
`auditd (pid 20594) is running...
[root@ns-master-c01 ~]``# auditctl -s
| 5 | AUDIT_STATUS: enabled=1 flag=1 pid=20594 rate_limit=0 backlog_limit=320 lost=0 backlog=0 |
3、开启了autid服务后,所有的审计日志会记录在/var/log/audit/audit.log文件中,该文件记录格式是每行以type开头,其中红框处是事件发生的时间(代表从1970年1月1日到现在过了多久,可以用date命令转换格式),冒号后面的数字是事件ID,同一个事件ID是一样的。
4、audit可以自定义对指定的文件或命令进行审计(如监视rm命令被执行、/etc/passwd文件内容被改变),只要配置好对应规则即可,配置规则可以通过命令行(临时生效)或者编辑配置文件(永久生效)两种方式来实现。
命令行语法(临时生效****)****:
| 1 | auditctl -w /bin/``rm -p x -k removefile ``#-w指定所要监控的文件或命令 |
| 2 | #-p指定监控属性,如x执行、w修改 |
| 3 | #-k是设置一个关键词用于查询 |
编辑配置文件(****永久生效)****:
auditd的配置文件为/etc/audit/audit下的auditd.conf 和audit.rules,auditd.conf 主要是定义了auditd服务日志和性能等相关配置,audit.rules才是定义规则的文件,下面是一个例子,其实就是把auditctl的命令直接拿过来即可,auditctl里支持的选项都可以在这个文件里指定
修改完后重启服务
| 1 | service auditd restart |
5、如果直接使用tailf等查看工具进行日志分析会比较麻烦,好在audit已经提供了一个更好的事件查看工具—— ausea****rch, 使用auserach -h查看下该命令的用法:
这里列出几个常用的选项:
-a number #只显示事件ID为指定数字的日志信息,如只显示926事件:ausearch -a 926
-c commond #只显示和指定命令有关的事件,如只显示rm命令产生的事件:auserach -c rm
-i #显示出的信息更清晰,如事件时间、相关用户名都会直接显示出来,而不再是数字形式
-k #显示出和之前auditctl -k所定义的关键词相匹配的事件信息
通过下图可以看到每个事件被虚线分开,用户名和执行的操作也都能清晰的看到了:
6、使用auditctl还可以查看和清空规则
查看源码
embed width="16" height="16" id="highlighter_638828_clipboard" type="application/x-shockwave-flash" title="复制到剪贴板" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_638828" menu="false" src="" style="margin: 0px; padding: 0px; outline: 0px; zoom: 1; max-width: 96%;"
摘自
| 1 | auditctl -l 查看定义的规则 |
| 2 | auditctl -D 清空定义的规则 |
在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。
但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。
具体命令如下:
这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。
但是这条命令的使用有两个前提(很多网上的博主都没有提到)
第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改
第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效
更加通配的命令可以是这样, 使用 号*
这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了
使用 ,将截取到的内容输出到指定的文件中,方便进一步查看
ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤
Linux系统日志文件存放在/var/log下
/var/log/cron 记录了系统定时任务相关的日志;
/var/log/cups 记录打印信息的日志;
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。
/var/log/btmp 记录错误登录的日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看;
/var/log/lastlog 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,不能直接vi,而要使用lastlog命令查看。
/var/log/mailog 记录邮件信息;
/var/log/message 记录系统重要信息的日志,记录Linux系统的绝大多数重要信息,如果系统出现问题,首先要检查的就是应该是这个日志文件;
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如说系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码;
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件不能直接vi而需要使用last命令来查看;
/var/run/utmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,同样这个文件不能直接vi,要使用w,who,users等命令;
Linux常见的日志文件详述如下
1、/var/log/boot.log(自检过程)
2、/var/log/cron (crontab守护进程crond所派生的子进程的动作)
3、/var/log/maillog (发送到系统或从系统发出的电子邮件的活动)
4、/var/log/syslog (它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件)
要让系统生成syslog日志文件,
在/etc/syslog.conf文件中加上:*.warning /var/log/syslog
该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息
5、/var/run/utmp
该日志文件需要使用lastlog命令查看
6、/var/log/wtmp
(该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件)
last命令就通过访问这个文件获得这些信息
7、/var/run/utmp
(该日志文件记录有关当前登录的每个用户的信息) 《Linux就该这么学》 一起学习linux
8、/var/log/xferlog
(该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件)