iptables não parece bloquear e-mails de saída

iptables não parece bloquear e-mails de saída

Eu tenho uma caixa CentOS executando exim, estou tentando restringir e-mails de saída apenas para um domínio (digamos domínio.com) e bloquear e-mails para todos os outros domínios. Eu adicionei regras específicas para permitir e-mails de saída para domain.com (números de linha 6,7 ​​e 8) e a ação padrão para a cadeia de saída é bloquear. Mas ainda assim os e-mails são enviados para Gmail, Yahoo e outros domínios. O que há de errado nas minhas regras do iptables?

Abaixo estão as regras de saída

    root@host1 [/tmp/logd]# /sbin/iptables -L OUTPUT -n --line-number -v
    Chain OUTPUT (policy DROP 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination
    1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.x.x.x      /* test */
    2     3455  420K ACCEPT     tcp  --  *      *       0.0.0.0/0            23.x.x.x      tcp dpt:443
    3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            104.x.x.x       tcp dpt:80
    4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            104.x.x.x       tcp dpt:80
    5      0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            104.20.5.21         tcp dpt:80 /* www.spamhaus.org */
    6      0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            216.x.x.x      tcp dpt:25 /* allow mails to domain.com */
    7     69 16484 ACCEPT     tcp  --  *      *       0.0.0.0/0            216.x.x.x      tcp dpt:25 /* allow mails to domain.com */
    8     68 10803 ACCEPT     tcp  --  *      *       0.0.0.0/0            173.x.x.x      tcp dpt:25 /* allow mails to domain.com */
    9   800K  826M LOCALOUTPUT  all  --  *      !lo     0.0.0.0/0            0.0.0.0/0
    10      0     0 ACCEPT     tcp  --  *      !lo     0.0.0.0/0            0.0.0.0/0           tcp dpt:53
    11      0     0 ACCEPT     udp  --  *      !lo     0.0.0.0/0            0.0.0.0/0           udp dpt:53
    12      9   536 ACCEPT     tcp  --  *      !lo     0.0.0.0/0            0.0.0.0/0           tcp spt:53
    13   2147  313K ACCEPT     udp  --  *      !lo     0.0.0.0/0            0.0.0.0/0           udp spt:53
    14  11324   17M ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
    15   797K  826M INVALID    tcp  --  *      !lo     0.0.0.0/0            0.0.0.0/0
    16   797K  826M ACCEPT     all  --  *      !lo     0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    17      0     0 ACCEPT     icmp --  *      !lo     0.0.0.0/0            0.0.0.0/0           icmp type 0
    18      0     0 ACCEPT     icmp --  *      !lo     0.0.0.0/0            0.0.0.0/0           icmp type 8
    29      0     0 ACCEPT     icmp --  *      !lo     0.0.0.0/0            0.0.0.0/0           icmp type 11
    20      0     0 ACCEPT     icmp --  *      !lo     0.0.0.0/0            0.0.0.0/0           icmp type 3
    21    372 25376 LOGDROPOUT  all  --  *      !lo     0.0.0.0/0            0.0.0.0/0

Responder1

Não sei se você também tem IPv6 nesta caixa? Nesse caso, o exim tentará enviar por IPv6 por padrão, antes de voltar para IPv4. Mas acho que o problema aqui não é o iptables em si, mas a forma como esses domínios são tratados e consultados. É quase impossível filtrar com base no endereço IP, pois as empresas maiores têm vários truques de roteamento e BGP para diminuir a latência e como o tráfego é roteado para seus domínios.

Em vez disso, sugiro que você configure o exim4 para enviar e-mails apenas para seus domínios de saída permitidos e, em seguida, passe para qualquer outro lugar, talvez algo como isto:Bloqueando e-mails enviados para alguns usuários no exim

Responder2

Acho que sua ideia geral de como fazer isso está errada. Esses assuntos normalmente enchem livros, mas tentarei explicar brevemente:

Você provavelmente presume que o servidor de e-mail domain.comestá no mesmo endereço IP que domain.comele. Embora isso acidentalmente possa ser verdade em alguns (ou mesmo em muitos) casos, não é verdade em geral.

Em vez disso, existem entradas nos registros DNS de um domínio que determinam qual servidor (endereço IP) trata o correio do domínio. Você já deve ter visto registros DNS como este:

domain.com.        1H MX 50    mail.domain.com
domain.com.        1H IN A     2.3.4.5
mail.domain.com    1H IN A     1.2.3.4

Isso significa que o servidor de e-mail (por exemplo, mail.domain.com) domain.compode estar em um endereço IP diferente domain.comdele.

Agora, se você enviar e-mail do seu programa de software de e-mail (também chamado de MUA - mail user agent), o MUA entrega a mensagem ao Exim. Quando o Exim tenta retransmitir a mensagem para o destinatário, ele primeiro procura o servidor de e-mail que tratará o e-mail do domínio do destinatário e, em seguida, tenta se conectar a esse servidor e entregar a mensagem lá.

Isso significa queseu método pode até impedir que você enviequalquere-mail.Suponha domain.comque resolva para 1.1.1.1, mas o servidor de e-mail domain.comesteja em (ou resolva) para 2.2.2.2. Como seu firewall permite a passagem de tráfego apenas para 1.1.1.1, você não pode enviar nenhum e-mail nem para domain.com, porque o e-mail para domain.comteria que ser entregue para 2.2.2.2.

Este é apenas um dos vários motivos pelos quais você não deve usar o firewall para atingir seu objetivo. Como disse @Fredrik Lundhag, você deve configurar o Exim adequadamente.

informação relacionada