Sonntag, 16. Mai 2010

DynDNS mit ScreenOS

Statische IP-Adressen gibt es heutzutage nahezu ohne Aufpreis bei fast jedem Internet Provider. Aber bei expliziten Privatanschlüssen werden nach wie vor dynamische IP-Adressen verwendet. Möchte man in solchen Situationen trotzdem auf seine Firewall von außen zugreifen oder möchte man Server veröffentlichen, kann man sich Dienste wie z.B. DynDNS bedienen. Hier kann man über eine Webabfrage seine IP-Adresse unter einem Hostnamen registrieren. Entweder macht man dies manuell, oder verwendet einen DynDNS Client. Praktischerweise können ScreenOS basierte Firewalls dies automatisch erledigen. Dies geht im konkreten Fall von DynDNS wie folgt:
  1. DynDNS verwendet ein HTTPS Zertifikat, ausgestellt von GeoTrust. Leider fehlt das GeoTrust Zertifikat in der Liste der Stammzertifikate von ScreenOS, auch in den neusten Releases. Es gibt sogar einen eigenen KB Artikel der auf dieses Faktum hinweist (http://kb.juniper.net/KB7380). Dort kann man auch das Stammzertifikat herunterladen und es wird erklärt, wie man es in den Zertifikatsspeicher importiert.
  2. Wir brauchen von DynDNS folgende Angaben: Benutzername, Kennwort und den Hostnamen, unter dem wir die IP-Adresse registrieren wollen. Z.B. beispiel.dyndns.org.
  3. Wir können nun folgende CLI Befehle eingeben:
set dns ddns
set dns ddns id 1 server-type dyndns refresh-interval 2
set dns ddns id 1 username BENUTZERNAME password PASSWORT
set dns ddns id 1 src-interface ethernet0/0 host-name beispiel.dyndns.org
set dns ddns enable

Wir gehen in diesem Beispiel davon aus, dass das Interface mit der externen IP-Adresse, ethernet0/0 ist und wir die Registrierung alle zwei Stunden aktualisieren wollen.

Leider unterstützen die JUNOS basierten SRX Firewalls DynDNS derzeit nicht. Dieses Feature gab es kurzfristig unter JUNOS ES 9.3, es wurde aber aus Qualitätsgründen in den späteren Releases wieder entfernt. Wir müssen uns wohl noch etwas gedulden bis dieses Feature wieder zurückkommt.

Mittwoch, 12. Mai 2010

JUNOS Anmeldung per SSH-RSA und Putty (bzw. SSH-DSA)

SSH Zugriff auf Router, Switches etc. ist eine praktische Sache. Aber auch hier trifft uns alle das Problem, welches Passwort man wählen und sich dann merken soll. Aus Sicherheitsgründen sollte man ja auf jedem Gerät ein anderes verwenden.

Um hier Abhilfe zu schaffen kann man sich mit Hilfe einen Schlüsselpaares anmelden. Man generiert ein Paar, bestehend aus öffentlichem und privatem Schlüssel. Der öffentliche Schlüssel wird z.B. auf der Firewall hinterlegt. Der private bleibt auf dem PC des Anwenders, geschützt durch eine Passphrase. Bei der Anmeldung wird dann nur die Passphrase verlangt und schon ist man dabei. Weiterer Vorteil: Das Schlüsselpaar ist im allgemeinen deutlich sicherer als Kennwörter, falls Sie nicht zu den Personen gehören, die Kennwörter wie z.B. "fuei()3mfe3mk3)WUWJKs,29§.dmk." verwenden. :-)

Wie geht's konkret?
  1. Laden Sie sich den Putty Key Generator herunter. Z.B. unter http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
  2. Programm starten und auf den Knopf Generate drücken
  3. Jetzt etwas mit der Maus hin- und her fahren und damit ein paar Zufallszahlen generieren
  4. Wenn er fertig ist kann man eine Kommentar eintragen und - wichtig - die Passphrase
  5. Den privaten Schlüssel speichert man auf der Platte ab. Vorsichtige Menschen könnten hier z.B. einen USB Stick verwenden und den immer bei sich tragen. Muss aber natürlich nicht sein.
  6. Den öffentlichen Schlüssel abzuspeichern wäre an sich nicht notwendig, wir arbeiten mit Copy/Paste, kann aber auch nicht schaden
  7. Jetzt kopieren wir den öffentlichen Schlüssel in die Zwischenablage. JUNOS möchte gerne beginnend mit dem Wort ssh-rsa bis inklusive dem =. Das anschließende Kommentar bitte nicht mehr kopieren
  8. Jetzt melden wir uns am JUNOS an und gehen in den Konfigurationsmodus
  9. Wir legen nun einen Benutzer an. Z.B. den Benutzer dominik mit root Rechten. Das geht mit:

    set system login user dominik class super-user authentication ssh-rsa "ssh-rsa AAAAB3N... ="
  10. Commiten natürlich nicht vergessen
  11. So, jetzt können wir in Putty gehen und tragen zuerst den Hostnamen ein
  12. Danach erweitern wir in der Baumansicht den Knoten Connection und dann SSH. Dort tragen Sie bitte im Schlüssel Auth den Pfad zum vorher gespeicherten Private Key File ein
  13. Wir speichern dann die Session mit einem passenden Namen ab
  14. Jetzt verbinden wir uns. Zuerst kommt der Benutzername dran
  15. Danach verlangt Putty anstatt wie gewohnt das Kennwort, die Passphrase des Private Keys
  16. Und wenn wir keinen Fehler gemacht haben, sind wir am System angemeldet. Ganz ohne Kennwort
Bis zum nächsten Mal!

UPDATE


Mir ist kürzlich folgender Fehler passiert: Die Anmeldung an der JUNIPER Firewall hat nicht geklappt und im message Logfile hat sich folgende Fehlermeldung gefunden:

sshd[44945]: error: ssh_rsa_verify: RSA modulus too small: 1023 < minimum 1024 bits

Eine kurze Recherche hat im Handbuch zum Putty Key Generator folgendes ergeben:

Note that an RSA key is generated by finding two primes of half the length requested, and then multiplying them together. For example, if you ask PuTTYgen for a 1024-bit RSA key, it will create two 512-bit primes and multiply them. The result of this multiplication might be 1024 bits long, or it might be only 1023; so you may not get the exact length of key you asked for. This is perfectly normal, and you do not need to worry. The lengths should only ever differ by one, and there is no perceptible drop in security as a result. 

D.h., bei RSA Keys kann es passieren, dass der Schlüssel statt 1024 nur 1023 Bit lang ist, wass der OpenSSH Dämon von JUNOS nicht toleriert. Daher empfehle ich auf DSA umzusteigen, denn laut Handbuch gilt hier:

DSA keys are not created by multiplying primes together, so they should always be exactly the length you asked for. 

In der Anleitung ändert sich fast nichts. An den passenden Stellen, wie z.B. den SET Befehlen muss ssh-dsa statt rsa eingegeben werden. Damit sollte es immer klappen.

JNCIE-ER

Normalerweise veröffentliche ich keine Posts ohne zumindest kleinen Nutzen für die Leser, diesmal darf ich aber einfach nur verkünden, dass ich nach einem dreiviertel Jahr Vorbereitung der 75. JNCIE-ER bin. Ich denke, darüber darf ich mich freuen.