色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享一個自動封IP的腳本

阿銘linux ? 來源:阿銘linux ? 2023-05-19 15:15 ? 次閱讀

最近幾天有一個問題一直困擾著我,就是我維護的一個網站最近幾天總是在整點附近出問題,那時候數據庫服務器CPU使用率超高,持續時間1-5分鐘。

ece267a6-f614-11ed-90ce-dac502259ad0.png

然后,我就開始各種查、各種記,出問題的時間點,數據庫查詢量很大,我把這些查詢記錄了下來,并做分析,然而并沒有什么特別有規律的現象,因為這些查詢非常分散,跟正常的查詢一般無二,唯一區別就是量大。

同時,也去分析了WEB端的訪問日志,截取出問題那幾分鐘的日志進行分析,過去兩天一直都沒有找到規律,跟數據庫一樣,非常分散,跟正常的訪問一樣,只是量大了一些。

我甚至懷疑是不是這臺數據庫服務器的硬件出現了問題,畢竟我們用的是騰訊云的機器,云主機存在資源共享的問題。所以,我還提交了工單,讓售后去幫忙查,但無果。

今天,我再次分析日志時,發現了一些規律,那就是有三個ip訪問量非常大。

ecead4d6-f614-11ed-90ce-dac502259ad0.png

這是一分鐘內的統計數據,左邊為IP的請求次數,一分鐘一個正常的IP的請求數怎么可能超過1000次呢?甚至連100次都不應該超過才對。所以,直接把IP封掉。

也許這幾天的問題跟IP訪問量大沒有直接關系,但既然今天發現了此問題,那就先解決再說。

考慮到后面還會有類似的IP訪問,那我干脆直接寫一個自動封IP的腳本,IP封了肯定需要自動解封,所以,我的腳本主要邏輯是:

1)每分鐘查一下過去1分鐘的日志,對IP進行分析,將訪問量大于400的給封掉;

2)每隔半小時針對過去半小時以來的被封的IP進行分析,如果不再有數據包過來,則解封。 下面是腳本內容:

#! /bin/bash
#定義1分鐘以前的時間,用于過濾1分鐘以前的日志
t1=`date -d "-1 min" +%Y:%H:%M`
log=/var/log/nginx/access.log


block_ip()
{
    egrep "$t1:[0-5]+" $log > /tmp/tmp_last_min.log


    #把1分鐘內訪問量高于400的ip記錄到一個臨時文件中
#過濾掉白名單IP(81.123.35.171)
awk'{print$1}'/tmp/tmp_last_min.log|grep-v'81.123.35.171'|sort-n|uniq-c|sort-n|awk'$1>400{print$2}'>/tmp/bad_ip.list


    #計算ip的數量
    n=`wc -l /tmp/bad_ip.list|awk '{print $1}'`


    #當ip數大于0時,才會用iptables封掉它
    if [ $n -ne 0 ]
    then
        for ip in `cat /tmp/bad_ip.list`
        do
            /usr/sbin/iptables -I INPUT -s $ip -j DROP
        done
        #將這些被封的IP記錄到日志里
        echo "`date` 封掉的IP有:" >> /tmp/block_ip.log
        cat /tmp/bad_ip.list >> /tmp/block_ip.log
    fi
}


unblock_ip()
{
    #首先將包個數小于5的ip記錄到一個臨時文件里,把它們標記為白名單IP
    /usr/sbin/iptables -nvL INPUT|sed '1d' |awk '$1<5 {print $8}' > /tmp/good_ip.list
    n=`wc -l /tmp/good_ip.list|awk '{print $1}'`
    if [ $n -ne 0 ]
    then
        for ip in `cat /tmp/good_ip.list`
        do
            /usr/sbin/iptables -D INPUT -s $ip -j DROP
        done
        echo "`date` 解封的IP有:" >> /tmp/unblock_ip.log
        cat /tmp/good_ip.list >> /tmp/unblock_ip.log
    fi
    #當解封完白名單IP后,將計數器清零,進入下一個計數周期
    /usr/sbin/iptables -Z
}


#取當前時間的分鐘數
t=`date +%M`


#當分鐘數為00或者30時(即每隔30分鐘),執行解封IP的函數,其他時間只執行封IP的函數
if [ $t == "00" ] || [ $t == "30" ]
then
   unblock_ip
   block_ip
else
   block_ip
fi

然后寫一個每分鐘都執行的任務計劃就可以啦。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web服務器
    +關注

    關注

    0

    文章

    138

    瀏覽量

    24412

