Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Esame di cifrari, MAC e algoritmi Kex disponibili

Opzione 1. Uso della linea CMD del PC

Opzione 2. Accedere al file "dcos_sshd_config" utilizzando la feature Bash-Shell

Opzione 3. Accedere al file "dcos_sshd_config" utilizzando un file Dplug

Soluzione

Passaggio 1. Esportare il file "dcos_sshd_config"

Passaggio 2. Importare il file "dcos_sshd_config"

Passaggio 3. Sostituire il file "dcos_sshd_config" originale con il comando Copia

Processo manuale (non persistente nei riavvii) - Tutte le piattaforme

Processo automatico - N7K

Processo automatico - N9K, N3K

Processo automatico - N5K, N6K

Considerazioni sulla piattaforma

N5K/N6K

N7K

N9K

N7K, N9K, N3K

Introduzione

Questo documento descrive la procedura per aggiungere (o rimuovere) Cifre, MAC e Algoritmi Kex nelle piattaforme Nexus.

Prerequisiti

Requisiti

Cisco consiglia di comprendere le nozioni di base di Linux e Bash.

Componenti usati

Le informazioni di questo documento si basano sulle seguenti versioni hardware e software:

- Nexus 3000 e 9000 NX-OS 7.0(3)I7(10)

- Nexus 3000 e 9000 NX-OS 9.3(13)

- Nexus 9000 NX-OS 10.2(7)

- Nexus 9000 NX-OS 10.3(5)

- Nexus 7000 NX-OS 8.4(8)

- Nexus 5600 NX-OS 7.3(14)N1(1)

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

A volte, le scansioni di sicurezza possono trovare metodi di crittografia deboli utilizzati dai dispositivi Nexus. In questo caso, per rimuovere gli algoritmi non sicuri, è necessario modificaredcos_sshd_configil file sugli switch.

Esame di cifrari, MAC e algoritmi Kex disponibili

Per verificare quali cifrari, MAC e algoritmi Kex vengono utilizzati da una piattaforma e controllare da un dispositivo esterno, è possibile utilizzare le seguenti opzioni:

Opzione 1. Uso della linea CMD del PC

Aprire una riga CMD su un PC in grado di raggiungere il dispositivo Nexus e utilizzare il comando  ssh -vvv

.

C:\Users\xxxxx>ssh -vvv

--------- snipped ------------

debug2: peer server KEXINIT proposal

debug2:

KEX algorithms: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,curve25519-sha256@libssh.org   <--- Kex algorithms

debug2: host key algorithms: ssh-rsa

debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc

debug2:

ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc    <--- encryption algorithms

debug2: MACs ctos: hmac-sha1

debug2:

MACs stoc: hmac-sha1                      <--- mac algorithms

debug2: compression ctos: none,zlib@openssh.com

debug2:

compression stoc: none,zlib@openssh.com   <--- compression algorithms

Opzione 2. Accedere al file "dcos_sshd_config" utilizzando la feature Bash-Shell

Ciò si applica a:

- N3K in esecuzione 7. X, 9. X, 10. X

- Tutti i codici N9K

- N7K con versione 8.2 e successive

Passaggi:

1. Attivate la feature bash-shell e attivate la modalità bash:

switch(config)# feature bash-shell

switch(config)#

switch(config)# run bash

bash-4.3$

2. Esaminare il contenuto deldcos_sshd_configfile:

bash-4.3$ cat /isan/etc/dcos_sshd_config

Nota: È possibile utilizzare egrep per visualizzare righe specifiche: cat /isan/etc/dcos_sshd_config | grep MAC

Opzione 3. Accedere al file "dcos_sshd_config" utilizzando un file Dplug

Ciò si applica a:

- N3K in esecuzione 6. X che non dispone dell'accesso alla shell

- Tutti i codici N5K e N6K

- N7K con codici 6. X e 7. X

Passaggi:

1. Aprire una richiesta TAC per ottenere il file dplug corrispondente alla versione NXOS in esecuzione sullo switch.

