【日志审计与分析】linux 下使用grep 命令进行日志筛选

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 实验目的:
  • 实验环境:
  • 一、练习使用grep命令
    • 1.grep命令的作用
    • 2.grep命令的常用参数
  • 二、使用grep筛选出linux系统的成功和失败登录日志
    • 1.登陆成功
    • 2.登录失败
  • 三、思考:如何定期备份日志?
  • 四、查阅资料
    • 1.什么是linux环境变量
    • 2.设置环境变量的方法
  • 总结


实验目的:

使用linux 下grep 命令筛选登录日志

实验环境:

linux_Centos7虚拟机

注:本实验最好用root用户登录,否则可能会出现没有权限访问日志文件的情况

一、练习使用grep命令

1.grep命令的作用

grep 即 global search regular expression(RE) and print out the line,意为全面搜索正则表达式并把它按行打印出来。简言之,grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
因此,本实验中可以使用grep命令进行日志筛选。

2.grep命令的常用参数

grep命令的常用格式为:grep [选项] ”模式“ [文件]
常用选项:

-E :开启扩展(Extend)的正则表达式。

-i :忽略大小写(ignore case)。

-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

-n :显示行号

-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

-o :只显示被模式匹配到的字符串。

–color :将匹配到的内容以颜色高亮显示。

-A n:显示匹配到的字符串所在的行及其后n行,after

-B n:显示匹配到的字符串所在的行及其前n行,before

-C n:显示匹配到的字符串所在的行及其前后各n行,context

二、使用grep筛选出linux系统的成功和失败登录日志

1.登陆成功

Linux用户登录信息放在三个文件中:

1  /var/run/utmp:记录当前正在登录系统的用户信息,
2  /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,
3  /var/log/btmp:记录失败的登录尝试信息,

但这三个文件都是二进制数据文件,不能像筛选一般文本文件一样来筛选它们。取而代之的是,可以将其内容输出成为文本格式,然后再用grep命令进行筛选,本实验使用wtmp文件筛选用户成功登录的信息。

实验步骤如下:
①/var/log/wtmp文件原本为二进制乱码:
【日志审计与分析】linux 下使用grep 命令进行日志筛选_第1张图片

②将/var/log/wtmp文件转为一般文本文件并查看:

utmpdump /var/log/wtmp > test_wtmp.txt

sudo vim test_wtmp.txt

;
【日志审计与分析】linux 下使用grep 命令进行日志筛选_第2张图片

【日志审计与分析】linux 下使用grep 命令进行日志筛选_第3张图片
③用grep命令筛选出所有以root用户成功登录的记录,并输出那一行:

grep 'root' test_wtmp.txt

【日志审计与分析】linux 下使用grep 命令进行日志筛选_第4张图片

注:此处原本想用同样的方法打开btmp文件,但是系统btmp文件为空,原因不明,因此失败的登录情况从secure文件中筛选查看。

2.登录失败

/var/log/secure是linux的安全日志, 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明有人在暴力破解你的 root 密码。

①用命令 sudo vim /var/log/secure 可以查看该文件:
这个日志中的记录可以分为几个字段来描述这些事件信息:
1、事件的日期和时间
2、事件的来源主机 ( 通常是写主机名 )
3、产生这个事件的程序[进程号]
4、实际的日志信息
【日志审计与分析】linux 下使用grep 命令进行日志筛选_第5张图片

②常见信息:

session opened for user root    # 表示root用户开启了会话(也就是开启了终端)
session closed for user root    # 表示root用户关闭了会话(也就是关闭了终端)

在这里插入图片描述

 password check failed for users # 登录失败

【日志审计与分析】linux 下使用grep 命令进行日志筛选_第6张图片
③用grep命令筛选出所有用户登录失败的记录,并输出那一行:

grep ' password check failed for user' secure

【日志审计与分析】linux 下使用grep 命令进行日志筛选_第7张图片

三、思考:如何定期备份日志?

