Muss ich das Aktivierungsgeheimnis auf dem Cisco-Gerät festlegen?

16

Ich richte einen Cisco 2901-Router ein. Ich habe ein Anmeldekennwort in der Konsolenleitung und die Vty-Leitungen sind so konfiguriert, dass sie nur SSH-Verbindungen mit Authentifizierung mit öffentlichem Schlüssel akzeptieren. Die Hilfsleitung wird heruntergefahren. Es gibt nur zwei Administratoren, die auf den Router zugreifen, und wir sind beide berechtigt, jegliche Konfiguration auf dem Router vorzunehmen.

Ich bin kein Experte für Cisco-Geräte, halte dies jedoch für ausreichend, um den Zugriff auf die Routerkonfiguration sicherzustellen. In jedem einzelnen Handbuch, das ich gelesen habe, sollte ich jedoch ein Aktivierungsgeheimnis festlegen, unabhängig von anderen Benutzer- oder Leitungskennwörtern.

Enthält das Aktivierungskennwort noch etwas, das mir nicht bekannt ist? Gibt es eine andere Möglichkeit, auf den Router zuzugreifen als Konsolen-, Zusatz- oder Vty-Leitungen?

BEARBEITEN: Ich habe die aktuelle Konfiguration unten hinzugefügt, um meine Situation klarer darzustellen. Das Folgende funktioniert, wenn Sie ein Aktivierungskennwort oder eine usernameandere als die darin enthaltene Konfiguration benötigen ip ssh pubkey-chain.

aaa new-model

ip ssh time-out 60
ip ssh authentication-retries 2
ip ssh version 2
ip ssh pubkey-chain
 username tech
  key-hash ssh-rsa [HASH]
ip scp server enable

line vty 0 4
 transport input ssh
Marwan
quelle
1
kurze antwort: nicht erforderlich , aber sehr empfehlenswert - da dies die erste Verteidigungslinie für alle Privilegien ist
Ricky Beam
Aber wenn ich Passwörter in der Konsole und in vtys habe, warum brauche ich dann ein anderes Passwort? Außerdem muss das Aktivierungsgeheimnis zwischen den Mitarbeitern des Administrators geteilt werden, der lediglich darum bittet, es aufzuschreiben, per E-Mail zu versenden usw. Es ist besser, wenn jeder Administrator sein eigenes privates Kennwort / seinen eigenen privaten Schlüssel hat.
Marwan
enable erhöht priv. Sofern Sie es nicht ändern (über aaa), gilt es auch dann, wenn Sie eine Befehlszeile haben.
Ricky Beam

Antworten:

24

Nein, technisch gesehen nicht. Ob Sie jedoch in den Aktivierungsmodus wechseln können, hängt davon ab, wie Sie sich anmelden.

Hier ist die sofortige Befriedigungsversion:

Sie können über die Konsole ohne Aktivierungskennwort eingeben, bleiben jedoch im Benutzermodus hängen, wenn Sie ein einfaches vty-Anmeldekennwort ohne festgelegtes Aktivierungskennwort verwenden.

Hier ist die langwierige StackExchange-Beantworterversion:

Die Cisco-Authentifizierung ist für Anfänger ein ziemliches Durcheinander. Es gibt dort eine Menge altes Gepäck. Lassen Sie mich versuchen, dies in einem realen Sinne aufzuschlüsseln.

Jeder, der ein Unternehmen hat, das sich an einem Router oder Switch anmeldet, wechselt direkt in den privilegierten (Aktivierungs-) Modus. Der Benutzermodus ist im Grunde genommen eine vordere Lobby und dient kaum mehr als dem Schutz vor Zugluft. In großen Organisationen, in denen Sie über große Netzwerke und ebenso große Arbeitskräfte verfügen, ist es möglicherweise gerechtfertigt, jemanden zu haben, der an die Haustür klopfen und sicherstellen kann, dass noch jemand da ist. (Das heißt, sich einzuloggen und die banalsten Befehle ausführen , um zu sehen , dass das Gerät ist in der Tat reagiert und nicht in Brand.) Aber in jeder Umgebung habe ich je gearbeitet in, Tier - 1 hatte zumindest einige Fähigkeit, Dinge zerbrechen.

Aus diesem Grund und insbesondere in einem Szenario wie dem Ihren ist die Kenntnis des Aktivierungskennworts für die Erledigung aller Aufgaben erforderlich. Man könnte sagen, dass dies eine zweite Sicherheitsstufe ist - ein Kennwort zum Eingeben des Geräts, ein anderes zum Eskalieren der Administratorrechte -, aber das kommt mir ein bisschen albern vor.

Wie bereits erwähnt, können Sie (und viele andere) dasselbe Passwort verwenden, was wenig hilft, wenn sich jemand über Telnet / SSH unbefugten Zugriff verschafft hat. Es ist wohl eher ein Problem, statische, globale Kennwörter zu haben, die von allen geteilt werden, als dass nur ein Token für die Eingabe erforderlich ist. Schließlich erfordern die meisten anderen Systeme (Dienste, Appliances usw.) keine zweite Authentifizierungsebene und werden daher im Allgemeinen nicht als unsicher eingestuft.

OK, das ist meine Meinung zum Thema. Sie müssen selbst entscheiden, ob dies in Anbetracht Ihrer eigenen Sicherheitshaltung sinnvoll ist. Kommen wir zur Sache.

Cisco verlangt (mit Bedacht), dass Sie standardmäßig ein RAS-Kennwort festlegen. Wenn Sie in den Leitungskonfigurationsmodus gelangen ...

router> enable
router# configure terminal
router(config)# line vty 0 15
router(config-line)#

... Sie können den Router anweisen, die Authentifizierung zu überspringen:

router(config-line)# no login

... und sofort gehackt werden, aber Ihr Angreifer wird im Benutzermodus enden. Wenn Sie also ein Aktivierungskennwort festgelegt haben, haben Sie zumindest den Schaden, der angerichtet werden kann, etwas begrenzt. (Technisch gesehen können Sie ohne ein Aktivierungskennwort auch nicht weiter gehen . Mehr dazu gleich ...)

Natürlich würde das niemand im wirklichen Leben tun. Ihre Mindestanforderung ist, standardmäßig und aus gesundem Menschenverstand, ein einfaches Passwort festzulegen:

router(config-line)# login
router(config-line)# password cisco

Nun werden Sie nach einem Passwort gefragt und gelangen wieder in den Benutzermodus. Wenn Sie über die Konsole hereinkommen, können Sie einfach enableeingeben, um Zugriff zu erhalten, ohne ein anderes Kennwort eingeben zu müssen. Bei Telnet sieht das anders aus, wo Sie wahrscheinlich stattdessen folgendes erhalten:

$ telnet 10.1.1.1
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.


User Access Verification

Password: *****
router> enable
% No password set
router> 

Weiter ... Sie wissen wahrscheinlich bereits, dass standardmäßig alle Ihre konfigurierten Passwörter als einfacher Text angezeigt werden:

router# show run | inc password
no service password-encryption
 password cisco

Dies ist eines jener Dinge, die den Schließmuskel des Sicherheitsbewusstseins festigen. Ob es sich um berechtigte Angst handelt, müssen Sie selbst entscheiden. Wenn Sie auf der einen Seite ausreichend Zugriff haben, um die Konfiguration anzuzeigen, haben Sie wahrscheinlich ausreichend Zugriff, um die Konfiguration zu ändern . Auf der anderen Seite, wenn Sie aufgedeckt haben passieren zu nachlässig Ihre Konfiguration an jemanden, der nicht die Mittel haben , sich, dann ... na ja, jetzt sind sie noch die Mittel haben.

Glücklicherweise ist diese erste Zeile im obigen Snippet no service password-encryptionder Schlüssel, um Folgendes zu ändern:

router(config)# service password-encryption
router(config)# line vty 0 15
router(config-line)# password cisco

Wenn Sie sich nun die Konfiguration ansehen, sehen Sie Folgendes:

router(config-line)# do show run | begin line vty
line vty 0 4
 password 7 01100F175804
 login
line vty 5 15
 password 7 01100F175804
 login
!
!
end

Dies ist geringfügig besser als Klartext-Passwörter, da die angezeigte Zeichenfolge nicht einprägsam genug ist, um über die Schulter zu surfen. Es ist jedoch trivial zu entschlüsseln - und ich verwende diesen Begriff hier locker. Sie können die oben stehende Zeichenfolge buchstäblich in einen von zwölf JavaScript-Kennwortcrackern auf der ersten Google-Ergebnisseite einfügen und den Originaltext sofort wiederherstellen.

Diese sogenannten "7" -Passwörter werden im Allgemeinen eher als "verschleiert" als als "verschlüsselt" betrachtet, um die Tatsache hervorzuheben, dass sie kaum besser als nichts sind.

Es stellt sich jedoch heraus, dass all diese passwordBefehle veraltet sind. (Oder wenn nicht, sollten sie es sein.) Deshalb haben Sie die folgenden zwei Möglichkeiten:

router(config)# enable password PlainText
router(config)# enable secret Encrypted
router(config)# do show run | inc enable
enable secret 5 $1$sIwN$Vl980eEefD4mCyH7NLAHcl
enable password PlainText

Die geheime Version ist mit einem Einwegalgorithmus gehasht, was bedeutet, dass der ursprüngliche Text nur mit Brute-Force-Methoden wiederhergestellt werden kann. Dies bedeutet, dass alle möglichen Eingabezeichenfolgen ausprobiert werden, bis der bekannte Hash generiert wird.

Wenn Sie das Kennwort an der Eingabeaufforderung eingeben, durchläuft es denselben Hash-Algorithmus und sollte daher denselben Hash generieren, der dann mit dem in der Konfigurationsdatei verglichen wird. Wenn sie übereinstimmen, wird Ihr Passwort akzeptiert. Auf diese Weise ist dem Router der Klartext nur in dem kurzen Moment bekannt, in dem Sie das Kennwort erstellen oder eingeben. Hinweis: Es besteht immer die Möglichkeit, dass eine andere Eingabe denselben Hash generiert, aber statistisch gesehen handelt es sich um eine sehr geringe (zu vernachlässigende) Wahrscheinlichkeit.

Wenn Sie die obige Konfiguration selbst verwenden, lässt der Router die enable passwordund enable secret-Leitungen zu, das Geheimnis gewinnt jedoch über die Passwortabfrage. Dies ist einer dieser Cisco-Ismen, der wenig Sinn macht, aber so ist es. Darüber hinaus gibt es im secretLeitungskonfigurationsmodus keinen entsprechenden Befehl, sodass Sie dort an verschleierten Passwörtern festhalten.

Okay, wir haben jetzt ein Passwort, das nicht (einfach) aus der Konfigurationsdatei wiederhergestellt werden kann - aber es gibt immer noch ein Problem. Es wird im Klartext übertragen, wenn Sie sich über Telnet anmelden. Nicht gut. Wir wollen SSH.

SSH, das mit Blick auf eine robustere Sicherheit entwickelt wurde, erfordert ein wenig zusätzliche Arbeit - und ein IOS-Image mit einem bestimmten Funktionsumfang. Ein großer Unterschied ist, dass ein einfaches Passwort nicht mehr ausreicht. Sie müssen zur benutzerbasierten Authentifizierung wechseln. Und wenn Sie schon dabei sind, richten Sie ein Verschlüsselungsschlüsselpaar ein:

router(config)# username admin privilege 15 secret EncryptedPassword
router(config)# line vty 0 15
router(config-line)# transport input ssh
router(config-line)# no password
router(config-line)# login local
router(config-line)# exit
router(config)# ip ssh version 2
router(config)# crypto key generate rsa modulus 1024

Jetzt kochst du mit Gas! Beachten Sie, dass dieser Befehl secretKennwörter verwendet. (Ja, Sie können, aber sollten nicht verwenden password). Mit diesem privilege 15Teil können Sie den Benutzermodus vollständig umgehen. Wenn Sie sich anmelden, wechseln Sie direkt in den privilegierten Modus:

$ ssh [email protected]
Password: *****

router#

In diesem Szenario muss kein Aktivierungskennwort (oder Geheimnis) verwendet werden.

Wenn Sie noch nicht darüber nachdenken, "wow ... was für ein Clusterfudge das war", denken Sie daran, dass sich hinter dem Befehl noch ein ganz anderer langatmiger Post verbirgt , in aaa new-modeldem Sie sich mit Dingen wie externen Authentifizierungsservern (RADIUS) befassen können , TACACS +, LDAP usw.), Authentifizierungslisten (die die zu verwendenden Quellen definieren und in welcher Reihenfolge), Berechtigungsstufen und Benutzeraktivitätsabrechnung.

Bewahren Sie das alles für eine Zeit auf, in der Sie das Gefühl haben, für eine Weile von Ihrem Router ausgeschlossen zu werden.

Ich hoffe, das hilft!

SirNickity
quelle
1
Herzlich willkommen! Tolle erste Antwort!
Digital Trauma
Danke, es ist eine sehr aufschlussreiche Antwort. Ich kenne die verschiedenen Kennwortverschlüsselungsgeräte und verwende ein neues Modell (ich habe meine Frage bearbeitet, um dies zu berücksichtigen).
Marwan
Es scheint mir kein Problem zu sein, kein Aktivierungsgeheimnis zu haben. Egal ob ich mit einem Benutzernamen / Passwort oder einem öffentlichen Schlüssel telnet / ssh, ich kann einfach tippen enableund es funktioniert. Wenn ich einen Benutzernamen mit der Berechtigung 15 habe, muss ich außerdem enable eingeben. Liegt das an einem neuen Modell?
Marwan
1
Haben Sie versucht, Authentifizierungslisten zu definieren? Verwenden Sie "aaa authentication login default local" und "aaa authority exec default local". Alternativ können Sie "if-authenticated" anstelle von "local" für letzteres verwenden.
SirNickity
Ich habe versucht, Ihre Konfiguration auf einem 2811 zu duplizieren, auf dem IOS 15.1 (4) M ausgeführt wird, und dabei einige interessante Ergebnisse erzielt. Wenn ich KEINE authen / author-Zeilen definiert habe, kann ich mich mit einem öffentlichen Schlüssel und ohne Angabe eines globalen Benutzernamens anmelden. Wenn ich die authen / author-Zeilen gemäß meinem vorherigen Kommentar definiere, kann ich nicht nur mit einem öffentlichen Schlüssel SSH ausführen - der Befehl globaler Benutzername ist erforderlich (andernfalls schlägt die Autorisierung fehl.) Wenn ich etwas Dummes tue und einen globalen Benutzernamen OHNE eingebe Als Geheimnis / Passwort funktioniert SSH mit einem Schlüssel, aber Telnet funktioniert ohne Passwort - tun Sie das also nicht.
SirNickity
4

Ja, Sie müssen es auf etwas einstellen. So funktioniert das iOS. Sie können es wie Ihr Anmeldekennwort festlegen, wenn Sie möchten.

Für mehrere Benutzer empfehle ich, die AAA-Authentifizierung einzurichten, damit Sie direkt in den Aktivierungsmodus wechseln können, ohne ein anderes Kennwort eingeben zu müssen. Außerdem können Sie die Aktivität einzelner Administratoren verfolgen. (Sie müssen das geheime Aktivierungskennwort jedoch noch auf einen Wert festlegen.)

aaa new model
aaa authentication login default local
aaa authorization enable default local

username chen-li password foo privilege 15
username safar password bar privilege 15
Ron Trunk
quelle
2
Um die Antwort von Ron zu sichern, muss sie aktiviert sein, wenn Sie den privilegierten Ausführungsmodus aktivieren möchten, es sei denn, Sie konfigurieren Ihre VTYs so, dass sie direkt in Level 15 eintreten.
Jwbensley
@jwbensley. Gute Idee. Das hatte ich vergessen.
Ron Trunk
Ich verwende ein neues Modell, aber für das Festlegen von Berechtigung 15 muss ich weiterhin den Befehl enable verwenden. Ich brauche auch kein Aktivierungsgeheimnis / Passwort (ich habe das alles gerade getestet).
Marwan
Geh zur Arbeit. Anscheinend musste ich angeben aaa authorization exec default local, um privilegierte exec automatisch einzugeben.
Marwan
1

Hier die vorhandenen Informationen ergänzen.

enable

Die erste Option zum Festlegen des enableKennworts ist enable password.

Switch(config)#enable password passfoo
Switch#show running-config | include enable
enable password passfoo

Wie Sie sehen, ist das Passwort im Klartext gespeichert. Das ist schlimm .

Der zweite ist enable secret.

Switch(config)#enable secret ?
  0      Specifies an UNENCRYPTED password will follow
  5      Specifies a MD5 HASHED secret will follow
  8      Specifies a PBKDF2 HASHED secret will follow
  9      Specifies a SCRYPT HASHED secret will follow
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable secret passfoo
Switch#show running-config | include enable
enable secret 5 $1$cSF4$uydOsfi3J2vGT.77tuYWh1

Das ist besser . Zumindest haben wir jetzt einen Hash des Passworts. Dies verwendet jedoch immer noch nur gesalzenes MD5, so dass es wahrscheinlich einigermaßen einfach ist, mit einer großen Wortliste und openssl zu knacken.

Die dritte Option (und der Zweck dieser Antwort) enable algorithm-typeermöglicht die Verwendung von PBKDF2 oder SCRYPT.

Switch(config)#enable algorithm-type ?
  md5     Encode the password using the MD5 algorithm
  scrypt  Encode the password using the SCRYPT hashing algorithm
  sha256  Encode the password using the PBKDF2 hashing algorithm
Switch(config)#enable algorithm-type scrypt secret ?
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable algorithm-type scrypt secret passfoo
Switch#show running-config | include enable
enable secret 9 $9$dXjOMeJPYKOFbl$0D4.ItXi8yrjp.A9dt7Ew6tTgr3LYmMlzD672d.LjFk

Das ist definitiv das Beste .

Philip D'Ath hat eine nette Zusammenfassung darüber geschrieben, warum er sich für Typ 9 entschieden hat. Thomas Pornin und Ilmari Karonen geben ausführlichere Informationen.

Samuel Harmer
quelle
0

Es ist im Grunde eine zusätzliche Sicherheitsebene. Wenn Sie keine Version von IOS haben, die die Dienstkennwortverschlüsselung unterstützt, werden nur Aktivierungskennwörter verschlüsselt, während die Konsolen- und VTY-Kennwörter Klartext sind. Wenn jemand in der Lage wäre, eine Kopie Ihrer Konfiguration abzurufen (z. B. von einem Backup oder einem unbeaufsichtigten Computer, der angemeldet war), würde das verschlüsselte Aktivierungskennwort die Kontrolle über Ihren Router erschweren, selbst wenn er ein Telnet durchführen kann.

Selbst mit verschlüsselten VTY- und Konsolenkennwörtern sollten Sie immer noch ein anderes Aktivierungskennwort haben, um auf der sicheren Seite zu sein und eine zusätzliche Barriere zu bieten.

pooter03
quelle
0

1 der 2 admin users.cisco's herunterfahren ist sehr genau von jedem, jedem, jedem möglichen Hack-Einstiegspunkt via Connect. Mit zwei Admins. Verbunden Der Cisco glaubt, dass auch ein Eindringling verbunden ist, und blockiert den weiteren Fortschritt ohne ordnungsgemäße Anmeldung. Sobald die Kontrolle wieder hergestellt ist, sollten Sie in der Lage sein, Administratoren hinzuzufügen

MAMA
quelle