记录Ngnix增加对IP封禁及自动封禁IP的方案思考

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 发现某个应用的服务器一些IP地址或是一些IP段请求量巨大,初步确定为非法请求,经过增加IP封禁策略,使其不可访问。

近期运维排查服务器,发现某个应用的服务器在某个时间端内发现一些IP地址或是一些IP段请求量巨大,持续一段时间后停止,类似情况持续半个月时间了,经过对IP端定位发现为外省IP,考虑小程序的使用用户群体,初步确定为非法请求,需要尽快处理。

网站服务器运营环境由NGINX搭建集群使用,方案考虑通过nginx中禁止IP的方法禁止,并思考增加自动化屏蔽的方案,避免人工维护的问题。

NGINX禁止IP访问的方法

1.在 nginx 的安装目录中,查到 conf 文件夹,并在其文件夹中 创建 blocksip.conf 文件。

2.编辑 blocksip.conf 文件,并加入以下代码 :127.0.0.1 为要封禁的 IP 地址

image.png

3.编辑 conf 文件夹下的 nginx.conf 文件,并加入以下代码

image.png

4.重启nginx 服务

image.png

经过测试完成对IP的封禁。

学习 关于deny的使用

1.nginx封锁禁止单个IP

image.png

2.nginx 封锁禁止多个IP

image.png

nginx封锁多个IP地址,多个IP地址由空格分开

3.nginx 封IP段即从127.255.0.1到127.255.255.254的命令

image.png

blocksip.conf:的格式还有许多种,可以配置只允许的IP访问或者IP段访问:

image.png

其中网段的写法是这样的:192.168.1.0/24这样的形式。

deny 192.168.1.11;

     deny 192.168.1.123;

     deny 10.0.1.0/24;

如果你想实现这样的应用,除了几个IP外,其他全部拒绝,在ip.balcklist中这样写

allow 192.168.1.1;

allow 192.168.1.2;

deny all;

也可以对单独网站屏蔽IP的方法

在server"{}",在这个大括号内加入deny IP地址是限制某IP地址访问;allow IP地址是只允许某IP地址访问;

image.png


思考:

根据固定IP端的封禁已经实现,那么如何实现nginx的自动禁封IP的功能?

分析现有步骤:

1.封禁IP的blocksip.conf 文件已增加,并已生效。

2.获取需要封禁IP的内容:

通过查看NGINX的access.log,获取IP内容。

NGINX的access.log的日志格式为:

image.png

相关说明解释:

1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

2.$remote_user :用来记录客户端用户名称;

3.$time_local : 用来记录访问时间与时区;

4.$request : 用来记录请求的url与http协议;

5.$status : 用来记录请求状态;成功是200,

6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;

7.$http_referer :用来记录从那个页面链接访问过来的;

8.$http_user_agent :记录客户端浏览器的相关信息;

其实nginx access日志的格式不是一成不变的,是可以自定义的。在nginx的nginx.conf配置文件找到:log_format 这里就是日志的格式。

以某个日志案例说明:

image.png

查看日志可以获取到该IP再不断的请求路径,访问数据。

查看日志中该IP的出现次数:

image.png

某天居然出现了2000+次,

查看该IP地址中检索到的访问者的地址信息为外地某省份,需要封禁该IP。

将IP地址增加到blocksip.conf 文件中,并重启nginx服务生效。


如何实现自动禁封?考虑使用shell 和定时任务来实现

实现思路:

1.通过shell 脚本抓取nginx 的错误日志中统计超过100次某请求的IP

2.将新获取的IP增加到nginx的配置文件blocksip.conf中,如果有新增的IP,则重启nginx服务,如没有新增IP则不需要重启。

3.将脚本加入定时任务重执行。

因Nginx 的错误日志进行根据时间切割,读取日志文件时需要注意时间格式对齐。增加对统计频率的判断为 10分钟一次,根据指定的频率执行脚本,获取攻击的IP,将攻击的IP追加到黑名单。判断是否有增加IP信息,如有增加重启  reload Nginx 服务 。若没有新增的IP则什么都不做。

自动执行脚本执行一段时间后,可人工介入进行检查,并适当调整脚本。

思考:

攻击IP较多的情况可直接加入防火墙禁止IP端的请求。

vi  /etc/rc.d/init.d/iptables 保存规则

    service iptables restart 重启iptables服务以便生效。






相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
安全 网络安全 数据安全/隐私保护
更改ip后还被封是ip质量的原因吗?
在网络安全、数据抓取及测试领域,代理IP至关重要。然而,市场上的代理IP质量参差不齐,选择优质代理IP成为一大挑战。本文从可用性、响应速度、稳定性、价格、安全性等多个维度出发,提供了详尽的选择指南。通过综合评估这些关键因素,并结合实际需求与试用体验,帮助您挑选最适合的服务商,确保高效、安全地完成工作任务。
|
4月前
|
安全 数据安全/隐私保护
使用了代理IP之后软件或网站还是拒绝访问的原因分析
代理IP使用后仍被拒访可能因无效IP、网站反代理机制、设置错误、网络问题或软件设置不当。检查代理有效性,确认网站限制,修正设置,确保网络稳定,及调整软件代理配置是解决之道。遇到问题需针对性排查。
|
5月前
|
API
如何随机切换代理IP以避免被封禁?
如何随机切换代理IP以避免被封禁?
|
5月前
|
域名解析 网络协议 搜索推荐
阿里云DNS常见问题之获取不到用户真实IP地址如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
5月前
影响代理ip纯净度的原因及目标网站如何识别代理ip
影响代理ip纯净度的原因及目标网站如何识别代理ip
|
5月前
|
数据采集
在爬虫过程中,如何避免被封禁 IP 地址?
在爬虫过程中,如何避免被封禁 IP 地址?
138 0
|
5月前
|
域名解析 缓存 网络协议
DNS问题之服务器流量被攻击如何解决
DNS服务器是负责将域名转换为IP地址的服务,它是互联网上实现域名解析的关键基础设施;本合集将探讨DNS服务器的工作原理、配置方法和常见问题处理,帮助用户理解和优化DNS服务的使用。
121 3
|
网络协议 Shell Perl
根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
98 1
隧道代理如何测试访问网站的响应时间?
我们可以使用curl命令来测试,具体过程如下:
隧道代理如何测试访问网站的响应时间?
|
缓存 JavaScript 安全
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
175 0