A última linha que você tem lá deve funcionar, você só precisa ter certeza de ter um -p protocolo lá, como --dport não funciona como uma opção por conta própria.
iptables -A INPUT -m iprange --src-range 10.50.10.20-80 -p tcp --dport 12345 -j ACCEPT
Em esta pergunta vejo uma linha assim, isso permitirá que eu diga "permitir que esses endereços IP se conectem"
iptables -A INPUT -m iprange --src-range 10.50.10.20-80 -j ACCEPT
Agora, quero proteger ainda mais isso para que essa regra se aplique apenas a portas específicas. Eu tenho usado um comando como este para minhas portas regulares:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Posso combinar esses dois para tornar uma porta específica permitida somente para um intervalo, como este
iptables -A INPUT -m iprange --src-range 10.50.10.20-80 --dport 12345 -j ACCEPT
Obviamente, estou hesitante em apenas fazer chamadas de iptables por vontade própria. :) Obrigado!
A última linha que você tem lá deve funcionar, você só precisa ter certeza de ter um -p protocolo lá, como --dport não funciona como uma opção por conta própria.
iptables -A INPUT -m iprange --src-range 10.50.10.20-80 -p tcp --dport 12345 -j ACCEPT
Como alternativa, instale ipset
e você poderá alterar a lista de endereços IP sem mexer nas regras iptables
:
ipset -N AllowedSources ipmap --network 10.50.10.0/24
for i in $LIST_OF_ALLOWED_SOURCES; do ipset -A AllowedSources $i; done
iptables -A INPUT -m set --match-set AllowedSources src -p tcp --dport 12345 -j ACCEPT
Agora, se você precisar adicionar outra fonte permitida:
ipset -A AllowedSources a.b.c.d
Você precisa "descartar" um host das origens permitidas:
ipset -D AllowedSources e.f.g.h
Você pode salvar seus conjuntos:
ipset --save > /etc/ipset.conf
Que você pode restaurar durante a inicialização, antes implementar seu iptables
(ou então, o iptables irá reclamar!):
ipset --restore < /etc/ipset.conf
Você pode até criar um conjunto de IPs que corresponderá à porta de destino do IP de origem e , por exemplo:
ipset -N AllowedAccess ipporthash --network 10.50.0.0/16
# These hosts may access port 12345
for i in $LIST_OF_ALLOWED_TO_12345; do ipset -A AllowedAccess $i,12345; done
# These hosts may access port 23456
for i in $LIST_OF_ALLOWED_TO_23456; do ipset -A AllowedAccess $i,23456; done
# These hosts may access port 34567
for i in $LIST_OF_ALLOWED_TO_34567; do ipset -A AllowedAccess $i,34567; done
# Now that the IP set has been created, we can use it in iptables
iptables -A INPUT -m set --match-set AllowedAccess src,dst -j ACCEPT
# Note that we use "src,dst", meaning that we want to match source IP, but
# destination port
# Also note, if you need to match against a single port, the ipmap method
# will be slightly faster.
Mais informações sobre ipset
: link
Se você estiver usando o Ubuntu , não será possível instalar o pacote ipset
de seu repositório. Use minha dica: link
Você tem a idéia básica certa, você pode combiná-los em uma regra como essa.
No entanto, apesar do que algumas respostas dizem, você não deve usar um intervalo como 10.50. 10.20-80 (expandirá para 10.50.10.20-80.0.0.0 - use o comando iptables para verificar). Você precisa usar o endereço IP completo no intervalo, por exemplo 10.50.10.20-10.50.10.80.
Além disso, se você especificar um número de porta, precisará declarar um protocolo que suporte portas, portanto, a regra revisada seria:
iptables -A INPUT -p tcp -m iprange --src-range 10.50.10.20-10.50.10.80 --dport 12345 -j ACCEPT
Documentação sobre o iprange: link