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.com
dieselbe IP-Adresse hat wie domain.com
Sie 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.com
eine andere IP-Adresse haben könnte als domain.com
er 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.com
wird in aufgelöst 1.1.1.1
, aber der Mailserver von domain.com
befindet 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.com
an 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.