2026年4月にCiscoからIOS XE 26.1.1がリリースされました。
メジャーバージョンが上がったので色々と確認してみたいところが沢山ありますが、まずは下記ドキュメントで書かれている"Insecure Feature Restrictions"がどのように実装されているのか、実際の動作を確認してみたので結果を共有させていただきます。
https://www.cisco.com/c/en/us/about/trust-center/resilient-infrastructure/feature-deprecation-and-removal-details.html#~insecure-feature-restrictions
上記ドキュメントによると、IOS XE 26.1.1から幾つかの安全性の低い機能が使用を制限されるようになったようです。
対象の機能を見てみると、もう誰も使っていなさそうな機能も多いですが、今でも一般的に使われている機能もあり、マイグレーションを考えていく必要がありそうです。
そこで今回は、以下の機能について実際にどのような制限がかかるようになったのか、実態を調べてみます。
- SNMPv1 / SNMPv2c
- Telnet
- FTP
- TFTP
- TACACS+ using pre-shared keys and MD5
- RADIUS using pre-shared keys and MD5 (not using RadSec)
検証環境として今回は C9300-48UN-E にIOS XE 26.1.1を導入した環境を用意しました。
Switch#show version
Cisco IOS XE Software, Version 26.01.01
Cisco IOS Software [IOSXE], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 26.01.1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2026 by Cisco Systems, Inc.
Compiled Tue 07-Apr-26 18:18 by mcpre
Cisco IOS-XE software, Copyright (c) 2005-2026 by cisco Systems, Inc.
All rights reserved. Certain components of Cisco IOS-XE software are
licensed under the GNU General Public License ("GPL") Version 2.0. The
software code licensed under GPL Version 2.0 is free software that comes
with ABSOLUTELY NO WARRANTY. You can redistribute and/or modify such
GPL code under the terms of GPL Version 2.0. For more details, see the
documentation or "License Notice" file accompanying the IOS-XE software,
or the applicable URL provided on the flyer accompanying the IOS-XE
software.
ROM: IOS-XE ROMMON
BOOTLDR: System Bootstrap, Version 26.1.1r[FC1], RELEASE SOFTWARE (P)
SNMPv1 / SNMPv2c
SNMPエージェントを有効化しようとしてみたところ、communityもhostもエラーとなり、設定できませんでした。
Switch(config)#snmp-server community EXAMPLE
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: SNMP, Command: snmp-server community *, Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Remediation: Configure SNMP v3 User
%ERROR: Security policy check failed, configuration can't be applied
Switch(config)#snmp-server host 192.0.2.100 EXAMPLE
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: SNMP, Command: snmp-server host 192.0.2.100 *, Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Remediation: Configure SNMP v3 User
%ERROR: Security policy check failed, configuration can't be applied
Switch(config)#do show running-config | include snmp
Switch(config)#
エラーメッセージを見るとsystem mode insecureのコマンドにより動作が変えられるようなので、これも本記事の後半で試してみます。
Telnet
telnetクライアントとしてはエラーなど出ず普通に使えるようです。
Switch#telnet 192.0.2.100
Trying 192.0.2.100 ... Open
Router#
一方line vty配下でtransportにtelnetを設定してみたところ、input/output共にエラーとなりました。
Switch(config-line)#transport input telnet
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: LINE, Command: transport input telnet , Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Remediation: Migrate to secure SSH-based remote access
%ERROR: Security policy check failed, configuration can't be applied
Switch(config-line)#transport output telnet
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: LINE, Command: transport output telnet , Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Remediation: Migrate to secure SSH-based remote access
%ERROR: Security policy check failed, configuration can't be applied
Switch(config-line)#
あれ、でもtelnetクライアント使えたよな・・? と不思議に思い、show lineで見てみると、transport outputが未設定(デフォルト)だとtelnet/sshが許可されており、使えてしまうようです。
Switch#show line vty 0
Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
1 VTY - - - - - 0 0 0/0 -
Line 1, Location: "", Type: ""
Length: 24 lines, Width: 80 columns
Baud rate (TX/RX) is 9600/9600
Status: No Exit Banner
Capabilities: none
Modem state: Idle
Special Chars: Escape Hold Stop Start Disconnect Activation
^^x none - - none
Timeouts: Idle EXEC Idle Session Modem Answer Session Dispatch
00:10:00 never none not set
Idle Session Disconnect Warning
never
Login-sequence User Response
00:00:30
Autoselect Initial Wait
not set
Modem type is unknown.
Session limit is not set.
Time since activation: never
Editing is enabled.
History is enabled, history size is 10.
DNS resolution in show commands is enabled
Full user help is disabled
Allowed input transports are ssh.
Allowed output transports are telnet ssh.
Preferred transport is telnet.
Shell: enabled
Shell trace: off
No output characters are padded
No special data dispatching characters
Switch#show line console 0
Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
* 0 CTY - - - - - 2 0 0/0 -
Line 0, Location: "", Type: ""
Length: 24 lines, Width: 80 columns
Baud rate (TX/RX) is 9600/9600, no parity, 1 stopbits, 8 databits
Status: PSI Enabled, Ready, Active, Automore On
Capabilities: none
Modem state: Ready
Switch 1: RJ45 Console is in use
Special Chars: Escape Hold Stop Start Disconnect Activation
^^x none - - none
Timeouts: Idle EXEC Idle Session Modem Answer Session Dispatch
00:10:00 never none not set
Idle Session Disconnect Warning
never
Login-sequence User Response
00:00:30
Autoselect Initial Wait
not set
Modem type is unknown.
Session limit is not set.
Time since activation: 00:04:04
Editing is enabled.
History is enabled, history size is 10.
DNS resolution in show commands is enabled
Full user help is disabled
Allowed input transports are none.
Allowed output transports are telnet ssh.
Preferred transport is telnet.
Shell: disabled
Shell trace: off
No output characters are padded
No special data dispatching characters
Switch#
FTP
FTPクライアントとしてはエラーなど出ず普通に使えるようです。
Switch#copy ftp://192.0.2.100/test.bin flash:/test.bin
Destination filename [test.bin]?
Accessing ftp://192.0.2.100/test.bin...!!
[OK - 287239/4096 bytes]
287239 bytes copied in 12.043 secs (23851 bytes/sec)
Switch#
しかしながら、FTPサーバー機能はIOSの頃にcisco-sa-20070509-iosftpで既に廃止されており、IOS XEにも実装されていません。
https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20070509-iosftp
となると、FTPは何が制限されたのでしょう・・?
これも本記事の後半で詳細を調べてみます。
TFTP
TFTPクライアントとしてはエラーなど出ず普通に使えるようです。
Switch#copy tftp://192.0.2.100/test.bin flash:/test.bin
Destination filename [test.bin]?
Accessing tftp://192.0.2.100/test.bin...
Loading fpgahelper.log from 192.0.2.100 (via FiveGigabitEthernet1/0/1): !
[OK - 5756 bytes]
5756 bytes copied in 0.075 secs (76747 bytes/sec)
Switch#
ならばftp-serverの設定はエラーになるかと思いきや、これもエラー無く設定できてしまいました。
Switch(config)#tftp-server test.bin
Switch(config)#do show running-config | include tftp-server
tftp-server test.bin
Switch(config)#
TFTPも何が制限されたのかよく分かりません。
FTPと併せて後で詳細を調べてみます。
TACACS+ using pre-shared keys and MD5
keyの設定ではエラーになりませんでしたが、グローバルコンフィギュレーションモードに戻ったタイミングで警告が出力されました。
しかしながら、設定自体は入るようです。
Switch(config)#tacacs server EXAMPLE
Switch(config-server-tacacs)#address ipv4 192.0.2.100
Switch(config-server-tacacs)#key Example999!
Switch(config-server-tacacs)#exit
INSECURE DYNAMIC WARNING - Module: AAA, Command: tacacs server EXAMPLE, Reason: TLS is not configured, exposing traffic to potential eavesdropping, Remediation: Configure secure options under server to enhance security, Submode: conf-tac-server, Parent CLI: Not Applicable
Switch(config)#
*Apr 13 07:05:27.101: %TAC-4-NON_TLS_SERVER_CONFIGURED: TACACS+ server EXAMPLE is configured without tls
*Apr 13 07:05:27.101: %SYS-4-INSECURE_DYNAMIC_WARNING: Module: AAA - Command: tacacs server EXAMPLE - Reason: TLS is not configured, exposing traffic to potential eavesdropping - Remediation: Configure secure options under server to enhance security - Submode: conf-tac-server - Parent CLI: Not Applicable
Switch(config)#do show running-config | section tacacs
tacacs server EXAMPLE
address ipv4 192.0.2.100
key 6 SeHAGHWEgOUGPCU_VDV_TZWQGWeBB`EMZPFeAAB
Switch(config)#
冒頭で参照したドキュメントの記載だと警告メッセージは17.18.2から実装されており、26.1.1からは使用が制限されているはずなのですが、動作を見る限りでは警告が出るのみで使用はできそうです。
RADIUS using pre-shared keys and MD5 (not using RadSec)
TACACS+と同様にグローバルコンフィギュレーションモードに戻ったタイミングで警告が出力されましたが、設定は可能でした。
Switch(config)#radius server EXAMPLE
Switch(config-radius-server)#address ipv4 192.0.2.100
Switch(config-radius-server)#key Example999!
Switch(config-radius-server)#exit
INSECURE DYNAMIC WARNING - Module: AAA, Command: radius server EXAMPLE, Reason: TLS is not configured, exposing traffic to potential eavesdropping, Remediation: Configure secure options under server to enhance security, Submode: conf-rad-server, Parent CLI: Not Applicable
Switch(config)#
*Apr 13 07:07:46.129: %AAA-6-RADIUS_SERVER_KEY_UPDATE: Radius server:EXAMPLE key is updated
*Apr 13 07:07:47.702: %RADIUS-4-NON_TLS_SERVER_CONFIGURED: RADIUS server EXAMPLE is configured without tls/dtls
*Apr 13 07:07:47.702: %SYS-4-INSECURE_DYNAMIC_WARNING: Module: AAA - Command: radius server EXAMPLE - Reason: TLS is not configured, exposing traffic to potential eavesdropping - Remediation: Configure secure options under server to enhance security - Submode: conf-rad-server - Parent CLI: Not Applicable
Switch(config)#do show running-config | section radius
radius server EXAMPLE
address ipv4 192.0.2.100 auth-port 1812 acct-port 1813
key 6 fdZCEB_\ZbhGKAC[iTGQCeVZECNF\TEI^ONQAAB
Switch(config)#
これで一通りの確認ができましたが、幾つか気になったポイントがあったので、それぞれ確認してみます。
system mode insecure
この設定を入れるとSNMPv1 / SNMPv2cも設定可能になりました。
Switch(config)#system mode ?
insecure Set system mode to insecure
warning System mode insecure warning configuration
Switch(config)#system mode insecure
Switch(config)#
*Apr 13 07:09:00.312: %SYS-4-SYSTEM_SECURITY_MODE_CHANGE: System Security Mode Changed from SECURE to INSECURE
Switch(config)#snmp-server community EXAMPLE
SECURITY WARNING - Module: SNMP, Command: snmp-server community *, Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Description: SNMP Community string configured - uses insecure SNMPv1/v2c protocol vulnerable to eavesdropping, Remediation: Configure SNMP v3 User
Switch(config)#
*Apr 13 07:09:11.889: %SNMP-4-SNMPCOMMUNITY: SNMP Community CLI is configured. Version 1 and 2c is not secure
Switch(config)#snmp-server host 192.0.2.100 EXAMPLE
SECURITY WARNING - Module: SNMP, Command: snmp-server host 192.0.2.100 *, Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Description: SNMP Host configured without explicit version - defaults to insecure SNMPv1/v2c, Remediation: Configure SNMP v3 User
Switch(config)#
*Apr 13 07:09:30.755: %SNMP-4-SNMP_HOST: SNMP host CLI with security model 1 configured. configure security model v3
Switch(config)#do show running-config | include snmp-server
snmp-server community EXAMPLE RO
snmp-server host 192.0.2.100 EXAMPLE
Switch(config)#
セキュリティの観点からは望ましい対応ではありませんが、どうしてもSNMPv3への移行が困難という場合は暫定的な対応として利用できそうです。
FTP/TFTPは何が制限されているのか?
show system insecure profileのコマンドを実行したところ、制限対象となっているコマンドが確認できました。
FTP/TFTPは次のようにプロファイルが定義されています。
Switch#show system insecure profile
=============================================================
INSECURE CLI SECURITY PROFILE
=============================================================
Generated: Hash Table Based Security Profile
Total Patterns Loaded: 55
Profile Type: Security Policy Database
=============================================================
Displaying all loaded insecure CLI patterns:
=============================================================
Displaying all loaded insecure CLI patterns grouped by module:
=============================================================
Dynamically discovered 24 modules in security database
(中略)
+==============================================================
| MODULE: TFTP |
+==============================================================
+-------------------------------------------------------------
| ENTRY 1 FOR MODULE: TFTP |
+-------------------------------------------------------------
| Submode: configure
| Submode String: NULL
| Module: TFTP
| Command Regex: ^ip[[:space:]]+tftp[[:space:]]+(arp-glean|boot-interface|claim-netascii|source-interface)([[:space:]]+.*)?[[:space:]]*$
| Description: TFTP service enabled - unencrypted file transfer protocol vulnerable to eavesdropping and tampering
| Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication
| Remediation: Transition to secure file transfer methods using SCP, SFTP, HTTPS protocols
| Restriction: NO
| Execmode: NO
+-------------------------------------------------------------
+==============================================================
(中略)
+==============================================================
| MODULE: FTP |
+==============================================================
+-------------------------------------------------------------
| ENTRY 1 FOR MODULE: FTP |
+-------------------------------------------------------------
| Submode: configure
| Submode String: NULL
| Module: FTP
| Command Regex: ^ip[[:space:]]+ftp[[:space:]]+(username|password|source-interface)([[:space:]]+.*)?[[:space:]]*$
| Description: FTP service enabled - transmits credentials and data in plaintext, vulnerable to interception
| Reason: No encryption is configured
| Remediation: Transition to secure file transfer methods using SCP, SFTP, HTTPS protocols
| Restriction: NO
| Execmode: NO
+-------------------------------------------------------------
+==============================================================
試しにip ftp source-interfaceコマンドを設定してみたところ、確かにエラーとなり設定できませんでした。
Switch(config)#ip ftp source-interface Loopback 0
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: FTP, Command: ip ftp source-interface Loopback0 , Reason: No encryption is configured, Remediation: Transition to secure file transfer methods using SCP, SFTP, HTTPS protocols
%ERROR: Security policy check failed, configuration can't be applied
Switch(config)#do show running-config | include ftp source-interface
Switch(config)#
この制限のかかり方だと、FTPクライアントは利用できるものの、FTPクライアントのソースインターフェースが固定できなくなっており、デフォルトのユーザー名/パスワードも設定できません。
中途半端に使い辛くなっているだけで、制限が不十分なように見えます。
TFTPも同様で、TFTPクライアントは利用できたものの、TFTPクライアントのソースインターフェースが固定できません。
Switch(config)#ip tftp source-interface Loopback 0
%Error:Insecure configurations are not permitted in secure mode. To proceed, set the system mode to insecure using the command system mode insecure, and then try again.
Module: TFTP, Command: ip tftp source-interface Loopback0 , Reason: Legacy protocol poses data confidentiality and integrity risks due to lack of encryption and authentication, Remediation: Transition to secure file transfer methods using SCP, SFTP, HTTPS protocols
%ERROR: Security policy check failed, configuration can't be applied
Switch(config)#do show running-config | include tftp source-interface
Switch(config)#
TACACS+ using pre-shared keys and MD5の制限
ドキュメント上だとIOS XE 26.1.1から使用に制限がかかるはずなのですが、上記のshow system insecure profileコマンドの出力にはtacacsについてのプロファイルがありません。
実際に設定もできている事から、26.1.1時点での実装ではまだ制限がかかっていないというのが実態のようです。
まとめ
今回の調査はここまでです。
機能によっては制限が中途半端なようで一応動作してしまったり、system mode insecureの設定により従来通り機能を使用する事もできるという事が分かりました。
しかしながら、やはり今後を見据えてSNMPv3やSCPなどセキュアな機能を利用する形にシフトしていくのが望ましい対応だと思われます。