Das 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:
- SSH konfigurieren
- Den SCP-Server einschalten
- Authentifizierung und Autorisierung konfigurieren
- Useraccounts anlegen
- Kopieren der Daten vom Client
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
ip scp server enable
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
Der Benutzer bekommt einen Privilege-Level von 15 per Exec-Autorisierung zugewiesen:
username Admin privilege 15 secret 0 My0wnV3ryS3cur3Passw0rd
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.
Schade, daß es keine zertifikatsbasierte Anmeldung gibt – ohne Passwort wär’s wirklich superpraktisch.
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) … 😉
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?
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.
Key-basierte Authentifizierung funktioniert!!!
(Aus der Politik habe ich gelernt, dass man Aussagen nur oft genug wiederholen muss bis sie “wahr” werden).
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.
Leider reicht es nicht, wenn es nur einmal behauptet wird. 🙂 Selbst-Erfüllung geht erst bei andauender Wiederholung … 😉
na, also! Man muss es nur oft genug sagen … 🙂 Public-Key Auth ab IOS 15.0:
http://www.cisco.com/en/US/docs/ios/sec_user_services/configuration/guide/sec_secure_shell_v2.html#wp1063190
aber für scp Quelldatei User@MyDevice.example.org:flash:/Zielname muss doch der scp server nicht konfiguriert werden…hier ist der Router doch SCP Client oder kapier ich hier was nicht ?
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.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?
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/
Neben Rancid gibt es noch NAI (ex ZipTie) von Alterpoint und natürlich die eingebaute Archive-Funktion im IOS.
http://inventory.alterpoint.com/
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.