primeira vez postar para ServerFault, então vou tentar e acertar:)
Eu tenho vários ambientes (por exemplo, prod, dev, test, etc) e estou tentando gravar o arquivo IPTables para meus servidores RHEL 6.6, o que permite que grupos específicos de máquinas conversem entre esses ambientes em portas definidas.
Inicialmente, ter as regras para cada destino diferente ou sub-rede de origem definida em sua própria linha funcionou - no entanto, o arquivo iptables resultante é bastante grande.
Na tentativa de simplificar / limpar o conjunto de regras, tentei combinar regras para vários IPs de origem ou de destino utilizando as mesmas portas.
Encontrei um artigo relevante do ServerFault sobre o assunto IPTables IPs de várias fontes , mas o exemplo mais bem avaliado não parece estar funcionando para mim.
Por exemplo, tentando combinar as duas regras a seguir:
-A INPUT -i $INTERFACE -m conntrack --ctstate NEW,ESTABLISHED,RELATED -s $CV1 -p tcp --dport 8400:8403 -j ACCEPT -m comment --comment "Source 1"
-A INPUT -i $INTERFACE -m conntrack --ctstate NEW,ESTABLISHED,RELATED -s $CV2 -p tcp --dport 8400:8403 -j ACCEPT -m comment --comment "Source 2"
Para isso:
-A INPUT -i $INTERFACE -m conntrack --ctstate NEW,ESTABLISHED,RELATED -s $CV1,$CV2 -p tcp --dport 8400:8403 -j ACCEPT -m comment --comment "Not Working!"
Também tenho regras que misturam IPs de várias origens e vários destinos (da mesma forma sem sucesso):
-A INPUT -i $INTERFACE -s $FOO1,$FOO2 -d $FOO1,$FOO2 -p tcp --dport 8400:8403 -j ACCEPT
-A OUTPUT -o $INTERFACE -s $FOO1,$FOO2 -d $FOO1,$FOO2 -p tcp --dport 8400:8403 -j ACCEPT
Nota: O arquivo / etc / sysconfig / iptables é escrito pelo meu script de configuração personalizado (daí as variáveis $), com os IPs sendo definidos assim:
CV1=10.1.1.0/27
CV2=10.25.128.128/29
FOO1=10.1.30.140/30
FOO2=10.2.30.140/30
As falhas de tráfego são detectadas pelas regras de rejeição / log na parte inferior do arquivo IPTables:
-A INPUT -i $INTERFACE -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "Packet Rejected. "
-A FORWARD -i $INTERFACE -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "Packet Forward Rejected. "
-A OUTPUT -o $INTERFACE -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "Packet Dropped. "
-A INPUT -i $INTERFACE -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i $INTERFACE -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o $INTERFACE -j REJECT --reject-with icmp-host-prohibited
Referindo-se à entrada da página man do IPTables, parece que deve funcionar:
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address. Hostnames will
be resolved once only, before the rule is submitted to the kernel. Please note that specifying any name to be resolved with a remote query such
as DNS is a really bad idea. The mask can be either a network mask or a plain number, specifying the number of 1âs at the left side of the net-
work mask. Thus, a mask of 24 is equivalent to 255.255.255.0. A "!" argument before the address specification inverts the sense of the address.
The flag --src is an alias for this option.
Multiple addresses can be specified, but this will expand to multiple rules (when adding with -A),
or will cause multiple rules to be deleted (with -D).
[!] -d, --destination address[/mask][,...]
Destination specification. See the description of the -s (source) flag for a detailed description of the syntax. The flag --dst is an alias for
this option.
Alguém é capaz de me esclarecer sobre o que estou fazendo de errado aqui?