- 论坛徽章:
- 2
|
因对samba目录下有监控需求,所以最近都在研究,但网上都找不到比较好的samba监控软件,没有办法对目录下的文件操作进行监控。
swat只可以对当下的samba连接用户和IP进行监控,但没有日志功能,最终决定用inotify来进行监控。
整个脚本的思路如下:
1.利用inotifywait对目录进行监控,并对相关操作进行日志记录。
2.利用inotifywait对日志文件进行监控,一有改变,扫描当时通过smbd进行连接的IP地址。
3.设置smb.conf中的全局设置,关闭60分钟内不打开任何文件的连接,
因为如果有系统通过记录密码来连接samba服务器,就算重启服务器或客户端,都会自动重连,这样在扫描连接IP时就会出现很多其它连接信息,影响准确性。
deadtime=60
脚本1
(主要是通过inotify对指定目录进行监控)
#!/bin/bash
#监控本机目录文件的改变,并写入log文件。
pwdpath=$(pwd) #取得当前目录
logpath=$pwdpath'/inotify.log'
inopath='/home/7ffile/' #监控目录
#只对监控目录中的移动、新建、删除事件进行记录
$(inotifywait -rme move,create,delete \
--timefmt '%Y-%m-%d %H:%M:%S' \
--format '%T %w %Xe %f' \
--exclude '\..*' \
$inopath >> $logpath)
=========================================
脚本2
(主要是监控日录文件进行IP连接扫描)
#!/bin/bash
#如果inotifywait有记录写入log,就需要扫描当时通过smbd连接的IP并记录下来,日后进行交叉查询。
pwdpath=$(pwd)
logpath=$pwdpath'/inotify.log'
logippath=$pwdpath'/inotifyip.log'
ipmacinfo='/mnt/temp_ipmac'
while inotifywait -e modify $logpath
do
dates=$(date +%Y-%m-%d' '%H:%M:%S) #设置准确时间
if tail -n1 $logpath | grep DELETE;then #出现删除时扫描连接IP
#对lsof显示出来信息进行筛选后得出此时连接的IP地址
arrayip=($(lsof | grep smbd | grep 192.168. \
| awk '{print $8}' \
| awk -F\> '{print $2}' \
| awk -F: '{print $1}'))
echo $dates'监控目录文件删除时有以上IP地址通过smbd连接。' >> $logippath
fi
done
最后通过inotify.log和inotifyip.log的交叉查询,就可以查出当监控目录有文件删除时,通过samba连接有哪些IP地址。
脚本还请各位大哥指教。 |
|