Linux文件系统与日志分析

目录

一、文件系统

1、inode和block概述

 2、inode表结构

1.1、包含文件的元信息

1.2、查看inode

​编辑 1.3、 Linux系统文件三个主要的时间属性

1.5、用户访问文件的过程

3、inode的大小

4、inode的特殊作用

5、软链接与硬链接

​编辑 6、、恢复误删除的xfs文件

二、日志服务管理

1.日志的功能

2、日志文件的分类 

3、日志服务

1.1、sysklogd系统日志服务

1.2、rsyslog系统日志服务

​编辑 4、ELK

 5、rsyslog管理

1.1、rsyslog管理

 1.2、服务名称

1.3、rsyslog 相关文件

库文件: /lib64/rsyslog/*.so 1.4、rsyslog配置文件

 1.5、日志文件的格式:

1.6、将ssh服务的日志单独设置

 1.7、网络日志(远程日志功能)

6、常见的一些日志文件

 1.1、用户日志分析

7、日志管理策略

8、日志管理工具 journalctl

 三、网路共享文件服务

1、FTP服务

1.1、FTP服务状态码

 1.2、将服务端的文件拷贝到本地、

1.3、将客户端的文件上传到服务端


一、文件系统

1、inode和block概述

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

文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。

block(块)

连续的八个扇区组成一个block,4k
是文件存取的最小单位
inode(索引节点)

中文译名为“索引节点”,也叫 i 节点
用于存储文件元信息
一个文件必须占用一个inode ,至少占用一个block
Linux文件系统与日志分析_第1张图片

 2、inode表结构

1.1、包含文件的元信息

  • 文件的字节数(字节占用多少空间,也称文件大小)
  • 文件拥有者的 User ID
  • 文件的 Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳(ctime、atime、mtime)
  • 文件类型
  • 链接数
  • 有关文件的其他数据

1.2、查看inode

  • ls -i 命令:查看文件名对应的inode号码
  • stat 命令:查看文件的inode信息

Linux文件系统与日志分析_第2张图片 1.3、 Linux系统文件三个主要的时间属性

最近访问atime(access time)最后一次访问文件的时间。使用echo追加内容不会变,因为没有打开文件
最近更改mtime(modify):最后一次更改文件内容的时间。更改完内容之后,ctime也会改变
最近改动ctime(change time):最后一次改变文件元信息(文件或目录属性)的时间。改变后,mtime不变
Linux文件系统与日志分析_第3张图片 1.4、目录文件结构

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

inode不包含文件名,文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件
是通过文件名来引用一个文件
每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。目录是目录下的文件名和文件inode号之间的映射
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于系统来说,文件名只是inode号码便于识别的别称

1.5、用户访问文件的过程

当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过

inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就

指向相对应的数据block,并读取数据。

Linux文件系统与日志分析_第4张图片

 硬盘分区后结构

Linux文件系统与日志分析_第5张图片

3、inode的大小

inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
inode的总数,在格式化时就确定
如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -i
Linux文件系统与日志分析_第6张图片

4、inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件

删除inode号的方法:

法一: find 文件位置 -inum inode号码 -exec rm -rf {} \;

法二: find 文件位置 -inum inode号码 -delete

Linux文件系统与日志分析_第7张图片

  • 在同一个文件系统中移动或重命名文件时,只改变文件名,不影响inode号码

Linux文件系统与日志分析_第8张图片

  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
  • 文件数据被修改保存后,会生成一个新的inode 号码

 

  • cp命令与inode:

    • 分配一个空闲的inode号

    • 在inode表中生成新条目在目录中创建一个目录项

    • 将名称与inode编号关联拷贝数据生成新的文件

Linux文件系统与日志分析_第9张图片

rm命令与inode

  • 链接数递减,从而释放的inode号可以被重用把数据块放在空闲列表中

  • 删除目录项

  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

5、软链接与硬链接

  • 硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个链接数加一,多路径访问。不占用内存
  • 软连接 类似于windows里快捷方式,软连接,符号连接,使用绝对路径 

格式:软链接 :ln [-s] 源文件或目录… 链接文件或目标位置

    硬链接: ln [ ] 源文件或目录… 链接文件或目标位置

对比项 硬连接 软连接
本质 本质是同一个文件 本质不是同一个文件
inode 相同 不同
连接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 删除新建不会改变
文件夹 不支持 支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问连接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小 和源文件相同 源文件的路径的长度
  •  硬链接

Linux文件系统与日志分析_第10张图片

  •  软链接

Linux文件系统与日志分析_第11张图片 6、、恢复误删除的xfs文件

Centos 7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与xfsrestore 工具进行备份

恢复。

xfsdump格式:xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump的备份级别(默认为0)

0表示完全备份

1-9表示增量备份

使用 xfsdump 时,需要注意以下的几个限制:

不支持没有挂载的文件系统备份,所以只能备份已挂载的;

必须使用 root 的权限才能操作;

只能备份 XFS 文件系统;

备份下来的数据只能让 xfsrestore 解析;

不能备份两个具有相同 UUID 的文件系统(可使用blkid查看)。

实验步骤

  • 添加硬盘

Linux文件系统与日志分析_第12张图片 Linux文件系统与日志分析_第13张图片Linux文件系统与日志分析_第14张图片  Linux文件系统与日志分析_第15张图片

  • 在挂载目录data下复制进etc目录下的passwd也可以自己新建文件

  •  查看是否有xfsdump,如果没有使用yum install xfsdump -y进行安装

指定备份目录和需要备份的磁盘 

Linux文件系统与日志分析_第16张图片

  •  模拟删除

  

  • 进行恢复

Linux文件系统与日志分析_第17张图片

 

二、日志服务管理

1.日志的功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

2、日志文件的分类 

  • 内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似,其主配置文件 /etc/rsyslog.conf
  • 用户日志:记录系统用户登录及退出系统的相关信息
  • 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一

3、日志服务

1.1、sysklogd系统日志服务

CentOS 5 之前版本采用的日志管理系统服务

  • syslogd: system application 记录应用日志
  • klogd: linux kernel 记录内核日志

事件记录格式

日期时间 主机 进程[pid]: 事件内容  

 C/S架构

通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

1.2、rsyslog系统日志服务

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管

rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输

入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的

目的地和更精细的处理中,性能通常也被认为是惊人的”。

 rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式
  • 适用于企业级中继

rsyslog详细信息

Linux文件系统与日志分析_第18张图片 4、ELK

ELK:由Elasticsearch, Logstash, Kibana三个软件组成

非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
Kibana 可以提供的日志分析友好的 Web 界面

 5、rsyslog管理

1.1、rsyslog管理

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

#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定议的分类
local0-local7
  • Priority 优先级别,从低到高排序
级号 消息 级别 说明
0 EMERG 紧急 会导致主机系统不可用的情况
1 ALERT 警告 必须马上采取措施解决的问题
2 CRIT 严重 比较严重的情况
3 ERR 错误 运行出现错误
4 WARNING 提醒 可能会影响系统功能的事件
5 NOTICE 注意 不会影响系统但值得注意
6 INFO 信息 一般信息
7 DEBUG 调试 程序或系统调试信息等
  • 参看帮助: man 3 syslog

Linux文件系统与日志分析_第19张图片

 1.2、服务名称

代表什么服务的日志

服务名称 说明
auth(LOG_AUTH) 安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV) 安全和认证相关消息(私有的)
cron (LOG_CRON) 系统定时任务cront和at产生的日志
daemon (LOG_DAEMON) 与各个守护进程相关的曰志
kern(LOG_KERN) 内核产生的曰志(不是用户进程产生的)
ftp (LOG_FTP) ftp守护进程产生的曰志
Iocal0-local7 (LOG_LOCAL 0-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系统进行数据传递的协议,后来也常用在新闻组服务中

1.3、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
 1.4、rsyslog配置文件

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

  • MODULES:相关模块配置

  • GLOBAL DIRECTIVES:全局配置

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

RULES模块
facility.priority; 
#分类      优先级
 
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息
 
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

 Linux文件系统与日志分析_第20张图片

 1.5、日志文件的格式:

事件产生的日期时间 主机 进程(pid):事件内容
  • 事件产生的时间。
  • 产生事件的服务器的主机名。
  • 产生事件的服务名或程序名。
  • 事件的具体信息。

1.6、将ssh服务的日志单独设置

[root@localhost ~]# vim /etc/ssh/sshd_config 
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL6
[root@localhost ~]# vim /etc/rsyslog.conf
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local6.*                                                /var/log/sshd.log
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl restart rsyslog
 
####################另一台主机#########################
[root@localhost ~]# ssh 192.168.52.200
[email protected]'s password: 
Last login: Tue Mar 15 15:24:00 2022 from 192.168.52.1
[root@localhost ~]# ssh 192.168.52.200
Permission denied, please try again.
[email protected]'s password: 
Last failed login: Tue Mar 15 16:01:17 CST 2022 from 192.168.52.200 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Tue Mar 15 15:37:31 2022 from 192.168.52.100
 
#####################回到本机############################
[root@localhost ~]# tail /var/log/sshd.log 
Mar 15 15:37:31 localhost sshd[6648]: Accepted password for root from 192.168.52.100 port 34242 ssh2
Mar 15 16:01:17 localhost sshd[6962]: Failed password for root from 192.168.52.200 port 58326 ssh2
Mar 15 16:01:20 localhost sshd[6962]: Accepted password for root from 192.168.52.200 port 58326 ssh2

进入rsyslog配置文件,添加自己的文件位置

  •  重启服务

输错一次密码 

Linux文件系统与日志分析_第21张图片 查看本机日志记录

 1.7、网络日志(远程日志功能)

网路日志,通过网络将本地的日志远程备份到另一台机器。这样,就算本机系统崩溃,我们可以查

看另一台机器备份的日志,来排查故障。

备份的大体过程:如果需要将服务器A的日志备份到服务器B,则A为发送方,B为接收方。则A作

为发送方需要在配置文件中添加接收方B的IP地址。B作为接收方需要开启端口来接收发送方A发送

的日志文件。
 

###################发送方###############
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/rsyslog.conf
 
*.info;mail.none;authpriv.none;cron.none                @@192.168.52.100
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# logger "this is test my qyd"
###################接收方###############
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/rsyslog.conf 
 
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# ss -ntap |grep 514
LISTEN     0      25           *:514                      *:*                   users:(("rsyslogd",pid=7672,fd=3))
LISTEN     0      25          :::514                     :::*                   users:(("rsyslogd",pid=7672,fd=4))
 
###########接收方测试是否能接收到发送方的日志############
[root@localhost ~]# tail -f /var/log/messages
Mar 15 17:10:01 localhost systemd: Starting Session 43 of user root.
Mar 15 17:20:01 localhost systemd: Started Session 44 of user root.
Mar 15 17:20:01 localhost systemd: Starting Session 44 of user root.
Mar 15 17:21:57 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="7672" x-info="http://www.rsyslog.com"] exiting on signal 15.
Mar 15 17:21:57 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" 
Mar 15 17:21:57 localhost rsyslogd: action 'action 1' suspended, next retry is Tue Mar 15 17:22:27 2022 [v8.24.0 try http://www.rsyslog.com/e/2007 ]
Mar 15 17:22:53 localhost root: this is test my qyd

6、常见的一些日志文件

日志文件位置 日志文件说明
/var/log/messages内核和公共日志 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。
/var/log/cron 计划任务日志 记录与系统定时任务相关的曰志
/var/log/dmesg 系统引导日志 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/maillog 邮件日志 记录邮件信息的曰志
/var/log/lastlog用户日志 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure用户日志 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp用户日志 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp用户日志 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

 1.1、用户日志分析

保存了用户登录、退出系统等相关信息:

/var/log/lastlog:最近都用户登录事件。二进制文件,使用 lastlog 命令查看。
/var/log/secure:与用户验证有关的安全性事件。
/var/log/wtmp:用户登录、注销,及系统开、关机事件。二进制文件,使用 last 命令查看。
/var/run/utmp:当前登录的每个用户的详细信息。二进制文件,使用w、who、users等命令查看。

分析工具

  • users、who、w、last、lastb

users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数 

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机。

命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。

last 命令用于查询成功登录到系统的用户记录,

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

lastb 命令用于查询登录失败的用户记录,

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

7、日志管理策略

  • 及时做好备份和归档

  • 延长日志保存期限

  • 控制日志访问权限

    • 日志中可能会包含各类敏感信息,如账户、口令等。

集中管理日志

  • 将服务器的日志文件发到统一的日志文件服务器

  • 便于日志信息的统一收集、整理和分析

  • 杜绝日志信息的意外丢失、恶意篡改或删除

8、日志管理工具 journalctl

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

日志的配置文件:/etc/systemd/journald.conf

命令格式: journalctl [OPTIONS...] [MATCHES...]

journalctl      查看所有日志(默认情况下 ,只保存本次启动的日志)

选项 作用
-k 只查看内核日志(不显示应用日志)
-b/-b-1 查看本次启动的日志/查看上一次启动的日志
--since 查看指定时间的日志
-n [数字] 显示尾部指定行数,默认10行
-f 实时滚动显示最新日志

 三、网路共享文件服务

1、FTP服务

FTP(文件传输协议)是用于与远程网络之间传输文件的标准网络协议。 基于C/S结构。

数据传输格式:二进制(默认)和文本。

双通道协议:命令和数据连接。

两种模式(从服务器角度):

  • 主动(PORT style):服务器主动连接

命令(控制)端口: 客户端:随机port ---> 服务器:21/tcp

数据端口: 客户端:随机port <--- 服务器:20/tcp

  • 被动(PASV style):客户端主动连接

命令(控制)端口: 客户端:随机port ---> 服务器:21/tcp

数据端口: 客户端:随机port ---> 服务器:随机port /tcp

 Linux文件系统与日志分析_第22张图片

1.1、FTP服务状态码

状态码 内容 例子
1XX 信息 125:数据连接打开
2XX 成功类状态

200:命令OK    

230:登录成功

3XX 补充类 331:用户名OK
4XX 客户端错误 425:不能打开数据连接
5XX 服务器错误 530:不能登录

 1.2、将服务端的文件拷贝到本地、

服务端A    IP地址:192.168.52.200

  • 关闭防火墙

  • 安装vsftpd软件包

Linux文件系统与日志分析_第23张图片 查看系统内程序用户ftp

 过滤出ftp详细信息

在/var/目录下

  •  重启服务并查看端口是否打开

 客户端

vsftpd 提供ftp功能的软件,客户端需要安装ftp程序才可以使用ftp命令

Linux文件系统与日志分析_第24张图片

  • 与服务端进行连接 将文件传输到本地(在哪个目录连接服务端 文件就会下载到哪个目录)

Linux文件系统与日志分析_第25张图片

1.3、将客户端的文件上传到服务端

服务端A    IP地址:192.168.52.200

前四补同上

  •  进入pub文件夹下,查看文件

  • 新建一个文件夹也可以使用pub文件夹

  

  • 给文件夹可执行权限,可以让客户端上传文件到本文件夹 ,如果不给权限会报550错误

  •  进入配置文件,设置允许匿名用户登入,wq保存退出

Linux文件系统与日志分析_第26张图片

  • 重启vsftpd服务

 

客户端

vsftpd 提供ftp功能的软件,客户端需要安装ftp程序才可以使用ftp命令

Linux文件系统与日志分析_第27张图片

  • opt目录下创建文件(任何目录下都可以创建,我选择在opt)

  •  上传文件

Linux文件系统与日志分析_第28张图片

 服务端验证

你可能感兴趣的:(linux,运维,服务器)