Por que a primeira regra não está sendo correspondida no iptables

1

Eu tenho a regra iptables que espero permitir ssh de 2 ips.

Por que o contador está aumentando para a segunda regra e não para a primeira regra.

Mesmo se eu tentar de ambos ip eu não sou capaz de ssh para ele.

Chain INPUT (policy ACCEPT 87 packets, 6188 bytes)
pkts bytes target     prot opt in     out     source          destination
0     0 REJECT       tcp  --  *      *      !115.x.x.71       0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable

14  1400 REJECT     tcp  --  *      *      !115.x.x.176      0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable

não é como quando eu ssh de 115.xx71 coincide com a primeira regra e eu deveria ter acesso e ele não será comparado com o segundo e mesmo se eu ssh de 115.xx176 é contra a primeira regra e ele será rejeitado, mas eu não sou capaz de ssh mesmo do primeiro ip.

    
por Kevin Parker 07.06.2013 / 14:59

2 respostas

5

Isso nunca funcionará!

Razão:

  1. Se você se conectar a partir de .71, a segunda regra rejeitará sua conexão
  2. Se você se conectar de qualquer lugar, a primeira regra rejeitará sua conexão

A reson para isso é porque se uma regra não corresponder no iptables, ela irá para a próxima regra.

Você precisa permitir conexões de .71 e .176 e depois disso rejeitar todas as outras conexões.

Por que os contadores não são aumentados na primeira regra: não sei.

EDITAR para esclarecer um pouco as coisas:

iptables verifica as regras uma após a outra. Se uma regra coincide com a evalutaion pára com o resultado até agora. Portanto, para as suas regras, iptables fará o seguinte:

  1. Se você se conectar a partir de .71
    • A primeira regra não corresponde (porque o src! x.x.x.71 não corresponde)
    • A segunda regra rejeita a solicitação (porque as correspondências src! x.x.x.176) e o resultado devem ser REJECT
  2. Se você se conectar de algum outro lugar (por exemplo, x.x.x.176)
    • A primeira regra corresponde (porque o src! x.x.x.71 corresponde) e, portanto, a conexão é rejeitada.

Então, para atender às suas necessidades, você precisa primeiro aceitar as conexões de .71 e .176 nas primeiras regras e depois rejeitar todas as outras.

Por favor, leia alguns tutoriais sobre iptables para saber como funciona e veja o resposta de dmourati para um exemplo em execução.

    
por 07.06.2013 / 15:16
3
iptables -A INPUT -p tcp --dport 22 -s IP-ADDR-1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s IP-ADDR-2 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
    
por 10.06.2013 / 08:19