设为首页 收藏本站
查看: 956|回复: 0

url防篡改脚本(nagios 插件)

[复制链接]

尚未签到

发表于 2019-1-16 12:33:40 | 显示全部楼层 |阅读模式
  之前工作需要,为nagios写的url篡改告警shell脚本。若url页面变动则告警。若为正常修改,则需手动重新生成hash文件,适用于变动不频繁而又较关键url。根据经验,若页面插入其他统计流量,显示时间等代码,则无法很好经行url修改监控。
  功能核心是经行url比较。利用curl 下载页面,然后计算hash值,并保存以备下次比较,此部分思想由jokechoo提供,脚本实现:tqh。 不同于防篡改,此处是实时url比较,告警。
  而防篡改技术,一般由2组服务器提供web服务,一组对外服务,此组服务器无修改权限,一旦文件被修改就会被另一组后台服务器同步回去,以此实现防篡改。想要安全就要付出不少代价。
  
插件1.  inithash.sh   计算原始hash值并保存 。(注意修改生成hash文件的权限,或改为nagios用户生成)
插件2. check_hash  nagios的检测插件
  PS:插件内使用的是中文,注意编码格式utf-8,可先手工调试是否显示中文。若nagios主程序本身无中文支持可能显示为乱码。
  代码如下,需要可下载附件。
  一、插件1  inithash.sh


  • #!/bin/bash
  • # version 1.0 beta,2011.01.17
  • # used for add/update  webpage hash
  • hash_lib=/tmp/test/hashfile
  • url_list=/tmp/test/urlfile         #模式1 直接修改url文件地址
  • log_file=/tmp/test/updatehash.log

  • #######@@ #注释掉上面url_list,开启此处@@之间内容,变为交互模式。另一check脚本会生成update.list  方便update
  • #if  [ $# -eq 1  -a  -f "$1" ]  
  • #then
  • #   url_list="$1"
  • #   echo $url_list   
  • #else
  • #   echo "ERROR: plz input 1 urlfile"
  • #   exit
  • #fi
  • ########@@
  • ###以下注释内容暂无意义。
  • #[ ! -e $url_list ] && echo "not exist urlfile" && exit
  • ###tmp_dir=/tmp/test
  • ###web_tmp=/tmp/test/tmpfile
  • ###cd $tmp_dir || echo "no tmp_dir,plz create first" && exit  

  • while read LINE
  • do
  • curl -s  -A topsec $LINE > tmpfileabc   
  • #URL名可能含/,无法直接作为文件名,hash表需针对URL作修改  
  • #if [ !  $? -eq 0 ]                     #URL页面无法下载,测试中
  • #then
  • #echo "this page cant download"
  • #fi
  • hashtmp=`sha1sum tmpfileabc`            #生成当前页面HASH
  • greptmp=`grep $LINE $hash_lib`          #检测该URL是否已hash
  • if [ $? -eq 0  ]
  •     then
  •         echo "The site $LINE has checked before, update the hash value."
  •         sed -i "s#$greptmp#$hashtmp#"  $hash_lib      #用#做分隔,确保页面url中无#号           
  •             sed -i s#tmpfileabc#"$LINE"#   $hash_lib   #将tmpfileabc替换为正确url
  •         echo `date +%Y%m%d_%R` "$LINE hash has updated" >> $log_file  
  •     else
  •         echo "The site $LINE is a new check, add the hash value."
  •         echo $hashtmp>> $hash_lib
  •         sed -i "s#tmpfileabc#$LINE#"   $hash_lib      

  • fi
  • rm -f tmpfileabc

  • done < $url_list


二、 插件2.  check_url


  • #!/bin/bash  
  • #version 1.0 ,2011.01.18
  • #nagios check http plug.  check whether webpage has modified . url list is from file  
  • #后续不同参数不同站点等

  • url_list=/tmp/test/urlfile
  • hash_lib=/tmp/test/hashfile
  • tmp_dir=/tmp/test
  • log_file=/tmp/test/hashcheck.log
  • need_update=/tmp/test/needupHASH.list
  • cd $tmp_dir  


  • flag_a=0
  • flag_c=0

  • while read  URL
  • do

  • curl -s  -A topsec  &quot;$URL&quot; > webtmpfile
  • current_hash=`sha1sum webtmpfile | awk '{print$1}'`  

  • #####################check url hash
  • if  `grep  $URL $hash_lib>greptmpfile`     #测试URL是否已经HASH处理过   
  • then
  •             if    grep -q $current_hash  greptmpfile    #比对HASH值         
  •             then
  •                 flag_a=0                                #未变动
  •             else
  •                 flag_a=1                                #变动
  •                 echo  `date +%Y%m%d_%R` &quot;$URL web changed&quot; >> $log_file
  •                 echo &quot;$URL&quot; >>$need_update                  
  •                 #保存到需更新url文件中,或者直接从l_file文件中提提取
  •             fi
  • else
  •        flag_c=3                           #HASH值未被保存过  
  •        echo  `date +%Y%m%d_%R` &quot;$URL hash should be create&quot; >>$log_file  
  •        echo  &quot;$URL&quot; >>$need_update
  • fi

  • done < $url_list  
  • rm -f greptmpfile
  • rm -f webtmpfile
  • ######################nagios checkstat  
  • if [ $flag_c -eq 3 ]
  • then
  •     if [ $flag_a -eq 1  ]
  •     then
  •         echo &quot;网页改动,且检测到新URL&quot;   #检测到网页改动,且含有新URL
  •         exit 3
  •     else
  •         echo &quot;检测到新URL&quot;        #正常,但有新URL未做比对。 后续手动/自动添加
  •         exit 1
  •     fi
  • else  
  •     if  [ $flag_a -eq 0  ]
  •     then
  •         echo &quot;一切正常&quot;               #页面未被篡改
  •         exit 0
  •     else
  •         echo &quot;网页内容改动&quot;           #改动
  •         exit 2
  •     fi

  • fi



附件:http://down.运维网.com/data/2357530


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-664002-1-1.html 上篇帖子: Nagios(监控) 下篇帖子: SSH更换端口后,nagios监控ssh设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表