PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables auf einzelplatz



ichitaka
11.07.04, 16:05
Hallo,
ich habe einen Samba Server aufgesetzt, der läuft.
Die Win2000 Rechner können sich mit ihm verbinden.

Dann wollte ich alle Ports auf dem Server im Intranet (192.168.1.60) sperren mit ausnahme von 135~139 445 und 53, weil da noch ein bind9 läuft. So sollen die Clients (192.168.1.10~90) per SMB auf den Server zugreifen können und DNS Anfragen starten können.

Aber wenn ich das Script mit den iptables-befehlen hochfahre, dann kann keiner der Clients mehr den Server finden.

Es wird Debian/Sarge mit Kernel 2.6. verwendet und dies ist die konfiguration:

Die Module:

ipt_LOG
ipt_state
ip_conntrack
iptable_filter
ip_tables


offene regeln:


$IPTABLES -A INPUT -p tcp -s $LAN -i $EXT_IP --dport 135:139 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s $LAN -i $EXT_IP --sport 135:139 -j ACCEPT
$IPTABLES -A INPUT -p udp -s $LAN -i $EXT_IP --dport 135:139 -j ACCEPT
$IPTABLES -A INPUT -p udp -s $LAN -i $EXT_IP --sport 135:139 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXT_IP --sport 135:139 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXT_IP --dport 135:139 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -o $EXT_IP --sport 135:139 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -o $EXT_IP --dport 135:139 -j ACCEPT

$IPTABLES -A INPUT -p tcp -s $LAN -i $EXT_IP --dport 445 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s $LAN -i $EXT_IP --sport 445 -j ACCEPT
$IPTABLES -A INPUT -p udp -s $LAN -i $EXT_IP --dport 445 -j ACCEPT
$IPTABLES -A INPUT -p udp -s $LAN -i $EXT_IP --sport 445 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXT_IP --sport 445 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXT_IP --dport 445 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -o $EXT_IP --sport 445 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -o $EXT_IP --dport 445 -j ACCEPT

$IPTABLES -A FORWARD -p tcp -s $LAN -i $EXT_IP --dport 135:139 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s $LAN -i $EXT_IP --sport 135:139 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s $LAN -i $EXT_IP --dport 135:139 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s $LAN -i $EXT_IP --sport 135:139 -j ACCEPT

$IPTABLES -A FORWARD -p tcp -s $LAN -i $EXT_IP --dport 445 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s $LAN -i $EXT_IP --sport 445 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s $LAN -i $EXT_IP --dport 445 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s $LAN -i $EXT_IP --sport 445 -j ACCEPT

Wie man unschwer erkennen kann bin ich schon sehr verzweifelt, da ich alle erdenklichen verbindungen zugelassen habe.

Ich bin für jede Hilfe dankbar,

ichitaka

lalilu
11.07.04, 16:33
Log doch mal mit, was da verworfen wird:

iptables -A INPUT -i $EXP_IP -j LOG --log-level warning --log-prefix "iptables_in: "
iptables -A OUTPUT -o $EXP_IP -j LOG --log-level warning --log-prefix "iptables_out: "

Dann solltest du sehen können, was verworfen wird.
Noch was: Was ist denn bei dir $EXT_IP? Ist das das richtige Interface?

Bubble
11.07.04, 22:43
Hi ichitaka,

erste Vermutung: Du hast keine Regeln für Port 53 (DNS). Verwenden die Clients für die Verbindung zu diesem Rechner denselben als Nameserver? Falls ja, klappt die Namensauflösung natürlich nicht ...

Falls es das nicht ist:

Auf die FORWARD-Regeln kannst du komplett verzichten, die gelten nur für Pakete, die durch deinen Rechner geroutet werden sollen. Da dein Rechner bzgl. SMB und DNS allerdings die "Endstation" ist, landet keines dieser Pakete in der FORWARD-Chain.

Zudem wäre es in der Tat - wie lalilu geschrieben hat - interessant zu wissen was sich hinter $LAN und vor allem auch $EXT_IP verbirgt. Ich schlage vor du postest uns entweder mal den Output von

/sbin/iptables -t filter -L

oder noch besser du hängst das Skript selbst als Datei mit an.

Btw, bist du sicher dass das SMB-Protokoll ausser den von dir genannten Ports keine mehr verwendet? Und zweitens, müssen die Ports auch auf Client-Seite erreichbar sein?
Bubble

jduck01
12.07.04, 10:01
Hi,

Das Windows-Protokoll sendet auch auf der Broadcast-Adresse.
Du müsstest diese auch noch freischalten und zwar von deinem Linux-Server aus

$IPTABLES -A INPUT -p udp -s $LAN -d $BROADCAST--sport 135:139 -j ACCEPT
$IPTABLES -A OUTPUT -p udp-s $BROADCAST --sport 135:139 -j ACCEPT

Versuch es damit noch zusätzlich. Vielleicht reicht das schon.

Grüsse
JDuck01

