日志审计与分析-日志筛选
实验目的:使用linux 下grep 命令筛选登录日志
1、练习使用grep命令
(1)grep命令的作用?
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
(2)grep命令的常用参数都有哪些?
用法:
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
常用参数:
grep [options]
主要参数:
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
<:从匹配正则表达 式的行开始。
>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
- :有字符,长度可以为0。
2、使用grep筛选出linux系统的成功和失败登录日志
主要日志有:
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
登录失败记录:/var/log/btmp //lastb
最后一次登录:/var/log/lastlog //lastlog
登录成功记录: /var/log/wtmp //last
目前登录用户信息:/var/run/utmp //w、who、users
登录日志记录:/var/log/secure
登录日志记录:/var/log/secure
查看/var/log/secure :
cat /var/log/secure
筛选登陆失败的日志:我之前多次输错密码,该日志文件(/var/log/secure)中记录了很多登录失败的日志
grep -E 'no password|failure|failed|could not' /var/log/secure
筛选出登录成功的日志:
grep 'opened' /var/log/secure
3、思考:如何定期备份日志?
备份脚本编写
打开终端,新建一个目录natalog,在该目录下创建一个备份脚本文件dumplog.sh。
mkdir natalog
cd natalog
touch dumplog.sh
对脚本文件进行编写:
vim dumplog.sh
#!/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
对脚本进行授权
chmod 700 dumplog.sh
运行脚本
./dumplog.sh
查看是否备份成功
将Shell脚本添加到计划任务,由crond 执行
首先查看crond状态
service crond status
编辑/etc/crontab这个文件,将shell脚本添加到配置文件中。
此时是6:20,将定时备份时间设为25minute,测试是否备份成功
vim /etc/crontab
下面进行测试,先把刚刚的备份删了,然后定时执行备份脚本
6点25分:成功备份
4、查阅资料:什么是linux环境变量,设置环境变量的方法都有哪些?
Linux为什么要设置环境变量:
因为Linux执行一些命令时,它会去很多目录去搜索对应的可执行程序,如果可执行程序分散在不同的目录下,当搜索时,这样会非常的耗费时间,所以Linux就约定,当执行一个命令时,就到一个指定的文件中去寻找可执行程序所在的目录,这个指定的文件就是环境变量配置文件。
Linux 系统中的程序和脚本都是通过环境变量来获取系统信息、存储数据和配置信息。在 Linux 中,一般通过环境变量配置操作系统的环境,例如提示符、查找命令的路径和用户家目录等,这些系统默认的环境变量的变量名是固定的,因此只能修改其变量的值。
环境变量也称全局变量,环境变量可用于定义 Shell 的运行环境,环境变量可以在配置文件中定义与修改,也可以在命令行中设置,但是命令行中的修改操作在终端重启时就会丢失,因此最好在配置文件中修改(用户家目录的“.Bash_profile“文件或者全局配置“/etc/profile”、“/etc/Bashrc”文件或者“/etc/profile.d”文件中定义)。
~/.bashrc和/etc/profile的区别:
Linux是一个多用户的操作系统,每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,方法就是修改相应的系统环境变量,即:~/.bashrc。所以 ~/.bashrc里的环境变量是针对当前登录的用户有效,是局部的。
用户登录或切换(即Login shell 启动)时会有一个专用的运行环境,它就保存在/etc/profile中,所以用户登录和用户的切换时,首先执行 /etc/profile这个文件。/etc/profile文件的作用就是存放系统的环境变量,它对所有用户都有效,是全局的。
因此,配置~/.bashrc文件,针对当前登录用户有效,配置/etc/profile文件,对所有登录用户有效。
配置方法:
Linux export 命令用于设置或显示环境变量。
export [-fnp][变量名称]=[变量设置值]
(1)修改.bashrc文件
vim ~.bashrc
在里面加入:
export PATH="$PATH:/usr/local/arm/bin"
(2)修改 /etc/profile
vim /etc/profile
在里面加入:
export PATH="$PATH:/usr/local/arm/bin"
以上两种方法需要重新注销系统才能生效,最后可以通过下面两个命令测试。
echo $PATH
arm-linux-gcc -v