Sicherer Zugang von aussen wie?
Hallo allerseits, ich möchte mir (Flatrate sei Dank) einen SSH-Zugang vom Internet aus auf meinen Rechner erlauben. Nun soll aber nicht jedes Script-Kiddie mit simplen Passwort-Attacken das Passwort und den Nutzername erraten können. (Nun ja für den hausinternen Gebrauch werden keine so wahnsinnig komplexen Passwörter und Namen benutzt). Also dachte ich mir ich lege einen Benutzer mit komplexem Namen und Passwort an, erlaube nur diesem in /etc/ssh/sshd_config den Zugang von nicht-lokalen Rechnern. Da angekommen muß man nun ein ssh auf den "richtigen" Benutzer machen. Soweit so gut. Nun möchte ich aber die Rechte des "externen" Benutzers soweit wie möglich einschränken, im Falle daß es ein ungebetener Besucher schafft 'reinzukommen. Er soll daher einzig ein ein ssh user@localhost ausführen dürfen. Kein Spaziergang im Dateisystem usw. Also muß eine chroot-Umgebung her. Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools? Macht das ganze überhaupt Sinn? (Security by obscurity?) Was wären Alternativen? Danke schon mal Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Macht das ganze überhaupt Sinn? (Security by obscurity?) Was wären Alternativen?
ich mache es so, dass ich mit entsprechend großen ssh-Keys arbeite und den Zugang über Passwort nicht erlaube. Das ist ein relativ einfach umzusetzender Weg, der die Sicherheit schon einmal zeimlich erhöht... Gruß Martin
Am Dienstag, 8. März 2005 11:01 schrieb Hans-Martin Flesch:
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Macht das ganze überhaupt Sinn? (Security by obscurity?) Was wären Alternativen?
ich mache es so, dass ich mit entsprechend großen ssh-Keys arbeite und den Zugang über Passwort nicht erlaube. Das ist ein relativ einfach umzusetzender Weg, der die Sicherheit schon einmal zeimlich erhöht...
irgendwie bin ich blind, aber wie kann ich das bei einem einzigen Benutzer denn in /etc/ssh/sshd_config einstellen? Ich möchte also für einen Benutzer nur die Authorisierung via key-file, für alle anderen via Passwort oder key-file. (Hintergrund: ich möchte mich schon noch als root auf der lokalen Kiste per ssh einloggen können, aber eben das Passwort eingeben müssen, zum eigenen Schutz :-) Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Zitat von "Dr. Jürgen Vollmer"
Am Dienstag, 8. März 2005 11:01 schrieb Hans-Martin Flesch:
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
COMMAND= in $HOME/.ssh/authorized_keys sollte für eine chroot-Umgebung oder dergleichen der richtige Aufhänger sein.
ich mache es so, dass ich mit entsprechend großen ssh-Keys arbeite und den Zugang über Passwort nicht erlaube. Das ist ein relativ einfach umzusetzender Weg, der die Sicherheit schon einmal zeimlich erhöht...
irgendwie bin ich blind, aber wie kann ich das bei einem einzigen Benutzer denn in /etc/ssh/sshd_config einstellen?
Warum nicht für alle? Ansonsten vielleicht in $HOME/.ssh/sshd_config des Users oder so?
Ich möchte also für einen Benutzer nur die Authorisierung via key-file, für alle anderen via Passwort oder key-file. (Hintergrund: ich möchte mich schon noch als root auf der lokalen Kiste per ssh einloggen können, aber eben das Passwort eingeben müssen, zum eigenen Schutz :-)
Warum da nicht auch übern Public Key authentifizieren, das ist eigentlich deutlich sicherer weil der viel länger ist als das Passwort. Zusätzlich kannst Du ja den Private Key lokal mit nem Passwort sichern. -- Erhard Schwenk Akkordeonjugend Baden-Württemberg - http://www.akkordeonjugend.de k-itx it-dienstleistungen - http://www.k-itx.net
Am Mittwoch, 9. März 2005 12:24 schrieb Erhard Schwenk:
Zitat von "Dr. Jürgen Vollmer"
:
irgendwie bin ich blind, aber wie kann ich das bei einem einzigen Benutzer denn in /etc/ssh/sshd_config einstellen?
Warum nicht für alle? Ansonsten vielleicht in $HOME/.ssh/sshd_config des Users oder so?
nun ja $HOME/.ssh/sshd_config gibt's nicht (meines Wissens)
Ich möchte also für einen Benutzer nur die Authorisierung via key-file, für alle anderen via Passwort oder key-file. (Hintergrund: ich möchte mich schon noch als root auf der lokalen Kiste per ssh einloggen können, aber eben das Passwort eingeben müssen, zum eigenen Schutz :-)
Warum da nicht auch übern Public Key authentifizieren, das ist eigentlich deutlich sicherer weil der viel länger ist als das Passwort. das will ich ja, aber eben keine Authentifierung mittels Passwort, allerdings nur für _einen_ bestimmten User. Bei anderen Usern (insb. root) soll ich das Passerot angeben müssen. Ich möchte keine authorized_keys für root haben, aus reinem selbstschutz!
Mir sind bis jetzt nur folgende Lösungen eingefallen: 1. einen zweiten sshd mit anderer Konfiguration laufen lassen. 2. in /etc/shadow das Passwort des Users löschen Letzters habe ich gemacht. Damit kann man sich ohne den Schlüssel nicht mehr einloggen und eine Passwort-Attacke funktioniert nicht. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer wrote:
Hallo allerseits,
ich möchte mir (Flatrate sei Dank) einen SSH-Zugang vom Internet aus auf meinen Rechner erlauben. Nun soll aber nicht jedes Script-Kiddie mit simplen Passwort-Attacken das Passwort und den Nutzername erraten können. (Nun ja für den hausinternen Gebrauch werden keine so wahnsinnig komplexen Passwörter und Namen benutzt).
Hi Jürgen Ganz so extreme Massnahmen treffe ich nicht... Aber was meiner Meinung nach schon viel ausmacht: Lass den SSH gegen aussen auf einem highhighport laufen (zB 58733) - security through obscurity... Nur wenige scannen tatsächlich 0-65535 durch und WENN würde das auffallen.... Hingegen ein SSH auf der 22 wird schon sehr schnell entdeckt... Dann erlaube ich nur login via Zertifikat und nicht per Passwort und das auch nur für einen einzigen unprivilegierten User Ich denke mal das schützt so schon ganz gut mit chroot und co hab ich leider keine erfahrung - aber die Frage stellt sich ob das auch wirklich noch nötig ist - ausser das sei der FBI-Hauptserver? ;) Grüsse Matti
Dr. Jürgen Vollmer wrote:
Hallo allerseits,
ich möchte mir (Flatrate sei Dank) einen SSH-Zugang vom Internet aus auf meinen Rechner erlauben. Nun soll aber nicht jedes Script-Kiddie mit simplen Passwort-Attacken das Passwort und den Nutzername erraten können. (Nun ja für den hausinternen Gebrauch werden keine so wahnsinnig komplexen Passwörter und Namen benutzt).
Grundsätzlich keine Authentifizierung über Passwort, sondern nur über Public Key, der selbst natürlich mit Passwort geschützt ist. Damit muss ein Angreifer bereits über den Schlüssel UND das Passwort des Schlüssels verfügen. Die dadurch gewährleistete Sicherheit ist schon recht hoch. Wenn das nicht ausreicht und es möglich ist, kann man noch über TCP-Wrapper den Zugang nur von bestimmten IP-Adressen (IP der Firmen-Firewall) zulassen. Bis hierhin kann man mit recht wenig Aufwand eine sehr hohe Sicherheit aufbauen, danach beginnt der Bereich der Paranoiker, die SSH nur über Port-Knocking aktivieren, dies auf einen unüblichen Port legen usw. Sandy
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Hallo allerseits,
ich möchte mir (Flatrate sei Dank) einen SSH-Zugang vom Internet aus auf meinen Rechner erlauben. Nun soll aber nicht jedes Script-Kiddie mit simplen Passwort-Attacken das Passwort und den Nutzername erraten können. (Nun ja für den hausinternen Gebrauch werden keine so wahnsinnig komplexen Passwörter und Namen benutzt).
ein anderer Ansatz ging kürzlich über die Debian-Liste. Ich habs aber nicht ausprobiert. http://blog.andrew.net.au/2005/02/17 Setzt auf Netfilter auf und limitiert die Zugangsversuche. mfg Christian Paul -- Erfahrung heißt gar nichts. Man kann seine Sache auch 35 Jahre schlecht machen. [Kurt Tucholsky]
Hey Jürgen,
Kein Spaziergang im Dateisystem usw. Also muß eine chroot-Umgebung her.
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Ob das ganze Sinn macht ist oftmals Geschmackssache - bei Deinem Problem würde ich mir überlegen, ob andere den Account mitbnutzen sollen, was damit von diesen Leuten gemacht werden soll, etc. Falls nur Du den Account benutzt, würde ich mich an deiner Stelle mit dem, von denen anderen vorgeschlagenen, Public-Key-Verfahren zufrieden geben. Falls Du dich doch für eine chroot-Umgebung entscheiden solltest, gibt es dafür ein nettes (engl. - aber nicht schwer) Howto: http://www.tjw.org/chroot-login-HOWTO/ Nur kurz nebenbei: Vom Thema "Port verschieben" halte ich persönlich garnichts - wenn jemand wirklich an Deinem Server interessiert ist, wird es sich von sowas nicht abschrecken lassen. Und Script-Kids probieren Namen wie root, user, admin (...). Da ist es in meinen Augen noch sinnvoller per iptables nur eine gewisse Anzahl von New-Paketen auf den 22er zuzulassen und danach alles von der ip für einen gewissen Zeitraum zu dropen.
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Hallo allerseits,
... Er soll daher einzig ein ein ssh user@localhost ausführen dürfen. Kein Spaziergang im Dateisystem usw. Also muß eine chroot-Umgebung her.
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Hallo, wenn nur ein ssh user@localhost möglich sein soll, kannst du den ssh-Schlüssel auch gleich daran binden. So wirst du beim Anmelden mit diesem Schlüssel gleich weitergeletitet. Nachteil: Wenn jemand eingebrochen ist, sieht dieser die Passwortabfrage und erhält so den Namen des Nutzers auf dem Rechner. Das lässt sich aber auch irgendwie ändern (in der ssh-Config denk' ich) Beispiel: in der .ssh/authorized_keys: from="hostadresse oder ip",command="date" ssh-rsa AAAAB3...bQemJ7M= comment In diesem Beispiel wird das Komanndo "date" ausgeführt. An dieser Stelle ist dann ein "ssh user@localhost" notig Siehe auch: http://www.linux-magazin.de/Artikel/ausgabe/2002/09/ssh/ssh.html unter "Dienstbare Schlüssel erzwingen Kommandos" Mario
Am Dienstag, 8. März 2005 13:05 schrieb Mario Goppold:
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Hallo allerseits,
... Er soll daher einzig ein ein ssh user@localhost ausführen dürfen. Kein Spaziergang im Dateisystem usw. Also muß eine chroot-Umgebung her.
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Hallo,
wenn nur ein ssh user@localhost möglich sein soll, kannst du den ssh-Schlüssel auch gleich daran binden.
Und was ist wenn der Schlüssel abgefangen wird? Wie wäre es mit Radius-Server + 1x Passwort? Ich denke auch schon einige Zeit darüber nach, hatte aber noch keine Zeit mich damit näher zu beschäftigen. Das System soll ähnlich wie eine TAN-Liste funktionieren. Man druckt sich ein paar PW aus und hat dann von unterwegs einige Male Zugang. Jeder kann das PW beim Einwählen sehen und ausspionieren, da es nur 1x gilt. Al
Am Dienstag, 8. März 2005 13:37 schrieb Al Bogner:
Am Dienstag, 8. März 2005 13:05 schrieb Mario Goppold:
Am Dienstag, 8. März 2005 10:57 schrieb Dr. Jürgen Vollmer:
Hallo allerseits,
... Er soll daher einzig ein ein ssh user@localhost ausführen dürfen. Kein Spaziergang im Dateisystem usw. Also muß eine chroot-Umgebung her.
Nur: wie mache ich das, daß man beim Einloggen via ssh der Benutzer in einer chroot-Umgebung landet? Wie erstelle ich die chroot-Umgebung (Lib's Kommandos usw), gibt's Tools?
Hallo,
wenn nur ein ssh user@localhost möglich sein soll, kannst du den ssh-Schlüssel auch gleich daran binden.
Und was ist wenn der Schlüssel abgefangen wird?
Ok, aber die Verbindung selber könnte ja mit einer VPN abgesichert sein.
Wie wäre es mit Radius-Server + 1x Passwort? Ich denke auch schon einige Zeit darüber nach, hatte aber noch keine Zeit mich damit näher zu beschäftigen. Das System soll ähnlich wie eine TAN-Liste funktionieren. Man druckt sich ein paar PW aus und hat dann von unterwegs einige Male Zugang. Jeder kann das PW beim Einwählen sehen und ausspionieren, da es nur 1x gilt.
Ist das dann aber noch einfach Aufsetz-, administrierbar?
Al
Mario
Am Dienstag, 8. März 2005 15:31 schrieb Mario Goppold: ssel auch gleich daran binden.
Und was ist wenn der Schlüssel abgefangen wird?
Ok, aber die Verbindung selber könnte ja mit einer VPN abgesichert sein.
Keylogger? Ich sehe als Anwendungsfall, dass man kein _eigenes_ Notebook zur Verfügung hat und sich zu Hause einwählen will.
Wie wäre es mit Radius-Server + 1x Passwort? Ich denke auch schon einige Zeit darüber nach, hatte aber noch keine Zeit mich damit näher zu beschäftigen. Das System soll ähnlich wie eine TAN-Liste funktionieren. Man druckt sich ein paar PW aus und hat dann von unterwegs einige Male Zugang. Jeder kann das PW beim Einwählen sehen und ausspionieren, da es nur 1x gilt.
Ist das dann aber noch einfach Aufsetz-, administrierbar?
Das genau ist die Frage, ich habe mich da ja auch noch nicht durchgekämpft. Al
Hallo, Am Dienstag, 8. März 2005 13:37 schrieb Al Bogner:
Am Dienstag, 8. März 2005 13:05 schrieb Mario Goppold:
Hallo,
wenn nur ein ssh user@localhost möglich sein soll, kannst du den ssh-Schlüssel auch gleich daran binden.
Und was ist wenn der Schlüssel abgefangen wird?
Wie wäre es mit Radius-Server + 1x Passwort? Ich denke auch schon einige Zeit darüber nach, hatte aber noch keine Zeit mich damit näher zu beschäftigen. Das System soll ähnlich wie eine TAN-Liste funktionieren. Man druckt sich ein paar PW aus und hat dann von unterwegs einige Male Zugang. Jeder kann das PW beim Einwählen sehen und ausspionieren, da es nur 1x gilt.
Kann man das nicht interaktiv machen? Wenn ich mich eingewählt habe, kann ich auch das Passwort ändern. Da zu diesem Zeitpunkt die Übertragung verschlüsselt ist, kann niemand so einfach mithören. Oder in /etc/shadow 10 Passwörter ablegen nach dem Muster: $ passwd old password ? xxxxx new password ? yyyyy reenter new password ? yyyyy password changed $ su - # vi /etc/shadow /userx Yp s/userx/userx1 :wq #$ passwd ..... In /etc/shadow werden einfach die Passwortzeilen kopiert und die Benutzernamen weitergezählt. Beim login stört sich das System nicht an zusätzlichen Benutzern in shadow, solange die Einträge für den sich anmeldenden Benutzer in passwd und shadow übereinstimmen. Bin ich im System, editiere ich /etc/passwd, schmeiße den gegenwärtigen Benutzer raus und ändere den nächsten Vorratseintrag auf meinen Benutzernamen. Das ganze besser als Script, denn ein Fehler, und ich kann nach Hause fahren... Beim nächsten Login muss ich nur wissen, welches Passwort ich damit jetzt aktiviert habe. Es ist an keiner Stelle notwendig, das Passwort zu benutzen oder einzugeben, bevor es tatsächlich zum login gebraucht wird. Die Einträge in shadow sind verschlüsselt und bei einigermaßen sinnvoller Passwortwahl nützt auch ein Ausspähen nichts. Nur so als Idee... Wolfgang
Ups, Am Dienstag, 8. März 2005 15:56 schrieb Wolfgang Hinsch:
Hallo,
[...]
In /etc/shadow werden einfach die Passwortzeilen kopiert und die Benutzernamen weitergezählt. Beim login stört sich das System nicht an zusätzlichen Benutzern in shadow, solange die Einträge für den sich anmeldenden Benutzer in passwd und shadow übereinstimmen. Bin ich im System, editiere ich /etc/passwd, schmeiße den ^^^^^ shadow!
gegenwärtigen Benutzer raus und ändere den nächsten ^ -eintrag, d.h. sein Passwort!
Vorratseintrag auf meinen Benutzernamen. Das ganze besser als Script, denn ein Fehler, und ich kann nach Hause fahren... Beim nächsten Login muss ich nur wissen, welches Passwort ich damit jetzt aktiviert habe. Es ist an keiner Stelle notwendig, das Passwort zu benutzen oder einzugeben, bevor es tatsächlich zum login gebraucht wird. Die Einträge in shadow sind verschlüsselt und bei einigermaßen sinnvoller Passwortwahl nützt auch ein Ausspähen nichts.
zu schnell geschrieben... Gruß, Wolfgang
On Tue, Mar 08, 2005 at 05:32:38PM +0100, Michael Herrmann wrote:
Das würde mich interessieren.
http://www.google.com/search?q=port+knocking Haettest du da auch drauf kommen koennen? ;)
Wie funktioniert das prinzipiell?
Auf dem Einwahl-Rechner laeuft ein Daemon. Weiss ein anderer Rechner, in welcher Reihenfolge Pakete an gewisse Ports abgeschickt werden sollen, oeffnet sich fuer die Absender-IP der ssh-Port. -- Peter
participants (12)
-
Al Bogner
-
Christian Paul
-
Christoph Burkard
-
Dr. Jürgen Vollmer
-
Erhard Schwenk
-
Hans-Martin Flesch
-
Mario Goppold
-
Matthias Keller
-
Michael Herrmann
-
Peter Wiersig
-
Sandy Drobic
-
Wolfgang Hinsch