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 andapt-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