iptables regras não estão em ação

0

Eu tenho um arquivo de regras iptable, na cadeia INPUT que tenho

-A INPUT -i em1 -p tcp -m tcp --dport 54000 -j ACCEPT
-A INPUT -i em1 -p tcp -m tcp --dport 30000 -j ACCEPT
-A INPUT -i em1 -p udp -m udp --dport 54000 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct 
-A INPUT -j INPUT_ZONES
-A INPUT -p icmp -j ACCEPT

então eu iptables-restore < rule_file e iniciei um servidor UDP na porta 30000, que não é a porta UDP permitida 54000 mas o servidor UDP ainda recebe pacotes UDP de entrada em 30000 o que há de errado com isso?

BTW, iptables -L -n , obtenho:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination 
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:54000
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:30000
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:54000
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ES
    TABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     icmp --  0.0.0.0/0 

Eu uso o nmap de outra máquina para testar esta máquina

nmap -port 30000

ou

nmap -port 54000

os resultados mostram que essas duas portas estão fechadas!

    
por misteryes 12.04.2013 / 19:15

3 respostas

1
Chain INPUT (policy ACCEPT)

Suas regras nunca coincidem, pois você está aceitando tudo

Verifique os pacotes que correspondem a:

iptables -nvL

EDIT etagenklo: iptables passam por todas as regras em uma cadeia de cima para baixo. Se nenhuma regra estiver combinando com o seu pacote, o iptables fará o que é definido como política para a cadeia (no seu caso, isso é ACCEPT)

Para alterar sua política: iptables -P CHAIN RULE

iptables -P INPUT DROP
    
por 12.04.2013 / 21:12
1

Lembre-se, quando você testa portas com nmap / telnet e obtém os erros "fechado" ou "conexão recusada" ou similares, significa que você talvez não tenha permitido a porta OU você tenha a porta permitida, mas nenhum serviço atendendo. isso.

Eu pessoalmente escrevo as regras desta maneira:

-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //if you want allow "familiar" packets
-A INPUT -p icmp -j ACCEPT
-A INPUT -i em1 -p tcp -m tcp --dport 54000 -j ACCEPT //the interface is optional if your pc has only one network card
-A INPUT -i em1 -p tcp -m tcp --dport 30000 -j ACCEPT
-A INPUT -i em1 -p udp -m udp --dport 54000 -j ACCEPT
-A INPUT -j INPUT_direct 
-A INPUT -j INPUT_ZONES
    
por 12.04.2013 / 19:19
0

Altere sua política para a cadeia para DROP:

iptables -P INPUT DROP

É claro que você terá que se certificar de que há uma regra ACCEPT para tudo que você precisa.

Explicação:

O iptables irá verificar todas as regras dentro de uma cadeia se elas corresponderem ao seu pacote. Se nenhuma regra estiver correspondendo, a política para a cadeia será executada.

Portanto, essa deve ser a configuração padrão de um firewall: você quer que ele aceite tudo o que é especificado em uma regra e elimine todo o resto.

    
por 12.04.2013 / 22:22