根據web訪問日志,封禁請求量異常的IP,如IP在半小 時后恢復正常則解除封禁

在網絡安全日益受到重視的今天,如何有效防范惡意流量和攻擊成為了每個網站管理員必須面對的問題。惡意流量不僅會影響網站的正常運行,還可能導致服務器崩潰,給網站帶來不可估量的損失。為了應對這一問題,我們特別推出了一款實用的Bash腳本,能夠自動封禁請求量異常的IP,并在半小時后恢復正常時解除封禁。下面,讓我們一起來詳細了解一下這個腳本的工作原理和使用方法吧!

腳本概述

這款腳本通過分析Web訪問日志,自動找出請求量異常的IP地址,并利用iptables進行封禁。當IP在半小時后恢復正常時,腳本會自動解除封禁。這樣,既能有效防范惡意流量,又能避免誤封正常用戶的IP。

完整腳本:

#!/bin/bash ################################################################################ #####根據web訪問日志,封禁請求量異常的IP,如IP在半小時后恢復正常,則解除封禁 ################################################################################ ####logfile=/data/log/access.log#顯示一分鐘前的小時和分鐘d1=`date -d "-1 minute" +%H%M`d2=`date +%M`ipt=/sbin/iptablesips=/tmp/ips.txtblock(){#將一分鐘前的日志全部過濾出來并提取IP以及統計訪問次數grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips #利用for循環將次數超過100的IP依次遍歷出來并予以封禁for i in `awk '$1>100 {print $2}' $ips`do $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT echo "`date +%F-%T` $i" >> /tmp/badip.log done}unblock(){ #將封禁后所產生的pkts數量小于10的IP依次遍歷予以解封 for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print$1}'|sort -nr` do $ipt -D INPUT $a done $ipt -Z}#當時間在00分以及30分時執行解封函數if [ $d2 -eq "00" ] || [ $d2 -eq "30" ]then #要先解再封,因為剛剛封禁時產生的pkts數量很少 unblockblockelseblockfi

腳本詳解

  1. 設置日志文件路徑和工具路

logfile=/data/log/access.log  ipt=/sbin/iptables  ips=/tmp/ips.txt

這里我們設置了Web訪問日志文件的路徑、iptables工具的路徑以及一個臨時文件用于存儲提取出的IP地址和訪問次數。

  1. 提取并封禁異常IP

block函數中,腳本首先通過grepawk命令提取出一分鐘前的日志中的IP地址,并統計每個IP的訪問次數。然后,利用awk命令篩選出訪問次數超過100的IP地址,并通過iptables進行封禁。???????

block()  {      grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips      for i in `awk '$1>100 {print $2}' $ips`      do          $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT          echo "`date +%F-%T` $i" >> /tmp/badip.log      done  }

這段代碼的工作原理如下:

  • 使用grep命令從日志文件中提取出包含特定時間戳的行。

  • 通過awk命令提取IP地址,并使用sortuniq命令進行排序和去重。

  • 再次使用awk命令篩選出訪問次數超過100的IP地址。

  • 利用iptables的-I INPUT命令將這些IP地址添加到INPUT鏈的開頭,并設置REJECT策略,阻止這些IP地址的訪問請求。

  • 將被封禁的IP地址和時間戳記錄到/tmp/badip.log文件中,以便后續跟蹤和審查。

  1. 解封恢復正常的IP

unblock函數中,腳本通過iptables查看當前INPUT鏈的規則,找出那些被封禁后產生的數據包數量小于10的IP地址,并予以解封。???????

unblock()  {      for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print $1}'|sort -nr`      do          $ipt -D INPUT $a      done      $ipt -Z  }

這段代碼的工作原理如下:

  • 使用iptables -nvL INPUT --line-numbers命令查看INPUT鏈的詳細規則和行號。

  • 通過grep命令篩選出目標地址為0.0.0.0/0的規則,即那些被封禁的IP地址。

  • 使用awk命令提取出數據包數量小于10的規則的行號。

  • 利用iptables的-D INPUT命令將這些規則從INPUT鏈中刪除,從而解封對應的IP地址。

  • 最后,使用iptables -Z命令將iptables的計數器清零。

  1. 定時執行解封和封禁操作

腳本的最后部分是一個條件判斷語句,用于在特定的時間(每小時的00分和30分)執行解封操作,并在其他時間執行封禁操作。這樣可以確保被封禁的IP地址在半小時后恢復正常訪問。

