在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一個(gè)自動(dòng)封IP的腳本

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

最近幾天有一個(gè)問題一直困擾著我,就是我維護(hù)的一個(gè)網(wǎng)站最近幾天總是在整點(diǎn)附近出問題,那時(shí)候數(shù)據(jù)庫服務(wù)器CPU使用率超高,持續(xù)時(shí)間1-5分鐘。

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

然后,我就開始各種查、各種記,出問題的時(shí)間點(diǎn),數(shù)據(jù)庫查詢量很大,我把這些查詢記錄了下來,并做分析,然而并沒有什么特別有規(guī)律的現(xiàn)象,因?yàn)檫@些查詢非常分散,跟正常的查詢一般無二,唯一區(qū)別就是量大。

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

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

今天,我再次分析日志時(shí),發(fā)現(xiàn)了一些規(guī)律,那就是有三個(gè)ip訪問量非常大。

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

這是一分鐘內(nèi)的統(tǒng)計(jì)數(shù)據(jù),左邊為IP的請求次數(shù),一分鐘一個(gè)正常的IP的請求數(shù)怎么可能超過1000次呢?甚至連100次都不應(yīng)該超過才對。所以,直接把IP封掉。

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

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

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

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

#! /bin/bash
#定義1分鐘以前的時(shí)間,用于過濾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分鐘內(nèi)訪問量高于400的ip記錄到一個(gè)臨時(shí)文件中
#過濾掉白名單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


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


    #當(dāng)ip數(shù)大于0時(shí),才會(huì)用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()
{
    #首先將包個(gè)數(shù)小于5的ip記錄到一個(gè)臨時(shí)文件里,把它們標(biāo)記為白名單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
    #當(dāng)解封完白名單IP后,將計(jì)數(shù)器清零,進(jìn)入下一個(gè)計(jì)數(shù)周期
    /usr/sbin/iptables -Z
}


#取當(dāng)前時(shí)間的分鐘數(shù)
t=`date +%M`


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

然后寫一個(gè)每分鐘都執(zhí)行的任務(wù)計(jì)劃就可以啦。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Web服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    24756

原文標(biāo)題:分享一個(gè)自動(dòng)封IP的腳本

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    介紹10個(gè)Python自動(dòng)腳本

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

    10個(gè)殺手級(jí)的Python自動(dòng)腳本

    今天浩道跟大家分享10個(gè)日常工作中用到的python自動(dòng)腳本。讓你感受番python簡單強(qiáng)大之處!
    發(fā)表于 11-28 11:07 ?804次閱讀

    python腳本如何根據(jù)公網(wǎng)IP自動(dòng)獲取地址和天氣信息?

    python腳本如何根據(jù)公網(wǎng)IP自動(dòng)獲取地址和天氣信息?
    發(fā)表于 12-28 07:14

    個(gè)自動(dòng)化重啟服務(wù)腳本

    腳本可以每分鐘執(zhí)行次,腳本執(zhí)行時(shí)截取上分鐘的日志,可以計(jì)算總?cè)罩拘袛?shù),和出現(xiàn)502的行數(shù),計(jì)算比例,這里我給大家定
    的頭像 發(fā)表于 11-22 10:12 ?1445次閱讀

    10個(gè)殺手級(jí)的Python自動(dòng)腳本分享

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

    分享10個(gè)實(shí)用的Python自動(dòng)腳本

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

    網(wǎng)站總被攻擊?寫個(gè)自動(dòng)封禁IP腳本給你

    個(gè)人網(wǎng)站總被攻擊?寫個(gè)自動(dòng)封禁IP腳本給你!
    的頭像 發(fā)表于 01-29 11:44 ?1276次閱讀

    通過個(gè)腳本搞懂fork、source和exec

    Source模式下,子shell執(zhí)行時(shí)獲取的環(huán)境變量會(huì)會(huì)影響到父shell。與fork的區(qū)別在于,不會(huì)額外打開個(gè)sub-shell來執(zhí)行被調(diào)用的腳本,而是在同一個(gè)shell中執(zhí)行。所
    的頭像 發(fā)表于 02-03 16:05 ?2150次閱讀

    ip腳本進(jìn)化的解決辦法

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

    keil自動(dòng)化編譯腳本

    這是個(gè) keil 的自動(dòng)化編譯腳本,可被其他腳本或程序調(diào)用,接收參數(shù)并按參數(shù)編譯 keil 工程,而不必打開 keil 軟件,實(shí)現(xiàn)程序上的
    的頭像 發(fā)表于 10-16 17:04 ?2685次閱讀
    keil<b class='flag-5'>自動(dòng)</b>化編譯<b class='flag-5'>腳本</b>

    如何使用腳本完成CRC和填充值的自動(dòng)完成

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

    怎么用Python構(gòu)建個(gè)自動(dòng)發(fā)送郵件的腳本

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

    怎么用Python構(gòu)建個(gè)自動(dòng)發(fā)送郵件的腳本

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

    編寫個(gè)點(diǎn)名器腳本

    目的:編寫個(gè)腳本,可以將準(zhǔn)別好的名字合集的.txt傳入腳本,然后每次隨機(jī)顯示一個(gè)人的姓名
    的頭像 發(fā)表于 11-06 12:41 ?753次閱讀
    編寫<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>點(diǎn)名器<b class='flag-5'>腳本</b>

    個(gè)簡單的Shiro RCE檢測和利用腳本

    個(gè)簡單的Shiro RCE檢測和利用腳本
    的頭像 發(fā)表于 01-09 09:46 ?943次閱讀
    主站蜘蛛池模板: 中文一区在线 | 澳门久久 | 在线资源站 | 精品黄色录像 | 国产农村妇女毛片精品久久 | 美女写真mm爽爽爽 | 202z国产高清日本在线播放 | 最新色网站 | 亚洲精品在线视频 | 手机在线播放视频 | 欧美日韩性高爱潮视频 | 亚洲人的天堂男人爽爽爽 | 伊人久久大香线蕉综合7 | 天天操天天插 | 亚洲免费在线观看 | 国产精品第一页在线观看 | 午夜视频www | 免免费看片 | 么公的好大好硬好深好爽在线视频 | 男男生子大肚play做到生 | 欧美日韩色图 | 免费国内精品久久久久影院 | 午夜三级理论在线观看视频 | 三级三级三级网站网址 | 天天爽天天狼久久久综合 | 三级成人影院 | 国产亚洲新品一区二区 | 51国产午夜精品免费视频 | 不卡一区 | 色婷婷一区二区三区四区成人网 | 日韩三级中文字幕 | 夜夜爽天天狠狠九月婷婷 | 国产三级日产三级韩国三级 | 亚洲一区二区三区免费视频 | 日日摸夜夜爽夜夜爽出水 | 香港午夜理理伦_级毛片 | 五月婷婷激情网 | 四虎网站在线播放 | 免费国产网站 | 尻美女视频 | 久久福利青草精品资源 |