Ngnix IP封禁以及實(shí)現(xiàn)自動封禁IP

admin Nginx評論496字?jǐn)?shù) 1342閱讀模式

1.在ngnix的conf目錄下創(chuàng)建一個(gè)blockip.conf文件
2.里面放需要封禁的IP,格式如下

deny 1.2.3.4;

3.在ngnix的HTTP的配置中添加如下內(nèi)容文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

include blockips.conf;

Ngnix IP封禁以及實(shí)現(xiàn)自動封禁IP
4.重啟 ngnix文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

/usr/local/nginx/sbin/nginx -s reload

5.然后你就會看到IP被封禁了,你會喜提403;
Ngnix IP封禁以及實(shí)現(xiàn)自動封禁IP
6.小思考:如何實(shí)現(xiàn)使用ngnix自動封禁ip的功能文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

1.AWK統(tǒng)計(jì)access.log,記錄每分鐘訪問超過60次的ip,然后配合nginx進(jìn)行封禁
2.編寫shell腳本
3.crontab定時(shí)跑腳本

好了上面操作步驟列出來了,那我們先來實(shí)現(xiàn)第一個(gè)吧
Ngnix IP封禁以及實(shí)現(xiàn)自動封禁IP
操作一:AWK統(tǒng)計(jì)access.log,記錄每分鐘訪問超過60次的ip文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

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}'?判斷重復(fù)的數(shù)量是否超過60個(gè),超過60個(gè)就展示出來

操作二:編寫shell腳本,實(shí)現(xiàn)整體功能(寫了注釋代碼)文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

#不能把別人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

操作三:使用crontab定時(shí),來實(shí)現(xiàn)訪問每分鐘超過60的文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

crontab -e 
* * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh  每一分鐘運(yùn)行一次
systemctl restart crond.service 重啟一下配置既可

Ngnix IP封禁以及實(shí)現(xiàn)自動封禁IP文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html 文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/10171.html

版權(quán)聲明:文章圖片資源來源于網(wǎng)絡(luò),如有侵權(quán),請留言刪除!!!
廣告也精彩
admin
  • 本文由 發(fā)表于 2023年2月20日 22:24:20
  • 轉(zhuǎn)載請務(wù)必保留本文鏈接:http://www.strong-digital.cn/10171.html
匿名

發(fā)表評論

匿名網(wǎng)友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: