Este documento descreve as etapas para adicionar (ou) remover Cifras, MACs e algoritmos Kex em plataformas Nexus.
A Cisco recomenda que você compreenda os conceitos básicos do Linux e do Bash.
As informações neste documento são baseadas nas seguintes versões de hardware e software:
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Algumas verificações de segurança podem encontrar métodos de criptografia fracos usados pelos dispositivos Nexus. Se isso acontecer, as alterações no arquivo dcos_sshd_config nos switches são necessárias para remover algoritmos não seguros.
Para confirmar quais Cifras, MACs e Algoritmos Kex uma plataforma usa, verifique isso a partir de um dispositivo externo. Você pode usar estas opções:
Abra uma linha CMD em um PC que possa acessar o dispositivo Nexus e execute o 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
Aplicável a:
1. Ative o recurso bash-shell e no modo bash:
switch(config)# feature bash-shell
switch(config)#
switch(config)# run bash
bash-4.3$
2. Revise o conteúdo do arquivo dcos_sshd_config:
bash-4.3$ cat /isan/etc/dcos_sshd_config
Note: Você pode usar egrep para examinar linhas específicas: cat /isan/etc/dcos_sshd_config | grep MAC
Aplicável a:
Etapas:
1. Abra um caso TAC para obter o arquivo dplug que corresponde à versão do NXOS em execução no switch.
2. Carregue o arquivo dplug no bootflash e crie uma cópia dele.
switch# copy bootflash:nuova-or-dplug-mzg.7.3.8.N1.1 bootflash:dp
Note: Uma cópia ("dp") do arquivo dplug original é criada no bootflash, portanto, somente a cópia é removida depois que o dplug é carregado e o arquivo dplug original permanece no bootflash para execuções subsequentes.
3. Carregue a cópia do dplug executando o 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. Revise o arquivo dcos_sshd_config.
Linux(debug)# cat /isan/etc/dcos_sshd_config
1. Envie uma cópia do arquivo dcos_sshd_config para o bootflash:
Linux(debug)# cd /isan/etc/
Linux(debug)# copy dcos_sshd_config /bootflash/dcos_sshd_config
Linux(debug)# exit
2. Confirme se a cópia está no bootflash:
switch(config)# dir bootflash: | i ssh
7372 Mar 24 02:24:13 2023 dcos_sshd_config
3. Exportar para um servidor:
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. Conclua todas as alterações necessárias no arquivo e importe-o de volta para o bootflash.
1. Carregue o arquivo dcos_sshd_config modificado para a memória flash de inicialização.
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#
Substituindo o arquivo dcos_sshd_config existente em /isan/etc/ por um arquivo dcos_sshd_config modificado localizado no flash de inicialização. Esse processo não é persistente nas reinicializações
ssh config no bootflash:switch# dir bootflash: | i ssh
7372 Mar 24 02:24:13 2023 dcos_sshd_config_modified
2. Enquanto estiver no modo bash ou Linux (debug)#, substitua o arquivo dcos_sshd_config existente pelo arquivo no bootflash:
bash-4.3$ sudo su
bash-4.3# copy /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config
3. Confirme se as alterações foram bem-sucedidas:
bash-4.3$ cat /isan/etc/dcos_sshd_config
Usando um script EEM, ele é acionado quando o registro "VDC_MGR-2-VDC_ONLINE" é atualizado após um recarregamento. Se o EEM for acionado, um script py será executado e substituirá o arquivo dcos_sshd_config existente em /isan/etc/ por um arquivo dcos_sshd_config modificado localizado no bootflash. Isso se aplica somente às versões do NX-OS que suportam "feature bash-shell".
switch# dir bootflash: | i ssh
7404 Mar 03 16:10:43 2023 dcos_sshd_config_modified_7k
switch#
2. Crie um script de cópia que aplique alterações ao arquivo dcos_sshd_config. Certifique-se de salvar o arquivo com a extensão "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. Carregue o script Python no bootflash.
switch# dir bootflash:///scripts
175 Mar 03 16:11:01 2023 ssh_workaround_7k.py
Note: Os scripts Python são praticamente os mesmos em todas as plataformas, exceto no N7K, que contém algumas linhas adicionais para superar o bug da Cisco ID CSCva14865.
4. Certifique-se de que o nome do arquivo dcos_sshd_config do script e do bootflash (na Etapa 1.) sejam os mesmos:
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. Execute o script uma vez, assim, o arquivo dcos_sshd_config é alterado.
switch# source ssh_workaround_7k.py
switch#
6. Configure um script EEM, depois que o script py for executado toda vez que o switch for reinicializado, ele voltará a funcionar.
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"
Note: A sintaxe do EEM pode variar em diferentes versões do NXOS (algumas versões exigem "action cli" e outras "action cli command"), verifique se os comandos do EEM são precisos.
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. Crie um script de cópia que aplique alterações ao arquivo dcos_sshd_config. Certifique-se de salvar o arquivo com a extensão "py".
#!/usr/bin/env python
import os
os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config\"")
3. Carregue o script python no bootflash.
switch# dir | i i .py
127 Jun 18 17:21:39 2024 ssh_workaround_9k.py
switch#
4. Certifique-se de que o nome do arquivo dcos_sshd_config do script e do bootflash (Etapa 1.) sejam os mesmos:
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. Execute o script uma vez, assim, o arquivo dcos_sshd_config é alterado.
switch# python bootflash:ssh_workaround_9k.py
6. Configure um script EEM, uma vez que o script py é sempre executado, o switch é reinicializado e volta a funcionar.
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
Note: A sintaxe do EEM pode variar em diferentes versões do NXOS (algumas versões exigem "action cli" e outras "action cli command"), verifique se os comandos do EEM são precisos.
Um arquivo dplug modificado foi criado através do bug da Cisco ID CSCvr23488 para remover estes algoritmos Kex:
Os arquivos dpug fornecidos através do bug da Cisco ID CSCvr23488 não são os mesmos que os usados para acessar o Linux Shell. Abra um caso no TAC para obter o conector modificado a partir da ID de bug da 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. Crie uma cópia do arquivo dplug modificado.
switch# copy bootflash:nuova-or-dplug-mzg.7.3.14.N1.1_CSCvr23488.bin bootflash:dp
Note: Uma cópia ("dp") do arquivo dplug original é criada no bootflash, apenas a cópia é removida depois que o dplug é carregado e o arquivo dplug original permanece no bootflash para execuções subsequentes.
3. Aplique o arquivo dplug da ID de bug da Cisco CSCvr23488 manualmente:
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. Verifique as novas configurações de 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. Verifique se essa alteração é persistente nas reinicializações com um 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"
Note: Depois que o dplug modificado é aplicado, o recurso SSH deve ser redefinido nesta plataforma. O arquivo dplug deve estar presente no bootflash e o EEM deve ser configurado com o nome de arquivo dplug apropriado. O nome do arquivo dplug pode variar dependendo da versão do switch. Certifique-se de modificar o script conforme necessário. A ação 1 cria uma cópia do arquivo dplug original no bootflash para outro chamado "dp", de modo que o arquivo dplug original não seja excluído depois de carregado.
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$
Para superar isso, execute:
bash-4.3$ sudo usermod -s /bin/bash root
Depois de executar o comando anterior, "sudo su" funciona:
bash-4.3$ sudo su
bash-4.3#
Note: Essa alteração não sobrevive a uma recarga.
Há um arquivo dcos_sshd_config separado para cada VDC. Se os parâmetros SSH precisarem ser modificados em um VDC diferente, certifique-se de modificar o arquivo dcos_sshd_config correspondente.
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
Exemplo de CLI de um switch executando 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
Para plataformas que executam códigos anteriores, você pode adicionar Ciphers, MACs e KexAlgorithm. Estas versões não oferecem a opção de selecionar algoritmos específicos individualmente; somente a opção 'all' é suportada.
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
Note: Esses comandos estão disponíveis no Nexus 7000 com versões 8.3(1) e posteriores. Para a plataforma Nexus 3000/9000, o comando fica disponível com a versão 7.0(3)I7(8) e posterior. (Todas as versões 9.3(x) também têm esse comando. Consulte o Guia de configuração de segurança do NX-OS do Cisco Nexus 9000 Series, versão 9.3(x)).
| Revisão | Data de publicação | Comentários |
|---|---|---|
2.0 |
31-Jul-2026
|
Ortografia, gramática, título atualizados, linhas horizontais inseridas para seções separadas/legibilidade, alertas fixos do CCW. |
1.0 |
01-Jul-2024
|
Versão inicial |