可以使用定时运行备份脚本(.sh)的方法对日志文件进行定期备份,脚本主要实现的功能是把旧的日志文件复制一份放到新的路径下,然后改个名字就可以了。
一个简单的备份脚本如下:

#!/bin/bash

#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/logbackup
#日期  针对日志的话 我这里是第二天凌晨0点保存前一天的日志文件
dd=`date -d "yesterday" +%Y-%m-%d`
#源文件日志路径
bean_dir=/opt/spring/logs

#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

#简单写法cp -r /opt/spring/logs/demo.info.$dd.0.log  /root/logbackup/backup_log-$dd.log
# 我的源文件名  demo.info.2021-01-01.0.log   这里根据自己的日志文件名称进行修改
cp -r $bean_dir/demo.info.$dd.0.log  $backup_dir/backup_log-$dd.log

#写创建备份日志
echo "create $backup_dir/backup_log-$dd.log" >> $backup_dir/log.txt

#找出需要删除的备份
delfile=`ls -l -crt  $backup_dir/*.log | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt  $backup_dir/*.log | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  #删除最早生成的备份,只保留number数量的备份
  rm $delfile
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi

更多步骤可以参考https://blog.csdn.net/weixin_44577669/article/details/122405534

四、查阅资料

1.什么是linux环境变量

①环境变量一般是指操作系统中指定操作系统运行环境的一些参数。它相当于一个指针,想要查看变量的值,需要加上“$”。
②在Linux中的变量,按作用的范围分可以分为环境变量和本地变量:环境变量:相当于全局变量,存在于所有的Shell中,具有继承性;本地变量:相当于局部变量只存在当前Shell中,本地变量包含环境变量,非环境变量不具有继承性。
按生存周期分可以分为永久变量和暂时变量:永久:需要修改配置文件,变量永久生效;暂时:使用export定义,关闭Shell后失效。
③常见的环境变量有:
PATH:该变量指定命令的搜索路径。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。
在这里插入图片描述
HOME:该变量指定用户的主工作目录,即用户登录到Linux系统时,默认的目录。
在这里插入图片描述
HISTSIZE:该变量指定保存历史命令的数目。
在这里插入图片描述

LOGNAME:该变量指定显示用户的登录名。
在这里插入图片描述

HOSTNAME:该变量指定主机名
在这里插入图片描述

SHELL:该变量指定用户当前使用的解析器。
在这里插入图片描述

2.设置环境变量的方法

环境变量通俗讲是操作系统或程序执行时候默认设定的参数,比如path路径变量就是当要执行某个命令或程序的时候默认寻找的路径。
环境变量有很多种类,其中,永久变量通过修改配置文件来设置,配置之后变量永久生效;而临时性变量使用命令如export等命令设置,设置之后马上生效。当关闭shell的时候失效(这种主要用于测试比较多)。此外,用户变量(局部变量)修改的设置只对某个用户的路径或执行起作用,而系统变量(全局变量)影响范围是整个系统。
显示所有环境变量:

env

【日志审计与分析】linux 下使用grep 命令进行日志筛选_第8张图片

下面以配置MySQL进入环境变量为例介绍几种修改环境变量的方法:
①export PATH
使用export命令直接修改PATH的值【立即生效。当前终端有效,窗口关闭后无效。仅对当前用户有效】

export PATH=/home/uusama/mysql/bin:$PATH

②vim ~/.bashrc

通过修改用户目录下的~/.bashrc文件进行配置【使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效。永久有效。仅对当前用户有效】

vim ~/.bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

③vim ~/.bash_profile

和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可【使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效。永久有效。仅对当前用户有效】

vim ~/.bash_profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

④vim /etc/bashrc

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限【新开终端生效,或者手动source /etc/bashrc生效。永久有效。对所有用户有效】

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

总结

做实验不给实验步骤,是老师在培养我们的创新意识,想让我们自由发(bai)挥(lan)。他真的,我哭死 :(

你可能感兴趣的:(日志分析,日志审计与分析)