2. Caricare il file dplug in bootflash e crearne una copia.

switch# copy bootflash:nuova-or-dplug-mzg.7.3.8.N1.1 bootflash:dp

Nota: Una copia ("dp") del file dplug originale viene creata in bootflash, in modo che solo la copia venga rimossa dopo il caricamento del dplug e il file dplug originale rimanga in bootflash per le esecuzioni successive.

3. Caricare la copia del dplug con ilload comando.

n5k-1# load bootflash:dp

Loading plugin version 7.3(8)N1(1)

###############################################################

Warning: debug-plugin is for engineering internal use only!

For security reason, plugin image has been deleted.

###############################################################

Successfully loaded debug-plugin!!!

Linux(debug)#

Linux(debug)#

2. Esaminare ildcos_sshd_configfile.

Linux(debug)# cat /isan/etc/dcos_sshd_config

Soluzione

Passaggio 1. Esportare il file "dcos_sshd_config"

1. Inviare una copia deldcos_sshd_configfile a bootflash:

Linux(debug)# cd /isan/etc/

Linux(debug)# copy dcos_sshd_config /bootflash/dcos_sshd_config

Linux(debug)# exit

2. Verificare che la copia sia in bootflash:

switch(config)# dir bootflash: | i ssh

7372 Mar 24 02:24:13 2023 dcos_sshd_config

3. Esporta in un server:

switch# copy bootflash: ftp:

Enter source filename: dcos_sshd_config

Enter vrf (If no input, current vrf 'default' is considered): management

Enter hostname for the ftp server: <hostname>

Enter username: <username>

Password:

***** Transfer of file Completed Successfully *****

Copy complete, now saving to disk (please wait)...

Copy complete.

4. Apportare le modifiche necessarie al file e reimportarlo in bootflash.

Passaggio 2. Importare il file "dcos_sshd_config"

1. Caricare il file modificatodcos_sshd_configin flash di avvio.

switch# copy ftp: bootflash:

Enter source filename: dcos_sshd_config_modified.txt

Enter vrf (If no input, current vrf 'default' is considered): management

Enter hostname for the ftp server: <hostname>

Enter username: <username>

Password:

***** Transfer of file Completed Successfully *****

Copy complete, now saving to disk (please wait)...

Copy complete.

switch#

Passaggio 3. Sostituire il file "dcos_sshd_config" originale con il comando Copia

Processo manuale (non persistente nei riavvii) - Tutte le piattaforme

Sostituendo il file esistentedcos_sshd_configin/isan/etc/con un file modificatodcos_sshd_configsituato in bootflash. Questo processo non è persistente dopo il riavvio

1. Caricare un file modificatossh configin bootflash:

switch# dir bootflash: | i ssh

7372 Mar 24 02:24:13 2023 dcos_sshd_config_modified

2. In modalità bash o Linux(debug)#, sovrascrivere il file esistentedcos_sshd_configcon quello in bootflash:

bash-4.3$ sudo su

bash-4.3# copy /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config

3. Confermare l'esito delle modifiche:

bash-4.3$ cat /isan/etc/dcos_sshd_config

Processo automatico - N7K

Utilizzando uno script EEM che viene attivato quando il log "VDC_MGR-2-VDC_ONLINE" viene attivato dopo un ricaricamento. Se viene attivato EEM, viene eseguito uno script ping e il file esistentedcos_sshd_configin viene sostituito/isan/etc/con un file modificatodcos_sshd_configsituato in bootflash. Ciò è valido solo per le versioni NX-OS che supportano "feature bash-shell".

1. Caricare un file di configurazione ssh modificato in bootflash:

switch# dir bootflash: | i ssh

7404    Mar 03 16:10:43 2023  dcos_sshd_config_modified_7k

switch#

2. Creare uno script ping che applichi le modifiche aldcos_sshd_configfile. Assicurarsi di salvare il file con l'estensione "py".

#!/usr/bin/env python

import os

