Permitir que o apt-get através do iptables abandone tudo [Ubuntu]

2

Eu tenho meu iptables configurado para descartar tudo por padrão nos manuais de regras INPUT, OUTPUT e FORWARD. Mas preciso permitir conexões pela porta 80 (HTTP) e todas as solicitações TCP / UDP recebidas na porta 53 (DNS). Eu tenho a seguinte configuração:

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http  
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http  
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain

No entanto, quando tento executar sudo apt-get install apache2 , o pacote é encontrado, mas, em seguida, trava na verdade baixando o pacote. Através da minha pesquisa, o apt-get só precisa de portas HTTP e DNS para funcionar na maioria dos casos. Estou perdendo alguma coisa? Tentei fazer referência a este post , mas sem sucesso.

Err:1 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3
  Temporary failure resolving ‘us.archive.ubuntu.com’
Err:2 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libaprutil1 amd64 1.5.4-1build1
  Temporary failure resolving ‘us.archive.ubuntu.com’
0% [Connecting to us.archive.ubuntu.com]

Informações do Sistema:
ID do Distribuidor: Ubuntu
Descrição: Ubuntu 16.04.3 LTS
Versão: 16.04
Codename: xenial

Atualização: a solução não funciona

Eu segui a resposta do tomasz abaixo novamente, mas não funcionou. apt-get ainda está emperrado, como no exemplo acima (por exemplo, apache2) (ou seja, sem alteração). Aqui está o meu novo iptables que eu tentei usar:

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      all  --  anywhere          anywhere           state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http state NEW,RELATED,ESTABLISHED
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain state NEW,RELATED,ESTABLISHED
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain state NEW,RELATED,ESTABLISHED

Eu tentei versões no livro de regras OUTPUT com e sem as informações de estado para nenhum sucesso.

    
por Dan Hoynoski 20.03.2018 / 22:10

2 respostas

2

Eu não sei por que você precisa do INPUT aberto em 53 e 80, mas se é para receber respostas de DNS e HTTP, então está errado. Isso é feito pela seguinte linha:

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

(Assim como em esta resposta para o post que você mencionou.)

    
por 20.03.2018 / 22:29
1

Eu pesquisei os detalhes disso com um sistema de teste.

Consegui configurar corretamente o iptables com o seguinte conjunto de regras e obter o apt-get para sair corretamente:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53 state NEW,RELATED,ESTABLISHED

Isso espelha sua configuração mais recente que você declarou acima. Eu posso fazer com que apt-get funcione corretamente e também fazer consultas DNS sem problemas.

No entanto, é importante observar que seu sistema está tendo problemas para resolver os nomes de host para endereços IP e está fornecendo erros de resolução.

Certifique-se de que o /etc/resolv.conf esteja configurado corretamente e contenha no mínimo uma coisa assim:

nameserver 8.8.8.8
nameserver 8.8.4.4

Com um /etc/resolv.conf configurado dessa forma, com os mesmos conjuntos de regras iptables que você tem, posso, sem problemas, alcançar e obter a resolução adequada de DNS em meus sistemas voltados para a Internet e dentro do meu próprio Sub-redes LAN que podem sair para a Internet de dentro da rede.

Parece-me mais que o seu /etc/resolv.conf não está configurado corretamente, e a configuração incorreta está resultando na falha do seu sistema para configurar o DNS adequadamente.

    
por 26.03.2018 / 21:20