ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

H3C交换机Console与SSH安全配置实战指南

H3C交换机Console与SSH安全配置实战指南 1. 开局第一步认识你的H3C交换机与Console口刚拿到一台全新的H3C交换机或者接手一台需要重新配置的设备第一件事是什么不是插网线也不是配VLAN而是先要能“进去”。对于网络设备而言Console口就是那个最原始、最可靠的“后门”它不依赖任何网络协议只要一根线、一个终端软件就能让你和设备直接对话。很多新手觉得Console配置是老生常谈但恰恰是这一步没做好后续所有高级配置都无从谈起。我见过太多人因为Console密码不对、波特率设错或者驱动问题在设备面前干瞪眼最后不得不求助他人甚至返厂重置白白浪费时间和精力。H3C交换机的Console口通常是一个RJ-45接口旁边会有一个类似显示器的小图标。你需要准备一根Console线一头是RJ-45插到设备上另一头通常是DB9串口或者USB接口用于连接你的电脑。这里有个关键点如果你的Console线是USB接口的电脑很可能需要安装特定的驱动才能识别。比如绿联等品牌的USB转串口线就需要去官网下载对应的驱动安装。驱动没装好你在设备管理器里就看不到对应的COM端口终端软件自然连不上。这是实操中第一个容易卡住的地方。连接好硬件下一步就是选择终端软件。Putty、SecureCRT、Xshell甚至系统自带的“超级终端”都可以。打开软件关键配置就三样串口协议Serial、正确的COM端口号、以及波特率Baud Rate。H3C交换机默认的Console波特率是9600这是行业通用标准极少有例外。数据位8停止位1无奇偶校验无流控。把这些参数填对点击连接给交换机通电你应该就能看到设备的启动信息滚动出现了。如果是一片空白先别慌检查线缆是否插紧、COM口是否选对、驱动是否安装成功绝大多数问题都出在这几步。成功进入Console后你会看到设备的命令行界面。如果是全新设备可能直接进入系统视图H3C如果设备有旧配置可能会提示你输入密码。我们这篇文章的核心目标就是从这一步开始修改默认或未知的Console密码并配置更安全、更便捷的SSH远程登录方式。这不仅是让设备更安全更是为了你日后运维的方便。想象一下每次调试都要跑到机房插Console线效率太低下了。接下来我们就一步步拆解这个过程。2. 修改Console密码堵住最基础的安全漏洞通过Console口进入设备后我们首先面对的就是认证问题。很多出厂设备没有密码或者使用的是广为人知的默认密码如admin/admin这是一个巨大的安全风险。任何能物理接触到Console口的人都能轻易获得设备的最高控制权。因此修改Console密码是设备上架前必须完成的动作。2.1 理解H3C的认证模式与用户界面在H3C的设备上密码不是直接挂在Console口上的而是与用户界面User-Interface简称UI和认证模式绑定。Console口对应的是用户界面console 0或者con 0。你需要为这个界面配置认证方式。H3C常用的认证方式有password认证最简单只验证密码。scheme认证更复杂可以调用AAA认证、授权、计费方案比如使用本地用户名密码或者对接Radius/TACACS服务器。对于中小型网络或开局场景我们通常使用password认证因为它配置简单直接有效。我们的操作思路是进入console 0界面将其认证模式设置为password然后设置登录密码。2.2 详细配置命令与步骤解析假设我们已经通过Console口登录看到了H3C的系统视图提示符。下面是具体的命令流程和每一步的意图进入系统视图如果不在的话H3Csystem-view系统视图的提示符是[H3C]在这里才能进行配置修改。这是最基本的一步。进入Console 0用户界面视图[H3C]user-interface console 0执行后提示符变为[H3C-ui-console0]这表示你正在对Console接口的登录属性进行配置。设置认证模式为密码认证[H3C-ui-console0]authentication-mode password这条命令告诉设备通过这个Console口登录时采用密码认证方式。执行后设备会立刻提示你设置密码。设置登录密码[H3C-ui-console0]set authentication password simple YourNewPassword这是关键命令。set authentication password是设置认证密码。simple关键字表示以明文方式输入密码系统会自动将其加密存储。注意还有一个cipher选项它要求你直接输入加密后的密文这对于从其他设备复制配置时有用但手动设置时用simple更直观。YourNewPassword替换为你想要设置的强密码。建议包含大小写字母、数字和特殊字符长度至少8位。可选配置超时断开时间[H3C-ui-console0]idle-timeout 15 0idle-timeout命令用于设置空闲超时时间。15表示分钟0表示秒。这里设置为15分钟意味着如果你在Console界面无操作15分钟连接会自动断开以防你离开后未退出登录造成安全风险。这个时间可以根据需要调整。保存配置[H3C-ui-console0]quit [H3C]save force一定要记得saveH3C设备的配置更改在运行内存中断电就会丢失。save force命令会强制保存跳过提示确认。保存后你会看到“Configuration is saved to device successfully”的提示。操作完成后的验证退出当前Console连接直接关闭终端窗口或输入quit然后重新连接。这次设备就会提示你输入密码了只有输入刚设置的YourNewPassword才能成功登录。注意如果你遇到一台Console密码未知的二手设备上述流程就走不通了。这时通常需要硬件重置如长按设备面板上的Reset按钮来恢复出厂设置清除所有配置包括密码。重置后Console口将恢复无密码状态你可以从头开始配置。重置前务必确认是否有重要业务配置因为此操作不可逆。3. 配置SSH登录告别机房实现远程运维Console密码改好了设备的基础安全有了保障。但每次调试都要跑机房显然不是长久之计。SSHSecure Shell就是为了解决这个问题而生的。它通过加密的通道让你可以在网络可达的任何地方安全地登录和管理设备。配置SSH是让网络设备变得“可远程运维”的关键一步。3.1 为什么是SSH而不是Telnet你可能听说过Telnet。它比SSH出现得更早也能实现远程登录。但Telnet有一个致命的缺陷它所有的通信数据包括你的用户名和密码都是以明文形式在网络中传输的。这意味着如果有人在你的网络路径上抓包你的设备密码就一览无余。而SSH从设计之初就采用了强加密算法对所有传输的数据进行加密有效防止了窃听和中间人攻击。在现代网络运维中Telnet已经因为安全问题被普遍弃用SSH是绝对的首选。所以我们的目标是开启并正确配置SSH服务。3.2 SSH服务端配置全流程拆解在H3C交换机上配置SSH本质上是把交换机变成一个SSH服务器。我们需要完成以下几个核心任务生成主机密钥对、创建用于SSH登录的本地用户、启用SSH服务并指定认证方式。下面我们一步步来生成RSA或DSA密钥对 SSH的安全基础是非对称加密这需要设备有一对密钥公钥和私钥。在系统视图下执行[H3C]public-key local create rsa或者[H3C]public-key local create dsarsa算法目前更通用。执行命令后系统会提示你输入密钥模数的长度通常直接按回车使用默认值如2048即可。生成密钥是启用SSH服务的前提这一步只需要做一次。创建VLAN接口并配置IP地址 SSH是基于IP协议的所以交换机必须有一个IP地址用于被连接。通常我们会给管理VLAN比如VLAN 1的接口配置一个IP。[H3C]interface vlan-interface 1 [H3C-Vlan-interface1]ip address 192.168.1.1 255.255.255.0 [H3C-Vlan-interface1]quit这里将交换机的管理IP设为192.168.1.1/24。请确保你的电脑和这个IP在同一个网段例如电脑IP设为192.168.1.100/24并且物理连接正确电脑接在交换机的任意一个Access模式属于VLAN 1的端口上。创建本地用户并设置密码 我们需要创建一个专门用于SSH登录以及其他管理方式的用户。[H3C]local-user admin [H3C-luser-manage-admin]password simple YourSSHPassword [H3C-luser-manage-admin]service-type ssh [H3C-luser-manage-admin]authorization-attribute user-role network-admin [H3C-luser-manage-admin]quitlocal-user admin创建用户名为admin的本地用户。password simple YourSSHPassword为用户设置密码。service-type ssh指定该用户可用于SSH服务。这个命令非常关键没加的话用户无法通过SSH登录。authorization-attribute user-role network-admin给用户授予network-admin角色这是H3C设备上的最高网络管理权限。如果只需要部分权限可以授予network-operator操作员等角色。配置SSH服务的管理参数 进入VTYVirtual Type Terminal虚拟终端用户界面视图。VTY是设备提供的远程登录虚拟通道SSH和Telnet都使用它。[H3C]user-interface vty 0 4 [H3C-ui-vty0-4]authentication-mode scheme [H3C-ui-vty0-4]protocol inbound sshuser-interface vty 0 4同时配置0到4号共5个VTY通道即可支持5个并发远程连接。authentication-mode scheme设置认证模式为scheme。这意味着登录时将使用我们在上一步创建的本地用户数据库admin用户进行认证。这与Console口的password模式不同。protocol inbound ssh规定这些VTY通道只允许SSH协议接入明确禁止了Telnet。这是提升安全性的好习惯。启用SSH服务器功能[H3C]ssh server enable这条命令是全局启用SSH服务器功能。做完这一步SSH服务才真正开始监听TCP 22端口。保存配置[H3C]save force再次强调任何重要配置修改后务必保存。3.3 客户端测试与连接验证配置完成后就可以从你的电脑上进行测试了。确保电脑与交换机的管理IP192.168.1.1能够ping通。使用Putty连接 打开Putty在“Host Name (or IP address)”里输入192.168.1.1连接类型选择“SSH”端口是22。点击“Open”。第一次连接时Putty会弹出一个安全警告提示你服务器的密钥指纹未知这是正常的点击“是”或“Accept”即可。随后会弹出登录窗口输入用户名admin和密码YourSSHPassword就能成功登录到交换机的命令行界面了。使用Xshell等工具 过程类似新建会话协议SSH主机填IP地址端口22。连接后输入用户名密码。成功登录后你会发现操作体验和Console口完全一样但你再也不用被限制在设备旁边了。这才是网络运维该有的样子。4. 进阶配置与深度避坑指南基础的Console和SSH配置完成后设备已经可以投入使用了。但在实际生产环境中我们往往会遇到更复杂的需求和意想不到的“坑”。这一部分我结合自己多年的踩坑经验分享几个进阶配置点和必须注意的细节。4.1 SSH版本、算法与增强安全默认配置可能只启用了SSHv2这是好的因为SSHv1存在已知漏洞。你可以通过命令查看和调整[H3C]display ssh server status这条命令可以查看SSH服务器的状态包括支持的协议版本、加密算法等。为了兼容一些老旧的客户端设备可能默认同时支持v1和v2。为了安全可以强制只使用v2[H3C]ssh server compatible-ssh1x disable此外你还可以通过ssh server algorithm系列命令来指定优先使用的加密算法、密钥交换算法等以符合更高的安全规范。一个常见的坑算法不匹配导致连接失败。有时用较新的SSH客户端如OpenSSH 8.8连接老版本的H3C交换机时会因为客户端默认禁用了一些老旧或不安全的算法如ssh-rsa签名算法而失败。错误信息可能是“no matching host key type found”。解决方法是在客户端侧指定算法例如在Putty的连接-SSH-Kex密钥交换算法列表中将较旧的算法如diffie-hellman-group1-sha1调整到前面。更根本的解决办法是升级交换机的软件版本。4.2 管理VLAN的规划与接入安全我们之前把管理IP配在了VLAN 1。在小型网络中这没问题但在稍具规模的网络中强烈建议创建一个独立的、专用的管理VLAN例如VLAN 99。这样做的好处是安全隔离将管理流量和业务流量从逻辑上分开避免业务网络的广播风暴或安全问题影响到管理通道。访问控制可以在这个管理VLAN的三层接口上应用ACL访问控制列表精确控制哪些IP地址可以SSH连接到设备。配置示例[H3C]vlan 99 [H3C-vlan99]quit [H3C]interface vlan-interface 99 [H3C-Vlan-interface99]ip address 10.0.99.1 255.255.255.0 [H3C-Vlan-interface99]quit // 将连接运维电脑的端口划入管理VLAN [H3C]interface GigabitEthernet 1/0/1 [H3C-GigabitEthernet1/0/1]port link-type access [H3C-GigabitEthernet1/0/1]port access vlan 99 [H3C-GigabitEthernet1/0/1]quit同时别忘了修改SSH客户端的连接地址为新的管理IP10.0.99.1。4.3 利用ACL为SSH访问上把锁仅仅有密码认证还不够。如果黑客知道了你的管理IP就可以不断地尝试暴力破解密码。通过配置ACL我们可以限制只有特定的、可信的源IP地址才能尝试连接设备的SSH端口。假设我们只允许运维网段10.0.100.0/24的主机进行SSH管理创建基本ACL[H3C]acl basic 2000 [H3C-acl-ipv4-basic-2000]rule permit source 10.0.100.0 0.0.0.255 [H3C-acl-ipv4-basic-2000]rule deny source any [H3C-acl-ipv4-basic-2000]quitACL编号2000是一个基本IPv4 ACL。第一条规则允许10.0.100.0/24网段第二条规则拒绝所有其他源。ACL规则是按顺序匹配的所以deny any一定要放在最后。在VTY用户界面上应用ACL[H3C]user-interface vty 0 4 [H3C-ui-vty0-4]acl 2000 inbound [H3C-ui-vty0-4]quit将ACL 2000应用到VTY通道的入方向。这样只有来自10.0.100.0/24的SSH连接请求才会被处理其他地址的连接尝试在TCP握手阶段就会被拒绝大大增强了安全性。4.4 配置备份与自动化管理入门当你管理多台设备时手动一台台配置SSH效率低下。这里可以引入一些自动化思路。比如使用Ansible这样的自动化工具。虽然标题热词里提到了“ansible配置华三交换机”其核心是Ansible通过SSH协议连接到设备并执行命令。要让Ansible管理H3C设备你需要在Ansible控制机上安装ansible。在/etc/ansible/hosts清单文件中定义你的交换机IP和登录凭证建议使用Vault加密密码。编写Playbook使用cli_command模块针对支持标准SSH CLI的设备或专门的网络模块需要安装ansible.netcommon等集合。一个极简的示例Playbook片段用于在多台交换机上执行display version命令--- - name: Gather H3C Switch Versions hosts: h3c_switches gather_facts: no connection: network_cli tasks: - name: Get switch version info cli_command: command: display version register: version_output - name: Print version info debug: var: version_output.stdout_lines当然实际配置SSH的过程本身可能还需要手动通过Console完成第一次基础配置IP、用户、开启SSH之后就可以纳入自动化体系了。这为批量修改密码、下发配置、收集信息打开了大门。5. 故障排查当SSH连接不上时该怎么办即使按照教程一步步做有时还是会遇到SSH连不上的情况。别急这是常态。我们可以按照以下链路由浅入深地进行排查。这套思路几乎适用于所有网络设备的远程登录问题。5.1 基础连通性检查物理层与网络层这是第一步也是最常被忽略的一步。物理链路电脑和交换机之间的网线是否完好接口指示灯是否正常常亮或闪烁IP地址与路由在电脑上打开命令提示符CMDping交换机的管理IP例如ping 192.168.1.1。如果能ping通说明三层及以下网络是通的。如果ping不通检查电脑的IP地址、子网掩码、网关是否配置正确是否和交换机IP在同一网段电脑连接的交换机端口是否在正确的VLAN里我们之前把管理IP配在VLAN 1那么电脑连接的端口模式必须是access且所属VLAN是1或者你指定的管理VLAN。交换机上是否配置了错误的ACL禁用了ICMPping报文可以暂时在交换机接口下执行undo ip fast-forwarding acl等命令来排查测试后记得恢复。5.2 服务状态与端口监听检查如果ping是通的但SSH连不上问题很可能出在服务本身。检查SSH服务是否开启在交换机上使用display ssh server status命令确认SSH服务器状态是Enable。检查SSH端口是否监听在交换机上使用display tcp status命令查看本地地址Local Address中是否有*:22或0.0.0.0:22这一行。这表示SSH服务正在所有接口上监听22端口。如果只有127.0.0.1:22说明服务只监听本地环回需要检查配置。检查VTY配置使用display user-interface vty 0命令查看你配置的VTY通道。确认Authentication mode是schemeProtocol inbound是SSH。有时候配置可能没生效或者被后面的配置覆盖了。5.3 认证与用户权限问题排查如果连接时能弹出输入用户名密码的窗口但输入后提示“Permission denied”或直接断开问题出在认证环节。用户名/密码错误仔细核对大小写。可以通过Console口登录使用display local-user命令查看创建的用户名和服务类型是否正确。用户服务类型未绑定确保创建用户时使用了service-type ssh命令。没有这个用户即使存在也无法用于SSH登录。用户角色权限不足虽然我们给了network-admin但如果误给了guest等只读角色可能也会导致登录后无法执行命令。用display local-user username admin查看详细信息。ACL拦截检查是否在VTY或全局应用了ACL但规则错误地拒绝了你的源IP。可以暂时在VTY视图下执行undo acl inbound来测试。5.4 客户端与兼容性问题有时候问题出在客户端。防火墙拦截检查电脑的Windows防火墙或其他安全软件是否阻止了SSH客户端如Putty的出站连接或者阻止了22端口的通信。可以暂时关闭防火墙测试。SSH客户端算法兼容性如前所述新客户端与旧设备可能存在算法不兼容。尝试在Putty的Connection-SSH-Kex设置中将“Algorithm selection policy”改为“Allow legacy algorithms...”或者手动调整算法列表的顺序。使用-v参数调试在Linux/Mac的终端里使用ssh -v admin192.168.1.1命令连接-vverbose参数会输出详细的连接过程有助于定位在哪一步握手失败。按照这个链路从物理到应用从服务端到客户端绝大部分SSH连接问题都能被定位和解决。记住耐心和有条理的排查是网络工程师最重要的技能之一。
返回列表