os.system("sudo usermod -s /bin/bash root")

os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified_7k /isan/etc/dcos_sshd_config\"")

3. Caricare lo script Python su bootflash.

switch# dir bootflash:///scripts

175    Mar 03 16:11:01 2023  ssh_workaround_7k.py

Nota: Gli script Python sono più o meno gli stessi su tutte le piattaforme, ad eccezione del N7K che contiene alcune righe aggiuntive per superare l'ID bug Cisco CSCva14865.

4. Assicurarsi che il nome deldcos_sshd_configfile dello script e del bootflash (Passaggio 1.) siano gli stessi:

switch# dir bootflash: | i ssh

7404    Mar 03 16:10:43 2023  dcos_sshd_config_modified_7k

switch#

switch# show file bootflash:///scripts/ssh_workaround_7k.py

#!/usr/bin/env python

import os

os.system("sudo usermod -s /bin/bash root")

os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified_7k /isan/etc/dcos_sshd_config\"")

switch#

4. Eseguire lo script una volta, in modo che il file vengadcos_sshd_configmodificato.

switch# source ssh_workaround_7k.py

switch#

5. Configurare uno script EEM in modo che lo script ping venga eseguito ogni volta che lo switch viene riavviato e riavviato.

EEM N7K:

event manager applet SSH_workaround

event syslog pattern "vdc 1 has come online"

action 1.0 cli command "source ssh_workaround_7k.py"

action 2 syslog priority alerts msg "SSH Workaround implemented"

Nota: La sintassi EEM può variare a seconda delle versioni di NXOS (alcune versioni richiedono "action <id> cli" e altre "action <id> cli command"), quindi accertarsi che i comandi EEM siano eseguiti correttamente.

Processo automatico - N9K, N3K

1. Caricare un file di configurazione SSH modificato in bootflash.

switch# dir | i i ssh

7732 Jun 18 16:49:47 2024 dcos_sshd_config

7714 Jun 18 16:54:20 2024 dcos_sshd_config_modified

switch#

2. Creare uno script ping che applichi le modifiche aldcos_sshd_configfile. Assicurarsi di salvare il file con l'estensione "py".

#!/usr/bin/env python

import os

os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config\"")

3. Caricare lo script python su bootflash.

switch# dir | i i .py

127 Jun 18 17:21:39 2024 ssh_workaround_9k.py

switch#

4. Assicurarsi che il nome deldcos_sshd_configfile dello script e del bootflash (Passaggio 1.) siano gli stessi:

switch# dir | i i ssh

7732 Jun 18 16:49:47 2024 dcos_sshd_config

7714 Jun 18 16:54:20 2024 dcos_sshd_config_modified

127 Jun 18 17:21:39 2024 ssh_workaround_9k.py

switch#

switch# sh file bootflash:ssh_workaround_9k.py

#!/usr/bin/env python

import os

os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config\"")

switch#

4. Eseguire lo script una volta, in modo che il file vengadcos_sshd_configmodificato.

switch# python bootflash:ssh_workaround_9k.py

5. Configurare uno script EEM in modo che lo script ping venga eseguito ogni volta che lo switch viene riavviato e riavviato.

EEM N9K e N3K:

event manager applet SSH_workaround

event syslog pattern "vdc 1 has come online"

action 1.0 cli python bootflash:ssh_workaround_9k.py

action 2 syslog priority alerts msg SSH Workaround implemented

Nota: La sintassi EEM può variare a seconda delle versioni di NXOS (alcune versioni richiedono "action <id> cli" e altre "action <id> cli command"), quindi accertarsi che i comandi EEM siano eseguiti correttamente.

Processo automatico - N5K, N6K

Un file dplug modificato è stato creato con l'ID bug Cisco CSCvr23488 per rimuovere i seguenti algoritmi Kex:

- diffie-hellman-group-exchange-sha256

- diffie-hellman-group-exchange-sha1

- diffie-hellman-group1-sha1

