前言
在日常作業中,我們在某一時間段或者某一天甚至某一周內,網站會有一個IP不斷的訪問公司的網站,這時候就需要考慮是不是有黑客在對公司的網站進行攻擊,我們就要通過各種手段來預防,這里我寫入了一個腳本來預防DOS攻擊,
一、腳本原始碼
#########################我這里一個ip并發100次自動屏蔽,你也可以設定1000
[root@hya shell]# vim nginxfailIP.sh #這里我分析的是nginx的日志版本是1.16的
#!/bin/bash
while true
do
awk '{print $1}' /var/log/nginx/access.log | grep -v "^$" | sort | uniq -c > tmp.log
exec < tmp.log #輸入重定向
while read line #讀取檔案
do
ip=`echo $line | awk '{print $2}'`
count=`echo $line | awk '{print $1}'`
if [ $count -gt 100 ] && [ `iptables -n -L | grep "$ip" | wc -l` -lt 1 ]
then
iptables -I INPUT -s $ip -j DROP
echo "$line is dropped" >> droplist.log
fi
done
sleep 3
done
二、腳本實操營
[root@hya shell]# chmod +x nginxfailIP.sh #給腳本執行的權限
[root@hya shell]# bash -x nginxfailIP.sh ##3秒檢測一次,可以設定成定時任務
+ true
+ awk '{print $1}' /var/log/nginx/access.log
+ sort
+ grep -v '^$'
+ uniq -c
+ exec
+ read line
++ echo 103 192.168.253.1
++ awk '{print $2}'
+ ip=192.168.253.1
++ echo 103 192.168.253.1
++ awk '{print $1}'
+ count=103
+ '[' 103 -gt 100 ']'
++ iptables -n -L
++ grep 192.168.253.1
++ wc -l
+ '[' 2 -lt 1 ']'
+ read line
+ sleep 3
##########################模擬當我訪問到100的時候
[root@hya shell]# cat droplist.log #發現我的ip已然被drop掉了
103 192.168.253.1 is dropped

總結:
此腳本在作業中還是會常用到的,有興趣的小伙伴可以收藏下,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/104527.html
標籤:其他
上一篇:【Ubuntu16.04 擴大記憶體空間 設定虛擬記憶體 史上最詳細 】
下一篇:搭建WEB網站服務(一)
