reiniciar - Iptables configurando multipuertos mĂșltiples en una regla
iptables permitir todo a una ip (4)
La extensión multipuerto tiene un límite (15) para los puertos que se pueden especificar.
Pero necesito especificar muchos más números de puerto en una sola regla, así que intenté usar varios multipuertos en una regla como:
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
El resultado de iptables -L INPUT -n
es
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
Pero resulta que ambos puertos no se rechazan cuando trato de conectarme desde un cliente.
La versión es v1.4.2-rc1.
¿Hay una solución alternativa o qué debo hacer cuando necesito especificar más de 15 puertos en una regla?
Como solución a esta limitación, utilizo dos reglas para cubrir todos los casos.
Por ejemplo, si quiero permitir o denegar estos 18 puertos:
465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666
Yo uso las siguientes reglas:
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
Las reglas anteriores también deberían funcionar para su escenario. Puede crear otra regla si alcanza el límite de 15 puertos tanto en la primera regla como en la segunda.
Debe usar varias reglas para implementar la semántica similar a OR, ya que las coincidencias siempre son AND-ed juntas dentro de una regla. Alternativamente, puede hacer coincidencias con ipsets de indexación de puertos ( ipset create blah bitmap:port
).
Por lo que sé, escribir múltiples coincidencias es una operación lógica AND; lo que significa su regla es que si el puerto de destino es "59100" Y "3000", rechace la conexión con tcp-reset; La solución está utilizando la opción -mport. Busque la página del manual.
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
}