代理ip

>

换ip软件

>

http代理

>

ip代理

您的位置:首页 > 新闻资讯 > 文章内容
nginx限制IP恶意调用接口处理办法
来源:网连代理 作者:admin 时间:2019-12-24 15:28:05

  今天一大早运营跑来投诉说:“公司昨晚发了20多万条注册短信息,我们没有这么多注册用户啊!”,我查询日志发现,一直有人在恶意调用我们公司的短信接口,造成一直发送注册信息,而且不断变化IP,初次遇到还是有点懵逼的!

nginx限制IP恶意调用接口处理办法

  调用注册短信接口日志内容:

  121.204.87.168--[09/Mar/2018:17:34:13+0800]"POST/xxx/短信接口HTTP/1.1"200 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.001

  222.91.163.130--[09/Mar/2018:17:34:13+0800]"POST/xxx/短信接口HTTP/1.1"200 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.000

  124.72.40.148--[09/Mar/2018:17:34:13+0800]"POST/xxx/短信接口HTTP/1.1"200 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.000

  112.14.87.203--[09/Mar/2018:17:34:13+0800]"POST/xxx/短信接口HTTP/1.1"403 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.000

  我发现这些IP几乎都是每隔三四秒就调用一次,像这种接口一般注册时,一天最多也就调用三五次;

  针对这些问题我想了几个方案,发现一般都是处理时间长,不太适合当前情况紧急处理,根据日志判断对方是直接调用我接口的,处理起来只能封IP,考虑到如果用iptables封IP的话,以后这个IP如果在防火墙不做处理,就会误伤很多正常使用的用户!

  处理方案:

  1、处理思路:用nginx的黑名单处理,通过shell脚本和cron,每隔五分钟就去统计一下,调用短信接口超过5次的IP,直接扔进黑名单配置文件;

  2、处理步骤:

  shell统计脚本blackip.sh:

  #!/bin/bash

  NGINX_DIR=/nginx

  BLOCK_IP_FILE=/nginx/conf/vhost/blockip.conf

  BLOCKED_IP=/nginx/logs/blocked-ip.txt

  NGINX_CMD=/nginx/sbin/nginx

  LOG_PATH=/nginx/logs/api.xxx.com_access.log

  /bin/cp$BLOCK_IP_FILE$BLOCKED_IP&&

  /usr/bin/tail-n 20000${LOG_PATH}|grep"xxx/短信接口"|awk'{print$1,$7,$9}'|awk'{print$1}'|sort|uniq-c|sort-rn|awk'{if($1>10)print"deny"$2";"}'>$BLOCKED_IP&&

  /bin/grep-v-f$BLOCK_IP_FILE$BLOCKED_IP>>$NGINX_CMD&&

  $($NGINX_CMD-s reload)

  ps:脚本写的有点LOW。。。

  3、计划任务

  */5****/bin/sh/scripts/blackip.sh>/dev/null 2>&1

  4、在http或者server模块引入

  include vhost/blacklist.conf;

  重新加载nginx生效!!

  查看加入到黑名单配置文件的IP:

  略略。。。

  deny 117.136.90.104;

  deny 223.104.31.205;

  deny 117.150.148.213;

  deny 36.60.168.148;

  deny 183.40.141.112;

  ......

  略略。。。

  此时再去nginx的中查看调用接口的情况,超过限定条件被放入黑名单中的IP,在调用短信接口的呃时候返回403了,不在会实际发送短信:

  60.180.30.117--[09/Mar/2018:17:57:15+0800]"POST/xxx/短信接口HTTP/1.1"403 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.000

  60.181.109.10--[09/Mar/2018:17:57:15+0800]"POST/xxx/短信接口HTTP/1.1"403 162"http://xxx.com/xxx/短信接口""Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0""-"--0.000

  目前这只能是做为紧急处理方法,更稳妥的办法还是在业务逻辑和安全上去完善!在实际处理的过程当中还是做了很多无用功的,运维路上处处是坑啊,希望这篇文章能够帮到你!


相关文章内容简介
推荐阅读