首页 / 资讯中心 / 文章详情

华为交换机FTP配置与安全边界实战

华为交换机FTP配置与安全边界实战 ★ FEATURED ARTICLE
交换机上开 FTP 这个操作说小很小ftp server enable一行命令就完事说大也大我见过不止一次因为在生产设备上随手开了 FTP、账号给了最高权限、ACL 没做最后被安全扫描直接通报的情况。这篇就围绕华为交换机 FTP 配置这条路把从什么时候该开到怎么配才不出事再到传文件传一半断了怎么查的完整链路掰开讲一遍。它不是一份命令手册而是我在实际割接、升级、配置回滚这些场景里反复用过的一套做法中间穿插几个版本差异和踩过的坑。适合刚接手网络运维、需要独立完成设备升级和配置备份的人看也适合已经会用但没系统梳理过安全边界的老手对照检查。1. 交换机自带 FTP 服务器什么时候值得开1.1 一次没有 TFTP 工具的夜间升级先说个真实场景。某次夜间窗口要把一套接入层设备的系统镜像统一升上去。计划是笔记本接管理口用 TFTP 把镜像推上去。结果到了现场才发现随行那台笔记本是新装的系统TFTP 服务端软件压根没装离线的安装包也没带机房又没有外网。当时有三条路回去拿 U 盘拷软件、找一台机器临时搭服务、或者干脆用交换机自己的 FTP 服务器反过来从笔记本上传。第三条路最快。交换机开启 FTP 服务笔记本作为客户端put镜像上去十分钟搞定。从那之后我的习惯就变了升级之前先确认设备能不能自己当 FTP 服务器能的话就不依赖外部 TFTP 工具少一个环节少一个故障点。这就是交换机 FTP 功能最核心的价值——它不是让交换机去当文件服务器给一堆人用而是给运维人员提供一个设备自己开门让你把文件放进 flash 或者取出来的通道。1.2 四种文件传输方式在现网里的分工很多人一上来就问到底用 FTP 还是 TFTP其实这几个协议在交换机运维里分工挺明确的选错了不是不能用是效率和安全上吃亏。方式典型用途认证传输可靠性适用场景TFTP镜像上传、配置下发无认证无校验UDP 传输内网临时操作速度快但不可靠FTP配置备份、日志导出、镜像上传用户名密码TCP有确认需要认证的日常运维SFTP同上且要求加密用户名密码或密钥TCP SSH 加密跨网段、有合规要求的环境本地存储U 盘、SD 卡物理接触依赖介质完全没有网络通道时的兜底TFTP 的优点就是简单、开销小、很多老设备只支持它缺点同样明显没有认证、没有完整性校验、UDP 丢包会导致文件损坏而不报错。我遇到过用 TFTP 传镜像传完校验失败、重传三次才对的情况就是因为链路上有丢包。FTP 走 TCP有确认重传机制还带用户名密码认证适合需要留痕、需要区分权限的运维动作。缺点只有一个但很致命明文传输账号密码在网络上是裸奔的。这一点后面单独讲。SFTP 是 FTP 的加密版本走 SSH 通道配置上比 FTP 多几步但如果是跨网段、经过防火墙、或者有等保要求的环境我基本都会直接上 SFTP不给 FTP 开口子。1.3 开 FTP 之前必须先想清楚的两件事第一件事这台设备的管理面是不是暴露在不可信网络里。如果交换机的管理地址能被办公网、甚至更外面的地址访问到那开 FTP 就等于在明文通道上挂了个用户名密码风险不小。这种环境要么做 ACL 白名单要么直接改用 SFTP。第二件事这个 FTP 账号的权限级别给到多少。华为设备的用户级别从 0 到 15级别越高能动的配置越多。FTP 用户的权限级别直接决定了他登录后能不能删文件、能不能覆盖配置文件。给 15 是方便但一旦这个账号泄露等于把设备的完全控制权交出去了。我个人的原则是临时用、用完就关长期用、必须绑 ACL。这两条不满足任何一条就不在生产设备上常开 FTP。2. 配置之前先摸清家底管理地址、账号权限、flash 目录2.1 管理接口地址与客户端可达性验证FTP 能不能通第一关不是配置对不对是网络通不通。交换机作为 FTP 服务器必须有一个客户端能访问到的地址。常见的有三种管理网口MEth 口单独配地址、业务口上起 VLANIF 配管理地址、或者带外管理口。配置之前先在设备上确认地址display ip interface brief看哪个接口有地址、状态是不是 up。然后从客户端侧ping一下这个地址确保三层可达。这一步看着废话但我确实遇到过配置全对、就是连不上最后发现客户端和交换机管理地址不在同一个网段、中间缺路由的情况。还有一个容易忽略的点交换机的管理地址有时候是通过 VLANIF 提供的而接客户端的那个物理口不一定属于这个 VLAN。这种情况 ping 不通但配置没错需要检查端口归属。display vlan display port vlan如果设备有管理网口MEth优先用管理口因为它的转发路径独立于业务转发面业务口震荡的时候管理通道还在做升级这种操作更稳。2.2 AAA 用户的权限级别决定 FTP 能做什么华为设备的本地用户是在 AAA 视图下建的FTP 用户也不例外。关键参数有三个密码、级别、服务类型。级别这块要说清楚。VRP 的用户级别 0 到 15粗分是0 参观级、1 监控级、2 配置级、3 到 15 管理级。FTP 用户要能读写 flash 里的文件级别给低了会出现能登录、能ls、但put不上去或者能进目录、看不到文件的现象。我一般直接给 15理由是文件操作本身就需要管理级权限给 3 到 14 之间意义不大反正都能碰文件系统。真正控制风险的应该是 ACL 和账号生命周期而不是在级别上抠。密码这块华为现在的版本对密码复杂度有强制要求纯数字、纯字母、长度不够都会报错。用irreversible-cipher存密码配置里看到的是密文。有个细节老版本用cipher新版本推荐irreversible-cipher两者在配置回显里长得不一样。如果你是照着老文档敲的命令报错大概率是版本差异换成irreversible-cipher就行。2.3 flash: 的目录规则和空间余量FTP 用户登录之后落到哪个目录是由ftp-directory决定的。不配这个参数用户登录后没有默认目录执行dir会报错或者列不出东西这是新手最常卡住的地方。在配之前先看看 flash 里有什么dir flash:/正常的输出里能看到系统镜像.cc结尾、配置文件vrpcfg.zip、补丁文件.pat有的设备还有日志目录。上传镜像之前必须确认剩余空间够大一个系统镜像动辄几百兆flash 空间不够会直接导致上传失败而且失败提示不一定直观。dir flash:/ | include Free有的版本直接显示剩余字节有的需要用display flash-info之类的命令看。空间余量我一般留出镜像大小的 1.5 倍因为升级过程中新旧镜像会同时存在一段时间。另外flash 是只读文件系统加可写分区的组合某些目录比如系统保留区是写不进去的FTP 上传到这些路径会报权限或者路径错误。默认落在flash:/根目录是安全的。3. 完整配置链路从开启服务到 ACL 收紧3.1 全局使能 FTP 服务与端口调整华为交换机默认 FTP 服务是关闭的需要手动开。进系统视图system-view ftp server enable就这两行服务起来了。默认监听 21 端口。如果因为某些原因要改端口ftp server port 2121改端口这个操作在真实环境里不常用因为客户端也得跟着改反而增加沟通成本。真正有价值的是下面几个参数ftp server timeout 30 ftp server max-sessions 3timeout是空闲超时单位分钟默认值比较长。我一般设短一点避免有人登录后挂着不动占着会话。max-sessions限制并发会话数防止被暴力尝试打满。新一点的版本还支持指定源地址和绑定 ACLftp server source-ip 192.168.10.1 ftp server acl 2000source-ip在多地址设备上很有用指定 FTP 服务用哪个地址对外避免客户端连到错误的接口地址上。acl就是白名单下一小节细说。开完服务用这条命令确认状态display ftp-server输出里能看到服务是否使能、端口、当前会话数、超时时间。配完不验证等于没配这条命令建议养成习惯。3.2 建本地用户并绑定服务类型和目录服务开起来之后还得有账号能登录。完整的一套aaa local-user netops password irreversible-cipher NetOps2024 local-user netops privilege level 15 local-user netops service-type ftp local-user netops ftp-directory flash: quit逐条说意图。local-user netops password irreversible-cipher ...建账号设密码密文存储。privilege level 15给管理级前面解释过原因。service-type ftp这个参数是关键它决定了这个账号能通过哪种方式登录。华为的本地用户可以绑定多种服务类型比如ssh、telnet、ftp、http。不绑ftp账号密码再对也登不上 FTP会直接返回 530。我见过有人建了账号、测了半天密码最后发现是service-type只写了ssh。ftp-directory flash:指定登录后的默认目录。这里有个格式坑不同版本文档里有的写flash:有的写flash:/实际测试下来两种大多都能识别但如果你的版本报错换成带斜杠的写法再试一次。要指定子目录就写flash:/backup前提是这个目录已经存在不存在的话用mkdir flash:/backup先建。一个账号要同时支持 SSH 和 FTP把服务类型写在一起就行local-user netops service-type ssh ftp3.3 用 ACL 把访问源限制到运维网段这一步是我认为整个配置里最重要的比开服务本身重要得多。FTP 是明文协议一旦被不可信的地址连上账号密码就等于交出去了。用 ACL 把源地址锁死是成本最低的防线。acl number 2000 rule 5 permit source 192.168.10.0 0.0.0.255 rule 10 deny quit这是一条基本 ACL只允许 192.168.10.0/24 这个网段访问其他全部拒绝。注意华为的基本 ACL 用的是反掩码0.0.0.255对应/24。然后把这个 ACL 绑到 FTP 服务上ftp server acl 2000绑完之后只有这个网段能建立 FTP 连接其他地址连 TCP 握手都过不去。这种限制比在账号密码上做文章可靠得多因为它是网络层的。提醒一句ACL 写完之后一定要用display acl 2000核对一遍尤其是反掩码容易写错。我踩过一次把0.0.0.255写成0.0.0.0的坑结果整段网段只放行了一个地址排查了十几分钟才发现是掩码问题。如果你的版本不支持ftp server acl退而求其次的办法是在管理接口或者 VLANIF 上做流量过滤或者用ftp server source-ip配合上层防火墙策略。老版本的功能缺失只能靠外围补。3.4 保存配置并做一轮自验证配置敲完不保存重启就全没了。这一步不用多说但顺序有讲究先验证再保存。验证清单我一般按这个顺序走检查项命令期望结果服务状态display ftp-server显示 enabled端口、超时正确用户信息display local-user账号存在服务类型含 ftp目录配置display current-configuration | include ftp-directory指向 flash:ACL 绑定display ftp-server输出中含 ACL 编号实际连接客户端ftp 设备地址能登录、能dir实际连接这一步不能省。配置回显全对但连不上的情况根源往往在网络层或者客户端侧只有真连一次才知道。全部通过之后再保存save保存的时候设备会提示确认文件名直接回车用默认的vrpcfg.zip就行。如果这台设备之前有过配置回滚需求建议在 save 之前先 FTP 把当前配置备份一份出来顺序别搞反了。4. 客户端实操备份配置、升级镜像、导出日志4.1 命令行 FTP 客户端的完整会话Windows 自带 FTP 客户端Linux 和 macOS 更不用说不用装任何额外软件。一个完整的备份会话长这样ftp 192.168.10.1 Connected to 192.168.10.1. 220 FTP service ready. User (192.168.10.1:(none)): netops 331 Password required for netops. Password: 230 User logged in. ftp binary 200 Type set to I. ftp dir 200 Port command okay. 150 Opening ASCII mode data connection for file list. vrpcfg.zip ... ftp get vrpcfg.zip 200 Port command okay. 150 Opening BINARY mode data connection. 226 Transfer complete. ftp bye 221 Service closing control connection.这个会话里有几个动作值得单独说。binary这一行是必须的。默认 FTP 客户端用 ASCII 模式会把文件里的换行符做转换二进制文件比如.zip、.cc走 ASCII 模式传完必然损坏。上传下载任何交换机文件之前第一件事就是敲binary这是我踩过最多次的坑没有之一。dir用来确认文件名交换机上的文件名大小写敏感vrpcfg.zip和VRPCFG.ZIP是两个东西get的时候名字错一个字符就是 550 报错。get是从设备下载到本地put是从本地上传到设备。方向别记反put是推上去。4.2 二进制模式配置文件与镜像都不能用 ASCII前面提过binary的重要性这里展开说原因因为理解了原因才不会忘。FTP 的 ASCII 模式设计初衷是让不同操作系统的文本文件换行符能互通Windows 用\r\nUnix 用\n。传输时客户端和服务端会做转换。对于纯文本、而且只关心人眼可读的场景这没问题。但交换机的配置文件vrpcfg.zip是个压缩包里面是二进制数据任何字节被改动都会导致解压失败或者校验不过。系统镜像.cc更是完全二进制。ASCII 模式下传完的文件体积可能都不对了设备加载时会报校验失败或者直接拒绝。更麻烦的是这种损坏有时候不报错等真正需要回滚配置的时候才发现备份是废的。所以我的习惯是连上 FTP 第一件事binary不看文件类型一律二进制模式。纯文本用二进制模式传也不会有问题反过来就有。用文件传输工具比如图形化客户端的话同样要确认传输模式设置成 binary有些工具默认按扩展名判断.txt、.cfg会被当成文本这时候要手动改。4.3 配置文件回滚的完整链路备份出来的配置文件怎么用回去这个链路很多人只做过前半段。先把文件传上去ftp binary ftp put vrpcfg_backup.zip传完在设备上确认文件到位dir flash:/然后指定下次启动用这个配置startup saved-configuration vrpcfg_backup.zip这条命令执行后设备重启才会加载新指定的配置。注意是下次启动生效不是立即生效这点和很多人想的不一样。确认一下启动配置指向display startup输出里能看到下一次启动配置文件和当前启动配置文件两行确认前者指向你要的文件。要立即生效就重启reboot重启前一定确认设备已经保存了当前该保存的东西因为重启会丢未保存配置。这种操作在业务设备上要做窗口别在白天随手干。还有一条更轻量的回滚路径如果只是改错了几行配置不涉及整体回滚直接在设备上把错误配置 undo 掉比走 FTP 快得多。FTP 备份的价值在于配置被改乱了、需要整体回到某个已知状态。4.4 大文件传输的断点与超时处理系统镜像动辄几百兆传输时间长中途断掉是常事。断了之后 FTP 一般不支持续传VRP 的 FTP 服务端不支持 REST 命令只能重来。降低中断概率的做法有几个。一是先在本机做校验传之前在设备上看 flash 剩余空间传之后再用dir比对文件大小。有的版本支持display system-software之类的命令看镜像完整性能用就用。二是调整超时参数。如果传输过程中控制连接空闲超过ftp server timeout设置的值服务端会主动断开。传大文件时控制连接一直在发确认一般不会触发但如果中间有网络抖动导致停顿就可能被踢。可以把 timeout 设长一点或者干脆临时设大。三是用有线连接别用无线。这个听起来像废话但真有人图省事笔记本连 Wi-Fi 传镜像中间信号一波动就断重传三次还不如插根网线。四是分批传。如果镜像能拆分有些版本支持或者先传小文件验证链路再传大文件能提前发现问题。我一般会先put一个小配置文件试水成功了再传镜像。5. 排障实录登录失败、传输中断、目录不可写5.1 530 与 421 报错的定位顺序FTP 的报错码就那么几个但每个背后的原因可能有好几种。按我遇到的频率排一下。530 Login incorrect登录失败。这是出现最多的。原因按可能性排账号密码错最常见别笑大小写和特殊字符最容易错、service-type没绑 ftp、账号被锁定、ACL 把源地址挡了但表现成登录失败。定位顺序先在设备上display local-user确认账号存在、服务类型包含 ftp、状态不是 blocked再到客户端确认密码输入正确特别是密码里有、#这类字符时某些客户端会做特殊处理。421 Service not available服务不可用。这个通常意味着 FTP 服务没开或者连接数超了max-sessions。先display ftp-server看服务状态和当前会话数。425 Cant open data connection数据连接建立失败。这个基本就是主动模式/被动模式的问题下一小节细说。550 文件或目录不存在/权限不足。get或put时文件名写错、路径不对、或者用户权限不够、flash 满了都会报类似错误。先dir确认文件名再确认空间。5.2 被动模式在跨网段场景下的失效FTP 的工作模式分主动PORT和被动PASV这个机制不了解的话跨网段的排障会非常痛苦。简单说主动模式是客户端告诉服务端你来连我的某个端口如果客户端在 NAT 或者防火墙后面服务端连不进去。被动模式是服务端开一个临时端口等客户端来连但如果服务端的这个端口被防火墙挡了也连不上。华为交换机的 FTP 服务端在较新的版本里支持被动模式老版本只支持主动模式。当你从跨网段的客户端去连控制连接能建立能登录、能敲命令但一执行dir或者get就卡住或者报 425大概率就是数据连接被中间设备挡了。处理办法有两条客户端侧强制用主动模式大多数命令行 FTP 客户端默认就是主动或者让网络侧放行相关端口段。实际排查时先看控制连接是否正常——能登录说明 21 端口通了问题出在数据连接上这个判断能省很多时间。5.3 上传失败先看 flash 余量和文件锁上传镜像失败提示空间不足或者写入错误第一件事看空间dir flash:/看剩余空间是不是小于文件大小。空间不够就删旧文件删之前确认这个文件不是当前启动用的镜像display startup确认不是当前镜像、也不是下次启动镜像再delete。删除的时候设备会问是否彻底删除delete /unreserved是不进回收站直接删空间才真正释放。普通delete只是标记空间不一定马上回来。第二个要查的是文件是不是被占用。系统正在使用的镜像文件、正在写入的日志文件是不允许覆盖或者删除的会报文件忙。这种情况要么换个文件名传要么等占用释放。第三个是路径。ftp-directory指向flash:/但客户端put的时候如果写了绝对路径或者上级目录会被拒绝。稳妥的做法是登录后先pwd确认当前目录然后用相对路径操作。5.4 几个只有实际做过的才知道的细节说几个文档里不太会写、但实际会碰到的。账号密码里的特殊字符。密码含时某些 FTP 客户端的命令行解析会把它当成参数分隔符导致密码被截断。解决办法是用交互式登录连上去之后再输密码而不是在命令行里拼ftp user:passhost这种格式。同一账号并发登录。华为设备对同一账号的并发会话数有限制如果之前有个会话没正常退出网络断了导致再登录可能被拒。用display ftp-user看当前在线会话必要时在设备侧踢掉。文件名的中文和空格。交换机 flash 里的文件名如果有空格或者特殊字符FTP 客户端解析会出错。上传前把文件名改成纯英文数字下划线省事。配置回显里的密码是密文。display current-configuration看到的 FTP 账号密码是加密的没法反向还原。如果密码忘了只能重新设别指望从配置里找回来。改了 ACL 之后老会话不受影响。ACL 是在建立连接时检查的已经建立的会话不会因为 ACL 变更而断开。要立即生效得手动清会话或者重启服务。6. 收尾不谈总结谈安全边界和更优替代6.1 FTP 明文传输的风险边界前面反复提过FTP 的账号密码和数据都是明文。这意味着在同一条链路上的任何抓包点都能直接看到你的用户名密码以及传输的配置文件内容配置里有各种密码的密文虽然不能直接还原但也是敏感信息。风险边界在哪如果客户端和交换机之间的链路完全在可控的内网、没有旁路监听的可能风险相对可控一旦跨越不可信网段、或者链路上有其他租户/部门就不该用 FTP。这种情况下要么用 ACL 把访问源限制到极小范围前面讲的做法要么直接换 SFTP。ACL 解决的是谁能连加密解决的是连上之后看不看得见两者不是一个层面的东西不能互相替代。6.2 用 SFTP 替代 FTP 的配置对照如果环境有合规要求直接在交换机上配 SFTP配置量和 FTP 差不了太多stelnet server enable ssh user netops authentication-type password ssh user netops service-type sftp ssh user netops sftp-directory flash: sftp server enable账号还是那个账号把service-type加上sftp或者单独建一个。客户端用sftp netops192.168.10.1连接之后get、put的用法和 FTP 基本一致。对比一下两者的差异维度FTPSFTP传输加密无SSH 加密默认端口2122客户端依赖系统自带系统自带OpenSSH配置复杂度低略高需开 SSH 服务大文件性能略高略有开销可接受合规适配多数环境不满足满足性能上 SFTP 因为加密有一点点开销但传几百兆的镜像实际差异很小不值得为了这点速度去冒明文传输的风险。6.3 用完就关临时开启的操作习惯最后说一个习惯层面的东西。如果 FTP 只是临时用一次比如今晚要升级、明天就不用了那就用完关掉undo ftp server enable账号也可以一并删掉undo local-user netops我见过太多设备上留着一堆历史账号、FTP 服务常年开着、ACL 也没配的情况这些都是在给未来的自己埋雷。临时开、用完关这个动作花不了三十秒但能省掉后面一堆安全整改的麻烦。另外一个我个人一直在用的做法给 FTP 操作用单独的账号不复用日常登录的运维账号。这样从日志里能一眼看出哪些操作是通过文件传输通道做的出了问题定位范围小很多。账号名起得有辨识度一点比如带ftp前缀配合display logbuffer查操作记录会方便很多。这套流程我在不同规模的现网里都用过核心就三件事网络先通、权限给够但范围锁死、传之前先binary。剩下的细节都是在这三件事上打补丁。
阅读完成 · 觉得有帮助?
咨询建站