我在一个动态IP上,它是由ISP的一组IP块定义的。我想打开ssh、ftp、MySql等等,以便打开这组块。我不想为每条规则指定所有条目。是否有方法将所有允许的地址设置为一个组,然后将其分配给我想要访问的每个端口一次?
发布于 2016-12-13 11:33:07
您可以使用IPs创建一组ipset,然后可以添加对它的任何限制。
例如,要创建一个ipset:
ipset -N myset hash:ip,port要将ip和port添加到集合中,请执行以下操作:
ipset add myset x.x.x.0/24,80-82
ipset add myset x.x.x.x,udp:53
ipset add myset y.y.y.y,vrrp:0 然后,要在此集上创建规则,可以将iptables用于防火墙:
iptables -A INPUT -m set --set myset dst -j ACCEPT上面的ipset命令创建了一个具有两个地址(x.x.x.x和y.y.y.y)的新集合(iphash类型的myset)。
然后,iptables命令使用匹配规范-m set --set myset dst引用该集,这意味着“匹配目标头部匹配(即包含在)名为myset的集合中的数据包”。
标志dst的意思是在“目标”上匹配。标志src将匹配在“源”,标志src,dst将匹配在源和目的地。
发布于 2016-12-13 11:39:14
您提到的是CentOS,而不是一个特定的版本。
在CentOS 6中,防火墙在/etc/sysconfig/iptables中可能如下所示:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:INTERNAL - [0:0]
:INTERNAL_allow - [0:0]
:LOGGING - [0:0]
#LOGGING Chain
-A LOGGING -p tcp -m limit --limit 2/min -j LOG --log-prefix "iptables DROP: " --log-level 4
#INPUT Chain
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INTERNAL
-A INPUT -j LOGGING
-A INPUT -j REJECT --reject-with icmp-host-prohibited
#INTERNAL Chain to define networks (only networks that match continue to INTERNAL_allow)
-A INTERNAL -s 192.168.10.0/24 -g INTERNAL_allow
-A INTERNAL -s 10.9.8.0/24 -g INTERNAL_allow
#INTERNAL_allow Chain to define allowed ports on those networks
-A INTERNAL_allow -p icmp -j ACCEPT
#open a single port using tcp module
-A INTERNAL_allow -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#open multiple ports using multiport module
-A INTERNAL_allow -p tcp -m state --state NEW -m multiport --dport 21,3306 -j ACCEPT另请参阅:
man iptables用于multiport和tcp模块以及-g参数。你也许可以在火柴盒中使用区域。我在这方面不是很有经验。
https://unix.stackexchange.com/questions/330047
复制相似问题