1、Linux日志介绍
Linux日志文件包括以下三种类型
-
内核及系统日志
这种日志数据由系统服务syslog
统一管理,根据其主配置文件/etc/syslog.conf
中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把自己的日志文件交由syslog
管理,因而这些程序使用的日志记录也具有相似的格式。 -
用户日志
这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。 -
程序日志
有些应用程序运会选择自己来独立管理一份日志文件(而不是交给syslog服务管理),用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同的程序所使用的日志记录格式可能会存在极大差异。
2、Linux常见日志文件
熟悉常用日志文件,当遇到问题时可以快速定位分析
/var/log/messages #记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。
/var/log/cron #记录crond计划任务产生的事件消息。
/varlog/dmesg #记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog #记录进入或发出系统的电子邮件活动。
/var/log/lastlog #最近几次成功登录事件和最后一次不成功登录事件。
/var/log/rpmpkgs #记录系统中安装各rpm包列表信息。
/var/log/secure #记录用户登录认证过程中的事件信息。
/var/log/wtmp #记录每个用户登录、注销及系统启动和停机事件。
3、常用命令与日志分析
last
是一个命令行工具,它用来展示关于系统用户最后登录会话的信息。这个命令非常有用,尤其是当你需要追踪用户活动,或者调查一个可能的安全入侵问题。
-<数字> #显示最近的几行记录
-a, --hostlast #最后一列显示主机名
-d, --dns #将 IP 号转换回主机名
-F, --file <文件> #用指定文件代替 /var/log/wtmp
-F, --fulltimes #打印完整的登录和注销时间和日期
-i, --ip #以数字和点的形式显示 IP 号
-n, --limit <数字> #要显示的行数
-R, --nohostname #不显示主机名字段
-s, --since <时间> #显示从指定时间起的行;格式举例2021-11-11
-t, --until <时间> #显示到指定时间为止的行
-p, --present <时间> #显示在指定时间谁在场(present)
-w, --fullnames #显示完整的用户名和域名
-x, --system #显示系统关机项和运行级别更改
--time-format <格式> #以指定<格式>显示时间戳:notime|short|full|iso
-h, --help #display this help
-V, --version #display version
lastlog
此命令可以查看登陆过当前系统用户的最近一次登陆时间;默认是去读取 /var/log/lastlog
日志文件的,这个文件同样是二进制文件,不能直接用 vi 编辑,需要使用 lastlog 命令调用
-b, --before DAYS #仅打印早于 DAYS 的最近登录记录
-C, --clear #clear lastlog record of an user (usable only with -u)
-h, --help #显示此帮助信息并推出
-R, --root CHROOT_DIR #chroot 到的目录
-S, --set #set lastlog record to current time (usable only with -u)
-t, --time DAYS #仅打印晚于 DAYS 的最近登录记录
-u, --user LOGIN #打印 LOGIN 用户的近登录记录
head
和tail
相关命令可参考https://blog.csdn.net/lemon_TT/article/details/114846900
4、Linux中的tty、pts、pty等概念辨析
-
tty(teletypes,终端设备的统称)
tty设备包括虚拟控制台,串口以及伪终端设备。tty0~tty63是虚拟终端的设备特殊文件。/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台。
-
pty(pseudo-tty,虚拟终端):pty全称pseudo-tty,即伪终端设备,用于远程连接。它由master和slave两端构成,在任何一端的输入都会传达到另一端。与tty不同,系统中并不存在pty这种文件,它是由pts(pseudo-terminal slave)和ptmx(pseudo-teiminal master)两种设备文件来实现的。
-
pts(pseudo-terminal slave)
伪终端的slave端
-
ptmx(pseudo-terminal master)
伪终端的master端
5、查看相关文件实例
一般来说,是查看Linux查看/var/log/wtmp
或者/var/log/lastlog
文件查看可疑IP登陆,然后查看/var/log/secure
文件寻找可疑IP登陆次数;对于系统问题,查看/var/log/messages
#取2020-11-11开始最近的十条登录事件
last -s 2020-11-11 -n 10
#查看各个用户的登录情况
lastlog
#查看secure文件的倒数100行
cat secure | tail -n 100
#查看当前设备数
ls /dev/pt*
#同一个用户开启多个终端,可以在不同终端打印
echo "hello" > /dev/pts/2
#可以查看进程是当前哪个终端连接
ps -aux | grep [进程名]
#-------安全相关--------
#如果发现自己服务器异常,要检查一下自己的.ssh/authorized_keys中是否异常,其次查看相应日志
#尝试IP和尝试的用户名
cat /var/log/auth.log | grep 'Invalid' | awk '{print $10 "\t" $8}' | sort
#用户名次数统计
cat /var/log/auth.log | grep 'Invalid' | awk '{print $8}' | sort | uniq -c | sort -bn
6、linux中log文件夹各个log文件内容
/var/log/messages #包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg # 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log # 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log # 包含系统启动时的日志。
/var/log/daemon.log # 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log #包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log #包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog #记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log #包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log #记录所有等级用户信息的日志。
/var/log/Xorg.x.log #来自X的日志信息。
/var/log/alternatives.log #更新替代信息都记录在这个文件中。
/var/log/btmp #记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups #涉及所有打印信息的日志。
/var/log/anaconda.log #在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log #包含使用yum安装的软件包信息。
/var/log/cron #每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure #包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp #包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog #包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。除了上述Log文件以外,
---------------------------------------
#/var/log还基于系统的具体应用包含以下一些子目录:
----------------------------------------
/var/log/httpd/或/var/log/apache2 #包含服务器access_log和error_log信息。
/var/log/lighttpd/ #包含light HTTPD的access_log和error_log。
/var/log/mail/ #这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ #包含.so文件被prelink修改的信息。
/var/log/audit/ #包含被 Linux audit daemon储存的信息。
/var/log/samba/ #包含由samba存储的信息。
/var/log/sa/ #包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ #用于守护进程安全服务。
参考
https://blog.csdn.net/weixin_44966641/article/details/120585519
https://blog.51cto.com/jschu/1882685
https://www.cnblogs.com/yihr/p/7212641.html