i file debug forniti tramite l'ID bug Cisco CSCvr23488 non sono gli stessi utilizzati per accedere alla shell Linux. Aprire una richiesta TAC per ottenere il dplug modificato dall'ID bug Cisco CSCvr23488.

1. Verificare le impostazioni predefinitedcos_sshd_config:

C:\Users\user>ssh -vvv admin@

---- snipped ----

debug2: peer server KEXINIT proposal

debug2: KEX algorithms: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1,diffie-hellman-group1-sha1  <--- kex algorithms

debug2: host key algorithms: ssh-rsa

debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr

debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr           <--- encryption algorithms

debug2: MACs ctos: hmac-sha1

debug2: MACs stoc: hmac-sha1                                     <--- mac algorithms

debug2: compression ctos: none,zlib@openssh.com

debug2: compression stoc: none,zlib@openssh.com                  <--- compression algorithms

2. Creare una copia del file dplug modificato.

switch# copy bootflash:nuova-or-dplug-mzg.7.3.14.N1.1_CSCvr23488.bin bootflash:dp

Nota: Una copia ("dp") del file dplug originale viene creata in bootflash in modo che solo la copia venga rimossa dopo il caricamento del dplug e il file dplug originale rimanga in bootflash per le esecuzioni successive.

3. Applicare manualmente il file dplug dall'ID bug Cisco CSCvr23488:

switch# load bootflash:dp2

Loading plugin version 7.3(14)N1(1)

###############################################################

Warning: debug-plugin is for engineering internal use only!

For security reason, plugin image has been deleted.

###############################################################

Successfully loaded debug-plugin!!!

Workaround for CSCvr23488 implemented

switch#

4. Verificare le nuovedcos_sshd_configimpostazioni:

C:\Users\user>ssh -vvv admin@<hostname>

---- snipped ----

debug2: peer server KEXINIT proposal

debug2: KEX algorithms: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521

debug2: host key algorithms: ssh-rsa

debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr

debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr

debug2: MACs ctos: hmac-sha1

debug2: MACs stoc: hmac-sha1

debug2: compression ctos: none,zlib@openssh.com

debug2: compression stoc: none,zlib@openssh.com

5. Rendere persistente la modifica dopo il riavvio con uno script EEM:

event manager applet CSCvr23488_workaround

event syslog pattern "VDC_MGR-2-VDC_ONLINE"

action 1 cli command "copy bootflash:nuova-or-dplug-mzg.7.3.14.N1.1_CSCvr23488.bin bootflash:dp"

action 2 cli command "load bootflash:dp"

action 3 cli command "conf t ; no feature ssh ;feature ssh"

action 4 syslog priority alerts msg "CSCvr23488 Workaround implemented"

Nota:

- Dopo aver applicato il dplug modificato, la funzionalità SSH deve essere reimpostata su questa piattaforma.

- Verificare che il file dplug sia presente in bootflash e che EEM sia configurato con il nome file dplug corretto. Il nome del file dplug può variare a seconda della versione dello switch, quindi accertarsi di modificare lo script in base alle esigenze.

- L'azione 1 crea una copia del file dplug originale in bootflash in un altro file denominato "dp", in modo che il file dplug originale non venga eliminato dopo il caricamento.

Considerazioni sulla piattaforma

N5K/N6K

- Non è possibile modificare l'indirizzo MAC (Message Authentication Code) su queste piattaforme modificando il file dcos_sshd_config. L'unico MAC supportato è hmac-sha1.

N7K

- Per modificare gli indirizzi MAC, è necessario un codice 8.4. Per i dettagli, vedere l'ID bug Cisco CSCwc26065.

- "Sudo su" non è disponibile per default su 8.X. ID bug Cisco di riferimento: CSCva14865. Se eseguito, viene osservato questo errore:

F241.06.24-N7706-1(config)# feature bash-shell

F241.06.24-N7706-1(config)# run bash

bash-4.3$ sudo su

Cannot execute /isanboot/bin/nobash: No such file or directory   <---

bash-4.3$

