Mail-Versand aus dem Freifunk-Netz

Im Artikel “Internet-Gateway einrichten” hatten wir beschrieben, wie sich Verkehr aus dem Mesh-VPN über eine Tunnelverbindung ins Internet weiterleiten lässt. Zweck dieser Umleitung ist die Anonymisierung des ausgehenden Verkehrs. Problematisch an dieser Konstellation ist, dass VPN-Tunnelanbieter zum Teil die für den Mail-Versand benötigten TCP-Ports (25, 465 und 587) sperren, um Spamming zu verhindern (zum Beispiel bei CyberGhostVPN der Fall). Die Folge ist, dass aus dem Freifunknetz heraus keine e-Mails versendet werden können. Eine äußerst lästige Einschränkung.

Eine Möglichkeit dieses Problem zu umgehen besteht darin, zumindest ausgehenden Verkehr auf dem Mail Submission Port 587 (RFC 4409) direkt ins Internet und nicht über den Tunnel zu leiten. Dies sollte prinzipiell unkritisch sein, da Mail Server bei Verbindungen auf den Mail Submission Port zuerst eine Authentifizierung fordern, bevor sie Nachrichten entgegennehmen. Spammer haben also keine Chance und die IP-Reputation des Gateways ist nicht gefährdet.

Die direkte Weiterleitung erreichen wir durch eine Modifikation der Firewall-Konfiguration. Hier zu ändern wir den Inhalt der Datei /etc/iptables/rules.v4 wie folgt:
# Generated by iptables-save v1.4.14 on Sat May 10 00:21:44 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i br-ff3l -o eth0 -p tcp --dport 587 -m connlimit --connlimit-above 5 -j REJECT
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i br-ff3l -j MARK --set-xmark 0x1/0xffffffff
-A PREROUTING -i br-ff3l -p tcp --dport 587 -j MARK --set-mark 0x0/0xffffffff
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o tun0 -j MASQUERADE
-A POSTROUTING -o eth0 -p tcp --dport 587 -j MASQUERADE
COMMIT

# Completed on Sat May 10 00:21:44 2014
Die Änderungen im Vergleich zur ursprünglich beschriebenen Konfiguration sind fett hervorgehoben. Hierbei handelt es sich um eine Minimalkonfiguration! Typischerweise würde man weitere Regeln hinzufügen, um das Gateway zu schützen und die Weiterleitung des Verkehrs einzuschränken.

Die Sonderbehandlung des Mail Submission Port erreichen wir dadurch, dass wir die Firewall-Markierung 0x1 für diesen besonderen Fall wieder löschen (“-A PREROUTING -i br-ff3l -p tcp –dport 587 -j MARK –set-mark 0x0/0xffffffff”). In der Folge werden Verbindungen auf den Mail Submission Port nicht mehr über die Tunnelverbindung (in unserem Beispiel “tun0″) umgeleitet.

Zusätzlich ist es notwendig, das Masquerading für exakt diesen Verbindungstyp auf der WAN-Schnittstelle (in unserem Beispiel “eth0″) zu aktivieren (“-A POSTROUTING -o eth0 -p tcp –dport 587 -j MASQUERADE”). Optional fügen wir eine Regel in der Tabelle “filter” ein, welche die Weiterleitung gestattet, jedoch auf 5 gleichzeitige Verbindungen pro Quelladresse beschränkt (“-A FORWARD -i br-ff3l -o eth0 -p tcp –dport 587 -m connlimit –connlimit-upto 5 -j ACCEPT”). Diese Beschränkung soll den Missbrauch der Ausnahme, z.B. in Form von parallelisierten Wörterbuchattacken auf SMTP-Server, unter unserer WAN-IP unattraktiv machen. Im Anschluss laden wir die Firewall-Konfiguration neu:
$ service iptables-persistent restart
Ab sofort sollten wir in der Lage sein, aus dem Freifunk-Netz heraus e-Mails zu versenden. Voraussetzung hierfür ist, dass wir in unserem Mail-Klienten den Mail Submission Port für den Versand konfigurieren. Sind mehrere Gateways im Betrieb, muss die Firewallkonfiguration selbstredend auf allen Gateways angepasst werden.

Kommentare