Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables und ssh
Hallo zusammen,
ich bin grade dabei mich etwas mit iptables zu beschäftigen und versuche den SSH-Zugriff auf meinen Rechner nur von einer bestimmten IP zu erlauben. Leider funktioniert das gar nicht.
Mein Befehl ist der folgende:
iptables -A INPUT -p tcp -s ! 192.168.100.5 --dport 22 -j DROP
Was mache ich falsch? Ich gebe den Befehl ein und kann dennoch von 192.168.100.2 und 192.168.100.3 zugreifen.
Hast du eventuell noch andere Rules welche den Zugriff unter Umständen schon vor dieser Regel erlauben?
Zeige mal den Ouput von
iptables -nvL
Rain_maker
21.07.09, 11:33
Anderer Ansatz:
Das lässt sich auch ohne iptables und über "/etc/hosts.allow" erledigen.
Was mache ich falsch? Ich gebe den Befehl ein und kann dennoch von 192.168.100.2 und 192.168.100.3 zugreifen.Ich vermute, dass Du weiter vorne bereits alles erlaubst. Der erste Treffer in der Iptables-Queue gewinnt;-)
Und wenn Du Iptables verwenden willst, wuerde ich den umgekehren Weg gehen. Zuerst alles verbieten und dann selektiv erlauben, was man braucht. So "vergisst" man keine Dienste/Adressen/Ports.
Gruss Pit.
Anderer Ansatz:
Das lässt sich auch ohne iptables und über "/etc/hosts.allow" erledigen.
... oder über die sshd_config.
Omg, oh ja. Ihr habt ja so Recht. Ich hatte ein Befehl drin der alles erlaubt, nach einem reboot und erneuten Eingabe der Regel hat es funktioniert. So einfach kann es sein.
Gibt es eine Möglichkeit alle Regeln mit einem Befehl zu entfernen?
Okay,
iptables -F
Dankeschön!
öm kann es sein das das ! vor der IP nur sagt das alle ips ausser diese ip ... kann mich ja irren aber im howto hier (http://www.64-bit.de/dokumentationen/netzwerk/e/002/DE-IPTABLES-HOWTO-5.html) stehts so ... stichwort: negierter wert ....
das würde dann auch den zugriff von der 2 und 3 erklären, generell befürworte ich auch die /etc/hosts.allow
Hallo zusammen,
ich bin grade dabei mich etwas mit iptables zu beschäftigen und versuche den SSH-Zugriff auf meinen Rechner nur von einer bestimmten IP zu erlauben. Leider funktioniert das gar nicht.
Mein Befehl ist der folgende:
iptables -A INPUT -p tcp -s ! 192.168.100.5 --dport 22 -j DROP
Was mache ich falsch? Ich gebe den Befehl ein und kann dennoch von 192.168.100.2 und 192.168.100.3 zugreifen.
das ! negiert schon, aber das heisst das alle ausser 192.168.100.5 auf Port 22 keinen Zugriff haben. Die Regel hätte schon gestimmt.
da wir grad beim thema iptables und ssh sind
ich möchte von einem server ssh auf eine netzwerkkarte (eth1 zb) freigeben , das sollte hiermit geschehen:
iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
vom server auf das netzwerk komme ich raus, aber will ich vom netzwerk wieder rein dann hab ich keine chance , erst wenn ich die firewall wieder runterfahr .... oder hab ich irgendwas vergessen ?
den Status "NEW" hast du vergessen. Du lässt in jetzt nur Pakete die zu bereits bestehenden Verbindungen gehören zu.
jub stimmt, aber leider hab ich das problem nach wie vor
ich kann von dem server heraus connecten aber nichtmehr vom netzwerk aus in den server ...
HirschHeisseIch
21.07.09, 14:26
Vielleicht, wie bei TE auch, eine Regel vorher, die die Verbindung verbietet?
bis zu port 22 steht nur das noch im script drinn :
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Naja, du hast die Policies auch auf accept, da kann alles auf alles connecten. Eigentlich müsste dein Server (auch Port 22) so oder so auf jedem Interface erreichbar sein, ungeachtet der beiden Regeln am Ende.
EDIT:
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Das macht keinen Sinn weil du nur den Traffic ausgehend vom Port 22 zulassen willst. Auch wenn du ne SSH Verbindung aufbaust wird als Ausgangsport nicht Port 22 verwendet sondern irgend was unpriviligiertes (> 1024). Deswegen hier auch --dport, nicht --sport.
Rain_maker
21.07.09, 15:24
gelöscht (da lag wohl noch was im browsercache)
Von mir? Sorry :rolleyes:
nach den regeln kommt ja noch im script das hier:
###### Anschließend schalten wir die Chains wieder auf Drop
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
also is dann schon einiges dicht ;o)
also würde für den output statt --sport auch ein --dport reinkommen ?
iptables -A OUTPUT -o eth1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
oder muss ich die unpriviligierten ports auch noch aufführen ?
Nee die unpriviligierten Ports brauchst du nicht ausfüllen. Ich denke mal dir kanns wurscht sein von welchem Port aus dein SSH Client zu einem Server connected. Solange alle SSH Server auf Port 22 lauschen (was nicht umbedingt immer so sein muss) sollte die Regel so stimmen.
Wieso aber dein SSH Server nicht erreichbar ist kann ich mir nicht genau erklären... es sei denn der wird via eth0 statt eth1 angesprochen. Ansonsten hab ich da keine Idee.
definitiv liegts an der zeile hier
iptables -A OUTPUT -p tcp --sport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ich habe jetz mal auf einem lokalen linuxserver einfach mal ein ganz einfaches script geschrieben:
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ich kann mich einloggen per ssh
aber
wenn ich nun weiter von diesem server auf einen anderen server möchte (zb macht sowas der backup-manager per scp) bekomme ich keine verbindung
schalte ich die firewall aus , dann gehts
HirschHeisseIch
22.07.09, 12:18
Wie oben schon erwähnte, geht die Verbindung nicht von Port 22 aus, sondern von einem unpriveligierten...
und das bedeutet ?
andeutungen helfen leider nicht weiter ...
Das bedeutet du solltest fürhere Posts nochmals lesen um eine Antwort zu finden.
ziemlich merkwürdige antwort da oben auch nix andres steht ...
ein beispiel mit den ports wäre hilfreicher ... andeutungen sind glaub nicht wirklich der sinn eines forums ...
ok, wenn Du es konkret haben willst: eine Ausgehende ssh-Verbindung nutzt einen Highport, meist irgendwas unpriviligiertes über 1024 und unter 65535.
what the...?
Also, dieser Post ist gemeint: http://www.linuxforen.de/forums/showpost.php?p=1719074&postcount=16
Da steht:
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Das macht keinen Sinn weil du nur den Traffic ausgehend vom Port 22 zulassen willst. Auch wenn du ne SSH Verbindung aufbaust wird als Ausgangsport nicht Port 22 verwendet sondern irgend was unpriviligiertes (> 1024). Deswegen hier auch --dport, nicht --sport.
Und du hast genau diesen Fehler in der Config die du zu letzt gepostet hast noch drin.
ein beispiel mit den ports wäre hilfreicher ... andeutungen sind glaub nicht wirklich der sinn eines forums ...
Die Lösung stand da, du hast sie nur nicht gesehen. Ich denke mal ander Forenteilnehmer dürfen schon erwarten das man sich ein wenig Mühe gibt wenn einem schon versucht wird zu helfen.
Nichts für ungut.
an asi_dkn ...
genau das meinte ich , wenn einer fragt wo sich ne strasse befindet dann zeigt man über den fluss ... höfliche menschen zeigen aber auch die brücke um über den fluss zu kommen ...
ich finds immerwieder mies wie leute mit wissen andere im regen stehen lassen und sich nicht herablassen können um auf der ebene des fragenden demjenigen das auch so zu verklickern das der das auch versteht ...
in diesem sinne vielen dank an marc der mir den entscheidenden tip so gegeben hat das ich ihn auch so verstehe ...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.