nginx/iptables动态IP黑白名单实现方案
2017-07-16 01:28
567 查看
nginx/iptables动态IP黑白名单实现方案
一、手动封IP步骤
1.Nginx手动封IP
1.获取各个IP访问次数 awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n 2.新建一个黑名单文件 blacklist.conf ,放在 nginx/conf下面 3.添加一个IP ,deny 192.168.59.1; 4.在http或者server模块引入 include blacklist.conf ; 5.需要重启服务器, nginx -s reload; 即可生效
2.iptables手动封IP
单个IP的命令是 iptables -I INPUT -s 124.115.0.199 -j DROP 封IP段的命令是 iptables -I INPUT -s 124.115.0.0/16 -j DROP 封整个段的命令是 iptables -I INPUT -s 194.42.0.0/8 -j DROP 封几个段的命令是 iptables -I INPUT -s 61.37.80.0/24 -j DROP iptables -I INPUT -s 61.37.81.0/24 -j DROP 解封 iptables -F 清空 iptables -D INPUT 数字 service iptables save service iptables restart iptables -L -n
二、Nginx自动封IP
1.示例:覆盖
#!/bin/sh tail -n500000 /usr/local/tengine/logs/access.log |awk '{print $1,$7}' |grep -i -E "payments|smsSdk|reportErrorLog|errorPay" |awk '{print $1}'|sort|uniq -c |sort -rn |awk '{if($1>100)print "deny "$2";"}' > /usr/local/tengine/conf/ip.blacklist.auto.conf /usr/local/tengine/sbin/nginx -s reload
2.示例:追加
#!/bin/sh cat /usr/local/tengine/logs/access.log |awk '{print $1,$7}' |grep -i -E "payments|smsSdk|reportErrorLog|errorPay" |awk '{print $1}'|sort|uniq -c |sort -rn |awk '{if($1>500)print "deny "$2";"}' >> /usr/local/tengine/conf/ip.blacklist.auto.append.conf /usr/local/tengine/sbin/nginx -s reload
这里注意 >是覆盖,>>是追加
3.nginx中配置
location / { ... limit_req zone=one burst=5 nodelay; include ip.blacklist.auto.append.conf; include ip.blacklist.auto.conf; }
三、添加到系统计划任务
crontab每隔10分钟执行一次 crontab -e */10 * * * * /data/scripts/nginx_ipblack_auto.sh 或者: 0,10,20,30,40,50 /data/scripts/nginx_ipblack_auto.sh
四、iptables自动封IP
#!/bin/bash num=100 #上限 list=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'` for i in $list do iptables -I INPUT -s $i --dport 80 -j DROP done
五、tengine限流模块
tengine 限制同IP对同URL连接数限制的配置white_black_list_conf conf/white.list zone=white1:4m; white_black_list_conf conf/black.list zone=black1:4m; limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s; limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s;
相关文章推荐
- 基于bitset实现手机号的黑白名单方案
- DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现
- nginx+lua实现IP黑白名单机制
- DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现
- DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现
- DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现
- 利用HTML实现限制ip的投票网站作弊方案
- nginx动态IP黑白名单构建web防火墙(ngx_white_black_list)
- 详解Android 利用Iptables实现网络黑白名单(防火墙)
- 回归原始--用批处理命令实现更改IP功能(可选网卡,可自定义多套IP方案)
- linux实现有态防火墙及IP转发方案
- Apache实现IIS+ tomcat多域名单IP
- weblogic 配置连接过滤器设置ip黑白名单
- 【kong系列十】之IP黑白名单ip-restriction限制插件
- Apple Configurator用法(MDM黑白名单实现)
- Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现
- 网络设备中的路由器的作用,如何设置路由器,上网、IP分配、黑白名单、访问量
- 利用HTML实现限制ip的投票网站作弊方案
- rspamd 里面通过lua脚本实现每用户黑白名单
- 黑白名单的具体实现