怎么在阿里云屏蔽一些IP?-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

怎么在阿里云屏蔽一些IP?

简介: 在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址: $ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP   如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到: $ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP   然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。
在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址:
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
 
如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到:
$ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP
 
然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . .
 
 
什么是IP集? 
 
 
这时候就是IP集登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptables规则来匹配这个集合。 
你马上就会看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有性能影响。 
 
在Linux中安装IPset工具 
 
 
为了创建和管理IP集,你需要使用称为ipset的用户空间工具。 
要在Debian、Ubuntu或者Linux Mint上安装:
$ sudo apt-get install ipset
 
Fedora或者CentOS/RHEL 7上安装:
$ sudo yum install ipset
 
 
使用IPset命令禁止IP 
 
 
让我通过简单的示例告诉你该如何使用ipset命令。 
首先,让我们创建一条新的IP集,名为banthis(名字任意):
$ sudo ipset create banthis hash:net
 
第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有多个类型。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址,你可以使用hash:ip类型。 
一旦创建了一个IP集之后,你可以用下面的命令来检查:
$ sudo ipset list
 
现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用"-m set --match-set "选项。 
现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令:
$ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP
 
如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原:
$ sudo ipset save banthis -f banthis.txt
$ sudo ipset destroy banthis
$ sudo ipset restore -f banthis.txt
 
上面的命令中,我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。 
版权声明:本文由 数控等离子切割机http://www.hycsk.com 整理编辑!本文章来源于网络,如有侵权,请联系云栖社区,欢迎分享本文,转载请保留出处!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: