Como configurar o iptables para usar o apt-get em um servidor? [fechadas]

2

Estou começando a usar o iptables (newbie) para proteger um servidor linux (especificamente Debian 5.0). Antes de configurar o iptables, posso usar o apt-get sem problemas. Mas depois de configurar o iptables, o apt-get para de funcionar. Por exemplo, eu uso este script no iptables:

#!/bin/sh
IPT=/sbin/iptables

## FLUSH
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

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

$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -j ACCEPT

$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 443 -j ACCEPT

# Allow FTP connections @ port 21
$IPT -A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow Active FTP Connections
$IPT -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT 

# Allow Passive FTP Connections
$IPT -A INPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT 

#DNS
$IPT -A OUTPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT

$IPT -A INPUT -p tcp --dport 1:1024
$IPT -A INPUT -p udp --dport 1:1024

$IPT -A INPUT -p tcp --dport 3306 -j DROP
$IPT -A INPUT -p tcp --dport 10000 -j DROP
$IPT -A INPUT -p udp --dport 10000 -j DROP

quando eu executo o apt-get eu obtenho:

core:~# apt-get update
0% [Connecting to ftp.us.debian.org] [Connecting to security.debian.org] [Conne

e fica parado. Quais regras preciso configurar para que funcione.

Obrigado

Adendo:

Depois de algumas tentativas, acho que o problema está na política INPUT, e não na OUTPUT, se modificar o $ IPT -P OUTPUT para $ IPT -P OUTPUT ACCEPT o problema permanece. Mas se eu mudar o $ IPT -P INPUT para $ IPT -P INPUT ACCEPT então ele começa a funcionar.

    
por user25704 10.03.2010 / 23:43

10 respostas

8

Você precisa permitir que o primeiro pacote abra uma conexão HTTP OUT e, em seguida, retorne as respostas.

Tente:

$IPT -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
    
por 15.03.2010 / 23:07
5

Para resolver este problema, você precisa adicionar as próximas regras no seu IPT:

# Apt-Get without problem
$IPT -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
    
por 11.12.2013 / 05:55
3

Talvez Apt não consiga resolver os nomes de host com o DNS. Tente adicionar esta linha na sua seção de DNS do seu conjunto de regras:

$IPT -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT

    
por 08.03.2012 / 18:09
2

Duas portas são necessárias para uma instalação padrão do Debian para obter atualizações:

  • HTTP (porta TCP 80)
  • DNS (porta udp 53)

Solução com o estado -m:

$IPT -A OUTPUT -p tcp --dport 80 --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p udp --sport 53 --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT

ou com -m conntrack:

$IPT -A OUTPUT -p tcp --dport 80 --sport 32768:61000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 --dport 32768:61000 -m conntrack --ctstate ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 --sport 32768:61000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p udp --sport 53 --dport 32768:61000 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    
por 23.03.2017 / 22:37
1

Geralmente, o Apt usa a boa e velha porta 80, mas você deve verificar o apt.conf para ver o que está configurado, já que ele pode usar vários. Verifique também o /etc/apt/sources.list

    
por 10.03.2010 / 23:48
1

Acredito que você precisaria de regras de saída em que altas portas de origem permitissem. Quando o apt se conecta a http, o Linux dará a ele uma porta de origem alta e aleatória (maior que o que estiver em /proc/sys/net/ipv4/ip_local_port_range ). (Não pode ser aleatório, não me lembro). ftp tem modos passivos e ativos também, eu recomendaria fontes http em seu sources.list neste caso.

Portanto, se você alterar suas fontes para http e definir a regra de saída para todas as suas portas efêmeras. Você estará tudo pronto. Se você usa ftp, você precisa descobrir se ele está ativo ou passivo e então adicionar as regras de acordo. Consulte este link para obter uma explicação dos modos ativo / passivo. Eu vejo que você tem aqueles atualmente listados, mas eles parecem ser da perspectiva da caixa sendo um servidor, não um cliente. Com o apt você é o cliente.

Portanto, para portas de origem http:

$ cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000
$IPT -A OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT

Por fim, você pode registrar pacotes descartados como uma ferramenta geral de solução de problemas do iptables. Consulte este link .

    
por 11.03.2010 / 01:49
0

Usar o DROP como a política padrão para a cadeia de saída parece um pouco excessivo para mim.

Eu recomendaria alterar a política de SAÍDA padrão para ACCEPT e, em seguida, monitorar o tráfego e filtrar portas específicas, se necessário. Caso contrário, é muito difícil manter o controle de todas as conexões de saída e permitir que cada uma delas passe pelo seu firewall.

Afinal, o truque é não deixar ninguém entrar, não impedi-los de sair.

    
por 11.03.2010 / 17:22
0

Eu sei que isso provavelmente está um pouco atrasado, mas esse segmento continuou aparecendo nas minhas pesquisas no Google, então estou postando o que funcionou para mim:

iptables -A OUTPUT -p tcp --dport 80 --sport 32786:61000 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 --sport 32786:61000 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 32786:61000 --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 32786:61000 --sport 80 -j ACCEPT
    
por 08.03.2012 / 17:12
0

Eu cheguei perto. Estou usando o CSF e configurei a chave cc_allow_filter com o valor BR pensando que isso é para SSH e depois de ler os documentos eu descobri que isso é para todas as conexões no servidor. O meu está bloqueando porque os espelhos que eu uso para o apt-get são de outro país, e o CSF estava bloqueando. Depois de remover o país bloqueando tudo, o star está funcionando normalmente novamente.

    
por 03.08.2014 / 21:34
-1

Acho que resolvi o problema.

$ IPT -A INPUT --sport 80 -j ACCEPT e apt funcionam corretamente

    
por 28.05.2010 / 09:43