操作系统6

操作系统6

我使用的是由 ISP 的 IP 块集定义的动态 IP。我想打开 ssh、ftp、MySql 等到那组块。我不想为每个规则指定所有条目。有没有办法将所有允许的地址设置为一个组,然后将其分配给我想要访问的每个端口?

答案1

您提到了 CentOS,但没有提到具体版本。

操作系统6

在 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 iptablesformultiporttcp模块以及-g参数。

操作系统7

您可能可以在firewalld 中使用区域。我对此不太有经验。

答案2

您可以创建一组IPs使用ipset,然后可以对其添加任何限制。

例如创建一个ipset

ipset -N myset hash:ip,port

ipwith添加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.xy.y.y.y)的新集合(iphash 类型的 myset)。

然后,该iptables命令使用匹配规范引用该集合-m set --set myset dst,这意味着“匹配其目标标头与名为 myset 的集合匹配(即包含在其中)的数据包”。

该标志dst表示“目的地”匹配。该标志src将在“源”上匹配,并且标志 src,dst 将在源和目标上匹配。

相关内容