日志审计与分析-利用grep进行日志筛选

目录

1、练习使用grep命令
    (1)grep命令的作用?
    (2)grep命令的常用参数都有哪些?
2、使用grep筛选出linux系统的成功和失败登录日志
3、思考:如何定期备份日志?
4、查阅资料:什么是linux环境变量,设置环境变量的方法都有哪些?


1、练习使用grep命令

(1)grep命令的作用?

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

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

/var/log/btmp    记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/wtmp    记录系统的启动、登录、重启、关机事件。这个文件也是一个二进制文件、
 

(1)用 vi /var/log/wtmp打开记录当前和历史登录信息的文件,为二进制文件,按Esc 取消编辑,按冒号以及wq回车退出文件

将该文件转为一般文本进行查看

utmpdump /var/log/wtmp > test_wtmp.txt
sudo vim test_wtmp.txt

 (2)筛选出登录成功的记录

grep 'root' test_wtmp.txt #root用户
last | grep -v root #非root用户

 

 

 (3)筛选登录失败的日志

grep -E 'no password|failure|failed|could not' /var/log/secure

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

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

一个简单的备份脚本如下:

首先我们要先创建备份脚本,打开xshell,输入

touch dumplog.sh

点击回车键,会在你的当前目录下创建.sh 文件

vim dumplog.sh
进入 .sh 文件 , 按a进行编写

输入以下内容

#!/bin/bash

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

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

#简单写法cp -r /var/log/secure  /root/logbackup/backup_log-$dd.log
# 我的源文件名 secure   这里根据自己的日志文件名称进行修改
cp -r $bean_dir/secure  $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?spm=1001.2014.3001.5506

 4、查阅资料:什么是linux环境变量

(1)什么是linux环境变量
环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关.
Linux是一个多用户的 操作系统 。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。

PATH      决定了shell将到哪些目录中寻找命令或程序
HOME      当前用户主目录
HISTSIZE    历史记录数
LOGNAME     当前用户的登录名
SHELL      前用户Shell类型
MAIL      当前用户的邮件存放目录

 显示环境变量HOME

$ echo $HOME

 .设置一个新的环境变量NAME

$ export NAME="heihei"
$ echo $NAME

 使用env命令(或export)显示所有的环境变量

使用set(或declare)命令显示所有本地定义的Shell变量

 

 使用unset命令来清除环境变量

 使用readonly命令设置只读变量

 

(2)定制环境变量
环境变量是和 Shell 紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。

介绍两种修改环境变量的方法:

使用export命令直接修改PATH的值【立即生效。临时改变。仅对当前用户有效】

	export PATH=/usr/local/mongodb/bin:$PATH

 永久有效,只对当前用户

 vim ~/.bashrc

在最后一行加 export PATH=/usr/local/mongodb/bin:$PATH

更多请查看这篇博客https://blog.csdn.net/liuqinghao671/article/details/77674194?spm=1001.2014.3001.5506

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值