扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1. screen — screen manager with VT100/ANSI terminal emulatio
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了丰南免费建站欢迎大家使用!
screen -L
这里是我们的操作
exit
结束后会生成一个类似这样的文件名: screenlog.0
more screenlog.0
这样可以查看你刚才进行的操作,发现可能存在的问题
2. script — make typescript of terminal session
script
我们的操作
exit
生成一个这样的文件:typescript
more typescript
这里查看我们进行的操作
我们知道在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 清空定义的规则 |
1. 前言
在Linux日常管理中,我们肯定有查看某些服务的日志需求,或者是系统本身的日志。本文主要介绍如何查看Linux的系统日志,包括文件的路径、工具的使用等等。会看Linux日志是非常重要的,不仅在日常操作中可以迅速排错,也可以快速的定位。
2. 如何查看Linux日志
Linux日志文件的路径一般位于,/var/log/,比如ngix的日志路径为/var/log/nginx/,如果要查看某服务的日志,还可以使用systemctl status xxx,比如查看ssh服务的壮态,systemctl status sshd
查看Linux某服务的日志
Liunx的配置文件在/etc/rsyslog.d里,可以看到如下信息
在linux系统当中,有三个主要的日志子系统:
1、连接时间日志:由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,
login等程序会更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
2、进程统计:由系统内核执行,当一个进程终止时,为每个进程往进程统计文件中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计
3、错误日志:由rsyslogd守护程序执行,各种系统守护进程、用户程序和内核通过rsyslogd守护程序向文件/var/log/messages报告值得注意的时间。另外有许多linux程序创建日志,像HTTP和FTP这样提供的服务器也保持详细的日志。
4、其他日志……
查看Linux日志默认路径
可以看到在/var/log目录下存在很多的日志文件,接下来就对里面的一些常用日志文件进行分析
主要日志文件介绍:
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
用户登录日志:/var/log/lastlog
/var/log/boot.log(记录系统在引导过程中发生的时间)
/var/log/secure (用户验证相关的安全性事件)
/var/log/wtmp(当前登录用户详细信息)
/var/log/btmp(记录失败的的记录)
/var/run/utmp(用户登录、注销及系统开、关等事件)
日志文件详细介绍:
/var/log/secure
Linux系统安全日志,记录用户和工作组的情况、用户登陆认证情况
例子:我创建了一个zcwyou的用户,然后改变了该用户的密码,于是该信息就被记录到该日志下
Linux系统安全日志默认路径
该日志就详细的记录了我操作的过程。
内核及公共信息日志,是许多进程日志文件的汇总,从该文件中可以看出系统任何变化
查看Linux内核及公共信息日志
系统引导日志
该日志使用dmesg命令快速查看最后一次系统引导的引导日志
查看Linux系统系统引导日志
最近的用户登录事件,一般记录最后一次的登录事件
该日志不能用诸如cat、tail等查看,因为该日志里面是二进制文件,可以用lastlog命令查看,它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示 Never logged。
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。该日志为二进制文件,不能用诸如tail/cat/等命令,使用last命令查看。
记录邮件的收发
此文件是记录错误登录的日志,可以记录有人使用暴力破解ssh服务的日志。该文件用lastb打开
该日志记录当前用户登录的情况,不会永久保存记录。可以用who/w命令来查看
3. 常用的日志分析工具与使用方法
3.1 统计一个文本中包含字符个数
3.2 查看当天访问排行前10的url
3.3 查看apache的进程数
3.4 访问量前10的IP
cut部分表示取第1列即IP列,取第4列则为URL的访问量
3.5 查看最耗时的页面
按第2列响应时间逆序排序
3.6 使用grep查找文件中指定字符出现的次数
-o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出。这样只要统计输出的行数就可以知道这个字符出现的次数了。
4. 总结
查看Linux日志需求了解和熟悉使用一些常用的工具方能提升我们的查找和定位效率。比如使用 Grep 搜索,使用Tail命令,使用Cut,使用AWK 和 Grok 解析日志和使用 Rsyslog 和 AWK 过滤等等,只要能掌握这些工具。我们才能高效地处理和定位故障点。
在Linux系统中,有三个主要的日志子系统:
连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多Unix程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
常用的日志文件如下:
Access-log纪录HTTP/web的传输
acct/pacct纪录用户命令
aculog纪录MODEM的活动
btmp纪录失败的纪录
lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录
messages从syslog中记录信息(有的链接到syslog文件)
sudolog 纪录使用sudo发出的命令
sulog 纪录使用su命令的使用
syslog从syslog中记录信息(通常链接到messages文件)
utmp纪录当前登录的每个用户
wtmp一个用户每次登录进入和退出时间的永久纪录
xferlog 纪录FTP会话
utmp、wtmp和lastlog日志文件是多数重用Unix日志子系统的关键--保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7。
每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。
下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。
具体命令
wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。
who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示
chyangpts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
yloupts/8 Aug 18 14:15
如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。
w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27。
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash
users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo
last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:
chyang pts/9202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)
如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:
ynguopts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguopts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguopts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguopts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
ynguopts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
ynguopts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
ynguopts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)
ac:ac命令根据当前的/var/log/wtmp文件中的.登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流