Devo impostare il segreto di abilitazione sul dispositivo Cisco?


16

Sto configurando un router Cisco 2901. Ho una password di accesso sulla riga della console e le linee vty sono configurate per accettare solo connessioni ssh con autenticazione con chiave pubblica. La linea ausiliaria è chiusa. Ci sono solo due amministratori che accederanno al router e siamo entrambi autorizzati ad eseguire qualsiasi configurazione sul router.

Non sono un esperto di dispositivi Cisco, ma lo considero adeguato per garantire l'accesso alla configurazione del router. Tuttavia, ogni singola guida che ho letto afferma che dovrei impostare un segreto di abilitazione, indipendentemente da qualsiasi altra password utente o linea.

C'è qualcosa di più nella password di abilitazione di cui non sono a conoscenza? Esiste un altro modo per accedere al router oltre alle linee console, ausiliarie o vty?

EDIT: ho aggiunto la configurazione attuale di seguito per essere più chiari sulla mia situazione. Di seguito funziona, con la richiesta di una password di abilitazione o una usernameconfigurazione a parte quella all'interno 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

1
risposta breve: non richiesta , ma altamente raccomandata - in quanto è la prima linea di difesa per privati
Ricky Beam

Ma se ho password sulla console e vtys, perché dovrei aver bisogno di un'altra password? Inoltre, il segreto di abilitazione dovrà essere condiviso tra il personale dell'amministratore, che sta solo chiedendo che venga scritto, inviato via e-mail, ecc. Meglio che ogni amministratore abbia la propria password / chiave privata.
Marwan,

abilita eleva priv. A meno che non lo modifichi (tramite aaa), si applica comunque una volta che hai una riga di comando.
Ricky Beam,

Risposte:


24

No, tecnicamente no. Ma se è possibile accedere alla modalità di abilitazione senza una dipende da come si accede.

Ecco la versione di gratificazione istantanea:

Puoi accedere tramite la console senza una password di abilitazione, ma rimarrai bloccato in modalità utente se usi una semplice password di accesso vty senza una password di abilitazione impostata.

Ecco la lunga versione del risponditore StackExchange:

L'autenticazione Cisco è un po 'un casino per un principiante. C'è un sacco di bagaglio legacy lì. Vorrei provare a scomporlo in un senso del mondo reale.

Chiunque abbia un'attività che accede a un router o passa praticamente passa direttamente alla modalità privilegiata (abilita). La modalità utente è fondamentalmente una lobby frontale e serve a poco più scopo che tenere fuori la bozza. Nelle grandi organizzazioni in cui disponi di vaste reti e pool di lavoro altrettanto vasti, può essere giustificato avere qualcuno in grado di bussare alla porta principale e assicurarsi che qualcuno sia ancora lì. (Cioè, per accedere ed eseguire i comandi più banali solo per vedere che il dispositivo, in effetti, risponde e non è in fiamme.) Ma in ogni ambiente in cui abbia mai lavorato, il livello 1 aveva almeno una capacità di rompere le cose.

In quanto tale, e in particolare in uno scenario come il tuo, conoscere la password di abilitazione è obbligatorio per eseguire qualsiasi operazione. Si potrebbe dire che si tratta di un secondo livello di sicurezza - una password per accedere al dispositivo, un'altra per passare al privilegio amministrativo - ma a me sembra un po 'sciocco.

Come già notato, puoi (e molte persone lo fanno) usare la stessa password, il che non aiuta molto se qualcuno ha ottenuto l'accesso non autorizzato tramite telnet / ssh. Avere password statiche e globali condivise da tutti è probabilmente più un problema che avere un solo token richiesto per entrare. Infine, la maggior parte degli altri sistemi (servizi, appliance, ecc.) Non richiedono un secondo livello di autenticazione e non sono generalmente considerati non sicuri a causa di ciò.

OK, questa è la mia opinione sull'argomento. Dovrai decidere da solo se ha senso alla luce della tua posizione di sicurezza. Andiamo al sodo.

Cisco (saggiamente) richiede di impostare una password di accesso remoto per impostazione predefinita. Quando si entra nella modalità di configurazione della linea ...

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

... puoi dire al router di saltare l'autenticazione:

router(config-line)# no login

... e prontamente violato, ma l'attaccante finirà in modalità utente. Quindi, se hai impostato una password di abilitazione, almeno hai in qualche modo limitato il danno che può essere fatto. (Tecnicamente, non puoi andare oltre senza una password di abilitazione. Ne parleremo tra poco in un momento ...)

Naturalmente, nessuno lo farebbe nella vita reale. Il requisito minimo, per impostazione predefinita e di buon senso, è impostare una semplice password:

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

Ora ti verrà chiesta una password e finirai di nuovo in modalità utente. Se arrivi tramite la console, puoi semplicemente digitare enableper accedere senza dover inserire un'altra password. Ma le cose sono diverse tramite telnet, dove probabilmente otterrai questo:

$ 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> 

Andando avanti ... Probabilmente sai già che, per impostazione predefinita, tutte le password configurate vengono visualizzate come testo normale:

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

Questa è una di quelle cose che stringe lo sfintere dei coscienti della sicurezza. Se l'ansia giustificata è di nuovo qualcosa che devi decidere da solo. Da un lato, se si dispone di accesso sufficiente per visualizzare la configurazione, probabilmente si dispone di accesso sufficiente per modificare la configurazione. D'altra parte, se vi capita di avere incautamente rivelato la configurazione a qualcuno che non ha i mezzi stessi, poi ... beh, ora si fanno hanno i mezzi.

Fortunatamente, quella prima riga nello snippet sopra no service password-encryption, è la chiave per cambiarla:

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

Ora, quando guardi la configurazione, vedi questo:

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

Questo è leggermente migliore delle password in testo semplice, perché la stringa visualizzata non è abbastanza memorabile per navigare a spalla. Tuttavia, è banale decifrare - e uso questo termine liberamente. Puoi letteralmente incollare quella stringa sopra in una dozzina di cracker di password JavaScript nella prima pagina dei risultati di Google e recuperare immediatamente il testo originale.

Queste cosiddette "7" password sono comunemente considerate "offuscate" piuttosto che "crittografate" per evidenziare il fatto che è appena migliore di niente.

A quanto pare, tuttavia, tutti questi passwordcomandi sono obsoleti. (O se non lo sono, dovrebbero essere.) Ecco perché hai le seguenti due opzioni:

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

La versione segreta è sottoposta a hash con un algoritmo unidirezionale, il che significa che l'unico modo per recuperare il testo originale è tramite la forza bruta, ovvero provare ogni possibile stringa di input fino a quando non si genera l'hash noto.

Quando si immette la password al prompt, passa attraverso lo stesso algoritmo di hash e quindi dovrebbe finire per generare lo stesso hash, che viene quindi confrontato con quello nel file di configurazione. Se corrispondono, la tua password è accettata. In questo modo, il testo in chiaro non è noto al router se non durante il breve momento in cui si sta creando o inserendo la password. Nota: c'è sempre la possibilità che altri input possano generare lo stesso hash, ma statisticamente è una probabilità molto bassa (leggi: trascurabile).

Se si sceglie di usare la configurazione sopra te stesso, il router permette sia le enable passworde enable secretdi esistere linee, ma le vittorie segreti della Richiesta password. Questo è uno di quei Cisco che non ha molto senso, ma è così. Inoltre, non esiste secretun comando equivalente dalla modalità di configurazione della linea, quindi sei bloccato con password offuscate lì.

Bene, ora abbiamo una password che non può essere recuperata (facilmente) dal file di configurazione, ma c'è ancora un problema. Viene trasmesso in testo normale quando si accede tramite telnet. Non buono. Vogliamo SSH.

SSH, progettato pensando a una sicurezza più solida, richiede un po 'di lavoro extra e un'immagine IOS con un determinato set di funzionalità. Una grande differenza è che una semplice password non è più sufficiente. È necessario passare all'autenticazione basata sull'utente. E mentre ci sei, imposta una coppia di chiavi di crittografia:

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

Adesso stai cucinando con il gas! Si noti che questo comando utilizza secretpassword. (Sì, puoi, ma non dovresti, usare password). La privilege 15parte consente di ignorare completamente la modalità utente. Quando accedi, vai direttamente alla modalità privilegiata:

$ ssh admin@10.1.1.1
Password: *****

router#

In questo scenario, non è necessario utilizzare una password di abilitazione (o segreta).

Se non sei ancora pensando, "wow ... che clusterfudge che era", tenere a mente c'è tutto un altro post prolisso ancora in agguato dietro il comando aaa new-model, dove si arriva a tuffarsi in cose come il server di autenticazione esterni (RADIUS , TACACS +, LDAP, ecc.), Elenchi di autenticazione (che definiscono le fonti da utilizzare e in quale ordine), livelli di autorizzazione e contabilità delle attività dell'utente.

Salva tutto ciò per un momento in cui ti senti bloccato per un po 'dal tuo router.

