PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : erstmal nur ssh



schätzchen
07.08.02, 11:58
hi!

die suchfunktion im forum bringt ja eine ganze menge ergebnisse dazu, aber igendwie will keine bei mir so richtig funktionieren.
ich habe derzeit ein einfaches script was alles erlaubt und routet.

ich möchte mir erstmal ein firewall script schreiben, indem alles gedroppt wird und danach erstmal nur der ssh zugang fürs lan und inet freigegeben wird. dann bastel ich mir den rest selber dazu bis es geht.
das prob ist, dass ich nicht am server sitze. jedesmal wenn ich das neue script ausführe und der ssh eintrag ist nicht richtig, dann muss ich erst zum server latschen monitor umstöpseln usw... und mein altes script wieder ausführen.

mein server hat eth1 = inet (DSL), eth0 = lan
eth0 = 192.168.0.1

das sind meine anfänge:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -F
iptables -t nat -F
iptables -X #alle benutzerdefinierten regeln löschen


# ssh zugang erlauben #

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

ich hab beim ssh schon ne menge geändert und ausprobiert, aber irgendwie wills einfach nicht...

kann mir jemand sagen wie der eintrag für ssh richtig ist?


wäre dankbar für eure hilfe!

gruss schätzchen

phoen][x
07.08.02, 12:20
Hab ich was verpasst, oder musst du nicht noch ausgehenden Traffic erlauben, damit auch was zurueckkommen kann? Oder laeuft bei ssh alles ueber 22?

-phoen][x-
der keinen blassen Schimmer von Firewall hat :)

Tommy_20
07.08.02, 12:21
du brauchst noch eine regel für den output (irgendwie muss der server ja deinem client antworten)

so sehen meine regeln für ssh aus:

$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -i $INT -o $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPTABLES -A INPUT -i $EXT -p TCP --sport $highports --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

phoen][x
07.08.02, 12:34
@Tommy20:

Super ich hab richtig geraten. :)
Aber du hast ja jetzt saemtlichen Traffic nach aussen erlaubt, ist es nicht moeglich nur ssh traffic zu erlauben? Port basiert kann man das sicherlich nicht machen, da ausgehend ja immer zufaellige unprivilegierte Ports genommen werden - und wie gesagt kenn ich mich mit Firewalls gar nicht aus - aber eigentlich muss es doch moeglich sein, ausgehende Pakete zu analysieren und wirklich nur ssh datenpakete zuzulassen, oder nicht?

Hast du eine schlaue Idee?

-phoen][x-

schätzchen
07.08.02, 13:13
hi!

genau so hab ich mir das vorgestellt...
ich musste es nur etwas anpassen:

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

und zwar hab ich den --sport $highports rausgenommen.
sport = source-port, aber was ist mit highports gemeint?
wäre da z.b. der eintrag

--sport 1024:65535 entsprechend? was sagt dieser ausdruck dann aus?

danke schonmal
schätzchen

phoen][x
07.08.02, 13:20
Der Client verbindet zum Server indem er von einem lokalen zufaellig gewaehlten Highport (ein anderer Ausdruck ist unprivilegierter Port) eine Verbindung zum server und dort dem port 22 aufbaut.

"--sport 1024:65535 --dport 22" sagt nichts weiters aus: Der sourceport (auf dem client) ist im Bereich von 1024-65535, und der destinationport (auf dem server) ist 22.

Hmm, iptables ist ja gar nicht so schwierig..

-phoen][x-

schätzchen
07.08.02, 13:32
das hört sich aber nicht danach an, dass du keine ahnung hast ;)

vielen dank!

jetzt werd ich mich mal ans basteln machen...

schätzchen

phoen][x
07.08.02, 13:33
Ich hab keine Ahnung von firewalls, aber ich hab Ahnung vom osi- und ip-modell.

Viel Spass beim Basteln.

-phoen][x-

bom
07.08.02, 13:43
Original geschrieben von phoen][x
Ich hab keine Ahnung von firewalls, aber ich hab Ahnung vom osi- und ip-modell.
[x-

Müsste das nicht ISO/OSI-Modell und TCP/IP-Modell bzw. DoD-Modell heissen :D :D :D

phoen][x
07.08.02, 13:52
tcp hab ich weggelassen da ich der Meinung bin dass udp auch eine grosse Rolle spielt. In Mathe aufgepasst? kgV ist das Stichwort. :P

Ausserdem spricht man allgemein von dem "OSI-Modell" nicht von dem "ISO/OSI-Modell", dass es von der ISO ist ist ja auch unbedeutend.

Es waere schoen, wenn du mir wenigstens meine Frage die ich weiter oben gestellt habe beantworten koenntest, damit der ganze Traffic nicht ganz umsonst war.

[/rant]

-phoen][x-

schätzchen
07.08.02, 19:57
hi!

also so ein, zwei fragen hab ich doch noch...

wenn ich den --sport mit $highports angebe, dann muss ich doch diese vorher erst definieren oder?

z.b. set highport = 1024:65535

ich hab ein bisschen gelesen und gefunden, dass 1024:65535 unpreviligierte ports sind und 1000:1023 common ssh source ports.
ist das richtig?
wenn ja, kann ich ja nur die common ports angeben und bin dabei ein stückchen mehr "geschützt" oder?


ist es egal wie ich die regeln im script schreibe?

ist z.b. $IPTABLES ...... das gleiche wie iptables.....
wo ist da der unterschied oder nutzen? oder ist das nur reine formsache?

danke grüsse schätzchen

bom
08.08.02, 00:51
Super ich hab richtig geraten.
Aber du hast ja jetzt saemtlichen Traffic nach aussen erlaubt, ist es nicht moeglich nur ssh traffic zu erlauben? Port basiert kann man das sicherlich nicht machen, da ausgehend ja immer zufaellige unprivilegierte Ports genommen werden - und wie gesagt kenn ich mich mit Firewalls gar nicht aus - aber eigentlich muss es doch moeglich sein, ausgehende Pakete zu analysieren und wirklich nur ssh datenpakete zuzulassen, oder nicht?

Wenn Du eine rule einfügst, die nur SSH outgoing erlaubt, sollte die FW normalerweise so intelligent sein, dass sie unabhängig vom source port merkt, um welches Protokoll es sich handelt. Steht ja schliesslich im TCP/UDP header drin. Für den Rückweg, also von aussen nach innen gilt dasselbe.
Ob IPTABLES so intelligent ist, weiss ich nicht. Aber die Firewalls die ich besser kenne(SonicWall, CheckPoint Firewall-1/VPN-1, Novell Bordermanager) können das.

Das ruleset sollte dann bildlich so aussehen:

intLAN --> any --> SSH --> allow
any --> intLAN --> any --> deny

Ich denke mal, dass IPTABLES nach dem First Rule Match Prinzip arbeitet und daher das ruleset von oben nach unten abarbeitet. Daher ist dann auch die Reihenfolge der rules wichtig.

HTH