cane
12.07.04, 17:06
Lass Dir ein Iptables Script auf www.harry.homelinux.org generieren.

Da kannst Du schön nachvollziehen welche Ports Du öffnen mußt...

mfg
cane

ichitaka
13.07.04, 15:06
Ihr seit alle ganz hilfsbereit,
seit vier Jahren poste ich zum Ersten mal wieder in einem Linuxforum. Danke für den grossen Response.

lalilu --> ich loge das mal mit und schieb es dann hier unter. Dauert sicher bis Donnerstag Nachmittag.

Bubble --> richtig, doch ich war eben verzweifelt und nachdem ich festgestellt hatte, dass nichts läuft ohne lo device, dachte ich mir, dass ein Connect von eth0 zu lo auch in der Forward Tabelle landet. Aber falsch gedacht.

jduck01 --> auch das werde ich versuchen. Antwort dann am Donnerstag. Ich nehme an du meinst mit $BROADCAST die Netmask 255.255.255.255, oder?

cane --> eh ne super adresse. Habe auch gleich auf der gleichen Domain ein HowTo für snort gesehen. Wird gemacht cane.

all --> wollte beim ersten Treat nicht gleich in die Vollen steigen aber wegen der grossen Nachfrage ;) im Anhang das volle Script. Ich habe es als .txt Datei getarnt. Dadurch sind natürlich EOL Tags eingefügt. Diese Fehlerquelle ist also ausgeschlossen, da ich sie im Originalscript nicht habe.

Dank schon mal,
bis Donnerstag.

lalilu
13.07.04, 15:56
Hab das script jetzt mal kurz (!) überflogen.

Frage: Warum grepst du denn da rum, um die externe IP-Adresse rauszukriegen? bei iptables übergibt man normalerweise das Inteface, z. B.:

iptables -A OUTPUT -p tcp -o eth0 --sport 445 -j ACCEPT

Zumindest hab ich das bisher immer so gemacht :ugly:
'man iptables' scheint mir übrigens recht zu geben:

| -o, --out-interface [!] name
| Name of an interface via which a packet is going to be sent

ichitaka
14.07.04, 22:19
hi cane,
www.harry.homelinux.org: wirklich tolle Seite. Aber mein Problem konnten die nicht lösen. Zumal das dort erstellte Script voraussetzt, dass es sich um einen Router handelt, also forwardingrules erstellt werden und es auch mit zwei Interfacekarten generiert werden muss, eine allein geht nicht. Ausserdem haben die nur die Ports 137~139 frei gegeben. Meines Wissens aber sollten mindestens noch 135 und 445 frei sein. Na, die Welt ist eben nicht perfekt.

Aber die HowTo's auf der Site sind toll.

ichitaka

Morgen gibt es die Logs aus der Firewall.

ichitaka

cane
15.07.04, 07:26
Zumal das dort erstellte Script voraussetzt, dass es sich um einen Router handelt, also forwardingrules erstellt werden und es auch mit zwei Interfacekarten generiert werden muss, eine allein geht nicht

Man kann das Script auch mit einer Netzwerkkarte generieren --> einfach im 2. Schritt eine weglassen. --> es werden keine Forwardingrules erstellt...

mfg
cane

ichitaka
18.07.04, 00:14
Stimmt, man kann auch nur Eine angeben. Da muss ich beim letzten mal was falsch gemacht haben. Ich werde das so generierte Script mal am Monatg einsetzen.

Vorerst hier mal die Logs: Liegen im Anhang. Am Anfang der Datei habe ich die iptables Befehle mit dem LOG-tag eingefügt. Ich werde aus dem Output nicht schlau. Jedenfalls nicht in Hinsicht meines Problemes.

Sorry, dass ich erst heut poste, da hat ein Kunde seinen gesammten Outlookinhalt verloren und wir suchten wie die Blöden nach Backups.

Bubble
22.07.04, 18:39
Vorerst hier mal die Logs: Liegen im Anhang. Am Anfang der Datei habe ich die iptables Befehle mit dem LOG-tag eingefügt. Ich werde aus dem Output nicht schlau. Jedenfalls nicht in Hinsicht meines Problemes.


Was genau meinst du? Geht das jetzt inzwischen?
Bubble

ichitaka
01.08.04, 13:21
bubble, also wirklich, noch deutlicher kann man wohl kaum sagen, dass man ein Problem hat. Natürlich habe ich zu dem Zeitpunkt, als ich die Logs eingefügt habe noch keinen Erfolg gehabt. Sprich es funzte nicht. Ich wurde einfach um die Logs gebeten, richtig so.

Aber, nun habe ich das firewallscript verwendet, welches automatisch auf www.harry.homelinux.org generiert wird. Und damit klappt es einwandfrei und auf anhieb.

Also vielen Dank an alle.

Bis nächstes mal,

ichitaka

ps: werde mich jetzt mal mehr einbinden und newbeys unter die fingerkuppen greifen ;)