Gorodenkoff - stock.adobe.com
Schnelleinstieg in Cisco IOS
Das Betriebssystem Cisco IOS ist seit vielen Jahren für Aktivkomponenten gesetzt und etabliert. Die wichtigsten Grundlagen und Befehlsstrukturen haben wir zusammengefasst.
Die Syntax der IOS-Geräte von Cisco ist eine seit Jahren etablierte und akzeptierte Sprache, die ein IT-Netzwerker oder IT-Administrator beherrschen sollte. Aufgrund des hohen Verbreitungsgrads der Produkte von Cisco stoßen IT-Experten immer wieder auch auf IOS. Ein einfacher Weg, sich eine kleine Umgebung bereitzustellen, in der die Befehle ohne Folgen für die echte Umgebung ausprobiert werden können, ist der Einsatz der GNS3-Virtualisierung.
Im Gegensatz zu den meisten anderen Lösungen für Netzwerksimulation ist GNS3 kostenfrei. Neben der Installation von GNS3 selbst empfiehlt sich, aus Performance-Gründen, der Einsatz einer virtuellen Appliance, die es für VMware Workstation/Fusion, ESX oder für Oracle VirtualBox ebenfalls kostenfrei zum Download auf der Homepage von GNS3 gibt. Installation sowie Konfiguration sind in wenigen Minuten erledigt und setzen keine tiefgreifenden administrativen Kenntnisse voraus – zumindest unter Windows.
Zur Emulation eines Cisco-Geräts ist noch ein passendes Image erforderlich. Es gibt im Internet Download-Möglichkeiten für Cisco-IOS-Images, die speziell für GNS3 geeignet sind. Eine mit Sicherheit legale Möglichkeit besteht jedoch darin, eine IOS-Image bei Cisco herunterzuladen.
Um sich mit den Grundlagen vertraut zu machen, ist selbst ein seit Jahren abgekündigtes 12.2 IOS zunächst ausreichend. Die letzte aktuelle Version 15.0 ist nunmehr ebenfalls 10 Jahre am Markt. Spezifische Merkmale, zum Beispiel Telefonie oder Kryptographie, erweitert der Hersteller dynamisch über so genannte Features. Das Basissystem bleibt auf dem ursprünglichen Release-Stand. Selbst die Unterstützung für neue Switch- oder Router-Hardware wird von Cisco intern als Feature betrachtet, so dass erst das Auflisten aller Features schlussendlich den Funktionsumfang eines IOS-Betriebssystems zum Ausdruck bringt.
Bevor sich der Anwender daran macht, über die lokale Konsole oder über Telnet/SEH auf der Kommandokonsole (CLI) Befehle einzugeben, gilt es noch, ein paar grundsätzliche Eigenheiten des IOS-Systems kennenzulernen. IOS unterscheidet zwischen verschiedenen Betriebsmodi:
- User-EXEC-Mode
- Priviledged EXEC-Mode
- Global Configuration Mode
- Sub-Konfigurationsmodus
Die Auflistung stellt gleichzeitig eine Konfigurationshierarchie dar. Um vom einfachen User-EXEC-Mode zu wechseln ist, je nach Konfiguration, ein Passwort erforderlich. Der Benutzer kann die beiden Modus recht einfach unterscheiden, denn wird in der Konsole ein >-Zeichen nach dem Gerätenamen im CLI angezeigt, befindet sich der Benutzer im einfachsten Modus.
Ein #-Zeichen signalisiert dem Anwender, dass er aktuell im privilegierten Modus unterwegs ist. Steht vor dem #-Zeichen in Klammern das Wort „config“, so hat der Administrator den „Global Configuration Mode“ erreicht; ein Wort hinter „config-“ zeigt den entsprechenden Unterkonfigurationsmodus an. Das Berechtigungsmodell selbst basiert auf den User-Leveln 1 bis 15:
- Read-Only CLI Access (1)
- Read/Limited Write CLI Access (7)
- Read/Write Management Access (15)
Das soll uns hier jedoch nicht weiter interessieren. Leider ist es nicht so, dass Cisco es dem Benutzer hier unbedingt einfach macht, da es keinen Hinweis darauf gibt, dass ein Kommando aufgrund der Hierarchie nicht zur Ausführung kam. Ein ganz ein einfaches Beispiel (R1 steht hier stellvertretend für den zugewiesenen Hostnamen) soll das zeigen:
R1> clock set 10:55:00 28 JUL 2019
wird mit % Invalid input detected at '^' marker beantwortet, wobei das das ^ unter dem Wort clock zu finden ist. Wechselt der Anwender in den nächsten Modus – durch die Eingabe von enable oder kurz en und eventuell gefolgt von einer erforderlichen Passworteingabe – und wiederholt den Befehl zum Setzen der Uhrzeit, reagiert das Gerät mit einer Meldung im Stil:
Jul 28 10:55:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 10:55:17 UTC Sun Jul 28 2019 to 10:55:00 UTC Sun Jul 28 2019, configured from console by console.
Der derzeitige Konsolenmodus hat somit eine unmittelbare Auswirkung darauf, ob ein Kommando nutzbar ist oder nicht. Wird anstelle clock versehentlich clvck eingegeben, wird eine weitere Besonderheit in IOS sichtbar, da die Konsolenausgabe mit
Translating "clvck"
% Unknown command or computer name, or unable to find computer address
reagiert. Die Ausgabe erinnert nicht unbedingt an einen klassischen Syntax Error, sondern offensichtlich hat sich unser Gerät dazu entschieden, ein System mit dem Namen clvck zu entdecken. In der Standardauslieferung versuchen Cisco IOS-Systeme sich bei Eingabe eines für sie unbekannten Wortkonstrukts an einer DNS-Namensauflösung. Da den meisten Cisco-Administratoren das Kommando zur Deaktivierung dieses Verhaltens geläufig ist, dürfte die Funktion eher störend denn sinnvoll sein. Ausschalten lässt sich diese Namensauflösung mit:
R1> en
R1# conf term
R1(config)# line con 0
R1(config-line)# transport preferred none
R1(config-line)# exit
Von nun an reagiert das Gerät auf die fehlerhafte Eingabe von ckvck mit dem Fehlertext % Invalid Input detected… . In vielen Cisco-Büchern gibt es noch eine andere Methode zur Unterdrückung der Namensauflösung mit no ip domain-lookup, was jedoch zur Folge hat, dass selbst wenn man es nicht möchte, die Namensauflösung deaktiviert ist. Sofern nicht nur über die direkte Konsole gearbeitet wird, sollte der Administrator line aux 0 und line vty 0 15 ebenfalls mit transport preferred none belegen.
Cisco-IOS-Geräte unterscheiden zwischen der gespeicherten Konfiguration und der derzeit aktiven Konfiguration. Die Uhrzeitanpassung aus dem oberen Abschnitt wird erwartungsgemäß durch die batteriegepufferte RTC fortgeführt, sofern es sich um ein physisches System handelt. Das Ausschalten der Namensauflösung jedoch würde bei einem Neustart des Geräts einfach verworfen. Administratoren kennen das Verhalten auch von vielen anderen Systemen, die erst nach Eingabe eines expliziten Save-Kommandos die jüngsten Konfigurationsänderungen dauerhaft speichern. Das hat schlichtweg den Vorteil, dass bei einer fehlerhaften Anpassung der Einstellungen ein Neustart das System auf den vorherigen Stand zurückbringt – ganz besonders praktisch, sofern sich der IT-Profi selbst aussperrt.
Cisco IOS Konfiguration speichern
Bei Cisco sprechen wir von der Running-Config, die sich im RAM-Speicher des Routers oder Switches befindet und der Startup-Config, die im NVRAM gesichert auch einen Neustart überdauert. Der einfachste Weg, die derzeit gültige Konfiguration aus dem Arbeitsspeicher zu speichern, ist der Befehl R1# write.
Je nach Modell verlangt das IOS-Gerät beim Wechsel in den privilegierten Modus zunächst einmal gar kein Passwort. Sofern das System nur gesichert im Serverraum über die lokale Konsole erreichbar ist, ist das vielleicht noch ein vertretbares Sicherheitsrisiko. Über Telnet/SSH wäre ein passwortfreies Aktivsystem ein gefundenes Fressen für jeden Hobby-Hacker. Der einfachste Weg ist die Verwendung von R1(config)# enable secret cisco, wobei cisco hier das Passwort für den Wechsel zwischen dem User-Modus und den privilegierten Modus darstellt. Das kleingeschriebene cisco ist leider auch das Standardpasswort – wenn Sie das weiterverwenden möchten, können Sie den Schutz eigentlich auch gleich ganz ausschalten. Aus Kompatibilitätsgründen gibt es leider noch immer einen älteren Befehl, mit dem einst das Passwort gesetzt wurde:
R1(config)# enable password CISCO
Lässt sich der Administrator nun mit R1# show run die laufende Konfiguration anzeigen, ist sofort klar, warum enable password keine wirklich sichere Option ist: Das Passwort steht im Klartext in der Konfiguration.
Bei enable secret steht, je nach Version, eine MD5 oder SHA256-Chiffre. Durch ein einfaches Kommando kann der Administrator das Gerät dazu bringen, grundsätzlich alle Passwörter nur noch chiffriert anzuzeigen:
R1(config)# service password-encryption
Soll die Verschlüsselung wieder ausgeschaltet werden ist das Kommando R1(config)# no service password-encryption hilfreich. Insgesamt ist no standardmäßig der Befehl zur Negierung.
Wie geht es weiter?
Was Sie hier lesen konnten waren die absoluten Grundlagen, um ein Cisco-Gerät per Konsole anzusprechen. Alle weiteren Kommandos finden sich recht gut anhand von funktionellen Beispielen im Internet. Zudem ist das Command Line Interface (CLI) ein guter Freund und bietet eine automatische Vervollständigung mit der Tab-Taste. Alle weiteren möglichen Befehle, die passend zu den bisher eingegebenen Buchstaben sinnvoll wären, listet IOS auf, wenn der Anwender ein Fragezeichen eingibt.