原文標題:分享一個自動封IP的腳本

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    介紹10Python自動腳本

    在這個自動化時代,我們有很多重復無聊的工作要做。想想這些你不再需要一次又一次地做的無聊的事情,讓它自動化,讓你的生活更輕松。那么在本文中,我將向您介紹 10 Python
    發表于 10-17 09:27 ?947次閱讀

    10殺手級的Python自動腳本

    今天浩道跟大家分享10日常工作中用到的python自動腳本。讓你感受番python簡單強大之處!
    發表于 11-28 11:07 ?689次閱讀

    python腳本如何根據公網IP自動獲取地址和天氣信息?

    python腳本如何根據公網IP自動獲取地址和天氣信息?
    發表于 12-28 07:14

    自動化重啟服務腳本

    腳本可以每分鐘執行次,腳本執行時截取上分鐘的日志,可以計算總日志行數,和出現502的行數,計算比例,這里我給大家定
    的頭像 發表于 11-22 10:12 ?1274次閱讀

    10殺手級的Python自動腳本分享

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-06 15:34 ?762次閱讀

    分享10實用的Python自動腳本

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-21 15:58 ?1342次閱讀

    網站總被攻擊?寫個自動封禁IP腳本給你

    個人網站總被攻擊?寫個自動封禁IP腳本給你!
    的頭像 發表于 01-29 11:44 ?1127次閱讀

    通過腳本搞懂fork、source和exec

    Source模式下,子shell執行時獲取的環境變量會會影響到父shell。與fork的區別在于,不會額外打開sub-shell來執行被調用的腳本,而是在同一個shell中執行。所
    的頭像 發表于 02-03 16:05 ?1759次閱讀

    ip腳本進化的解決辦法

    上次給大家分享過IP腳本。我搞那個腳本的目的是為了把訪問量太大的IP地址給封掉,然后每隔半
    的頭像 發表于 06-11 17:03 ?694次閱讀
    封<b class='flag-5'>ip</b><b class='flag-5'>腳本</b>進化的解決辦法

    keil自動化編譯腳本

    這是 keil 的自動化編譯腳本,可被其他腳本或程序調用,接收參數并按參數編譯 keil 工程,而不必打開 keil 軟件,實現程序上的
    的頭像 發表于 10-16 17:04 ?1922次閱讀
    keil<b class='flag-5'>自動</b>化編譯<b class='flag-5'>腳本</b>

    如何使用腳本完成CRC和填充值的自動完成

    恩智浦的MPC架構的微控制器使用的開發環境IDE是S32DS ,該IDE使用的GNU GCC工具鏈沒有提供對編譯結果的CRC校驗和自動生成工具,所以需要我們制作腳本
    的頭像 發表于 10-21 09:50 ?1048次閱讀
    如何使用<b class='flag-5'>腳本</b>完成CRC和填充值的<b class='flag-5'>自動</b>完成

    怎么用Python構建自動發送郵件的腳本

    ? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送郵件提醒......等等。 下面就來講講怎么用Python構建自動發送郵件的
    的頭像 發表于 10-21 14:47 ?769次閱讀
    怎么用Python構建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>自動</b>發送郵件的<b class='flag-5'>腳本</b>

    怎么用Python構建自動發送郵件的腳本

    呢? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送郵件提醒......等等。 下面就來講講怎么用Python構建自動發送郵件的
    的頭像 發表于 10-31 16:36 ?555次閱讀
    怎么用Python構建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>自動</b>發送郵件的<b class='flag-5'>腳本</b>

    編寫點名器腳本

    目的:編寫腳本,可以將準別好的名字合集的.txt傳入腳本,然后每次隨機顯示一個人的姓名
    的頭像 發表于 11-06 12:41 ?597次閱讀
    編寫<b class='flag-5'>一</b><b class='flag-5'>個</b>點名器<b class='flag-5'>腳本</b>

    簡單的Shiro RCE檢測和利用腳本

    簡單的Shiro RCE檢測和利用腳本
    的頭像 發表于 01-09 09:46 ?658次閱讀
    主站蜘蛛池模板: 亚洲风情无码免费视频| japanese色系free日本| 国产毛片女人高潮叫声| 亚洲AV怡红院AV男人的天堂| 京香在线播放| 99久久夜色精品国产亚洲AV卜| 日韩成人在线视频| 国产亚洲精品久久7777777| 在线播放免费人成视频| 欧洲-级毛片内射八十老太婆| 国产精品视频人人做人人爽| 亚洲色大成网站www久久九九| 欧美激情视频在线观看一区二区三区| 国产a级黄色毛片| 2022国产麻豆剧传媒剧情| 帅哥男男GV在线1080P| 恋夜影院支持安卓视频美女| 国产精品久久久久久精品...| 中文字幕在线播放视频| 偷窥美女3| 免费观看99热只有精品| 国产亚洲精品久久孕妇呦呦你懂| 51国产偷自视频在线视频播放 | 麻豆啊传媒app黄版破解免费| 粗好大用力好深快点漫画| 伊人久久大香线蕉综合影| 日韩视频中文在线一区| 老子午夜伦不卡电影院| 国产美女影院| xxxx免费观看| 在线日本高清日本免费| 午夜看片网| 欧美69xxx| 久久免费看少妇级毛片蜜臀 | 拔萝卜电视剧高清免费| 亚洲这里只有精品| 神马电影我不卡国语版| 女人高潮时一吸一夹| 九热这里只有精品| 国产极品美女视频福利| 99福利视频|