IP位址自動封與解封的shell指令碼

2021-09-20 02:02:33 字數 1477 閱讀 9431

本指令碼學習與阿銘的指令碼課程。

用於防止公司**被ddos攻擊時,封禁「」肉機「」 的ip位址。

共分為以下步驟:

1、每分鐘分析一次訪問日誌/data/logs/access_log。

2、把訪問量超過100的ip給封掉。

3、將封過的ip位址全部記錄到乙個日誌log中。

4、每隔一段時間檢查一次被封的ip,將不在超過100的訪問的ip解封。

5、解封的ip記錄到另外的日誌中。

#!/bin/bash

#日期:2023年10月17日

#版本:v0.1

t1='date -d "-1 min " +%y:%h:%m'

log=/data/logs/access_log

block_ip()

' /tmp/_last_min.log | sore -n | uniq -c | awk '$1>100 ' > /tmp/bad_ip.list

#計算ip的數量

n=`wc -l /tmp/bad_ip.list | awk ''`

#當ip數大於0時,才會用iptables封掉。

if [ $n -ne 0 ]

then

for ip in `cat /tmp/bad_ip.list`

do iptables -i input -s $ip -j rejct

done

#將這些被封的ip記錄到日誌裡

echo "`date` 封掉的ip有: " >> /tmp/black_ip.log

echo /tmp/bad_ip.list >> /tmp/black_ip.log

fi}unblock_ip ()

' > /tmp/good_ip.list

n=`wc -l /tmp/good_ip.list | awk ''`

if [ $n -ne 0 ]

then

for ip in `cat /tmp/good_ip.list`

doiptables -d input -s $ip -j reject

done

echo "`date` 解封的ip有:" >> /tmp/unblock_ip.log

cat /tmp/good_ip.list >> /tmp/unblock_ip.log

fi#當解封完白名單ip後,將計數清零,進入下乙個計數週期

iptables -z

}#取當前時間的分鐘數

t=`date +%m`

#當分鐘數內為00或者30時(即每隔30分鐘),執行解封ip的函式,其他時間執行解封ip的函式。

if [ $t == "00" ] || [ $t == "30" ]

then

unblock_ip

block_ip

else

block_ip

fi

使用iptables自動封IP的Shell指令碼

此指令碼用於分析統計secure日記檔案,對ssh登入錯誤次數較多的ip用iptables封掉,可以防止ssh被暴力破解。bin bash created by tenji in 2014 10 22 num 10 上限 for i in awk failed var log secure sort...

Shel 檢測合法的IP位址

0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 1.利用電腦ip測試下 ifconfig grep color o 0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 0 9 1 9 0 9...

MAC位址與IP位址的區別

介紹一下mac位址的知識,mac位址和ip位址的區別以及mac位址在實際應用中所涉及到的安全問題。一 基礎知識 如今的網路是分層來實現的,就像是搭積木一樣,先設計某個特定功能的模組,然後把模組拼起來組成整個網路。區域網也不例外,一般來說,在組網上我們使用的是ieee802參考模型,從下至上分為 物理...