Firewall do servidor impedindo o envio de email [fechado]

1

O firewall no meu VPS parece estar impedindo meu site de enviar e-mail. Estava funcionando bem até o final do mês passado. Meu provedor de hospedagem (Webfusion) foi quase inútil.

Eu posso enviar e-mail se eu abrir as portas INPUT 32768-65535, mas não se essas portas estiverem fechadas. Por que isso seria?

Eu tenho as seguintes regras no meu firewall ( N.B. eu excluí as regras que são limitadas ao meu IP, por exemplo, ssh, etc):

# sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
VZ_INPUT   all  --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
VZ_FORWARD  all  --  anywhere             anywhere

Chain OUTPUT (policy DROP)
target     prot opt source               destination
VZ_OUTPUT  all  --  anywhere             anywhere

Chain VZ_FORWARD (1 references)
target     prot opt source               destination

Chain VZ_INPUT (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssmtp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere            tcp dpts:32768:65535
ACCEPT     udp  --  anywhere             anywhere            udp dpts:32768:65535
ACCEPT     tcp  --  localhost.localdomain  localhost.localdomain
ACCEPT     udp  --  localhost.localdomain  localhost.localdomain

Chain VZ_OUTPUT (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere

O VPS está executando o Plesk 10.4.4
Editar: O servidor de e-mail é o qmail
Editar: As regras são criadas pelo módulo de Firewall de " Painel de Energia Virtuozzo "
(por favor, pergunte se você precisar de mais informações técnicas para me ajudar)

    
por jofitz 14.11.2012 / 12:33

3 respostas

4

Eu acho que você está soltando respostas incomming. Tente adicioná-lo com

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

para VZ_INPUT

    
por 14.11.2012 / 12:43
2

Acho que você precisa ler as portas efêmeras para entender um pouco mais sobre como sua máquina faz a saída conexões.

Quando o servidor faz uma conexão SMTP de saída (porta de destino 25, permitida pela regra de saída muito permissiva), as respostas retornam à porta efêmera de origem do seu servidor. Por padrão, o intervalo de portas efêmeras do Linux é de 32768 a 61000. Quando você não está permitindo o tráfego INPUT nas portas 32768 a 65535, está bloqueando as respostas do servidor SMTP remoto.

Essas regras de firewall parecem pouco convencionais para mim. É bastante atípico, pelo menos na minha experiência, ver regras de firewall que não tiram proveito da filtragem ip_conntrack e stateful. Alguns procurando pelos nomes "VZ_FORWARD", "VZ_INPUT", etc, mostram que esses são um conjunto de regras bastante típico que alguns pacotes de gerenciamento de servidores virtuais estão criando. Eu usaria a filtragem de estado, pessoalmente, mas pode haver um argumento de desempenho contra isso para o provedor de VPS.

Editar:

Se você estiver interessado em aprender mais sobre o netfilter, a documentação oficial não é um mau lugar para começar, embora alguns essa doucmentação é um pouco datada. Você não menciona qual distribuição está usando, mas pode encontrar alguma documentação específica da distribuição por aí. Você menciona em outro comentário que deseja limitar suas modificações ao gerenciador de GUIs que está usando. Isso pode limitar sua capacidade de fazer alterações significativas na configuração. Mesmo se você não for modificar manualmente a configuração, você provavelmente obterá um conhecimento útil lendo um pouco sobre o netfilter.

re: sua cadeia OUTPUT - Um administrador preocupado com a segurança desejaria bloquear o tráfego OUTPUT para que, caso invasores mal-intencionados ganhassem o controle do computador servidor em uma capacidade de não-superusuário, eles são limitados em quais tipos de tráfego podem saída da máquina para a Internet. Alguns worms, por exemplo, esperam poder fazer solicitações HTTP (ou FTP, ou TFTP) de volta à Internet para baixar seus componentes de "segundo estágio". Quando você remove a capacidade do servidor de fazer solicitações arbitrárias à Internet, pode limitar o que um invasor mal-intencionado pode fazer com que sua máquina faça isso. (Obviamente, se eles obtiverem acesso de super usuário, então "game over" - eles podem apenas modificar as regras de firewall).

    
por 14.11.2012 / 15:09
1

Olhando para VZ_INPUT:

ACEITAR tcp - qualquer lugar em qualquer lugar tcp dpt: smtp

Isso permite conexões de entrada para o seu servidor SMTP.

Suas regras de saída permitem qualquer coisa.

Mas quando você está enviando e-mails, sua máquina age como o CLIENTE e não como o servidor.

Assim, quando você tenta enviar e-mail, o pacote SYN sai da porta 32768 para a porta 25 e, em seguida, a resposta retorna da porta 25 para a porta 32768 - que corresponde apenas à regra boba adicionada no final.

portanto, adicionar uma regra reversa a VZ_INPUT permitirá o tráfego:

ACCEPT     tcp  --  anywhere             anywhere            tcp spt:smtp

Ou, como o Mose sugere, permita tráfego relacionado em VZ_INPUT. O último é, na verdade, uma solução melhor, já que a versão sem estado acima não bloqueará o acesso às portas dos seus servidores por um invasor que force sua porta de cliente para 25.

Você deve implementar a filtragem de saída adequada em seu servidor - portanto, você deve (como Dennis diz) permitir estabelecido, relacionado a vz_output, juntamente com protocolos de cliente válidos, como DNS, SMTP e NTP, juntamente com uma política DENY padrão.

BTW: como você obtém um shell no sistema quando ele não permite ssh / rsh / telnet?

    
por 14.11.2012 / 13:44