建立测试数据
[root@localhost shell]# mkdir /var/html/www -p
[root@localhost shell]# cp -a /etc/a* /var/html/www/
[root@localhost shell]# cp -a /etc/b* /var/html/www/
[root@localhost shell]# ls /var/html/www/
abrt alsa at.deny avahi bluetooth
adjtime alternatives at-spi2 bash_completion.d bonobo-activation
aliases anacrontab audisp bashrc brltty
aliases.db asound.conf audit binfmt.d brltty.conf
找到所有的文件
[root@localhost shell]# find /var/html/www/ -type f
建立指纹库:给每个文件生成指纹
[root@localhost shell]# find /var/html/www/ -type f| xargs md5sum > /opt/zhiwen.db # xargs将其标准输入中的内容以空白分割成多个之后当作命令行参数传递给后面的命令
建立初始文件库
[root@localhost shell]# find /var/html/www/ -type f > /opt/wenjian.db
[root@localhost shell]# cat /opt/wenjian.db
/var/html/www/abrt/abrt-action-save-package-data.conf
/var/html/www/abrt/abrt.conf
/var/html/www/abrt/gpg_keys.conf
/var/html/www/abrt/plugins/xorg.conf
/var/html/www/abrt/plugins/python.conf
/var/html/www/abrt/plugins/CCpp.conf
/var/html/www/abrt/plugins/vmcore.conf
/var/html/www/adjtime
/var/html/www/aliases
/var/html/www/aliases.db
/var/html/www/alsa/state-daemon.conf
/var/html/www/alsa/alsactl.conf
/var/html/www/anacrontab
/var/html/www/asound.conf
/var/html/www/at.deny
检测文件内容的变化
[root@localhost www]# echo xixihaha >> bashrc # 改变文件内容
[root@localhost www]# md5sum -c /opt/zhiwen.db # 检测全部文件进行输出
/var/html/www/abrt/abrt-action-save-package-data.conf: OK
/var/html/www/abrt/abrt.conf: OK
/var/html/www/abrt/gpg_keys.conf: OK
/var/html/www/abrt/plugins/xorg.conf: OK
[root@localhost www]# md5sum -c --quiet /opt/zhiwen.db # 只输出被更改的不匹配文件
/var/html/www/bashrc: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
指纹库无法检测新增的文件
[root@localhost www]# touch test
[root@localhost www]# ls
abrt alternatives audisp binfmt.d test
adjtime anacrontab audit bluetooth
aliases asound.conf avahi bonobo-activation
aliases.db at.deny bash_completion.d brltty
alsa at-spi2 bashrc brltty.conf
[root@localhost www]# md5sum -c --quiet /opt/zhiwen.db
/var/html/www/bashrc: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
解决无法检测新增文件方法
[root@localhost www]# find /var/html/www/ -type f > /opt/wenjian.db_curr
[root@localhost www]# diff /opt/wenjian.db_curr /opt/wenjian.db
349d348
< /var/html/www/test
系统文件加密脚本
开发脚本
预备工作恢复文件:
find /var/html/www/ -type f |xargs md5sum > /opt/zhiwen.db
find /var/html/www/ -type f > /opt/wenjian.db
md5sum -c /opt/zhiwen.db
check.sh脚本
[root@localhost shell]# cat check.sh
#!/bin/bash
RETVAL=0 # 状态初始化
CHECK_DIR=/var/html/www # 定义要检测的站点目录
[ -e $CHECK_DIR ]||exit 1 # 如果[ -e $CHECK_DIR ]执行失败就执行exit 1
zhiwendb="/opt/zhiwen.db" # 定义原始指纹库路径
filedb="/opt/wenjian.db" # 定义原始文加库路径
errlog="/opt/err.log" # 定义检测后的内容日志
[ -e $zhiwendb ]||exit 1 # 如果原始指纹库不存在则自动退出脚本
[ -e $filedb ]||exit 1 # 如果原始文件库不存在则退出脚本
# judge file content
echo "[root@localhost ~]# md5sum -c --quiet /opt/zhiwen.db" > $errlog
md5sum -c --quiet /opt/zhiwen.db &> /dev/null
RETVAL=$?
# com file count
find /var/html/www/ -type f > /opt/wenjian.db_curr
echo "[root@localhost ~]# diff /opt/wenjian.db*" &>>$errlog
diff /opt/wenjian.db* &>>$errlog
if [ $RETVAL -ne 0 -o `diff /opt/wenjian.db* |wc -l` -ne 0 ];then
touch /tmp/`date +%s`.err
else
echo "Sites dir is ok."
fi
结果:
[root@localhost shell]# sh check.sh
Sites dir is ok.