PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPtables nur für mail



sprudel123
16.05.04, 20:00
Hallo,
habe eine squid als Proxy und möchte das Clients im Netzwerk sich Ihre Mails selbst beim Provider abholen können ( Ohne Mailserver auf dem Proxy)
Kann mir da jemand mal mitteilen, wie ein solches Masquerading-Script nur für
die beiden Mailports aussehen sollte. So fürchterlich lang dürfte es ja nicht sein. Vielen Dank! :confused:

L00NIX
17.05.04, 07:35
Auf dem Proxy (der Annahmsweise auch Gateway zum Internet ist):



#!/bin/sh
...

echo 1 > /proc/sys/net/ipv4/ip_forward

...

/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE -o ppp0

...

# Mail empfangen
# POP3
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 110 --dport 1024: -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 110 -j ACCEPT

# POP3s
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 995 --dport 1024: -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 995 -j ACCEPT

# IMAP
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 143 --dport 1024: -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 143 -j ACCEPT

# IMAPs
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 993 --dport 1024: -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 993 -j ACCEPT

# Mail senden
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 1024: --dport 25 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 25 --dport 1024: -j ACCEPT

...



Die Netzwerkschnittstellen eth1 und ppp0 entsprechend anpassen. Hier steht ppp0 für dein Point-To-Point Device (bei ISDN: ippp0, Modem/DSL: ppp0) und eth1 für die NIC ins interne Netz.

Die Stellen mit den Punkten noch entsprechend ergänzen. ;)

aycaramba
17.05.04, 08:13
Sollte man hier nicht besser die Stateful-Fähigkeiten von iptables für die Antwortpakete nutzen ?

L00NIX
17.05.04, 08:41
Sollte man hier nicht besser die Stateful-Fähigkeiten von iptables für die Antwortpakete nutzen ?

Gut, dann sehen die Zeilen eben z.B. so aus:



...

/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 110 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 110 -m STATE NEW,RELATED,ESTABLISHED -j ACCEPT

...

3qualizer
17.05.04, 18:05
zwei kleine Fragen:
- würden denn die Regeln nicht nur dann greifen wenn die policy von forward nicht auf accept steht?
- wieso sollte der Quellport immer 1024 sein, oder ist das ein Platzhalter ab 1024?

Harry
17.05.04, 19:06
Gut, dann sehen die Zeilen eben z.B. so aus:



...
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -p tcp --sport 110 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 110 -m STATE NEW,RELATED,ESTABLISHED -j ACCEPT
...

Naja man kann sich auch 'nen Wolf schreiben ;)

Besser wäre folgendes:

IPT=/sbin/iptables
EXTIF=ppp0

# Default-Policy auf DROP
$IPT -A FORWARD -P DROP
# FORWARD Connection-Tracking
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# SMTP
$IPT -A FORWARD -o $EXTIF -p tcp --dport 25 -m state --state NEW -j ACCEPT
# POP3
$IPT -A FORWARD -o $EXTIF -p tcp --dport 110 -m state --state NEW -j ACCEPT
# ... weitere Protokolle ...
# ...
$IPT -A FORWARD -J LOG --log-prefix "FORWARD REJECT"
$IPT -A FORWARD -J REJECT

Wenn Du etwas tiefer in gute iptables-Regelsätze Einblick nehmen möchtest, dann kann ich Dir meine Seite unter www.harry.homelinux.org, die FAQs, HOWTOs und den iptables Generator dort empfehlen.

Harry

sprudel123
17.05.04, 20:41
Na da sag ich erstmal dankeschön und werde das austesten.
Muß zu dem script jetzt noch etwas hinzu?..Ich meine das masq. soll ausschließlich für mail funzen, nothing else...
Ach nochwas...weiß jemand auf welchen ports die Yahooonlinegames laufen?
Könnte man die nicht so rein theoretisch auch masquieren?
an den clients hinter dem squid funzen die nämlich nicht.

www.yahoo.de>spiele>z.B. Schach

sprudel123
17.05.04, 20:51
@haary--

habe mal Dein scriptgenertor probiert. Um nun nur Mailmasquaerading zuzulassen, ist also kein häckchen bei Masquerading zu setzen?
Bzw bei diesem script:
# Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

