個(gè)人網(wǎng)站總被攻擊?寫個(gè)自動封禁IP的腳本給你!
程序員的成長之路互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
關(guān)注
閱讀本文大概需要 2 分鐘。
來自:blog.csdn.net/qq_38925100/article/details/123742463
1.在ngnix的conf目錄下創(chuàng)建一個(gè)blockip.conf文件2.里面放需要封禁的IP,格式如下
deny?1.2.3.4;
include?blockips.conf;
圖片4.重啟 ngnix
/usr/local/nginx/sbin/nginx?-s?reload
圖片小思考:如何實(shí)現(xiàn)使用ngnix自動封禁ip的功能
-
AWK統(tǒng)計(jì)
access.log,記錄每分鐘訪問超過60次的ip,然后配合nginx進(jìn)行封禁 - 編寫shell腳本
- crontab定時(shí)跑腳本
圖片操作一:?AWK統(tǒng)計(jì)access.log,記錄每分鐘訪問超過60次的ip
awk?'{print?$1}'?access.log?|?sort?|?uniq?-cd?|?awk?'{if($1>60)print?$0}'
-
awk '{print $1}' access.log??取出access.log的第一列即為ip。 -
sort | uniq -cd?去重和排序 -
awk '{if($1>60)print $0}'?判斷重復(fù)的數(shù)量是否超過60個(gè),超過60個(gè)就展示出來
#不能把別人IP一直封著吧,這里就清除掉了
echo?""?>?/usr/local/nginx/conf/blockip.conf
#前面最開始編寫的統(tǒng)計(jì)數(shù)據(jù)功能
ip_list=$(awk?'{print?$1}'?access.log?|?sort?|?uniq?-cd?|?awk?'{if($1>60)print?$0}')
#判斷這個(gè)變量是否為空
if?test?-z?"$ip_list"
then
????????#為空寫入?11.log中,并重新啟動ngnix
????????echo?"為空"??>>?/usr/local/nginx/logs/11.log
????????/usr/local/nginx/sbin/nginx?-s?reload
else
????????#如果不為空?前面加上?deny格式和ip寫入blockip.conf中
????????echo?"deny"?$ip_list?>?/usr/local/nginx/conf/blockip.conf
????
????????#因?yàn)榍懊鏀y帶了行數(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?-s?reload
????????#清空之前的日志,從最新的開始截取
????????echo?""?>?/usr/local/nginx/logs/access.log
fi
- https://blog.csdn.net/qq_38925100/article/details/123043112
直接實(shí)操吧:
crontab?-e?
*?*?*?*?*?cd?/usr/local/nginx/logs/?&&?sh?ip_test.sh??每一分鐘運(yùn)行一次
systemctl?restart?crond.service?重啟一下配置既可
圖片<END>
推薦閱讀:
SpringBoot版的低代碼開發(fā)平臺,關(guān)聯(lián)無 SQL,性能高10倍!
一種非侵入式的接口冪等性實(shí)現(xiàn)方案,非常優(yōu)雅!
互聯(lián)網(wǎng)初中高級大廠面試題(9個(gè)G)
內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊(duì)列、高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper......等技術(shù)棧!
?戳閱讀原文領(lǐng)取!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??朕已閱?
![]()
