|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 757|回復: 2
打印 上一主題 下一主題

url防篡改

[複製鏈接]

111

主題

1

好友

463

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    開心
    2024-4-11 17:15
  • 簽到天數: 338 天

    [LV.8]以壇為家I

    推廣值
    0
    貢獻值
    22
    金錢
    169
    威望
    463
    主題
    111
    樓主
    發表於 2014-3-14 22:12:45
    之前工作需要,为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  "$URL" > 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` "$URL web changed" >> $log_file
    •                 echo "$URL" >>$need_update                  
    •                 #保存到需更新url文件中,或者直接从l_file文件中提提取
    •             fi
    • else
    •        flag_c=3                           #HASH值未被保存过
    •        echo  `date +%Y%m%d_%R` "$URL hash should be create" >>$log_file  
    •        echo  "$URL" >>$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 "网页改动,且检测到新URL"   #检测到网页改动,且含有新URL
    •         exit 3
    •     else
    •         echo "检测到新URL"        #正常,但有新URL未做比对。 后续手动/自动添加
    •         exit 1
    •     fi
    • else
    •     if  [ $flag_a -eq 0  ]
    •     then
    •         echo "一切正常"               #页面未被篡改
    •         exit 0
    •     else
    •         echo "网页内容改动"           #改动
    •         exit 2
    •     fi
    • fi

    3

    主題

    14

    好友

    512

    積分

    中學生

    Rank: 3Rank: 3

  • TA的每日心情

    2024-2-23 15:38
  • 簽到天數: 1669 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    0
    金錢
    1668
    威望
    512
    主題
    3

    回文勇士 文明人 中學生

    沙發
    發表於 2014-4-29 19:49:45
    !看不懂啊!
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-11 21:17 , Processed in 1.016842 second(s), 24 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部