die Zeile iptables XXX wieder auszukommentieren?

Tolle Seite übrigens...fehlt vielleicht der HInweis das es nicht für Windows-Anwender ist---klick--klick--klick-.-- :D

L00NIX
18.05.04, 09:07
@Harry:
Mal eine Frage...

Ist ein Unterschied zwischen



$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


und



$IPT -A FORWARD -i ppp0 -o eth1 -p tcp --sport 110 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i eth1 -o ppp0 -p tcp --sport 1024: --dport 110 -m STATE NEW,RELATED,ESTABLISHED -j ACCEPT


und wenn ja, welcher?


PS:
Sorry, ich habe das Manual dazu mal nicht konsultiert...

Harry
18.05.04, 11:43
# Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

die Zeile iptables XXX wieder auszukommentieren?
Die Zeile benötigst Du, wenn Du generell Masquerading für Dein Output-Interface (eth1) benötigst. Welche Verbindungen Du dann von innen nach aussen überhaupt zulässt, das definierst Du über die Code-Snippets von LOONIX oder über meine weiter oben.

Harry

Harry
18.05.04, 11:46
@Harry:
Mal eine Frage...

Ist ein Unterschied zwischen



...


und wenn ja, welcher?
Hallo LOONIX,

die Frage kann ich so nicht beantworten, da die erste Zeile Kontext-sensitiv arbeitet, Du sie hier aber aus dem Kontext herausgenommen hast.
Schau' Dir doch einfach die Zeile nochmal genauer an und denke darüber nach, was sie in einem bestimmten Kontext (wie dem oben beschriebenen) bewirken könnte - ich bin sicher, Du kommst von allein drauf :)

Harry

L00NIX
18.05.04, 12:18
Hallo LOONIX,

die Frage kann ich so nicht beantworten, da die erste Zeile Kontext-sensitiv arbeitet, Du sie hier aber aus dem Kontext herausgenommen hast.
Schau' Dir doch einfach die Zeile nochmal genauer an und denke darüber nach, was sie in einem bestimmten Kontext (wie dem oben beschriebenen) bewirken könnte - ich bin sicher, Du kommst von allein drauf :)

Harry

Neinein... ich weiß schon, was die von dir angebotenen Regeln tun.

Was ich wissen will ist ob es einen Unterschied macht, generell alle RELATED und ESTABLISHED Verbindungen zulässt (dein Beispiel) oder wenn man die Regeln noch mit Portnummern (evtl. IP-Adressen bzw. weitere Einschränkungen) verknüpft.

Gut, wenn man passive FTP nutzt, ist diese Einschränkung über Ports wieder nutzlos, da man sowieso alle Verbindungen der Ports über 1024 beidseitig zulassen muss... aber sonst?

L00NIX
18.05.04, 12:39
- wieso sollte der Quellport immer 1024 sein, oder ist das ein Platzhalter ab 1024?

Oooops, ganz übersehen...

Es heißt 1024: ! (der Doppelpunkt ist wichtig)

Stattdessen könnte man auch schreiben 1024:65535, sprich: Alle Ports über 1024. Diese werden von Clients benutzt.

Harry
18.05.04, 12:47
Gut, wenn man passive FTP nutzt, ist diese Einschränkung über Ports wieder nutzlos, da man sowieso alle Verbindungen der Ports über 1024 beidseitig zulassen muss... aber sonst?
Von der Sicherheit gibt es m.E. keine Vorteile. Nur wenn man schon Connection-Tracking (oder stateful inspection) benutzt, dann auch richtig ;) Es reicht eine Generalregel in der FORWARD-Queue, die _alle_ Pakete/Datagramme zuläßt, die zu einem erlaubten Verbindungsaufbau gehören.
Mit der Definition von Regeln, die pro Verbindungsaufbau alle Nachfolgepakete/-datagramme berücksichtigen, wird der Regelsatz wesentlich umfangreicher und daher potentiell fehlerträchtiger.

Der Regelsatz wird durch konsequentes Ausnutzen der Connection-Tracking-Fähigkeiten übersichtlicher, weil kürzer und das führt auch bei der Regelabarbeitung zu einer besseren Performance des Paketfilters. :)

Harry