那曲檬骨新材料有限公司

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

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

3天內不再提示

封ip腳本進化的解決辦法

阿銘linux ? 來源:阿銘linux ? 2023-06-11 17:03 ? 次閱讀

上次給大家分享過一個封IP腳本,點這里看。我搞那個腳本的目的是為了把訪問量太大的IP地址給封掉,然后每隔半小時解封。其實,它并沒有解決問題。服務器CPU使用率還是跟之前一樣,非常有規(guī)律。

經過幾天的觀察和日志分析,得出一個結論,大概率是最近服務器上來采集數據的量比之前大了,畢竟近期AI很熱,好多組織在搞大模型,采集數據是根本。

這些人就有點不道德了,又不是不讓你采集,你再把頻率降低一些,分散一些,只要不影響到我們的業(yè)務,就沒人管你,但你現在把我們的服務器給拖垮了,影響到客戶訪問和使用,這樣誰都不好不是。

分析過程中,也找到了一些規(guī)律,有一些IP是一個IP段,很分散,所以單個IP訪問量并不大,但是整個IP段就非常明顯了。

6d314764-05d9-11ee-962d-dac502259ad0.png

所以,我想了想,決定把腳本改造一下,針對IP段來進行分析并封IP。思路是:分析過去1小時的訪問日志,然后把訪問日志中的IP截取出來,取IP的前三個數字,只要這三個數字一樣的IP都算一個,這樣再計算總次數。把總次數超過1600次的IP段給找出來。此時可不能直接封IP段,因為會誤傷,所以還需要根據IP段,再去過濾出中招的IP地址,針對這些IP地址再去封掉。而解封則每隔2小時來一次。

腳本如下,關鍵步驟是有注釋的。

#! /bin/bash
## 把訪問量比較大的IP段封掉,如果2小時內被封的IP沒有請求或者請求很少,需要解封
## 作者:阿銘
## 日期:2023-05-27
## 版本:v1.1


#定義1小時以前的時間,用于過濾1小時以前的日志
t1=`date -d "-1 hour" +%Y:%H:`
log=/data/logs/nginx/access.log


block_ip()
{
##白名單ip/ip段,自己的IP,正經蜘蛛的IP
w_ip="^66.249.|^220.181.|^116.179."


    ##截取一小時以前的日志
egrep"$t1[0-5][0-9]:"$log>/tmp/tmp_last_hour.log
    ##將所有ip都過濾出來,存到臨時文件
    awk '{print $1}' /tmp/tmp_last_hour.log > /tmp/tmp_last_hour_ip.log


    ##處理IP,只留前面三位,排序、去重,獲取多于1600次請求的ip段,這個數字可以根據實際情況來調整
    awk -F '.' '{print $1"."$2"."$3"."}' /tmp/tmp_last_hour_ip.log|sort |uniq -c |sort -n |awk '$1 > 1600 {print $2}' > /tmp/bad_ip_hour.list


    #當ip數大于0時,才會用iptables封掉它
    ip_n=`wc -l /tmp/bad_ip_hour.list|awk '{print $1}'`
    if [ ${ip_n} -ne 0 ]
    then
        for ip in `cat /tmp/bad_ip_hour.list`
        do
            #封ip,不能直接封ip段
            for ip2 in `grep "^$ip" /tmp/tmp_last_hour_ip.log|sort -n|uniq`
            do
                /usr/sbin/iptables -I INPUT -s $ip2 -j REJECT
            done
        done
        #將這些被封的IP記錄到日志里
        echo "`date` 封掉的IP段有:" >> /tmp/block_ip2.log
        cat /tmp/bad_ip_hour.list >> /tmp/block_ip2.log
    fi
}


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


#取當前時間的小時
t=`date +%H`
t2=$[$t%2]


#每2小時執(zhí)行解封IP的函數,其他時間只執(zhí)行封IP的函數
if [ $t2 -eq 0 ]
then
   unblock_ip
   block_ip
else
   block_ip
fi

上完腳本后,觀察了一天,CPU使用率終于降低到可接受范圍了。





審核編輯:劉清

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

    關注

    68

    文章

    10905

    瀏覽量

    213033
  • 服務器
    +關注

    關注

    12

    文章

    9308

    瀏覽量

    86072

原文標題:問題終于解決了--封ip腳本的進化

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

