第十一章Linux文件系统和日志分析

一.文件系统

1.cp和inode

cp命令:

  • 分配一个空闲的inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

rm命令:

  • 硬链接数递减,从而释放的inode号可以被重复使用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时会被覆盖

mv和inode:

如果mv命令的目标和源在同一设备,不影响inode表(除时间戳)或磁盘上的数据位置;没有数据被移动

[root@localhost a]#find -inum 69 -exec rm {} \;
#通过find命令查找indoe号来删除指定的文件
[root@localhost a]#find -inum 69 -delete

三种时间戳

当创建一个文件时,这个文件的最后访问时间,最后内容修改时间,最后状态更新时间都是一致的。修改一个文件的权限状态信息,只会更新这个文件的最后状态修改时间。

当查看文件时,文件的最后查看时间(Access time)会更新

- Moaify Time 查看这个文件有没有被修改过
- Access Time 查看这个文件最后查看时间
- Change Time 查看这个文件最后变动的时间

2.inode表

相同设备上inode号是不会相同的

每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data 元信息 )元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

每一个inode表记录对应的保存了以下信息:

  • inode number 节点号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据
如何查看inode号
ls -i
stat


有3个时间:
最近访问atime:最后一次查看文件   需要打开文件才会变更
最近更改mtime:最近更改文件内容的时间,注意:更改完内容之后,ctime也会改变
最近改动ctime:最近更改文件元信息的时间,比如改变权限等

二.日志

内核及系统日志由系统服务 rsyslog 统一管理,根据其主配置文件 /etc/rsyslog.conf

将系统和应用发生的事件记录至日志中,以助于排错和分析使用

1.日志文件的格式:
  • 事件产生的时间
  • 产生事件的服务器的主机名
  • 产生事件的服务名或程序名
  • 事件的具体信息
#查看一下 /var/log/secure 日志,这个日志中主要记录的是用户验证和授权方面的信息,更加容易理解。
命令:
[root@localhost ~]#vim /var/log/secure
Sep 22 22:43:31 localhost sshd[17254]: Accepted password for root from 192.168.91.1 port 54264 ssh2
Sep 22 22:43:31 localhost sshd[17254]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 22 22:56:11 localhost sshd[13323]: pam_unix(sshd:session): session closed for user root
Sep 22 22:57:42 localhost sshd[13887]: pam_unix(sshd:session): session closed for user root
Sep 22 22:59:14 localhost sshd[14472]: pam_unix(sshd:session): session closed for user root
Sep 22 23:01:35 localhost sshd[14992]: pam_unix(sshd:session): session closed for user root
Sep 22 23:02:51 localhost sshd[15543]: pam_unix(sshd:session): session closed for user root

内核和公共消息日志存储位置

内核及大多数系统消息被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中,日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户。

rsys服务统一管理的大部分日志文件,使用的日志记录格式基本上是相同的。

公共日志/var/log/messages文件的格式其中每一行表示一条日志消息,每一条消息均包括以下四个字段:

  • 时间标签:消息发出的日期和时间
  • 主机名:生成消息的计算机名称
  • 子系统名称:发出消息的应用程序的名称
  • 消息:消息的具体内容
用户日志:

在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录,退出等相关的事件消息。

但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用who、w、users、last和lastb等用户查询命令来获取日志信息。

2.查询用户登录的历史记录

last

用于查询成功登录到系统的用户记录

最近的登录情况显示在最前面,通过last命令可以及时掌握Linux主机的登录情况,若发现未经授权的用户登录过,表示当前主机可能已被入侵。

lastb

用于查询登陆失败的用户记录

如果登录的用户名错误,密码不正确等情况都会被记录,登录失败的情况属于安全事件,因为这表示可能有人在尝试破解你的密码,除了使用last命令查看以外,也可以直接从安全日志文件/var/log/secure中获得相关信息。

三.Rsyslog

1.rsyslog系统日志服务

rsyslog提供了高性能,出色的安全性和模块化设计,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

rsyslog的特性:
  • 多线程
  • UDP,TCP,SSL,TLS,RELP
  • MYSQL,PGSOL,Oracle实现日志存储
  • 可实现过滤日志信息中任意部分
  • 自定义输出格式
  • 适用于企业
