Linux iptables rejeitado - Como posso ativá-lo de volta?

8

então estou tendo um cliente na minha rede conectado ao roteador através do meu computador com arpspoof. Quando eu sei que quero parar o encaminhamento de pacotes eu executo:

iptables -A FORWARD -j REJECT

está funcionando como eu esperava. Mas quando tento fazer algo como:

iptables -A FORWARD -j ACCEPT

Eu não consigo fazer os pacotes passarem como no começo.

Estou fazendo algo errado ou há algum outro argumento que eu deva usar diferente de "ACCEPT"?

    
por Snipy 06.09.2017 / 14:35

4 respostas

35

IPtables tem uma lista de regras e, para cada pacote, verifica a lista de regras em ordem. Uma vez encontrada uma regra que corresponda ao pacote e especifique uma política (ACCEPT, REJECT, DROP), o destino do pacote correspondente é determinado; não mais regras são examinadas.

Isso significa que a ordem em que você executa comandos é importante. Quando você usa iptables -A , adiciona uma regra ao final da lista de regras. Assim, você terá uma lista de regras com esta aparência:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere

Como a regra REJECT vem antes da regra ACCEPT , ela é acionada primeiro e, assim, o encaminhamento não acontece.

Por isso, você precisará excluir a regra REJECT em vez de adicionar uma regra ACCEPT . Para excluir a regra REJECT, execute

iptables -D FORWARD -j REJECT 

Para mais informações, leia o manual do iptables.

    
por 06.09.2017 / 14:43
18

O sinal -A diz ao iptables para anexar a regra à cadeia, o que significa que ela acaba na regra REJECT e, como a primeira regra corresponde, ela nunca é usada.

Você lista suas regras com iptables -L FORWARD e você mesmo verá isso. Para se livrar da regra que você adicionou, execute

iptables -D FORWARD -j REJECT 

Até que não haja mais tais regras na cadeia.

    
por 06.09.2017 / 14:42
1

Que tal colocar no final da regra FORWARD para pular para uma nova cadeia na qual será apenas uma regra. Pode ser ACCEPT ou REJECT . Diga ...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

Depois disso, você pode alterar essa regra em accept-chain , algo como

iptables -R accept-chain 1 -j REJECT

para desativar o tráfego ou -j ACCEPT para ativar.

Além disso, qual é o recurso para ativar e desativar o roteamento por

echo "0" > /proc/sys/net/ipv4/ip_forward

para desabilitar o encaminhamento de pacotes e "1" - para ativar.

    
por 08.09.2017 / 08:36
0

Assuntos de ordem. Isso inserirá sua regra no topo em vez de anexar.

iptables -I FORWARD 1 -j ACCEPT

-I é inserir e # 1 é a posição

    
por 08.09.2017 / 09:04