收藏 人收藏

    評論

    相關推薦

    關于TCP/IP門禁系統有哪些安全問題?有什么解決辦法

    關于TCP/IP門禁系統有哪些安全問題?有什么解決辦法
    發(fā)表于 05-31 06:04

    經典網絡故障及解決辦法

    經典網絡故障及解決辦法 IP與MAC綁定的難題問:我的計算機原來采用公網固定IP地址。為了避免被他人盜用,使用“arp -s ip mac”命令對MAC地址和
    發(fā)表于 08-06 14:09 ?1415次閱讀

    華碩筆記本聲卡驅動無法安裝的解決辦法

    華碩筆記本聲卡驅動無法安裝的解決辦法
    發(fā)表于 01-18 10:10 ?3573次閱讀

    聲卡硬件維修的常見問題及解決辦法

    聲卡硬件維修的常見問題及解決辦法 常見故障一:聲卡無聲   出現這種故障常見的原因有:
    發(fā)表于 02-23 14:25 ?2587次閱讀

    誤碼特性,誤碼產生的機理及解決辦法

    誤碼特性,誤碼產生的機理及解決辦法
    發(fā)表于 03-19 17:10 ?2292次閱讀

    UPS電源輸入跳閘淺析及解決辦法

    UPS電源輸入跳閘淺析及解決辦法解析
    發(fā)表于 11-10 16:42 ?89次下載
    UPS電源輸入跳閘淺析及<b class='flag-5'>解決辦法</b>

    Matlab編程常見錯誤與解決辦法

    Matlab編程常見錯誤與解決辦法求人不如求己
    發(fā)表于 03-16 15:58 ?0次下載

    電梯IP五方對講的問題和解決辦法的介紹

    梯云物聯:深圳電梯IP五方對講有什么問題和解決辦法
    發(fā)表于 04-11 18:16 ?5829次閱讀

    ESP32勘誤表及解決辦法

    電子發(fā)燒友網站提供《ESP32勘誤表及解決辦法.pdf》資料免費下載
    發(fā)表于 09-23 11:51 ?0次下載
    ESP32勘誤表及<b class='flag-5'>解決辦法</b>

    電腦右鍵管理打開失敗的解決辦法

    此電腦右鍵管理打不開怎么辦 電腦右鍵管理打開失敗的解決辦法
    發(fā)表于 09-28 09:56 ?0次下載

    硬盤故障的3個終極解決辦法

    電子發(fā)燒友網站提供《硬盤故障的3個終極解決辦法.pdf》資料免費下載
    發(fā)表于 10-20 10:46 ?0次下載
    硬盤故障的3個終極<b class='flag-5'>解決辦法</b>

    細碎機軸承位磨損問題的解決辦法

    【設備故障】細碎機軸承位磨損問題的解決辦法
    發(fā)表于 10-27 16:36 ?0次下載

    Protel99 與WIN10系統沖突解決辦法

    PROTEL99 與WIN10系統沖突解決辦法
    的頭像 發(fā)表于 11-20 09:30 ?4282次閱讀
    Protel99 與WIN10系統沖突<b class='flag-5'>解決辦法</b>

    常見MCU故障及解決辦法

    微控制器單元(MCU)是現代電子設備中的核心組件,負責處理和控制各種功能。然而,由于各種原因,MCU可能會出現故障。以下是一些常見的MCU故障及其解決辦法: 1. 電源問題 故障現象: MCU無法
    的頭像 發(fā)表于 11-01 13:41 ?2761次閱讀

    常見墊圈故障及解決辦法 防漏墊圈的設計與應用

    常見墊圈故障及解決辦法 1. 墊圈老化 故障現象: 墊圈因長時間使用而老化,失去彈性,導致密封性能下降。 解決辦法: 定期檢查墊圈的老化情況,及時更換新的墊圈。 2. 墊圈變形 故障現象: 由于安裝
    的頭像 發(fā)表于 12-12 15:31 ?468次閱讀
    现金百家乐赌法| 百家乐官网海滨网现场| 百家乐官网桌子定制| 世界德州扑克大赛| 百家乐官网技巧心| 大发888官方备用网址| 星期8百家乐官网的玩法技巧和规则 | E世博百家乐官网娱乐城| 大发888娱乐场下载com| 赌百家乐官网的玩法技巧和规则| 现场百家乐机| 下载百家乐官网的玩法技巧和规则| 金冠娱乐城开户| 百家乐去哪里玩最好| 川宜百家乐官网软件| 网上百家乐官网真坑人| 德州扑克几副牌| 新百家乐的玩法技巧和规则| 百家乐官网透明发牌靴| 青河县| 威尼斯人娱乐网假吗| 百家乐官网视频游戏大厅| 大发888开户注册平台| 娱乐城百家乐怎么样| 互博百家乐官网的玩法技巧和规则| 百家乐官网珠盘路| 蒙特卡罗国际| 威尼斯人娱乐城 老品牌值得信赖| 百家乐高人玩法| 北京百家乐官网网上投注| 威尼斯人娱乐城投注| 百家乐真人博彩的玩法技巧和规则 | 万博国际| 大发888娱乐城网站| 波浪百家乐游戏中| 百家乐庄不连的概率| 百家乐官网免费注册| 百家乐官网桌折叠| 百家乐官网庄9点| 百家乐官网斗地主下载| 百家乐官网怎么发牌|