IE241209_路由安全技术(三层安全)

IE241209_路由安全技术(三层安全)

从管理平面(如何安全登录设备、管理设备)、控制平面(路由表)、转发平面(FIB表),对设备安全进行日常维护,保证任何一个平面在遭受攻击时,不会影响其他平面的正常运行。

路由安全技术背景

  • 随着网络通讯技术的高速发展,路由技术得到广泛应用,路由器被大量应用于数据中心、大中小型企业以及校园网络等各种场景。与此同时,网络存在各种攻击,路由器面临着各种风险,比如:

安全隔离与防御机制

  • 华为网络设备采用X.805标准,该标准中明确提出了基于层和面的安全框架,并指出了每一个分层和分面应该具有的安全能力和功能,设备应当遵循X.805的三层三面安全隔离机制。

管理面安全

  • SSH登录
  • HTTPS登录

SSH背景介绍

  • 网络工程师一般都需要远程登录设备进行管理,传统以Telnet登录的方式缺少安全认证方式,而且传输过程采用TCP进行明文传输,存在很大的安全隐患。单纯提供Telnet服务容易招致DoS、主机IP地址欺骗、路由欺骗等恶意攻击。

SSH简介

  • SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程连接和实现其他安全网络服务的协议。
  • SSH协议由三个组件构成:SSH传输层协议,SSH用户认证协议,SSH连接协议。

SSH传输层协议

  • SSH传输层协议是一个安全传输协议。SSH传输层通常建立在TCP/IP连接上,但也可以在任何其他可靠的数据流上建立。
  • SSH传输层协议协商了所有的密钥交换算法、公钥算法、对称加密算法、消息认证算法等。
算法类别 算法功能 算法名称
密钥交换算法 用于产生会话密钥 diffie‑hellman‑group14‑sha1, diffie‑hellman‑group1‑sha1...
公钥算法 用于进行数字签名和用户认证 ssh‑rsa,ssh‑dss ...
对称加密算法 用于会话的加密 aes128‑ctr,3des‑cbc ...
消息认证算法 用于数据完整性认证 hmac‑sha1,hmac‑md5 ...

SSH用户认证协议

  • SSH用户认证协议为服务器提供客户端的用户鉴别。它运行在传输层协议上。
  • SSH用户认证协议常用两种认证方法:口令认证和公钥认证
    • 口令认证:客户端通过用户名和密码登录到服务器,完成用户认证。
    • 公钥认证:服务器通过公钥解密客户端的数字签名,完成用户认证。

SSH连接协议

  • SSH连接协议将加密的会话连接多路复用成若干个逻辑通道,包含了TCP/IP转发通道、X11通道、交互式登录会话通道和远程命令执行通道。所有通道都复用一个会话连接。
  • SSH连接协议在SSH传输层和SSH用户认证协议之上运行。

SSH 有三大组件:

  1. 传输协议

    主要是去协商密钥算法、认证算法、公钥算法、对称密钥算法七七八八各种算法,两个设备之间进行协商。

  2. 用户认证协议

    该用户提供身份证明的阶段了,在这个阶段可以使用账号、密码的方式进行身份证明,也可以提供自己的公钥进行身份证明。

  3. 会话连接协议

    主要是跟对方建立一个 "大通道",这个大通道就叫 SSH,在这个大通道里,我可能要实现各种不同的需求,如 snetconf,sftp,invoke_shell,command,那么这些细分的操作就会在 SSH 的大管道中,新增很多小管道,每个小管道负责一种操作行为。

SSH工作原理

  • 在整个通讯过程中,为实现SSH的安全连接,服务器端与客户端要经历如下五个阶段:
    • 版本协商阶段:SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本。
    • 算法协商阶段:SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的加密算法。
    • 密钥交换阶段:通过密钥交换算法生成会话密钥,此后双方的会话均通过会话密钥加密。
    • 用户认证阶段:SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。
    • 会话交互阶段:认证通过后,服务器端和客户端进行信息的交互。
bash 复制代码
# 版本兼容问题
[Huawei]ssh server ?
  authentication-retries  Specify the authentication times
  compatible-ssh1x        Specify the compatible ssh1x
  port                    Set SSH port number
  rekey-interval          Specify the interval generated by SSH sever key
  timeout                 Specify the timeout of authentication
[Huawei]ssh server co	
[Huawei]ssh server compatible-ssh1x ?
  enable  Specify compatible ssh1x enable
[Huawei]ssh server compatible-ssh1x enable

版本协商阶段

  • 客户端和服务器交互SSH版本协商报文,确定V1或V2版本。

SSH 1.x 和 SSH2.0 有什么区别

SSH2.0 和 SSH1.x 均表示 SSH 服务器及客户端支持的版本。

