使用阿里云CDN后禁止疑似攻击IP的办法

发表时间:2017-11-22 17:24 | 分类:Nginx, Python | 浏览:7 次

之前在处理使用阿里云cdn网站的时候,我们可以通过nginx的$http_x_forwarded_for参数获取用户的真实IP。然后结合nginx配置对有攻击行为的IP做限制,例如返回403。具体方法可以参考这篇文章《Nginx网站使用CDN获取攻击用户真实IP和fail2ban自动禁止的方法》。这种方法可以减少业务压力,但本质上IP没有被禁止。接下来博主使用阿里云提供的api和脚本,从源头上禁止那些IP的访问。

第一步:安装python的sdk

pip install aliyun-python-sdk-cdn

sdk安装的具体网址:https://develop.aliyun.com/tools/sdk?#/python

第二步:申请key

从阿里云帐号控制菜单中选择accesskeys,按照提示创建。

QQ截图20171122171706

第三步:运行脚本

我的脚本类似如下,获取IP的命令可以根据自己需求修改。

#!/usr/bin/env python

from aliyunsdkcore import client
from aliyunsdkcdn.request.v20141111 import SetIpBlackListConfigRequest

import json
import sys
import os

cdn_access_id=''
cdn_access_key_secret=''

def main():
        #get blackip
        files=[
            '/home/wwwlogs/www.sijitao.net_error.log',
        ]
        blackips=[]
        for file in files:
            cmd="source /etc/profile;awk '{print $NF}' %s |awk '{a[$0]++}END{for(i in a){if(a[i] > 10){print i}}}'" % file
            result=os.popen(cmd,'r').readlines()
            result = map(lambda s: s.strip(), result)
            blackips=blackips+result

        blackips = list(set(blackips))

        str_ips=""
        for ip in blackips:
            if str_ips=="":
                str_ips=ip
            else:
                str_ips=str_ips+","+ip

        #aliyun cdn action
        clt = client.AcsClient(cdn_access_id,cdn_access_key_secret)

        request=SetIpBlackListConfigRequest.SetIpBlackListConfigRequest()
        request.set_accept_format('json')

        request.add_query_param('DomainName','vps.nbhao.org')
        request.add_query_param('BlockIps',str_ips)

        try:
            result=clt.do_action(request)
            r_dict=json.loads(result)
            print r_dict
        except:
            print("Do ip black list error.")
            sys.exit()


while True:
    import time
    main()
    time.sleep(600)

脚本我是从网站错误nginx日志中读取疑似攻击的IP的,然后每隔10分钟分析一次。

参考网址:

http://www.sijitao.net/2594.html

本文标签:,

本文链接:http://www.sijitao.net/2621.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

下一篇:这篇已经是最新的文章!
上一篇:
icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif 

博客历程 留言本 文章归档 网站地图 谷歌地图 浙ICP备13025236号-1
托管于阿里云&七牛云 已加入博客联盟 浙公网安备 33021202000610号
Copyright © 2010-2017 虫虫开源 All Rights Reserved.