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

简介: 发现某个应用的服务器一些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服务以便生效。






相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
XML Android开发 数据格式
autojs一键锁屏
牙叔教程 简单易懂
768 0
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
267094 0
|
传感器 安全 智能硬件
柔性电池技术:可弯曲的能源解决方案
【10月更文挑战第12天】柔性电池技术采用轻质、可弯曲材料,具备高度柔韧性、轻薄便携、安全性能及高能量密度等特点,正革新传统电池领域。其广泛应用前景涵盖军事装备、无人机、可穿戴设备、智能医疗器械及太阳能领域,如英国“维图斯”士兵系统的可穿戴作战装备、智能手表和柔性太阳能电池等。当前,该技术正处于快速发展阶段,新材料与工艺不断涌现,未来将引领科技领域的能源革命。
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
1245 3
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
4581 8
|
应用服务中间件 Linux nginx
Nginx log 日志文件较大,按日期生成 实现日志的切割
Nginx log 日志文件较大,按日期生成 实现日志的切割
4080 0
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
21813 7
|
存储 安全 测试技术

热门文章

最新文章