2.rsyslog相关文件
  • 程序包  rsyslog
  • 主程序   /usr/sbin/rsyslogd
  • centos 6    /etc/rc.d/init.d/rsyslog{start|stop|restart|status}
  • centos 7,8   /usr/lib/systemd/system/rsyslog.service
  • 配置文件  /etc/rsyslog.conf,/etc/rsyslog.d/*.conf
  • 库文件  /lib64/rsyslog/*.so
3.rsyslog配置文件

/etc/rsyslog.conf配置文件格式:由三部分组成

MODULES:相关模块配置

GLOBAL DIRECTIVES:全局配置

RULES:日志记录相关的规则配置

RULES配置格式:

facility.priority; 
#分类      优先级


*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

通常的日志文件格式:/var/log/messages,cron,secure等

4.系统日志术语

facilitty:设施,从功能或程序上对日志进行归类

#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定义的分类
local0-local7

Priority 优先级别,从低到高排序

debug
info
notice
warn(warning)
err(error)
crit(critical)
alert
emerg(panic)
5.日志管理工具 journalctl

查看所有日志

日志配置文件:

/etc/systemd/journald.conf

journalctl命令格式

journalctl [OPTIONS...] [MATCHES...]
6.日志等级
等级名称  说明
debug (LOG_DEBUG)一般的调试信息说明
info (LOG_INFO)基本的通知信息
notice (LOG_NOTICE)普通信息,但是有一定的重要性
warning(LOG_WARNING警告信息,但是还不会影响到服务或系统的运行
error(LOG_ERR)错误信息,一般达到err等级的信息已经可以影响到服务和系统的运行了
crit (LOG_CRIT)临界状况信息,比err等级还要严重
alert (LOG_ALERT)状态信息,比crit等级还要严重,必须立即采取行动
emerg (LOG_EMERG)疼痛等级信息,系统已经无法使用了
*代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录
 7.服务名称
服务名称说明
auth(LOG AUTH)安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV)安全和认证相关消息(私有的)
cron (LOG_CRON)系统定时任务cront和at产生的日志
daemon (LOG_DAEMON)与各个守护进程相关的日志
ftp (LOG_FTP)ftp守护进程产生的曰志
kern(LOG_KERN)内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL0-7)为本地使用预留的服务
lpr (LOG_LPR)打印产生的日志
mail (LOG_MAIL)邮件收发信息
news (LOG_NEWS)与新闻服务器相关的日志
syslog (LOG_SYSLOG)存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER)用户等级类别的日志信息
uucp (LOG_UUCP>uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中
8.日志文件
  • /var/log/secure:系统安全日志,文本格式,应周期性分析
  • /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
  • /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
  • /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
  • /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况
  • /var/log/boot.log 系统服务启动的相关信息,文本格式
  • /var/log/messages :系统中大部分的信息
  • /var/log/anaconda : anaconda的日志操作系统安装时安装的软件信息

[root@localhost ~]#lastb
#btmp 无法查看需要使用 lastb  来查看
root     :0           :0               Tue Mar  8 01:32 - 01:32  (00:00)    
root     ssh:notty    192.168.91.101   Tue Mar  8 00:53 - 00:53  (00:00)    
root     ssh:notty    192.168.91.101   Tue Mar  8 00:50 - 00:50  (00:00)    

btmp begins Tue Mar  8 00:50:35 2022
[root@localhost ~]#last
#上一次成功登录包括重启
root     pts/2        192.168.91.101   Tue Mar  8 00:50 - 00:53  (00:02)    
root     pts/0        192.168.91.1     Mon Mar  7 23:44   still logged in   


[root@localhost ~]#lastlog
#最后一次登录
四.shell服务的日志单独设置
将 ssh服务的日志 文件 独立成出来
原来ssh               /var/log/secure


[root@localhost ~]#tail -f /var/log/secure
#查看ssh服务的日志位置


[root@localhost ~]#vim /etc/ssh/sshd_config
#修改ssh配置文件,32下一行添加自己的自定义
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6

local 0-7


[root@localhost ~]#vim /etc/rsyslog.conf
#76 行添加自己的文件位置
 local6.*                                               
 /var/log/ssh.log


[root@localhost log]#systemctl restart rsyslog.service sshd
#重启服务
网络日志
#开启日志的远程传输功能在192.168.91.100    10 台左右的服务器
[root@localhost ~]#rpm -ql rsyslog 
/usr/lib64/rsyslog/imtcp.so
/usr/lib64/rsyslog/imudp.so
[root@localhost ~]#ss -ntap |grep 514



[root@localhost ~]#vim /etc/rsyslog.conf 
#打开19 20 行
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
[root@localhost ~]#ss -ntap |grep 514
#查看514端口是否打开

#在192.168.91.101 上设置发送到哪台主机去
[root@centos7-2 ~]#vim /etc/rsyslog.conf 
#修改配置文件
54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
#复制54行                                                   改成ip地址
55 *.info;mail.none;authpriv.none;cron.none                @@192.168.91.100
                                                          #两个@ 代表使用  tcp  一个代表udp
如果修改 的是udp  @192.168.91.100
如果要想指定端口  @192.168.91.100:端口号

[root@centos7-2 ~]#logger "this is test log from 192.168.91.101 2"
#测试,写日志进去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值