服务器会比较客户端发来的 SSH 版本号,并根据自身是否已经执行了命令ssh server compatible‑ssh1x enable配置 SSH 服务器兼容低版本功能,来决定是否能同客户端一起工作。如果已经使能 SSH 服务器兼容低版本功能,则:

  • 如果客户端的协议版本号低于 1.3 或高于 2.0,则版本协商失败,断开连接。
  • 如果客户端的协议版本为大于等于 1.3 并且小于 1.99,系统配置为兼容 SSH1.x 方式,则进入 SSH1.5 SERVER 模块,后续进行 SSH1.x 协议流程,否则版本协商失败,断开与客户端的连接。
  • 如客户端协议版本为 1.99 或 2.0,则进入 SSH2.0 SERVER 模块,后续进行 SSH2.0 协议流程。

出于网络安全考虑,设备默认未使能 SSH 服务器兼容低版本功能。

SSH2.0 协议相比 SSH1.X 协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,安全性更高(可以规避 SSH1.x 存在的安全风险),推荐用户使用 SSH2.0。建议您升级后使用命令undo ssh server compatible‑ssh1x enable,去使能 SSH 服务器兼容低版本功能,提升设备安全性。

算法协商阶段

  • 客户端和服务器交互自己支持的算法列表,该列表包括四种算法的具体算法名称。

密钥交换阶段

  • 根据密钥交换算法,双方动态地产生会话密钥用于后续会话加密。会话密钥无法被第三者截获,安全可靠。

用户认证阶段:口令认证

  • 用户认证阶段有口令认证和公钥认证两种方式。其中口令认证过程为:客户端发送携带用户名和口令的认证请求,服务器与本地用户数据进行匹配认证。

用户认证阶段:公钥认证

  • 公钥认证过程为:客户端发送携带数字签名的认证请求,服务器通过公钥解密数字签名进行认证。

会话交互阶段

  • 用户完成认证后,客户端向服务器发起建立通道请求,进行数据传输。
  • 通道类型包括会话通道,x11通道,转发的tcp-ip通道,非转发的(直连的)tcp-ip通道。
  • 更多参考RFC4250 4.9.1. Connection Protocol Channel Types小节,https://www.ietf.org/rfc/rfc4250.txt。

SSH登录配置介绍

  • 在服务器端生成本地密钥对。
bash 复制代码
[SSH Server] rsa local‑key‑pair create
  • 配置VTY用户界面。
bash 复制代码
[SSH Server] user‑interface vty 0 4
[SSH Server‑ui‑vty0‑4] authentication‑mode aaa
[SSH Server‑ui‑vty0‑4] protocol inbound ssh
[SSH Server‑ui‑vty0‑4] quit
  • 创建SSH用户Client001。以用户名:Client001,密码:Huawei@123为例。
bash 复制代码
[SSH Server] aaa
[SSH Server‑aaa] local‑user client001 password cipher Huawei@123
[SSH Server‑aaa] local‑user client001 service‑type ssh
[SSH Server] ssh user client001
[SSH Server] ssh user client001 authentication‑type password

配置示例IE241209

bash 复制代码
[R2]stelnet server enable
[R2]aaa
[R2-aaa]local-user orcy password cipher Huawei@123
[R2-aaa]local-user orcy service-type ssh
[R2-aaa]local-user orcy pri le 15
[R2-aaa]quit	
[R2]ssh user orcy authentication-type ?
  all           All authentication, password or RSA
  password      Password authentication
  password-rsa  Both password and RSA
  rsa           RSA authentication
[R2]ssh user orcy authentication-type all
[R2]user-int vty 0 4
[R2-ui-vty0-4]authentication-mode aaa	
[R2-ui-vty0-4]protocol inbound ssh
[R2-ui-vty0-4]user privilege level 0 # 默认是0
# 先检查aaa下这个账号有没有权限级别,如果设置了则以aaa下的权限为主,如果没有设置,则以user-interface下的权限为主
bash 复制代码
[Huawei]ssh client first-time ?
  enable  Enable authentication for first time access.
[Huawei]ssh client first-time enable

ssh server authentication-type keyboard-interactive enable

命令功能:

ssh server authentication-type keyboard‑interactive enable命令用来使能SSH服务器的键盘交互认证方式。

undo ssh server authentication-type keyboard‑interactive enable命令用来去使能SSH服务器的键盘交互认证方式。

缺省情况下,SSH服务器的键盘交互认证方式去使能。

命令格式:

bash 复制代码
ssh server authentication-type keyboard‑interactive enable
undo ssh server authentication-type keyboard‑interactive enabl

HTTP背景

  • HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求响应协议,它通常运行在TCP之上。
  • HTTP定义了客户端和服务器的通讯规则,使得客户端能够向服务器请求资源,并将服务器返回的资源传送给客户端,由于HTTP明文传输数据,容易被窃听和篡改。

