系统完整性审核工具

shell脚本如下:

#!/bin/bash
#
# 变量首先声明才能使用
shopt -s -o nounset

# 声明

# 建立日期

Date=$(date +'%Y%m%d%H%M%S')

# 加入审核的目录         #

Dirs="/bin /sbin /usr/bin /usr/sbin /lib /usr/local/sbin /usr/local/bin /usr/local/lib"

# 临时文件               #

TMP_file=$(mktemp /tmp/check.XXXXXX)

# 文件checksum存储文件
FP="/root/fp.$Date.chksum"

# 使用哪种checksum工具
Checker="/usr/bin/md5sum"
Find="/usr/bin/find"

# 函数区                #

scan_file() {
        local f
        for f in $Dirs
        do
                $Find $f -type f >> $TMP_file
        done
}

# 读取文件建立每个文件的checksum值
cr_checksum_list() {
        local f
        if [ -f $TMP_file ]; then
                for f in $(cat $TMP_file);
                        do
                                $Checker $f >> $FP
                done
        fi
}
rmTMP() {
        [ -f $TMP_file ] && rm -rf $TMP_file
}


# 主程序区


# 扫描列表
scan_file

# 建立文件的checksum值
cr_checksum_list

# 清理临时文件
rmTMP

脚本执行:

[root@node3 ~]# sh my_filecheck.sh

进行校验:

md5sum  -c fp.20141205160628.chksum

如果一切OK,都会显示OK的字样,如果有问题,就报相应的错误,如下:

[root@node3 ~]# md5sum  -c fp.20141205160628.chksum  | grep -v "OK"
md5sum: /usr/bin/chattr: No such file or directory
/usr/bin/chattr: FAILED open or read
md5sum: WARNING: 1 of 8267 listed files could not be read