使用方法

  1. 將以上腳本保存為一個文件(例如:block_unblock_ips.sh)。

  2. 為腳本添加執行權限:chmod +x block_unblock_ips.sh

  3. 將腳本添加到cron定時任務中,以便每小時自動執行。例如,在crontab文件中添加以下行:0,30 * * * * /path/to/block_unblock_ips.sh。這將確保腳本在每小時的00分和30分執行一次。

  4. 根據需要調整腳本中的日志文件路徑、iptables路徑以及其他相關配置。

  5. 運行腳本并觀察其效果。如果發現誤封或漏封的情況,可以適當調整訪問次數的閾值或其他相關參數。

結語

這款自動封禁和解封異常IP的腳本為網站管理員提供了一個有效的工具來應對惡意流量和攻擊。通過合理的配置和使用,可以大大降低惡意流量對網站的影響,提高網站的安全性和穩定性。希望這款腳本能成為您網站安全防護的有力武器!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13152.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13152.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13152.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

u3d的ab文件注意事項

//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //讀取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…

SQL注入之數據庫基礎

數據庫基礎 創建數據庫 create 數據庫名稱;創建表 create table if not exists mobile(ID int(10) primary key auto_increment comment 手機編號 主鍵自增,Brand varchar(50) not null comment 手機品牌 非空約束,Model varchar(50) not null comment 手機型號 非空約束,Pr…

Keil手動安裝編譯器V5版本

V5編譯器下載&#xff1a;免積分下載 新版的keil不會自動幫你安裝V5版本的編譯器&#xff0c;但是很多教程很多比賽所用單片機都是V5的編譯器&#xff0c;所以用來開以前的或者開源的很多東西編譯直接一大堆報錯。 吐槽說完了接下來教你怎么解決 打開installer&#xff08;在…

vue使用postcss-pxtorem實現自適應

安裝&#xff1a; npm install postcss-pxtorem -Dvue.config.js文件設置&#xff1a; css: {loaderOptions: {scss: {additionalData: import "~element-ui/packages/theme-chalk/src/common/var.scss";import"/styles/variables.scss";},postcss: {po…

OpenGL ES 面試高頻知識點(二)

說說紋理常用的采樣方式? 最鄰近點采樣(GL_NEAREST)和雙線性采樣(GL_LINEAR)。 GL_NEAREST 采樣是 OpenGL 默認的紋理采樣方式,OpenGL 會選擇中心點最接近紋理坐標的那個像素,紋理放大的時候會有鋸齒感或者顆粒感。 **GL_LINEAR 采樣會基于紋理坐標附近的紋理像素,計…

搞大事!法國邀請芬蘭公司建量子工廠

法國當地時間5月13日&#xff0c;法國總統馬克龍宣布啟動2024年度“選擇法國”&#xff08;Choose France&#xff09;商業峰會。今年峰會召開前&#xff0c;法國贏得了創紀錄的150億歐元外國投資承諾&#xff0c;覆蓋從人工智能到制藥和能源等領域。 而涉及到量子領域最重磅的…

python數據處理與分析入門-pandas使用(4)

往期文章&#xff1a; pandas使用1pandas使用2pandas使用3 pandas使用技巧 創建一個DF對象 # 首先創建一個時間序列 dates pd.date_range(20180101, periods6) print(dates)# 創建DataFrame對象&#xff0c;指定index和columns標簽 df pd.DataFrame(np.random.randn(6,4), …

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選

el-select下拉框 添加 el-checkbox 多選框&#xff0c;支持全選、取消全選 前言一、實現思路二、實現代碼1.模板代碼2. css 樣式3.js 代碼 DEMO 演示總結 前言 實現效果預覽 提示&#xff1a;本內容基于element-ui 組件實現&#xff0c;如果使用其他組件庫、可參考下面實現方…

「AIGC算法」線性回歸模型

線性回歸是統計學和機器學習中一種常用的監督學習算法&#xff0c;用于預測連續數值型的輸出。線性回歸模型試圖找到特征變量&#xff08;或稱自變量&#xff09;與目標變量&#xff08;因變量&#xff09;之間的線性關系。 線性回歸的兩種主要類型&#xff1a; 簡單線性回歸&a…

學習Nginx(三):命令與信號

命令及選項 1. 顯示幫助信息&#xff1a; [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]選項:-?,-h : 顯示幫助信息-v : 顯示版本信息-V …

Error in debuggerConnector: connect ECONNREFUSED問題解決

最近重新開始electron開發&#xff0c;兩三年前寫的代碼幾乎看不懂了。。然后debug一下&#xff0c;直接報錯了&#xff1a; Debugger listening on ws://127.0.0.1:20793/d146ffdb-c3b8-4480-a8d8-d04bb643c7c1 For help, see: https://nodejs.org/en/docs/inspector Error i…

關于GitHub倉庫建立及提交問題

文章目錄 前言GitHub倉庫創建token令牌的獲取GitHub克隆到本地GitHub上傳文件 前言 為了整一個GitHub倉庫然后上傳文件&#xff0c;筆者看了不下100篇博客&#xff0c;20段教程&#xff0c;最后在兩位大佬的幫助下&#xff0c;才整明白了&#x1f62d; 先提前說一嘴從 2021年8月…

網絡爬蟲安全:90后小伙,用軟件非法搬運他人原創視頻被判刑

目錄 違法視頻搬運軟件是網絡爬蟲 如何發現偷盜視頻的爬蟲&#xff1f; 攔截違法網絡爬蟲 央視《今日說法》欄目近日報道了一名程序員開發非法視頻搬運軟件獲利超700多萬&#xff0c;最終獲刑的案例。 國內某知名短視頻平臺報警稱&#xff0c;有人在網絡上售賣一款視頻搬運…

劉邦的創業團隊是沛縣人,朱元璋的則是鳳陽;要創業,一個縣人才就夠了

當人們回顧劉邦和朱元璋的創業經歷時&#xff0c;總是會感慨他們起于微末&#xff0c;都創下了偌大王朝&#xff0c;成就無上榮譽。 尤其是我們查閱史書時&#xff0c;發現這二人的崛起班底都是各自的家鄉人&#xff0c;例如劉邦的班底就是沛縣人&#xff0c;朱元璋的班底是鳳…

大模型技術介紹和實現流程以及向量庫的介紹

多模態大模型&#xff1a;&#xff08;Multimodal Models&#xff09;指能夠處理和生成多種類型數據&#xff08;如文本、圖像、音頻等&#xff09;的機器學習模型。該模型整合了來自不同模態的數據&#xff0c;從而提高了任務執行的準確性和廣度。 一、多模態大模型 任務步驟…

分布式搜索-elaticsearch基礎 概念

什么是elaticsearch: 倒排索引&#xff1a;就是將要查詢的內容分成一個個詞條&#xff0c;在將詞條文檔id存入&#xff0c;詞條是唯一的。 文檔詞條總結: mysql和Elasticsearch概念對比: 架構: 基本概念總結:

Linux上執行內存中的腳本和程序

在Linux中可以不需要有腳本或者二進制程序的文件在文件系統上實際存在&#xff0c;只需要有對應的數據在內存中&#xff0c;就有辦法執行這些腳本和程序。 原理其實很簡單&#xff0c;Linux里有辦法把某塊內存映射成文件描述符&#xff0c;對于每一個文件描述符&#xff0c;Lin…

一線互聯網大數據面試題核心知識庫(100萬字)

本面試寶典涵蓋大數據面試高頻的所有技術棧&#xff0c;包括Liunx&Shell基礎&#xff0c;Hadoop&#xff0c;Zookpeer&#xff0c;Flume&#xff0c;Kafka&#xff0c;Hive&#xff0c;Datax&#xff0c;Maxwell&#xff0c;DolphinScheduler&#xff0c;Spark Core&SQ…

光伏行業該如何起步?

隨著全球對可再生能源的需求日益增長&#xff0c;光伏行業作為其中的佼佼者&#xff0c;正迎來前所未有的發展機遇。然而&#xff0c;對于新進入者或希望在這一領域有所建樹的企業來說&#xff0c;如何起步并穩健發展是一個值得深思的問題。以下是一些關于光伏行業起步的建議。…

MySQL-事務篇

文章目錄 何為事務&#xff1f;什么是事務的ACID特性&#xff1f;并發事務帶來了哪些問題&#xff1f;不可重復讀和幻讀有什么區別&#xff1f;并發事務的控制方式有哪些&#xff1f;SQL標準定義了哪些事務隔離級別&#xff1f;MYSQL的隔離級別是基于鎖實現的嗎&#xff1f; 何…