shell脚本-入侵检测与告警
shell脚本-入侵检测与告警
原理
利用inotifywait命令对一些重要的目录作一个实施监控,例如:当/root 、/usr/bin 等目录发生改变的,利用inotifywait看可以对其作一个监控作用。
inotifywait
介绍
inotifywait 是一个 Linux 下的命令行工具,用于监视文件系统的变化。它基于 inotify 机制,可以实时监控文件或目录的变化,并在发生变化时触发相应的动作。它可以监控文件的创建、删除、修改、移动等操作,并提供了丰富的选项和参数,可以根据需要进行定制化配置。inotifywait 可以用于实时监控日志文件、备份文件、配置文件等,可以方便地进行文件同步、备份、自动化处理等任务。
安装
yum install inotifywait -y
常用参数
--timefmt 时间格式
%y年 %m月 %d日 %H小时 %M分钟
--format 输出格式
%T时间 %w路径 %f文件名 %e状态
-m 始终保持监听状态,默认触发事件即退出
-r 递归查询目录
-q 减少不必要的输出(只打印事件信息)
-e 定义监控的事件,可用参数:
open 打开文件
access 访问文件
modify 修改文件
delete 删除文件
create 新建文件
attrib 属性变更
--exclude <pattern> 指定要排除监控的文件/目录
示例
inotifywait /usr/local -r --timefmt '%d/%m/%y %H:%M' --format "%T %f" -e MODIFY --exclude '^.*.swp$'
shell脚本
#!/bin/bash
MON_DIR=/opt/scripts
inotifywait -mqr --format %f -e create $MON_DIR | \
while read files; do
echo "`date +%F_%T` _$files" >> file_mon.log
done
推荐使用采用email通知shell脚本:
#!/bin/bash
MON_DIR=/opt/scripts
inotifywait -mqr --format %f -e create $MON_DIR | \
while read files; do
# 实时同步
rsync -avz /opt/scripts /tmp/
# 发送邮件通知
echo "`date +'%F_%T '`$files" | mail -s "inotifywait" 2661148284@qq.com
done
脚本运行测试:
1.bash 18.sh
2.再开一个终端,去/opt/scripts/文件下创建文件
touch test.txt
3.检查邮箱
这里如果采用邮箱通知需要先做好配置 可以查看文章使用Mailx发送邮件 - FouroFour - 博客园 (cnblogs.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!