個人網(wǎng)站總被攻擊?寫個自動封禁IP的腳本給你!具體如下:
1.在ngnix的conf目錄下創(chuàng)建一個blockip.conf文件
2.里面放需要封禁的IP,格式如下
deny1.2.3.4;
3.在ngnix的HTTP的配置中添加如下內(nèi)容
includeblockips.conf;
4.重啟 ngnix
/usr/local/nginx/sbin/nginx-sreload
然后你就會看到IP被封禁了,你會喜提403;
小思考:如何實現(xiàn)使用ngnix自動封禁ip的功能
1.AWK統(tǒng)計access.log,記錄每分鐘訪問超過60次的ip,然后配合nginx進行封禁
2.編寫shell腳本
3.crontab定時跑腳本
好了上面操作步驟列出來了,那我們先來實現(xiàn)第一個吧
操作一:AWK統(tǒng)計access.log,記錄每分鐘訪問超過60次的ip
awk'{print$1}'access.log|sort|uniq-cd|awk'{if($1>60)print$0}' 1.awk'{print$1}'access.log 取出access.log的第一列即為ip。 2.sort|uniq-cd去重和排序 3.awk'{if($1>60)print$0}'判斷重復的數(shù)量是否超過60個,超過60個就展示出來
操作二:編寫shell腳本,實現(xiàn)整體功能(寫了注釋代碼)
#不能把別人IP一直封著吧,這里就清除掉了 echo"">/usr/local/nginx/conf/blockip.conf #前面最開始編寫的統(tǒng)計數(shù)據(jù)功能 ip_list=$(awk'{print$1}'access.log|sort|uniq-cd|awk'{if($1>60)print$0}') #判斷這個變量是否為空 iftest-z"$ip_list" then #為空寫入11.log中,并重新啟動ngnix echo"為空">>/usr/local/nginx/logs/11.log /usr/local/nginx/sbin/nginx-sreload else #如果不為空前面加上deny格式和ip寫入blockip.conf中 echo"deny"$ip_list>/usr/local/nginx/conf/blockip.conf #因為前面攜帶了行數(shù),所有我們需要去除掉前面的行數(shù),寫入后在讀取一次 ip_list2=$(awk'{print$3}'/usr/local/nginx/conf/blockip.conf) #最后再把讀取出來的值,在次寫入到blockip.conf中 echo"deny"$ip_list2";">/usr/local/nginx/conf/blockip.conf #重啟ngnix /usr/local/nginx/sbin/nginx-sreload #清空之前的日志,從最新的開始截取 echo"">/usr/local/nginx/logs/access.log fi
操作三:使用crontab定時,來實現(xiàn)訪問每分鐘超過60的
直接實操吧:
crontab-e *****cd/usr/local/nginx/logs/&&ship_test.sh每一分鐘運行一次 systemctlrestartcrond.service重啟一下配置既可
-
IP
+關注
關注
5文章
1712瀏覽量
149657 -
HTTP
+關注
關注
0文章
510瀏覽量
31314 -
代碼
+關注
關注
30文章
4802瀏覽量
68738 -
Shell
+關注
關注
1文章
366瀏覽量
23412 -
腳本
+關注
關注
1文章
391瀏覽量
14891
原文標題:網(wǎng)站總被攻擊?寫個自動封禁 IP 的腳本給你
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論