Qual é a regra certa do iptables para permitir que o apt-get baixe programas?

11

Quando digito algo como sudo apt-get install firefox , tudo funciona até que me pergunte:

After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Em seguida, as mensagens de erro são exibidas: Failed to fetch: <URL>

As regras do meu iptables são as seguintes:

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

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

O que devo adicionar para permitir que o apt-get baixe as atualizações? Obrigado

    
por anthony01 29.09.2012 / 21:18

1 resposta

16

O apt-get quase sempre é baixado via HTTP, mas também pode usar FTP, então a resposta curta provavelmente é permitir conexões HTTP de saída ... e também DNS, é claro.

A configuração que você tem agora não permite todo o tráfego de rede de saída (a regra ESTABLISHED que você tem na cadeia OUTPUT não é efetiva, já que nenhuma sessão será estabelecida). Você precisa permitir que APENAS atualize o apt-get enquanto ainda está desabilitando tudo o mais? iptables é provavelmente a ferramenta errada para esse trabalho, pois não vai realmente interpretar URLs e permitir transferências HTTP seletivamente. Você deseja usar um servidor proxy HTTP para este trabalho.

Você pode usar uma configuração mais simples que permitirá o download do apt-get, mas esteja ciente de que isso também permite todas as outras conexões DNS e HTTP de saída, que podem não ser o que você deseja.

iptables -F OUTPUT  # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Se suas fontes APT incluem fontes HTTPS ou FTP ou fontes HTTP em portas diferentes de 80, você também precisará adicionar essas portas.

Em seguida, você terá que permitir o tráfego de retorno. Você pode fazer isso com essa regra única que permite qualquer conexão estabelecida:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

(É seguro permitir todas as conexões estabelecidas de entrada ao usar o rastreamento de conexão, porque somente as conexões que você permitia de outra forma chegarão ao estado ESTABLISHED.)

    
por 29.09.2012 / 21:34