Per risolvere il problema, digitare:

bash-4.3$ sudo usermod -s /bin/bash root

Dopo questo "sudo su" funziona:

bash-4.3$ sudo su

bash-4.3#

Nota: Questa modifica non è valida in caso di ricaricamento.

- Esiste un file separatodcos_sshd_configper ogni VDC; nel caso in cui i parametri SSH debbano essere modificati su un VDC diverso, accertarsi di modificare il file corrispondentedcos_sshd_config.

N7K# run bash

bash-4.3$ cd /isan/etc/

bash-4.3$ ls -la | grep ssh

-rw-rw-r-- 1 root root 7564 Mar 27 13:48 dcos_sshd_config     <--- VDC 1

-rw-rw-r-- 1 root root 7555 Mar 27 13:48 dcos_sshd_config.2   <--- VDC 2

-rw-rw-r-- 1 root root 7555 Mar 27 13:48 dcos_sshd_config.3   <--- VDC 3

N9K

- Le modifiche suldcos_sshd_configfile non sono persistenti dopo il riavvio su nessuna piattaforma Nexus. Se le modifiche devono essere persistenti, è possibile utilizzare EEM per modificare il file a ogni avvio dello switch.

- Il miglioramento apportato a N9K modifica questo valore a partire da 10.4(2). È disponibile anche in 10.5(1). Non è stato aggiunto alla versione più recente dei precedenti programmi software.

- Per ulteriori informazioni, vedere l'ID bug Cisco CSCwd82985.

Esempio di CLI da uno switch con 10.5(1):

switch(config)# ssh ?

cipher-mode Set Cipher-mode for ssh

ciphers Ciphers to encrypt the connection <<<<<<<<<

idle-timeout SSH Client session idle timeout value

kexalgos Key exchange methods that are used to generate per-connection keys <<<<<<<<<

key Generate SSH Key

keytypes Public key algorithms that the server can use to authenticate itself to the client

login-attempts Set maximum login attempts from ssh

login-gracetime Set login gracetime for ssh connection

macs Message authentication codes used to detect traffic modification <<<<<<<<<

port Set port number for ssh

rekey Renegotiate ssh key

switch(config)# ssh ciphers ?

WORD Algorithm name to be configured (Max Size 128)

aes256-gcm <Deprecated> enable aes256-gcm

all Control known weak SSH algorithms in current version of NX-OS in addition to the base set of strong algorithms

switch(config)# ssh macs ?

WORD Algorithm name to be configured (Max Size 128)

all Control known weak SSH algorithms in current version of NX-OS in addition to the base set of strong algorithms

switch(config)# ssh kexalgos ?

WORD Algorithm name to be configured (Max Size 128)

all Control known weak SSH algorithms in current version of NX-OS in addition to the base set of strong algorithms

Esempio di CLI da uno switch con versione 10.3(6):

switch(config)# ssh kexalgos ?

all Enable algorithms supported in current version of SSH

ecdh-sha2-nistp384 Enable ecdh-sha2-nistp384

switch(config)# ssh ciphers ?

aes256-gcm Enable aes256-gcm

all Enable algorithms supported in current version of SSH

switch(config)# ssh macs ?

all Enable algorithms supported in current version of SSH

N7K, N9K, N3K

Se necessario, è possibile aggiungere ulteriori elementi Ciphers, MAC e KexAlgorithms:

switch(config)# ssh kexalgos [all | key-exchangealgorithm-name]

switch(config)# ssh macs [all | mac-name]

switch(config)# ssh ciphers [ all | cipher-name ]

Nota: Questi comandi sono disponibili su Nexus 7000 con le versioni 8.3(1) e successive. Per la piattaforma Nexus 3000/9000, il comando è disponibile a partire dalla versione 7.0(3)I7(8). (Tutte le versioni 9.3(x) dispongono anche di questo comando. Vedere la guida alla configurazione della sicurezza di Cisco Nexus serie 9000 NX-OS, versione 9.3(x) )