Shell腳本實現自動封禁惡意掃描IP

iptables 簡介

我們使用iptables工具實現功能

iptables 是 Linux 系統上最常用的防火墻工具,可以指定策略。

Shell文件創建

首先我們先創建文件scanners.sh

vim /usr/local/bin/auto_block_ip.sh

我的目標是每10分鐘自動掃描,再10分鐘內一個IP訪問50次以上就就封禁1天。時間到了后再自動放出來。

第一步 定義部分參數

BAN_IPSET="malicious_ips"  # ipset集合名稱
SCAN_THRESHOLD=50          # 10分鐘內訪問50次觸發封禁
BAN_DURATION=$((24*60*60)) # 封禁持續時間(秒),24小時
EXCLUDE_IPS="127.0.0.1 0.0.0.0 192.168.253.1" # 排除的IP列表

第二步 創建iptables規則

# 創建ipset集合(如果不存在)
if ! ipset list $BAN_IPSET >/dev/null 2>&1; thenipset create $BAN_IPSET hash:ip timeout $BAN_DURATION
fi# 添加iptables規則(如果不存在)
if ! iptables -C INPUT -m set --match-set $BAN_IPSET src -j DROP >/dev/null 2>&1; theniptables -I INPUT -m set --match-set $BAN_IPSET src -j DROP
fi

第三步 添加IP檢測和封禁機制

# 獲取所有非排除IP的連接計數
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | grep -vE "$(echo $EXCLUDE_IPS | sed 's/ /|/g')" | uniq -c | \
while read count ip; do# 檢查是否超過閾值且未被封禁if [ $count -gt $SCAN_THRESHOLD ] && ! ipset test $BAN_IPSET $ip >/dev/null 2>&1; then# 封禁IPipset add $BAN_IPSET $ip timeout $BAN_DURATIONecho "$(date '+%Y-%m-%d %H:%M:%S') - 封禁IP: $ip (訪問次數: $count)" >> /var/log/ip_block.logfi
done

第四步 設置自動執行時間

# 設置定時任務
(crontab -l 2>/dev/null; echo "*/10 * * * * /usr/local/bin/auto_block_ip.sh") | crontab -

第五步 測試腳本功能以及腳本使用命令

# 給腳本執行權限
chmod +x /usr/local/bin/auto_block_ip.sh# 手動測試腳本
/usr/local/bin/auto_block_ip.sh# 查看封禁日志
tail -f /var/log/ip_block.log# 查看當前封禁IP列表
ipset list $BAN_IPSET# 手動解封IP
ipset del $BAN_IPSET IP地址# 清空所有封禁
ipset flush $BAN_IPSET# 刪除整個ipset集合
ipset destroy $BAN_IPSE

附:

#!/bin/bash# 配置參數
BAN_IPSET="malicious_ips"
SCAN_THRESHOLD=50
BAN_DURATION=$((24*60*60))
EXCLUDE_IPS="127.0.0.1 0.0.0.0 192.168.253.1"# 創建ipset集合
if ! ipset list $BAN_IPSET >/dev/null 2>&1; thenipset create $BAN_IPSET hash:ip timeout $BAN_DURATION
fi# 添加iptables規則
if ! iptables -C INPUT -m set --match-set $BAN_IPSET src -j DROP >/dev/null 2>&1; theniptables -I INPUT -m set --match-set $BAN_IPSET src -j DROP
fi# 檢測并封禁IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | grep -vE "$(echo $EXCLUDE_IPS | sed 's/ /|/g')" | uniq -c | \
while read count ip; doif [ $count -gt $SCAN_THRESHOLD ] && ! ipset test $BAN_IPSET $ip >/dev/null 2>&1; thenipset add $BAN_IPSET $ip timeout $BAN_DURATIONecho "$(date '+%Y-%m-%d %H:%M:%S') - 封禁IP: $ip (訪問次數: $count)" >> /var/log/ip_block.logfi
done

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

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

相關文章

LeetCode_哈希表

哈希表(散列表)一、哈希表二、有效的字母異位詞1、有效的字母異位詞(力扣242)2、贖金信(力扣383)3、字母異位詞分組(力扣49)4、找到字符串中所有字母異位詞(力扣438)三、兩個數組的交集1、兩個數組的交集(力扣349)2、兩個數組的交集 II(力扣350)三、其他…

2.變量和常量

1.變量2.2 變量的基本使用2.3 變量的本質 2.4 變量命名規則與規范 2.5 變量拓展-數組 1.數組的基本使用 2.常量

Java并發核心基礎解析

目錄 一、背景 二、Java線程模型 三、Synchronized實現原理 3.1 鎖的使用 3.2 解釋執行 3.3 JIT執行 3.4 鎖的狀態 3.5 monitorenter 3.5.1 偏向鎖 3.5.2 輕量級鎖 3.5.3 重量級鎖 3.6 monitorexit 3.6.1 偏向鎖 3.6.2 輕量級鎖 3.6.3 重量級 四、可見性的真相…

線程池111