Spero possa aiutare!


1
Benvenuto! Ottima prima risposta!
Trauma digitale

Grazie, è una risposta molto perspicace. Sono a conoscenza dei vari dispositivi di crittografia delle password e sto utilizzando un nuovo modello di aa (ho modificato la mia domanda per riflettere ciò).
Marwan,

Non avere un segreto di abilitazione non sembra essere un problema per me. Sia che telnet / ssh con un nome utente / password o una chiave pubblica, posso semplicemente digitare enablee funziona. Inoltre, avere un nome utente con privilegio 15 richiede ancora di digitare abilita. Ciò è dovuto ad un nuovo modello?
Marwan,

1
Hai provato a definire gli elenchi di autenticazione? Utilizzare "autenticazione aaa login predefinito locale" e "aaa autorizzazione exec default locale". In alternativa, utilizzare "if -enticated" anziché "local" su quest'ultimo.
SirNickity,

Ho provato a duplicare la tua configurazione su un 2811 con IOS 15.1 (4) M e ho trovato alcuni risultati interessanti. Se NON ho definito aaa linee authen / author, posso accedere con una chiave pubblica e nessuna istruzione di nome utente globale. Se definisco le righe authen / author per il mio commento precedente, non sono in grado di SSH con solo una chiave pubblica - è richiesto il comando globale username (errore di autorizzazione altrimenti.) Se faccio qualcosa di stupido e inserisco un nome utente globale senza OUT un segreto / password, SSH funziona con una chiave, ma telnet funziona senza password - quindi non farlo.
SirNickity,

4

Sì, devi impostarlo su qualcosa. Questo è solo il modo in cui funziona IOS. Se lo desideri, puoi impostarlo come la tua password di accesso.

Per più utenti, ti consiglio di impostare l'autenticazione AAA, che ti permetterà di accedere direttamente alla modalità di abilitazione senza dover inserire un'altra password. Ti consentirà inoltre di monitorare l'attività dei singoli amministratori. (Ma devi comunque impostare la password di abilitazione segreta su qualcosa.)

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

2
Per eseguire il backup della risposta di Ron, deve essere abilitato se si desidera accedere alla modalità exec privilegiata a meno che non si configurino i VTY per accedere direttamente al livello 15.
jwbensley,

@jwbensley. Buona idea. Me ne ero dimenticato.
Ron Trunk,

Sto usando un nuovo modello aaa, ma l'impostazione del privilegio 15 mi richiede ancora di usare il comando enable. Non ho nemmeno bisogno di abilitare segreto / password (ho appena testato tutto questo).
Marwan,

Vai a lavoro. Apparentemente dovevo specificare aaa authorization exec default localdi inserire automaticamente exec privilegiato.
Marwan,

1

Per aggiungere alle informazioni esistenti qui.

enable

La prima opzione per impostare la enablepassword è enable password.

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

Come puoi vedere, la password è memorizzata in testo semplice. Questo è male .

Il secondo è 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

Questo è meglio . Almeno ora abbiamo un hash della password. Tuttavia, utilizza ancora MD5 salato, quindi è probabilmente abbastanza facile da decifrare con un grande elenco di parole e openssl.

La terza opzione (e lo scopo di questa risposta) è enable algorithm-typeche ci consente di usare PBKDF2 o 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

Questo è sicuramente il migliore .

Philip D'Ath ha scritto un bel riassunto sul perché scegliere il tipo 9. Thomas Pornin e Ilmari Karonen forniscono informazioni più approfondite.


0

È fondamentalmente un ulteriore livello di sicurezza. Se non si dispone di una versione di IOS che supporti la crittografia delle password del servizio, abilitare solo le password vengono crittografate mentre la console e le password VTY sono in chiaro. Se qualcuno fosse in grado di ottenere una copia della tua configurazione (ad esempio da un backup o da un computer incustodito collegato), la password di abilitazione crittografata renderebbe più difficile il controllo del router, anche se è possibile effettuare il telnet.

Anche con password crittografate VTY e console, dovresti comunque avere una password di abilitazione diversa per essere al sicuro e fornire una barriera aggiuntiva.


0

Chiudi 1 dei 2 utenti admin.cisco sono molto attenti a qualsiasi, qualsiasi, qualsiasi tipo di possibile punto di ingresso per l'hacking tramite connect. Con due amministratori. Connesso a Cisco crederà che anche un intruso sia connesso e bloccherà ulteriori progressi senza un accesso corretto. Una volta ristabilito il controllo, dovresti essere in grado di aggiungere l'amministratore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.