Der IOS SCP-Server

routerDas Cisco IOS stellt schon seit geraumer Zeit einen SCP-Server zur Verfügung. Trotzdem beobachte ich immer wieder, daß IOS-Images standardmäßig per TFTP übertragen werden. Und das selbst dann, wenn die Client-Plattform “nativ” scp unterstützt.

Auch wenn die SCP-Server-Implementierung in meinen Augen suboptimal ist (was die Berechtigungen angeht), ist die Benutzung des Servers recht einfach:

  1. SSH konfigurieren
  2. SSH benötigt public/private keys. Für das Generieren der Keys muss man einen Host- und Domain-Namen konfigurieren. (Es gibt Tricks, ohne einen Domain-Namen auszukommen, aber der läuft nicht auf allen Plattformen). Die Key-Länge sollte mindestens 1024, besser 2048 Bit sein. Neuere IOS-Releases unterstützen sogar bis 4096 Bit. Weiterhin sollte man die Verwendung der älteren SSH-Version 1 verbieten:

    hostname MyDevice
    ip domain-name example.org
    crypto key generate rsa general-keys modulus 2048
    ip ssh version 2
    
  3. Den SCP-Server einschalten
  4. ip scp server enable
    
  5. Authentifizierung und Autorisierung konfigurieren
  6. Für SCP muss der Router so konfiguriert werden, dass der User direkt Lese- und Schreibrechte auf das Flash hat. Dies wird durch die Exec-Autorisierung gemacht:

    aaa new-model
    aaa authentication login default local
    aaa authorization exec default local
    
  7. Useraccounts anlegen
  8. Der Benutzer bekommt einen Privilege-Level von 15 per Exec-Autorisierung zugewiesen:

    username Admin privilege 15 secret 0 My0wnV3ryS3cur3Passw0rd
    
  9. Kopieren der Daten vom Client
  10. Hierbei muss die Syntax genau beachtet werden. Der Speicher- bzw. der Quellort im Router muss komplett angegeben werden (hier “flash:/):

    scp Quelldatei User@MyDevice.example.org:flash:/Zielname
    

Auch wenn ich in diesem Beitrag immer Router geschrieben habe, so gilt dasselbe auch für die Switche. Voraussetzung ist natürlich jeweils ein Crypto-fähiges Image.
Und natürlich gibt es auch bei Cisco eine SCP-Anleitung.

14 Replies to “Der IOS SCP-Server”

    1. Public-Key-basierte Authentifizierung steht vermutlich bei vielen Admins auf der Wunschliste. Und hoffen auf die Zukunft kann man ja (auch wenn ich nicht damit rechne, dass das bald kommen würde) … 😉

      1. Leider nein, ja. Da hoffe ich schon länger drauf… 🙂

        Der User braucht vermutlich level 15, um auf den Ablageort der Configs zugreifen zu können, oder?

  1. Bei meinem letzten Versuch das auf einem kleinen Router (871er) zu nutzen bin ich fast eingeschlafen. Die CPU des Routers war ziemlich am Anschlag und es war einfach nur langsam. Außerdem will ich keys, wie bei *NIX auch.

    1. Key-basierte Authentifizierung funktioniert!!!
      (Aus der Politik habe ich gelernt, dass man Aussagen nur oft genug wiederholen muss bis sie “wahr” werden).

      1. Ok, wenn du mir in einer aktuellen IOS Version zeigst wie lade ich dich zu Steak ein wenn du in Berlin bist. Den Laden lege ich aber fest. Ich hoffe der Weg nach X-Berg ist nicht zu weit.

        1. Leider reicht es nicht, wenn es nur einmal behauptet wird. 🙂 Selbst-Erfüllung geht erst bei andauender Wiederholung … 😉

    1. Bei dem Beispiel oben habe ich den SCP-Befehl auf dem PC ausgeführt. Dieser ist dabei der Client, der Router ist der Server.
      Den SCP-Client des Routers verwendest Du wenn Du z.B. copy scp://user@10.255.255.1/Quelldatei flash: auf dem Router verwendest. Der PC 10.255.255.1 ist dabei der SCP-Server.

  2. wenn wir schon bei bei der Speicherung von Configs sind, wie macht ihr es mit der Protokollierung? Bisher kopieren wir die Config nur auf einen Server. Aber eigentlich wäre es schon schön, wenn man bei jeder Übertragung noch einen kleinen Kommentar angeben könnte und die Änderungen zu dokumentieren – wie macht ihr das? oder dokumentiert ihr die Änderungen nicht?

    1. Man lässt das machen. RANCID[1] ist das der Freund eines jeden Netzwerkes. RANCID zieht, per cron-job gesteuert regelmäßig Configs von Netzwerkgeräten ab und Speichert diese in CVS bzw SVN und sendet auf Wunsch auch noch eine Mail mit den Diffs.

      Das kann man dann auch gleich prima mit einem Webfrontend für CVS bzw. SVN verheiraten und automatisch nach jeder Sicherung einen Config-Parser wie z.B. nipper drüber laufen lassen.

      [1] http://www.shrubbery.net/rancid/
      [2] https://www.titania.co.uk/

    2. Wir haben für wichtige Configs einfach SVN am laufen.

      Natürlich muss man dann alles per Hand einfügen was man so geändert hat, aber via SVN findet man manchmal schneller was als via RANCID/TACACS Log wer was wann gemacht hat.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.