線程池框圖C語言線程池詳解:從基礎到實現通俗理解線程池想象你開了一家快遞站,每天要處理很多包裹派送:?沒有線程池?:每來一個包裹就雇一個新快遞員,送完就解雇問題:頻繁招聘解雇成本高(線程創…

Qt-Advanced-Docking-System

直譯一下 : 先進的停靠系統 github: mfreiholz/Qt-Advanced-Docking-System: Advanced Docking System for Qt 這是這個項目的起源 這個最后一次更新: githubuser0xFFFF/Qt-Advanced-Docking-System: Advanced Docking System for Qt 這是另一個人復刻…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 中篇

我們接著起頭篇來說邁克爾波特認為一個行業內存在著五種基本競爭力量,即潛在入侵者、替代產品、供方、需方以及行業內現有競爭者。如附圖:即:同行業內現有競爭者的競爭能力、潛在競爭者進入的能力、替代品的替代能力、供應商的討價還價能力、…

【無標題】消息隊列(Message Queue)是一種**進程間通信(IPC)機制

消息隊列(Message Queue)是一種進程間通信(IPC)機制,它允許進程通過在隊列中添加和讀取消息來交換數據。與管道(命名/匿名)相比,消息隊列具有結構化消息、異步通信和消息持久化等特點…

mac中多版本JDK配置和切換

下載 從jdk官網下載即可,找到自己要用的版本。 官網:https://www.oracle.com/java/technologies/downloads/#jdk21-mac 我這里下載的jdk1.8和21。 根據自己芯片下載,一般都是m芯片。下載好后,點擊,一直下一步就行&…

【JVM】流程匯總

【JVM】流程匯總【一】編譯過程和內存分布【1】案例程序:簡單的 Java 類【2】Java 編譯過程:從.java到.class(1)編譯命令(2)編譯結果(3)字節碼的作用【3】Java 運行過程:…

專業MP3瘦身工具WinMP3Shrink 1.1,綠色單文件,極速壓縮

[軟件名稱]: 專業MP3瘦身工具WinMP3Shrink 1.1 [軟件大小]: 1.1 MB [軟件大小]: 夸克網盤 | 百度網盤 軟件介紹 WinMP3Shrink 是一款免費的 MP3 壓縮軟件,能夠有效減少 MP3 文件的體積,同時還能增強音質。即使不重新編碼,通過移除保留空間…

LeetCode 每日一題 2025/8/4-2025/8/10

記錄了初步解題思路 以及本地實現代碼;并不一定為最優 也希望大家能一起探討 一起進步 目錄8/4 904. 水果成籃8/5 3477. 水果成籃 II8/6 3479. 水果成籃 III8/7 3363. 最多可收集的水果數目8/8 808. 分湯8/9 231. 2 的冪8/10 869. 重新排序得到 2 的冪8/4 904. 水果…

Python爬蟲實戰:研究Ruia框架,構建博客園文章采集系統

1. 引言 1.1 研究背景與意義 在數字化時代,數據已成為驅動科技創新與產業升級的核心生產要素。互聯網作為全球最大的信息載體,蘊含著億級結構化、半結構化與非結構化數據,這些數據在商業決策、學術研究、公共服務等領域具有不可替代的價值。網絡爬蟲技術作為自動獲取網絡公…

Office安裝使用?借助Ohook開源工具?【圖文詳解】微軟Office產品

一、問題背景 很多用戶在使用 Office 軟件一段時間后,會遇到以下問題。 二、解決方案 Ohook 是 Office 獨有的可用方式,源自 GitHub 上的開源項目,代碼開源(開源地址:https://github.com/asdcorp/ohook)。 …

LeetCode簡單題 - 學習

力扣題庫 - 簡單題 - 僅記錄學習 來源地址: 力扣 (LeetCode) 全球極客摯愛的技術成長平臺 1. 兩數之和 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 你…

Android Camera 打開和拍照APK源碼

完整下載路徑: 【免費】AndroidcameraAPK完整源碼(包括打開攝像頭和拍照保存功能)Android10驗證可完整運行資源-CSDN下載 效果: 源碼: package com.example.mycamera;import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appco…

【系統分析師】軟件需求工程——第11章學習筆記(上)

軟件需求工程是包括創建和維護軟件需求文檔所必需的一切活動的過程。可分為兩大工作:需求開發需求獲取需求分析需求定義(編寫需求規格說明書)需求驗證需求管理定義需求基線處理需求變更需求跟蹤在需求開發階段需要確定軟件所期望的用戶類型&a…

機器學習第七課之支持向量機SVM

目錄 簡介: 一、什么是支持向量機 二、如何選取最佳的超平面 1.超平面方程 (優化目標) 2.如何尋找最優的超平面 3.舉例分析 4.軟間隔?編輯 三、核函數 1舉例 2常用核函數 3.多項式核函數 4.高斯核函數: 四、svm的優缺點 五、支持向量機的API 六、案例…

P3232 [HNOI2013] 游走,solution

原題: link,點擊這里喵。 題意: 給定一個 nnn 個點 mmm 條邊的無向連通圖,圖無重邊和自環,頂點從 111 編號到 nnn,邊從 111 編號到 mmm。 小 Z 在該圖上進行隨機游走,初始時小 Z 在 111 號頂…

Docker容器部署discuz論壇與線上商城

準備 關閉防火墻,上下文[rootdocker ~]# systemctl disable --now firewalld[rootdocker ~]# setenforce 0下載應用yum remove runc -y ### rocky8才需要yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cento…

Linux入門指南:26個基礎命令全解析

目錄 一.基礎概念與入門 1.Linux操作系統簡介 2.終端與shell的基本概念 3.命令行界面的優勢 二.基礎指令 1.whoami ?2.useradd/userdel/passwd ?3.pwd ?4.ls ?5.cd 6.touch 7.mkdir 8.tree 9.rmdir/rm 10.man 11.cp 12.mv 13.cat 14.le…