HTTPS介绍

  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,超文本传输安全协议), HTTPS 在HTTP 的基础下加入SSL,SSL通过在HTTP和传输层安全协议之间建立安全通道,确保数据在客户端和服务器之间的传输过程中被加密和保护。

SSL协议原理

  • SSL(Secure Sockets Layer,安全套接层)协议是在Internet基础上提供的一种保证私密性的安全协议。SSL通过在客户端和服务器之间建立会话,完成通信双方身份的验证、密钥和加密套件的协商,从而确保客户端与服务器之间的通信不被窃听,保证网络上数据传输的安全性。

SSL链接过程

  • SSL支持两种身份验证:客户端对服务器进行单方面的认证和服务器客户端双向认证,以SSL单方面认证为例进行介绍:
  • 单方面认证过程如:
    • 1:客户端首先发送一条ClientHello消息,该消息中包含了客户端支持的所有SSL版本,加密套件。这些加密套件以优先级排序,优先级最高的加密套件同时也是客户端推荐的服务器使用的加密套件。
    • 2~4:服务器收到ClientHello后,将回复三条消息:ServerHello、Certificate和ServerHelloDone。
      • ServerHello:该消息包含了服务器从客户端选择确定的SSL版本和加密套件和一个随机值。服务器端在选择SSL版本时必须依赖以下原则:服务器选择的SSL版本值必须低于客户端支持的版本值,例如服务器端支持TLSv1和SSLv3,而客户端只支持SSLv2,该次协商不能成功。
      • Certificate:服务器向客户端发自己的证书,使客户端确认通信对端的身份。服务器发自己的证书时,包含自己的公钥和用自己的私钥进行的数字签名。客户端利用服务器证书对应的根证书来验证证书的真实性,用包含在证书里的公钥来检验签名,确定服务器的身份,然后用服务器的公钥加密信息,也就是说,从这一步以后,数据就是受到加密保护的了。
      • ServerHelloDone:是一条空消息,表明服务器已经发送完了在此阶段要发送的全部信息。
    • 5~7:客户端收到服务器端上阶段发送的报文后,进一步发送3条消息:ClientKeyExchange、ChangeCipherSpec和Finished。

HTTPS登录配置

  • 配置SSL策略使用PKI缺省域default。
bash 复制代码
[Router] ssl policy userserver type server
[Router-ssl-policy-userserver] pki-realm default
  • 配置保存会话的最大数目和最大时长。
bash 复制代码
[Router-ssl-policy-userserver] session cachesize 20 timeout 7200
[Router-ssl-policy-userserver] quit
  • 配置HTTPS服务器关联的SSL策略为userserver。
bash 复制代码
[Router] http secure-server ssl-policy userserver
  • 配置HTTPS服务的端口号。
bash 复制代码
[Router] http secure-server port 1278
  • 使能Router的HTTPS服务器功能。
bash 复制代码
[Router] http secure-server enable

总结

SSH 的精髓就是在于人不在本地也可以相对安全的登录到设备上(因为你跟设备之间传输的数据都是加密处理的,任何人抓包都看不到你说了什么,做了什么!)

除了 SSH 登陆设备之外,还有 HTTPS 的登陆方式,这种登陆方式就是用网页界面去打开设备做配置。

那么本身我们是可以使用 HTTP 协议进行网页登陆的,但是由于 HTTP 协议发包都是明文发送,包括用户给服务器以 POST 方式提交的表单也是明文发送的,这样就会导致关键性的隐私数据泄露(如账号密码等),即留给了攻击者可乘之机。

那么此时此刻,HTTPS 应运而生,他整体的工作机制和 HTTP 是一样的,为数不多的区别就是,HTTPS 发送出去的正文内容是加密的,其他人抓包也看不到。

相关推荐
Sagittarius_A*17 分钟前
【好靶场】SQL 注入-布尔盲注-2
sql·web安全·网络安全·sql注入
玹外之音28 分钟前
Codex CLI 沙箱实战:安全地让 AI 执行 Shell 命令
人工智能·安全
是隼人1 小时前
buuctf-pwn ciscn_2019_n_5题解(学习过程持续 更新)
c语言·学习·安全·pwn入门·ctf入门
德迅云安全-上官1 小时前
业务接口对抗爬虫与批量薅羊毛实战手册:拨开接口层攻击迷雾,搭建业务接口全链路安全防护体系
爬虫·安全
随遇而安zx1 小时前
SpringCloud---安全(Security / OAuth2 / JWT)设计思想与深度解析
安全·spring cloud
lightningyang2 小时前
第一届全国技能大赛网络安全(模块A)-密码安全策略配置
安全·web安全·天枢一体化虚拟仿真平台·全国节能大赛网络安全赛项
Steve__evetS2 小时前
我的开源项目:python依赖安全修复助手
python·安全·agent
2601_967326832 小时前
无线扩音器哪家质量好?无线扩音器哪个牌子最好最安全?汇总对比
安全