Quais regras de INPUT eu preciso adicionar ao iptables para que o apt (apt-get, aptitude) possa funcionar (atualizar, atualizar, pesquisar, instalar)?

3

Eu preciso usar o aptitude para atualizar e instalar o software, mas ele falha. Diz ...

0% [Connecting to archive.ubuntu.com]

... e pára. Eu preciso digitar CTRL-C para sair. Estou usando o Ubuntu Server 10.04 LTS (Lucid Lynx).

Isso está acontecendo devido às minhas regras iptables . Se eu restaurar iptables para seus padrões (removendo regras e definindo políticas para ACCEPT), então o aptitude funciona como esperado. Não há mais erros.

Mas, ei, eu quero usar minhas regras iptables ... Eu só preciso saber: o que exatamente eu preciso manter aberto para fazer apt funcionar?

Minhas regras são bem simples. A política de OUTPUT é ACCEPT. A política FORWARD é ACCEPT. E não tenho regras para OUTPUT e FORWARD. A política de INPUT é DROP. Então, o problema está na corrente INPUT ! Eu tenho 11 regras de entrada para abrir portas TCP específicas que eu preciso para executar serviços como FTP, SSH, HTTP, etc. Uma regra adicional para aceitar ICMP (ping) e outro para aceitar todas as entradas localhost . E isso é tudo:

iptables -F
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp --dport 1008 -j ACCEPT
iptables -A INPUT -p tcp --dport 2812 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -P INPUT DROP

Eu tentei muitas regras tentando fazer o aptitude funcionar. É claro que um simples iptables -P INPUT ACCEPT faz funcionar, mas eu não quero aceitar tudo. Eu quero abrir apenas o que é necessário para o aptitude fazer o seu trabalho.

Parece estranho para mim que a cadeia INPUT seja a questão ... mas é.

Outro problema é que eu não tenho acesso aos logs do iptables ... Acabei de descobrir que há um bug no kernel que estou usando (veja link ) ... então, não me pergunte o conteúdo do log, porque eu não consigo tê-los.

Obrigado!

    
por J. Bruni 16.10.2011 / 13:42

1 resposta

6

Quando você envia uma solicitação HTTP para o outro servidor, você está usando o TCP. Primeiro, um pacote SYN vai para o outro servidor a partir de uma porta alta aleatória, então você receberá uma resposta ACK. Finalmente, você envia SYN / ACK para o servidor e o servidor responde com o documento solicitado (em vários pacotes). Suas regras não permitem que o pacote ACK seja recebido e, portanto, a conexão não pode ser estabelecida. Adicione uma regra como:

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

Você não recebe logs do iptables gratuitamente. Suas regras devem se parecer com:

# if no rule matched, the input should be dropped
-P INPUT DROP

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# etc

# the limit prevents your logs from being flooded if there are a lot packets being captured
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied" --log-level debug

Observe que omiti iptables antes dos comandos, recomendo usar iptables-restore (ou iptables-apply para teste) para evitar o bloqueio se uma regra não se aplicar. O arquivo a ser passado para o comando se parece com:

*FILTER
# your rules here, for example:
-P INPUT DROP
-P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT

Uma nova linha depois da linha COMMIT é obrigatória.

Por padrão, as entradas vão para /var/log/kern.log . Não é bom se você quer diferenciar entre mensagens do kernel e do iptables, então crie um filtro para o rsyslog em /etc/rsyslog.d/iptables.conf contendo:

:msg,contains,"iptables denied" /var/log/iptables.log
& ~

Isso filtrará os erros do iptables e os enviará para /var/log/iptables.log .

    
por Lekensteyn 16.10.2011 / 14:54