Use iptables para registrar conexões, exceto para dois endereços

2

Gostaríamos de usar o iptables para registrar todas as conexões de rede exceto se o endereço de conexão for A.B.C.D ou o endereço de conexão for E.F.G.H . Esses dois endereços não podem ser combinados em um único intervalo do CIDR sem o intervalo, incluindo os endereços que desejamos incluir. Eu chego lá adicionando esta regra do iptables:

-I INPUT ! -s A.B.D.E -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "

No entanto, isso ainda registra conexões de E.F.G.H . Existe uma maneira de obter tudo sem registrar?

(Esses dois endereços geram muitas conexões e não precisamos registrá-los.)

    
por user35042 09.12.2014 / 19:59

3 respostas

1

Adicione uma regra ou duas acima da linha que você citou especificamente permitindo A.B.C.D ou E.F.G.H e faça o registro abaixo disso. iptables funciona na ordem das regras, portanto, permitir algo antes é o fim do processamento.

É também por isso que você adiciona um genérico "deny all" ao final da maioria dos conjuntos de regras de firewall. Se algo não estiver coberto por suas regras acima, negue-o porque é inesperado e provavelmente indesejado.

Exemplo (ajuste conforme necessário, não copie apenas isso):

-A INPUT -s A.B.C.D -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
-A INPUT -s E.F.G.H -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "
-A INPUT -j DROP
    
por 09.12.2014 / 20:02
0

Você pode criar uma cadeia personalizada, que poderia ser denominada LOG_UNLESS , e, em seguida, você poderia fazer o seguinte:

-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j LOG_UNLESS
-A LOG_UNLESS -s 192.0.2.1 -j RETURN
-A LOG_UNLESS -s 203.0.113.2 -j RETURN
-A LOG_UNLESS -j LOG --log-level 1 --log-prefix "New Connection "
    
por 09.12.2014 / 20:05
0

Outra opção seria usar ipset .

Primeiro, você cria o conjunto de IP adequado:

ipset create DO_NOT_LOG hash:ip

Em seguida, adicione os endereços que você deseja excluir:

ipset add DO_NOT_LOG A.B.C.D
ipset add DO_NOT_LOG E.F.G.H

Finalmente, na regra de registro do iptables, adicione uma correspondência negativa:

-I INPUT -m set ! --match-set DO_NOT_LOG src -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "

O ! --match-set DO_NOT_LOG src significa: "Combine com pacotes cujo endereço de origem ( src ) NÃO é encontrado no DO_NOT_LOG set"

    
por 02.01.2015 / 08:33