はじめに
このドキュメントでは、Nexusプラットフォームで暗号、MAC、およびKexアルゴリズムを追加(または)削除する手順について説明します。
前提条件
要件
LinuxとBashの基本を理解しておくことをお勧めします。
使用するコンポーネント
このドキュメントの情報は、次のハードウェアとソフトウェアのバージョンに基づいています。
- Nexus 3000および9000 NX-OS 7.0(3)I7(10)
- Nexus 3000および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)
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
セキュリティスキャンによって、Nexusデバイスで使用される脆弱な暗号化方式が見つかる場合があります。これが発生した場合、スイッチ上のdcos_sshd_configファイルに変更を加えて、これらの安全でないアルゴリズムを削除する必要があります。
使用可能な暗号、MAC、およびKexアルゴリズムの確認
プラットフォームが使用する暗号、MAC、およびKexアルゴリズムを確認し、これを外部デバイスから確認するには、次のオプションを使用できます。
オプション 1PCからのCMD回線の使用
Nexusデバイスに到達できるPCでCMD行を開き、次のコマンドを使用します ssh -vvv <hostname> .
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
オプション 2機能Bash-Shellを使用した「dcos_sshd_config」ファイルへのアクセス
これは次のものに適用されます。
- N3K実行中7.X、9。X、10。X
- すべてのN9Kコード
- 8.2以降を実行するN7K
手順:
- bashシェル機能を有効にして、bashモードに入ります。
switch(config)# feature bash-shell
switch(config)#
switch(config)# run bash
bash-4.3$
2.dcos_sshd_configファイルの内容を確認します。
bash-4.3$ cat /isan/etc/dcos_sshd_config
注:特定の行を確認するには、egrepを使用できます。 cat /isan/etc/dcos_sshd_config | grep MAC
オプション 3Dplugファイルを使用した「dcos_sshd_config」ファイルへのアクセス
これは次のものに適用されます。
- 6を実行するN3KbashシェルにアクセスできないX
- すべてのN5KおよびN6Kコード
- 6を実行するN7K。Xと7。Xコード
手順:
1. TACケースを開き、スイッチで実行されているNXOSのバージョンと一致するdplugファイルを取得します。
2. dplugファイルをブートフラッシュにアップロードし、そのコピーを作成します。
switch# copy bootflash:nuova-or-dplug-mzg.7.3.8.N1.1 bootflash:dp
注:元のdplugファイルのコピー(「dp」)がブートフラッシュに作成されます。そのため、dplugがロードされた後はコピーだけが削除され、元のdplugファイルは以降の実行でブートフラッシュに残ります。
3. load コマンドを使用してdplugのコピーをロードします。
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.dcos_sshd_configファイルをレビューします。
Linux(debug)# cat /isan/etc/dcos_sshd_config
解決方法
ステップ 1: 「dcos_sshd_config」ファイルのエクスポート
1.dcos_sshd_configのファイルのコピーをbootflash:に送信します。
Linux(debug)# cd /isan/etc/
Linux(debug)# copy dcos_sshd_config /bootflash/dcos_sshd_config
Linux(debug)# exit
2. コピーがブートフラッシュにあることを確認します。
switch(config)# dir bootflash: | i ssh
7372 Mar 24 02:24:13 2023 dcos_sshd_config
3. サーバーにエクスポートする:
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. ファイルに必要な変更を加え、ブートフラッシュにインポートして戻します。
ステップ 2: 「dcos_sshd_config」ファイルのインポート
1. 変更したdcos_sshd_configファイルをブートフラッシュにアップロードします。
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#
ステップ 3:元の「dcos_sshd_config」ファイルをコピーで置き換える
手動プロセス(リブート後も保持されない):すべてのプラットフォーム
の下にある既存のdcos_sshd_configファイルを/isan/etc/、ブートフラッシュにある変更されたdcos_sshd_configファイルに置き換えます。 このプロセスは、リブート後も保持されません
- 変更した
ssh configファイルをbootflash:にアップロードします。
switch# dir bootflash: | i ssh
7372 Mar 24 02:24:13 2023 dcos_sshd_config_modified
2. bashまたはLinux(debug)#モードで、既存のdcos_sshd_configファイルをbootflash:にあるファイルで上書きします。
bash-4.3$ sudo su
bash-4.3# copy /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config
3. 変更が正常に行われたことを確認します。
bash-4.3$ cat /isan/etc/dcos_sshd_config
自動プロセス:N7K
リロード後にログ「VDC_MGR-2-VDC_ONLINE」が起動したときにトリガーされるEEMスクリプトを使用する。EEMがトリガーされると、pyスクリプトが実行され、dcos_sshd_configの下にある既存のファイルが/isan/etc/、ブートフラッシュにある変更されたdcos_sshd_configファイルに置き換えられます。
これは、「機能bash-shell」をサポートするNX-OSバージョンにのみ適用されます。
- 変更したssh設定ファイルをbootflash:
switch# dir bootflash: | i ssh
7404 Mar 03 16:10:43 2023 dcos_sshd_config_modified_7k
switch#
2.dcos_sshd_configファイルに変更を適用するPyスクリプトを作成します。ファイルは「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. Pythonスクリプトをブートフラッシュにアップロードします。
switch# dir bootflash:///scripts
175 Mar 03 16:11:01 2023 ssh_workaround_7k.py
注:Pythonスクリプトはすべてのプラットフォームでほとんど同じですが、Cisco Bug ID CSCva14865を解決するための行がいくつか追加されているN7Kは例外です。
4.スクリプトとブートフラッシュのdcos_sshd_config(ステップ1)ファイル名が同じであることを確認します。
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.dcos_sshd_configのファイルが変更されるように、スクリプトを1回実行します。
switch# source ssh_workaround_7k.py
switch#
5. スイッチがリブートされて再起動するたびにPyスクリプトが実行されるように、EEMスクリプトを設定します。
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"
注:EEM構文はNXOSのリリースによって異なる場合があるため(バージョンによっては「action <id> cli」が必要になったり、別の「action <id> cli command」が必要になったりします)、EEMコマンドが正しく実行されていることを確認してください。
自動プロセス:N9K、N3K
- 変更したSSHコンフィギュレーションファイルをブートフラッシュにアップロードします。
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.dcos_sshd_configファイルに変更を適用するPyスクリプトを作成します。ファイルは「py」拡張子を付けて保存してください。
#!/usr/bin/env python
import os
os.system("sudo su -c \"cp /bootflash/dcos_sshd_config_modified /isan/etc/dcos_sshd_config\"")
3. Pythonスクリプトをブートフラッシュにアップロードします。
switch# dir | i i .py
127 Jun 18 17:21:39 2024 ssh_workaround_9k.py
switch#
4.スクリプトとブートフラッシュ(ステップ1)のdcos_sshd_configファイル名が同じであることを確認します。
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.dcos_sshd_configのファイルが変更されるように、スクリプトを1回実行します。
switch# python bootflash:ssh_workaround_9k.py
5. スイッチがリブートされて再起動するたびにPyスクリプトが実行されるように、EEMスクリプトを設定します。
EEM N9Kおよび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
注:EEM構文はNXOSのリリースによって異なる場合があるため(バージョンによっては「action <id> cli」が必要になったり、別の「action <id> cli command」が必要になったりします)、EEMコマンドが正しく実行されていることを確認してください。
自動プロセス:N5K、N6K
修正されたdplugファイルは、次のKexアルゴリズムを削除するためにCisco Bug ID CSCvr23488で作成されました。
- diffie-hellman-group-exchange-sha256(任意)
- diffie-hellman-group-exchange-sha1(任意)
- diffie-hellman-group1-sha1(任意)
Cisco Bug ID CSCvr23488で提供されるdpugファイルは、Linuxシェルへのアクセスに使用されるファイルと同じではありません。TACケースをオープンし、Cisco Bug ID CSCvr23488から修正されたdplugを取得します。
- デフォルトの
dcos_sshd_config設定を確認します。
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. 変更したdplugファイルのコピーを作成します。
switch# copy bootflash:nuova-or-dplug-mzg.7.3.14.N1.1_CSCvr23488.bin bootflash:dp
注:元のdplugファイルのコピー(「dp」)がブートフラッシュに作成されるので、dplugがロードされた後はコピーだけが削除され、元のdplugファイルは以降の実行でブートフラッシュに残ります。
3. Cisco Bug ID CSCvr23488のdplugファイルを手動で適用します。
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. 新しい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. 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"
注:
- 修正したdplugを適用した後、このプラットフォームでSSH機能をリセットする必要があります。
- dplugファイルがブートフラッシュにあり、EEMが適切なdplugファイル名で設定されていることを確認します。dplugファイル名はスイッチのバージョンによって異なる場合があるため、必要に応じてスクリプトを変更してください。
- アクション1は、ブートフラッシュ内の元のdplugファイルのコピーを「dp」と呼ばれる別のファイルに作成します。そのため、元のdplugファイルはロード後に削除されません。
プラットフォームの考慮事項
N5K/N6K
- これらのプラットフォームでは、dcos_sshd_configファイルを変更してもMAC(メッセージ認証コード)は変更できません。サポートされているMACはhmac-sha1のみです。
N7K
- MACを変更するには、8.4コードが必要です。 詳細については、Cisco Bug ID CSCwc26065を参照してください。
- 「sudo su」は、デフォルトでは8.Xでは使用できません。Cisco Bug ID CSCva14865を参照してください。実行すると、次のエラーが発生します。
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$
これを解決するには、次のように入力します。
bash-4.3$ sudo usermod -s /bin/bash root
この「sudo su」が機能した後は、次のようになります。
bash-4.3$ sudo su
bash-4.3#
- SSHパラメータを別のVDCで変更する必要がある場合は、対応する
dcos_sshd_configファイルを必ず変更して、各VDCに個別のdcos_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
dcos_sshd_configのファイルに対する変更は、どのNexusプラットフォームでもリブート後に保持されません。変更を永続的に行う必要がある場合は、スイッチが起動するたびにEEMを使用してファイルを変更できます。 10.4からは、N9Kの機能拡張によってこれが変更されます。 詳細については、Cisco Bug ID CSCwd82985を参照してください。
N7K、N9K、N3K
必要に応じて追加できる追加の暗号、MAC、およびKexAlgorithmsがあります。
switch(config)# ssh kexalgos [all | key-exchangealgorithm-name]
switch(config)# ssh macs [all | mac-name]
switch(config)# ssh ciphers [ all | cipher-name ]