iptables scheint ausgehende E-Mails nicht zu blockieren

iptables scheint ausgehende E-Mails nicht zu blockieren

Ich habe eine CentOS-Box, auf der Exim läuft. Ich versuche, ausgehende E-Mails nur auf eine Domäne (sagen wir domain.com) zu beschränken und E-Mails an alle anderen Domänen zu blockieren. Ich habe spezielle Regeln hinzugefügt, um ausgehende E-Mails an domain.com zuzulassen (Zeilennummern 6, 7 und 8), und die Standardaktion für die Ausgabekette ist Blockieren. Aber es werden immer noch E-Mails an Gmail, Yahoo und andere Domänen gesendet. Was ist falsch an meinen iptables-Regeln?

Nachfolgend finden Sie die Ausgangsregeln

    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

Antwort1

Ich weiß nicht, ob Sie auf dieser Box auch IPv6 haben? Wenn ja, versucht exim standardmäßig, über IPv6 zu senden, bevor es auf IPv4 zurückgreift. Aber ich denke, das Problem liegt hier nicht bei iptables an sich, sondern in der Art und Weise, wie diese Domänen gehandhabt und nachgeschlagen werden. Es ist fast unmöglich, basierend auf der IP-Adresse zu filtern, da größere Unternehmen verschiedene Routing- und BGP-Tricks haben, um die Latenz zu verringern und den Datenverkehr an ihre Domänen zu leiten.

Ich würde stattdessen vorschlagen, dass Sie exim4 so konfigurieren, dass E-Mails nur an die von Ihnen zugelassenen ausgehenden Domänen gesendet werden und dann auf andere Domänen umgeschaltet wird, möglicherweise mit etwas wie Folgendem:Blockieren ausgehender E-Mails an einige Benutzer in Exim

Antwort2

Ich denke, Ihre allgemeine Vorstellung davon, wie das zu tun ist, ist falsch. Solche Themen füllen normalerweise Bücher, aber ich werde versuchen, es kurz zu erklären:

Sie gehen wahrscheinlich davon aus, dass der Mailserver domain.comdieselbe IP-Adresse hat wie domain.comSie selbst. Dies mag zwar in einigen (oder sogar vielen) Fällen zufällig zutreffen, ist aber im Allgemeinen nicht der Fall.

Vielmehr gibt es Einträge in den DNS-Einträgen einer Domäne, die bestimmen, welcher Server (IP-Adresse) E-Mails für die Domäne verarbeitet. Möglicherweise haben Sie bereits DNS-Einträge wie diesen gesehen:

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

Dies bedeutet, dass der Mailserver (z. B. mail.domain.com) domain.comeine andere IP-Adresse haben könnte als domain.comer selbst.

Wenn Sie nun eine E-Mail von Ihrem E-Mail-Programm (auch MUA - Mail User Agent genannt) senden, übermittelt der MUA die Nachricht an Exim. Wenn Exim versucht, die Nachricht an den Empfänger weiterzuleiten, sucht es zuerst den Mailserver, der die E-Mails für die Domäne des Empfängers verarbeitet, und versucht dann, eine Verbindung zu diesem Server herzustellen und die Nachricht dorthin zu übermitteln.

Das bedeutet, dassIhre Methode könnte Sie sogar am Senden hindernbeliebigEmail.Angenommen , domain.comwird in aufgelöst 1.1.1.1, aber der Mailserver von domain.combefindet sich in (oder wird in aufgelöst) 2.2.2.2. Da Ihre Firewall nur Datenverkehr an durchlässt 1.1.1.1, können Sie keine E-Mails an senden, nicht einmal an domain.com, da E-Mails an domain.coman zugestellt werden müssten 2.2.2.2.

Dies ist nur einer von mehreren Gründen, warum Sie die Firewall nicht verwenden sollten, um Ihr Ziel zu erreichen. Wie @Fredrik Lundhag sagte, sollten Sie stattdessen Exim entsprechend konfigurieren.

verwandte Informationen