簡單的shell腳本結合awk實現防止對web服務的dos攻擊

一 實驗環境

        鄙人使用的是centos 6.8操作系統   需要安裝iptables(常見的linux系統貌似都會自動安裝iptables)這條可以忽略   awk也需要安裝沒有的話就用yum裝下吧

        當然最重要的是web服務 我這里使用的是apache  對日志進行分析  當然你也可以分析其他的日志嘛  只是拿web服務來當例子而已

  二 腳本介紹

        使用的機制主要是對日志進行切片   對日志段進行分析  并寫進防火墻規則中

        為什么使用awk  awk對文本處理速度比較快 而且語法相對簡單

        #!/bin/bash         (1)
        while true           (2)
        do
        echo “`awk -v dateTime=”$datetimes”  ‘{if($1==dateTime){i=1}if(i==1){dateArry[$1]++}} \  
        END{for(j in dateArry){printf “%s %s\n”,j,dateArry[j]}}’ /var/log/httpd/access_log`” \
        |  awk ‘{if($2>=20){system(“iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1)}}’
        datetimes=`date +%y-%m-%d-%H-%M-%s`      (3)
        echo “$datetimes” >> /var/log/httpd/access_log  (4) 
        sleep 30              (5)
        done
         (1)聲明使用bash

         (2)使用while循環

         (3)datetimes=`date +%y-%m-%d-%H-%M-%s`   生成時間1.便于查看是什么時候產生的攻擊2.相當于隨機數避免產生重復

         (4)將產生偽隨機數寫入到web服務的日志中  

         (5)這里可以自定義時間當然你也可以寫到計劃里邊當然這一行也可以注釋掉  (當然while循環也得注釋掉如果你使用計劃任務)當然我這里的30有點小你可以自己定制一下我主要是進行快速的測試

        下面對awk部分進行分段分析

        echo “`awk -v dateTime=”$datetimes

        “‘{if($1==dateTime){i=1}if(i==1){dateArry[$1]++}} \   awk對日志文件進行分析 “↓” 對就是對小箭頭指的這個文件如果第一個字段等于dateTime則開始計數 并賦予i一個值1  如果i=1  則對數組下標為dateArry[$1]的值進行+1

        END{for(j in dateArry){printf “%s %s\n”,j,dateArry[j]}}’            /var/log/httpd/access_log`” \ 

        END看到沒有就在上邊   等awk處理結束后  對處理的字段進行輸出操作  遍歷dateArry數組  輸出IP地址(j 的值)和IP出現的次數( dateArry[j] 的值)
        |  awk ‘{if($2>=20){system(“iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1)}}’

        看到最上邊的echo沒有  使用echo輸出awk的值傳遞給另一個awk進行iptables的寫規則操作

        當然我這里是測試20這個值也是太小了  你可以根據實際環境進行修改   如果 IP出現的次數( dateArry[j] 的值)這個值大于20就講這個所對應的ip寫入到防火墻的規則里  使用system()函數”   iptables -A INPUT -j REJECT -p tcp –dport 80  -s “$1 最后的 $1 輸出IP地址(j 的值)就是將這個ip添加到拒絕的規則中

三 測試

        運行腳本

        簡單的shell腳本結合awk實現防止對web服務的dos攻擊        

        瘋狂刷新頁面

        簡單的shell腳本結合awk實現防止對web服務的dos攻擊

        查看日志

        簡單的shell腳本結合awk實現防止對web服務的dos攻擊

        我剛開始故意等了一個療程的

        后邊是幾百條的日志信息

        然后后查看防火墻規則

        簡單的shell腳本結合awk實現防止對web服務的dos攻擊

        當我打開瀏覽器的時候他就這樣了

        簡單的shell腳本結合awk實現防止對web服務的dos攻擊

原創文章,作者:wode,如若轉載,請注明出處:http://www.www58058.com/74076

(0)
wodewode
上一篇 2017-04-24
下一篇 2017-04-24

相關推薦

  • linux學習總結-linux基礎(之二)

    六、在Linux基礎目錄命名法則及功用 根據FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以了解到已安裝軟件通常放置于那個目錄下, 所以他們希望獨立的軟件開發商、操作系統制作者、以及想要維護系統的用戶,都能夠遵循FHS的標準。 也就是說,FHS的重點在于規范每個…

    Linux干貨 2016-09-23
  • LVM邏輯卷管理器(Logical Volume Manager)

    邏輯卷管理器(Logical Volume Manager) 簡介      LVM的做法是將幾個物理的分區通過軟件組合成為一塊看起來是獨立的大磁盤(VG),然后將這塊大磁盤再分成可以使用的分區(LV),最終就能夠掛載使用了。內部通過PE來進行擴展或縮小。 PV(PhysicalVolume)物理卷 用fdisk命令調整系統標識…

    Linux干貨 2016-09-01
  • linux 網絡管理

    1、ifconfig命令格式: ifconfig[interface] 查看IP ifconfig-a 查看全部網卡信息 ifconfigIFACE [up|down] 網卡開啟關閉 ifconfigIFACE IP/netmask [up] ifconfigIFACE IP netmask NETMASK 命令立即生效,不能永久保存  &nbsp…

    Linux干貨 2017-08-20
  • N26 第六周博客作業

    請詳細總結 vim 編輯器的使用并完成以下練習題 ## VIM 使用總結 首先 VIM 是 VI IMproved 的縮寫,是 vi 編輯器的增強型。它與 sed awk 并稱為文本處理三劍客。其主要作者 Bram Moolenaar 也是個非常有愛心的人,在 vim 的[官網](http://www.vim.org/) 和 在命令行中直接輸入 vim 的命…

    Linux干貨 2017-03-11
  • linux下邏輯卷管理LVM

    LVM:邏輯卷管理 LVM這個技術就是把底層的存儲設備組成一個卷組,底層存儲設備的存儲空間會變成一個個PE(盤區,大小為2的n次方),這個卷組里就是一個個的PE,然后,這個卷組會重新分區,這些分區就為邏輯卷,這些邏輯卷都是由卷組里分配的PE組成。 關于LVM里的命令: pv的命令: pvcreate pvs pvdisplay pvscan pvremove…

    Linux干貨 2015-08-04
  • LAMP

    練習:編譯安裝amp,提供兩個基于主機名的虛擬主機      (1) https, 部署pma      (2) 部署wordpress 編譯安裝: mariadb: # wget 10.1.0.1:/pub/Sources/7.x86_64/mariadb/…

    Linux干貨 2016-10-12
欧美性久久久久