Nginx如何自動(dòng)封禁可疑Ip
一、Nginx封禁ip
1、簡(jiǎn)介
在網(wǎng)站維護(hù)過程中,有時(shí)候我們需要對(duì)一些IP地址或是一些IP段進(jìn)行封鎖拉黑,使其不能訪問網(wǎng)站。
如果你的網(wǎng)站服務(wù)器的網(wǎng)站運(yùn)行環(huán)境是由nginx搭建的,那么nginx中禁止ip的方法可以有效的防止網(wǎng)站被黑。
2、nignx 禁止IP訪問
2.1 方法一
- 在 nginx 的安裝目錄中(一般在
/etc/nginx/),找到 nginx.conf 文件(可以看一下access.log日志在哪,后面腳本要用),并在當(dāng)前目錄創(chuàng)建blocksip.conf文件 - 編輯
blocksip.conf文件,并加入以下代碼
deny 127.0.0.1; # 127.0.0.1 為要封禁的 IP 地址
- 編輯 nginx.conf 文件,在ngnix的HTTP的配置中添加如下內(nèi)容
# 根據(jù)自己實(shí)際需求修改實(shí)際路徑,這里暫時(shí)是當(dāng)前目錄 include blocksip.conf;
- 重啟 nginx 即可,然后你就會(huì)看到IP被封禁了,喜提403
/usr/local/nginx/sbin/nginx -s reload
2.2 方法二
編輯 配置目錄下的 nginx.conf 文件,在** http{} 或 server{}** 中添加以下代碼
deny 127.0.0.1;
# 127.0.0.1:為要封禁的 IP 地址
# 單個(gè)網(wǎng)站屏蔽IP的方法,放到網(wǎng)址對(duì)應(yīng)的server{}模塊
# 所有網(wǎng)站屏蔽IP的方法,放到http {}模塊
最后重啟 nginx 即可
3、關(guān)于 deny 的使用
# nginx封鎖禁止單個(gè)IP deny 127.0.0.1; # nginx 封鎖禁止多個(gè)IP,多個(gè)IP地址由空格分開 deny 127.0.0.1 196.0.0.1; # nginx封整個(gè)段即從127.0.0.1到127.255.255.254的命令 deny 127.0.0.0/8; # nginx 封IP段即從127.255.0.1到127.255.255.254的命令 deny 127.255.0.0/16 # nginx 封IP段即從127.255.255.1到127.255.255.254的命令是 deny 127.255.255.0/24 # 屏蔽所有ip訪問 deny all; # 允許單個(gè)ip訪問,和上面同理 allow IP; # 允許所有ip訪問 allow all;
二、腳本自動(dòng)封禁Ip
1、流程介紹
- AWK統(tǒng)計(jì)
access.log(/var/log/nginx/),記錄每分鐘訪問超過60次的ip,然后配合nginx進(jìn)行封禁 - 編寫shell腳本
- crontab定時(shí)跑腳本
2、腳本實(shí)戰(zhàn)
2.1 核心腳本解釋
awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}' - AWK統(tǒng)計(jì)
access.log,記錄每分鐘訪問超過60次的ip awk '{print $1}' access.log取出access.log的第一列即為ipsort | uniq -cd去重和排序awk '{if($1>60)print $0}'判斷重復(fù)的數(shù)量是否超過60個(gè),超過60個(gè)就展示出來
2.2 編寫shell腳本
#不能把別人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中,并重新啟動(dòng)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
fi2.3 crontab定時(shí)
crontab -e * * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh #每一分鐘運(yùn)行一次 systemctl restart crond.service #重啟一下配置既可
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 在Nginx中實(shí)現(xiàn)動(dòng)態(tài)封禁IP的三種主流方案
- 詳解Nginx如何封禁IP和IP段
- Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的步驟指南
- Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案
- Nginx+Lua腳本+Redis 實(shí)現(xiàn)自動(dòng)封禁訪問頻率過高IP
- Nginx結(jié)合Openresty通過Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP
- Nginx IP封禁及自動(dòng)封禁IP的實(shí)現(xiàn)
- nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例
- Nginx如何封禁IP和IP段的實(shí)現(xiàn)
- nginx ip黑名單動(dòng)態(tài)封禁的例子
- Nginx利用Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP的方法
- nginx的docker鏡像封禁地區(qū)IP的實(shí)現(xiàn)
相關(guān)文章
Nginx配置SSL證書出現(xiàn)PEM_read_bio_PrivateKey() failed錯(cuò)誤解決
在配置GoDaddy的SSL證書并啟動(dòng)Nginx時(shí),可能遇到由于證書密鑰文件編碼問題導(dǎo)致的啟動(dòng)失敗,具體表現(xiàn)為nginx報(bào)錯(cuò):PEM_read_bio_PrivateKey() failed,本文就來介紹一下,感興趣的可以了解學(xué)習(xí)2024-10-10
網(wǎng)站如何通過nginx設(shè)置黑/白名單IP限制及國(guó)家城市IP訪問限制
如果你的服務(wù)器被攻擊很厲害,而且服務(wù)器是自己練手的,不需要其他用戶訪問的,那么就可以配置一下nginx的白名單,下面這篇文章主要給大家介紹了關(guān)于網(wǎng)站如何通過nginx設(shè)置黑/白名單IP限制及國(guó)家城市IP訪問限制的相關(guān)資料,需要的朋友可以參考下2022-07-07
Nginx服務(wù)器作反向代理時(shí)的緩存配置要點(diǎn)解析
這篇文章主要介紹了Nginx服務(wù)器作反向代理時(shí)的緩存配置要點(diǎn)解析,需要的朋友可以參考下2016-04-04
Nginx的405 not allowed錯(cuò)誤解決方法
本文主要介紹了Nginx的405 not allowed錯(cuò)誤解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
Nginx啟動(dòng)時(shí)80端口被占用的問題解決
本文主要介紹了在啟動(dòng)Nginx時(shí)遇到80端口被占用的問題及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
詳解nginx rewrite和根據(jù)url參數(shù)location
本篇文章主要是介紹了nginx rewrite和根據(jù)url參數(shù)location,有興趣的同學(xué)可以了解以下。2016-11-11
Nginx出現(xiàn)404 Not Found nginx/1.23.4的完美解決方案
在Nginx配置過程中,404 Not Found錯(cuò)誤是一個(gè)常見問題,本文將詳細(xì)解析Nginx 404 Not Found的原因及解決方案,確保您能夠輕松解決這一問題,需要的小伙伴跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧2024-07-07

