Questo documento descrive la procedura per aggiungere (o rimuovere) Cifre, MAC e Algoritmi Kex nelle piattaforme Nexus.
Cisco consiglia di comprendere le nozioni di base di Linux e Bash.
Le informazioni di questo documento si basano sulle seguenti versioni hardware e software:
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.
Alcune scansioni di sicurezza possono trovare metodi di crittografia deboli utilizzati dai dispositivi Nexus. In questo caso, per rimuovere gli algoritmi non sicuri, è necessario modificare il file dcos_sshd_config sugli switch.
Per verificare quali cifrari, MAC e algoritmi Kex vengono utilizzati da una piattaforma, verificate che provengano da un dispositivo esterno. È possibile utilizzare le seguenti opzioni:
Aprire una riga CMD su un PC in grado di raggiungere il dispositivo Nexus ed eseguire il comando ssh -vv
C:\Users\xxxxx>ssh -vvv <hostname>
--------- 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
Ciò si applica a:
1. Abilitare la funzione bash-shell e in modalità bash:
switch(config)# feature bash-shell
switch(config)#
switch(config)# run bash
bash-4.3$
2. Esaminare il contenuto del file dcos_sshd_config:
bash-4.3$ cat /isan/etc/dcos_sshd_config
Nota: È possibile utilizzare egrep per visualizzare righe specifiche: cat /isan/etc/dcos_sshd_config | MAC GREP
Ciò si applica a:
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, quindi solo la copia viene rimossa dopo il caricamento del dplug e il file dplug originale rimane in bootflash per le esecuzioni successive.
3. Caricare la copia del dplug eseguendo il comando load.
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 il file dcos_sshd_config.
Linux(debug)# cat /isan/etc/dcos_sshd_config
1. Inviare una copia del file dcos_sshd_config 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.
1. Caricare il file dcos_sshd_config modificato in boot flash.
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#
Sostituendo il file dcos_sshd_config esistente in /isan/etc/ con un file dcos_sshd_config modificato situato in bootflash. Questo processo non è persistente dopo il riavvio
ssh config in 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 dcos_sshd_config esistente con 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
Utilizzando uno script EEM, questo viene attivato quando il log "VDC_MGR-2-VDC_ONLINE" viene aggiornato dopo un ricaricamento. Se viene attivato EEM, viene eseguito uno script ping e il file dcos_sshd_config esistente in /isan/etc/ viene sostituito con un file dcos_sshd_config modificato situato in bootflash. Questo vale solo per le versioni NX-OS che supportano "feature bash-shell".
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 al file dcos_sshd_config. Accertarsi 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. Verificare che il nome del file dcos_sshd_config derivato dallo script e da bootflash (nel passaggio 1.) sia lo stesso:
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#
5. Eseguire lo script una volta, quindi il file dcos_sshd_config viene modificato.
switch# source ssh_workaround_7k.py
switch#
6. Configurare uno script EEM. Una volta eseguito lo script ping ogni volta che lo switch viene riavviato, lo script PY viene ripristinato.
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 in base alle diverse versioni di NXOS (alcune versioni richiedono "action cli" e altre "action cli command"); verificare che i comandi EEM siano accurati.
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 al file dcos_sshd_config. Accertarsi 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. Verificare che il nome del file dcos_sshd_config derivato dallo script e da bootflash (Passaggio 1.) sia lo stesso:
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#
5. Eseguire lo script una volta, in modo che il file dcos_sshd_config venga modificato.
switch# python bootflash:ssh_workaround_9k.py
6. Configurare uno script EEM; una volta eseguito lo script ping ogni volta, 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 in base alle diverse versioni di NXOS (alcune versioni richiedono "action cli" e altre "action cli command"); verificare che i comandi EEM siano accurati.
Un file dplug modificato è stato creato con l'ID bug Cisco CSCvr23488 per rimuovere i seguenti algoritmi Kex:
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.
C:\Users\user>ssh -vvv admin@<hostname>
---- 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, solo la copia viene rimossa dopo il caricamento del dplug e il file dplug originale rimane 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 nuove impostazioni dcos_sshd_config:
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. Accertarsi che la modifica sia permanente 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. Il file dplug deve essere presente in bootflash e EEM deve essere configurato con il nome file dplug corretto. Il nome del file dplug può variare a seconda della versione dello switch, 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 una volta caricato.
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, eseguire:
bash-4.3$ sudo usermod -s /bin/bash root
Dopo aver eseguito il comando precedente, "sudo su" funziona:
bash-4.3$ sudo su
bash-4.3#
Nota: Questa modifica non è valida in caso di ricaricamento.
Esiste un file dcos_sshd_config separato per ciascun VDC. Se i parametri SSH devono essere modificati su un VDC diverso, accertarsi di modificare il file dcos_sshd_config corrispondente.
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
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
Per le piattaforme che eseguono codice precedente, potete aggiungere Cipher, MAC e KexAlgorithms. Queste versioni non offrono l'opzione di selezionare singolarmente algoritmi specifici; è supportata solo l'opzione 'all'.
N9000(config)# ssh macs ?
all Enable algorithms supported in current version of SSH
N9000(config)# ssh kexalgos ?
all Enable algorithms supported in current version of SSH
ecdh-sha2-nistp384 Enable ecdh-sha2-nistp384
N9000(config)# ssh ciphers ?
aes256-gcm Enable aes256-gcm
all Enable algorithms supported in current version of SSH
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)).
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
2.0 |
31-Jul-2026
|
Controllo ortografico, grammaticale, titolo, righe orizzontali inserite aggiornate per separare le sezioni/leggibilità, avvisi CCW fissi. |
1.0 |
01-Jul-2024
|
Versione iniziale |