iptables, похоже, не блокирует исходящую почту

iptables, похоже, не блокирует исходящую почту

У меня есть CentOS-бокс с exim, я пытаюсь ограничить исходящие письма только одним доменом (скажем, domain.com) и заблокировать письма для всех остальных доменов. Я добавил специальные правила, чтобы разрешить исходящие письма на domain.com (номера строк 6, 7 и 8), и действие по умолчанию для выходной цепочки — блокировка. Но письма все равно отправляются на gmail, yahoo и другие домены. Что не так в моих правилах iptables?

Ниже приведены исходящие правила.

    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

решение1

Я не знаю, есть ли у вас IPv6 на этом ящике? Если да, то exim попытается отправить по IPv6 по умолчанию, прежде чем вернется к IPv4. Но я думаю, что проблема здесь не в iptables как таковых, а в том, как эти домены обрабатываются и ищутся. Фильтровать по IP-адресу практически невозможно, поскольку у крупных компаний есть различные приемы маршрутизации и BGP для снижения задержки и маршрутизации трафика на их домены.

Вместо этого я бы предложил вам настроить exim4 для отправки писем только на разрешенные исходящие домены, а затем перейти на что-нибудь еще, например, вот так:Блокировка исходящих писем некоторым пользователям в exim

решение2

Я думаю, что ваше общее представление о том, как это сделать, неверно. Такие темы обычно заполняют книги, но я попытаюсь объяснить вкратце:

Вы, вероятно, предполагаете, что почтовый сервер для domain.comнаходится на том же IP-адресе, что и domain.comон сам. Хотя это может быть правдой в некоторых (или даже во многих) случаях, в общем случае это не так.

Вместо этого есть записи в записях DNS домена, которые определяют, какой сервер (IP-адрес) обрабатывает почту для домена. Вы, возможно, уже видели записи DNS, подобные этим:

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

Это означает, что почтовый сервер (например mail.domain.com, ) domain.comможет иметь другой IP-адрес, нежели domain.comон сам.

Теперь, если вы отправляете письмо из вашей программы электронной почты (также называемой MUA - почтовый пользовательский агент), MUA доставляет сообщение в Exim. Когда Exim пытается передать сообщение получателю, он сначала ищет почтовый сервер, который будет обрабатывать почту для домена получателя, а затем пытается подключиться к этому серверу и доставить сообщение туда.

Это значит, чтоваш метод даже может помешать вам отправитьлюбойэлектронная почта.Предположим, domain.comчто разрешается в 1.1.1.1, но почтовый сервер domain.comнаходится в (или разрешается) в 2.2.2.2. Поскольку ваш брандмауэр пропускает трафик только в 1.1.1.1, вы не можете отправлять электронные письма даже в domain.com, поскольку электронные письма в domain.comдолжны быть доставлены в 2.2.2.2.

Это лишь одна из причин, по которой вам не следует использовать брандмауэр для достижения своей цели. Как сказал @Fredrik Lundhag, вместо этого вам следует настроить Exim соответствующим образом.

Связанный контент