Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Informações de Apoio

Revisar Cifras, MACs e algoritmos Kex disponíveis

Opção 1. Usando a linha CMD do PC

Opção 2. Acesse o arquivo "dcos_sshd_config" usando o recurso Bash-Shell

Opção 3. Acesse o arquivo "dcos_sshd_config" usando o arquivo do Dplug

Solução

Etapa 1.Exportar o arquivo "dcos_sshd_config"

Etapa 2.Importar o arquivo "dcos_sshd_config"

Etapa 3. Substituir o arquivo original "dcos_sshd_config" pela cópia

Processo manual (não persistente nas reinicializações) - Todas as plataformas

Processo automatizado - N7K

Processo automatizado - N9K, N3K

Processo automatizado - N5K, N6K

Considerações sobre a plataforma

N5K/N6K

N7K

N9K

N7K, N9K, N3K

Introdução

Este documento descreve as etapas para adicionar (ou) remover Cifras, MACs e algoritmos Kex em plataformas Nexus.

Pré-requisitos

Requisitos

A Cisco recomenda que você compreenda os conceitos básicos do Linux e do Bash.

Componentes Utilizados

As informações neste documento são baseadas nas seguintes versões de 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)

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.

Informações de Apoio

Às vezes, as verificações de segurança podem encontrar métodos de criptografia fracos usados pelos dispositivos Nexus. Se isso acontecer, alterações no arquivodcos_sshd_confignos switches serão necessárias para remover esses algoritmos não seguros.

Revisar Cifras, MACs e algoritmos Kex disponíveis

Para confirmar quais Cifras, MACs e Algoritmos Kex uma plataforma usa e verificar isso de um dispositivo externo, você pode usar estas opções:

Opção 1. Usando a linha CMD do PC

Abra uma linha CMD em um PC que possa acessar o dispositivo Nexus e use o 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

Opção 2. Acesse o arquivo "dcos_sshd_config" usando o recurso Bash-Shell

Aplicável a:

- N3K executando 7. X, 9. X, 10. X

- Todos os códigos N9K

- N7K executando 8.2 e posterior

Etapas:

1. Ative o recurso bash-shell e entre no modo bash:

switch(config)# feature bash-shell

switch(config)#

switch(config)# run bash

bash-4.3$

2. Revise o conteúdo do arquivodcos_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

Opção 3. Acesse o arquivo "dcos_sshd_config" usando um arquivo Dplug

Aplicável a:

- N3Ks executando 6. X que não tem acesso ao bash- shell

- Todos os códigos N5K e N6K

- N7Ks executando códigos 6. X e 7. X

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, de modo que somente a cópia seja removida depois que o dplug for carregado e o arquivo dplug original permaneça no bootflash para execuções subsequentes.

3. Carregue a cópia do dplug por meio doload 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. Revisardcos_sshd_configarquivo.

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

Solução

Etapa 1. Exportar o arquivo "dcos_sshd_config"

1. Envie uma cópia do arquivodcos_sshd_configpara 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. Faça as alterações necessárias no arquivo e importe-o de volta para o bootflash.

Etapa 2. Importar o arquivo "dcos_sshd_config"

1. Carregue o arquivo modificadodcos_sshd_configna 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#

Etapa 3. Substituir o arquivo original "dcos_sshd_config" pela cópia

Processo manual (não persistente nas reinicializações) - Todas as plataformas

Substituindo o arquivo existentedcos_sshd_configem/isan/etc/por um arquivo modificadodcos_sshd_configlocalizado no bootflash. Esse processo não é persistente nas reinicializações

1. Carregar um arquivo modificadossh configno 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 existentedcos_sshd_configpelo que estiver 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

Processo automatizado - N7K

Usando um script EEM que é acionado quando o registro "VDC_MGR-2-VDC_ONLINE" é ativado após um recarregamento. Se o EEM for acionado, um script py será executado e substituirá o arquivo existentedcos_sshd_configem/isan/etc/por um arquivo modificadodcos_sshd_configlocalizado no bootflash. Isso se aplica somente às versões do NX-OS que oferecem suporte a "feature bash-shell".

1. Carregue um arquivo de configuração ssh modificado para o bootflash:

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 aodcos_sshd_configarquivo. 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 dodcos_sshd_configarquivo do script e do bootflash (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#

4. Execute o script uma vez, para que o arquivo sejadcos_sshd_configalterado.

switch# source ssh_workaround_7k.py

switch#

5. Configure um script EEM para que o script py seja executado sempre que o switch for reinicializado e 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 <id> cli" e outras "action <id> cli command"), portanto, verifique se os comandos do EEM foram executados corretamente.

Processo automatizado - N9K, N3K

1. Carregue um arquivo de configuração SSH modificado para o 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. Crie um script de cópia que aplique alterações aodcos_sshd_configarquivo. 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 dodcos_sshd_configarquivo 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#

4. Execute o script uma vez, para que o arquivo sejadcos_sshd_configalterado.

switch# python bootflash:ssh_workaround_9k.py

5. Configure um script EEM para que o script py seja executado sempre que o switch for reinicializado e voltar 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 <id> cli" e outras "action <id> cli command"), portanto, verifique se os comandos do EEM foram executados corretamente.

Processo automatizado - N5K, N6K

Um arquivo dplug modificado foi criado através do bug da Cisco ID CSCvr23488 para remover estes algoritmos Kex:

- diffie-hellman-group-exchange-sha256

- diffie-hellman-group-exchange-sha1

- diffie-hellman-group1-sha1

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.

1. Verifique as configurações padrãodcos_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. 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 para que somente a cópia seja removida depois que o dplug for carregado e o arquivo dplug original permaneça 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 novasdcos_sshd_configconfigurações:

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. Torne 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.

- Verifique se o arquivo dplug está presente no bootflash e se o EEM está configurado com o nome de arquivo dplug apropriado. O nome do arquivo dplug pode variar dependendo da versão do switch, portanto, 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 após ser carregado.

Considerações sobre a plataforma

N5K/N6K

- O MAC (Message Authentication Code) não pode ser alterado nessas plataformas modificando o arquivo dcos_sshd_config. O único MAC suportado é hmac-sha1.

N7K

- Para que os MACs sejam alterados, é necessário um código 8.4. Consulte o bug da Cisco ID CSCwc26065 para obter detalhes.

- "Sudo su" não está disponível por padrão no 8.X. ID do bug da Cisco de referência: CSCva14865. Se executado, este erro é observado:

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, digite:

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

Depois que este "sudo su" funciona:

bash-4.3$ sudo su

bash-4.3#

Note: Essa alteração não sobrevive a uma recarga.

- Há um arquivo separadodcos_sshd_configpara cada VDC, caso os parâmetros SSH precisem ser modificados em um VDC diferente, certifique-se de modificar o arquivodcos_sshd_configcorrespondente.

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

- As alterações no arquivodcos_sshd_confignão são persistentes nas reinicializações em qualquer plataforma Nexus. Se as alterações precisarem ser persistentes, um EEM poderá ser usado para modificar o arquivo toda vez que o switch for inicializado.

- O aprimoramento no N9K altera essa versão inicial 10.4(2). Ele também está disponível na versão 10.5(1). Ele não foi adicionado a versões mais recentes de trilhas de software anteriores.

- Consulte o bug da Cisco ID CSCwd82985 para obter detalhes.

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

Exemplo de CLI de um switch executando 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

Existem Ciphers, MACs e KexAlgorithm adicionais que podem ser adicionados se necessário:

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

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

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

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 Cisco Nexus 9000 Series NX-OS, versão 9.3(x) )