多端口扩展具有可以指定的端口的限制(15)。
但我需要在单个规则中指定更多的端口号,所以我尝试在一个规则中使用多个多端口,如:
iptables -A INPUT -p tcp -m multiport --destination-ports 59100 -m multiport --destination-ports 3000 -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -L INPUT -n
的结果是
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 59100 multiport dports 3000 state NEW reject-with tcp-reset
但事实证明,当我尝试从客户端连接时,两个端口都没有被拒绝。
版本为v1.4.2-rc1。
是否有解决方法,或者当我需要在一个规则中指定超过15个端口时应该怎么做。
答案 0 :(得分:30)
作为此限制的解决方法,我使用两个规则来涵盖所有情况。
例如,如果我想允许或拒绝这18个端口:
465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666
我使用以下规则:
iptables -A INPUT -p tcp -i eth0 -m multiport --dports 465,110,995,587,143,11025,20,21,22,26,80,443 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -m multiport --dports 3000,10000,7080,8080,3000,5666 -j ACCEPT
以上规则也适用于您的方案。如果您在第一个和第二个规则上达到15个端口限制,则可以创建另一个规则。
答案 1 :(得分:3)
您需要使用多个规则来实现类似OR的语义,因为匹配始终在规则内进行AND编辑。或者,您可以对端口索引ipsets(ipset create blah bitmap:port
)进行匹配。
答案 2 :(得分:0)
据我所知,写多个匹配是逻辑AND操作;所以你的规则意味着如果目的地端口是" 59100" AND" 3000"然后拒绝与tcp-reset的连接;解决方法是使用-mport选项。请注意手册页。
答案 3 :(得分:0)
sudo iptables -A INPUT -i enp1s0 -p tcp -m multiport --dport 0:8080 -j REJECT
(enp0 是我的接口;改成你的接口名称)
答案 4 :(得分:-3)
enable_boxi_poorten
}
enable_boxi_poorten() {
SRV="boxi_poorten"
boxi_ports="427 5666 6001 6002 6003 6004 6005 6400 6410 8080 9321 15191 16447 17284 17723 17736 21306 25146 26632 27657 27683 28925 41583 45637 47648 49633 52551 53166 56392 56599 56911 59115 59898 60163 63512 6352 25834"
case "$1" in
"LOCAL")
for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
# multiports gaat maar tot 15 maximaal :((
# daarom maar for loop maken
# $IPT -A tcp_inbound -p TCP -s $LOC_SUB -m state --state NEW -m multiport --dports $MULTIPORTS -j ACCEPT -m comment --comment "boxi specifieke poorten"
echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}"
;;
"WEB")
for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s 0/0 --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
echo "${RED}Allowing $SRV for all hosts.....${NORMAL}"
;;
*)
for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}"
;;
esac
}