用iptabels封ip
假设封ip 54.95.192.213
iptables -I INPUT -p tcp -s 54.95.192.213 -i eth0 -j DROP
用nginx配置文件封ip
allow和deny指令介绍
首先需要我们熟悉nginx 的deny指令
allow
语法: allow address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
deny
语法: deny address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
allow、deny实例
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
演示
假如我们分析我们的网站被这两个固定ip频繁不轨访问
219.143.33.50 192.168.1.110
只需要一下两部搞定
配置需要屏蔽的ip的配置文件
首先要建一个封ip的配置文件blockips.conf,然后vi blockips.conf编辑此文件,在文件中输入要封的ip。
假设nginx的目录在/usr/local/nginx/conf
cd /usr/local/nginx/conf
vim blockips.conf
deny 219.143.33.50;
deny 192.168.1.110;
引入 ip配置文件,然后reload nginx
然后保存此文件,并且打开nginx.conf文件,在http配置节内添加下面一行配置:
include blockips.conf;
保存nginx.conf文件,然后测试现在的nginx配置文件是否是合法的:
检查语法问题
/usr/local/nginx/sbin/nginx -t
如果配置没有问题,就会输出:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,让nginx重新载入配置文件。
重载配置文件,ok
/usr/local/nginx/sbin/nginx -s reload
总结
总结:后续再添加需要封的ip只需要收到的添加ip到 blockips.conf 然后reload nginx 即可
个人理解
iptables在内核层面 nginx配置文件封ip在软件服务层面 ; nginx服务层, 遇见了这个ip, 不采取行动,只是需要一些资源来拒绝这个海量攻击; 内核可能更简单吧,需要的资源也少