ubuntu iptables não bloqueia o wget

1

Por favor, ajude-me a entender o que estou fazendo de errado com o iptables no Ubuntu 14.04.

iptables -F
ip6tables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

# allows the outgoing traffic of established connections, necessary if the OUTPUT policy is not set to ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -j DROP

iptables -nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
10574   17M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    2    88 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
  260 14124 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
10317  623K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

Acima eu tento bloquear todos, exceto o ssh. Então, eu espero que o wget não seja capaz de baixar nada, mas funciona e o apt-get update não funciona (como esperado). Por favor, me explique como bloquear todos (entrada / saída), ou se esta configuração estiver ok, por que o wget ainda está funcionando?

EDIT: Também tentei alterar 2 linhas para uma, mas isso não ajuda.

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Resultado: o wget está funcionando, apt-get update no. Alguém poderia esclarecer por quê? Obrigado.

    
por itisevgeny 02.09.2016 / 10:21

1 resposta

0

Vamos analisar suas regras e requisitos, bloco por bloco. Você tem uma política padrão de DROP para não precisar da regra final. (Não é uma má ideia, no entanto.)

I try to block all except ssh. So, I expect that wget won't be able to download anything, but it works and apt-get update doesn't work (as expected)

Regras de entrada:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

O que isso diz é que qualquer tráfego relacionado a uma conexão de saída deve ser permitido. E qualquer entrada para o tcp / 22 (por exemplo, ssh ) também deve ser permitida. Todo o resto deve ser abandonado. Observe que nada aqui bloqueia suas solicitações wget e apt-get update de saída.

Regras de saída:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -j DROP

O que isso significa é que qualquer tráfego relacionado a uma conexão de entrada permitida anteriormente deve ser permitido. E qualquer coisa enviada para um destino tcp / 22 (ou seja, ssh ) também deve ser permitida. Finalmente, todo o resto deve ser descartado.

Observações:

Nada na seção de saída permite suas solicitações wget ou apt-get update . Portanto, se wget estiver funcionando, forneça o comando de exemplo que você está usando, juntamente com a saída de set | grep _proxy . (Você pode ver uma ou mais definições, como http_proxy , que definem um proxy para cada protocolo correspondente.)

A propósito, a prática recomendada para iptables é permitir todo o tráfego de loopback, o que você pode fazer com esses dois comandos:

iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
    
por 02.09.2016 / 15:09