网络设备安全特性
> 作者:行癫
------
第一节:网络设备安全特性
一:常见设备安全加固策略
1.为什么需要网络设备安全
网络安全是一个系统工程,网络当中的每一样东西都有可能是被攻击的目标,网络设备本身当然也不例外
**网络设备受到的常见攻击如下:**
恶意登录网络设备执行非法操作,例如重启设备
伪造大量控制报文造成设备CPU利用率升高,例如发送大量的ICMP报文
2.常见设备安全加固策略
**常见的设备安全加固策略主要可以从以下方面部署:**
关闭不使用的业务和协议端口
废弃不安全的访问通道
基于可信路径的访问控制
本机防攻击
**关闭不使用的业务和协议端口**
在分析业务需求的基础上,按照最小授权原则,关闭不使用的业务和协议端口
不使用的物理端口,应该默认配置为关闭,即使插上网线也不能通信
不使用的协议端口,应该默认配置为关闭,不对外提供访问。如常见的telnet、FTP、HTTP等端口
在SW1上关闭FTP功能,同时关闭多个不使用的端口
```shell
system-view
[SW1] undo ftp server
Warning: The operation will stop the FTP server. Do you want to continue? [Y/N]:y
Info: Succeeded in closing the FTP server.
[SW1]port-group protgroup1
[SW1-port-group-protgroup1]group-member GigabitEthernet 0/0/4 to GigabitEthernet0/0/48
[SW1-port-group-protgroup1]shutdown
```
**废弃不安全的访问通道**
在业务需求分析的基础上,优先满足业务的访问需求。在同一个访问需求有多种访问通道服务的情况下,废弃不安全的访问通道,而选择安全的访问通道
| **访问需求** | **不安全的通道** | **安全的通道** |
| ------------ | ---------------- | -------------- |
| 远程登录 | Telnet | SSH v2 |
| 文件传输 | FTP,TFTP | SFTP |
| 网元管理 | SNMP v1/v2 | SNMP v3 |
| 网管登录 | HTTP | HTTPS |
通过命令行、WEB、网管等方式登录设备时,建议采用安全加密的通道SSH、HTTPS、SNMPv3
设备之间,以及设备和终端之间数据传输,也建议采用加密的数据传输协议SFTP
**安全的数据访问通道**
设备数据传输安全常见场景及采用协议:
用户远程登录:
Telnet:采用TCP协议进行明文传输
STelnet:基于SSH协议,提供安全的信息保障和强大的认证功能
设备文件操作:
FTP:支持文件传输以及文件目录的操作,具有授权和认证功能,明文传输数据
TFTP:只支持文件传输,不支持授权和认证,明文传输数据
SFTP:支持文件传输及文件目录的操作,数据进行了严格加密和完整性保护
**SSH概述**
SSH(Secure Shell,安全外壳协议),在非安全网络上提供了安全的远程登录、安全文件传输以及TCP/IP安全隧道。不仅在登陆过程中对密码进行加密传送,而且对登陆后执行的命令的数据也进行加密
合法用户通过客户端登录,完成用户名以及对应的密码验证后,客户端会尝试和服务端建立会话,每个会话是一个独立的逻辑通道,可以提供给不同的上层应用使用
STelnet和SFTP各自利用了其中的一个逻辑通道,通过SSH对数据进行加密,从而实现数据的安全传输
![image-20220218120243731](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218120243731.png)
**SSH协议结构**
SSH协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议:
传输层协议:提供版本协商,加密算法协商,密钥交换,服务端认证以及信息完整性支持
用户认证协议:为服务器提供客户端的身份鉴别
连接协议:将加密的信息隧道复用为多个逻辑通道,提供给高层的应用协议(STelnet、SFTP)使用;各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制
SSH中用到的算法主要有几类:
用于数据完整性保护的MAC算法,如hmac-md5、hmac-md5-96等
用于数据信息加密的算法,如3des-cbc、aes128-cbc、des-cbc等
用于产生会话密钥的密钥交换算法,如diffle-hellman-group-exchange-sha1等
用于进行数字签名和认证的主机公钥算法,如RSA、DSA等
公开密钥技术:
公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名
机密性:指信息在存储、传输、使用的过程中,不会被泄漏给非授权用户或实体
完整性:指信息在存储、传输、使用的过程中,不会被非授权用户篡改或防止授权用户对信息进行不恰当的篡改
可用性:指确保授权用户或实体对信息资源的正常使用不会被异常拒绝,允许其可靠而及时地访问信息资源
**基于可信路径的访问控制**
可以在设备上部署基于可信路径的访问控制策略,以提升网络的安全性
部署URPF,可以判定某个报文的源地址是否合法,如果该报文的路径与URPF学习的路径不符,丢弃该报文,用URPF可以有效防范IP地址欺骗
![image-20220218120602269](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218120602269.png)
IP网络的开放性决定了,只要路由可达,任何人都可以对目标主机进行访问或者攻击
对于某一个主机而言,访问它的客户端的报文历经的路径通常是固定的,尤其是在网络边缘,这种路径的固定特性表现得更加明显
URPF(单播逆向路径转发)分为严格模式和松散模式以及允许匹配缺省路由的方式。其原理是当设备转发IP报文时,检查数据报文的源IP地址是否合法,检查的原理是根据数据包的源IP地址查路由表
**本机防攻击**
在网络中,存在着大量针对CPU的恶意攻击报文以及需要正常上送CPU的各类报文。针对CPU的恶意攻击报文会导致CPU长时间繁忙的处理攻击报文,从而引发其他业务的断续甚至系统的中断;大量正常的报文也会导致CPU占用率过高,性能下降,从而影响正常的业务
为了保护CPU,保证CPU对正常业务的处理和响应,设备提供了本机防攻击功能。本机防攻击针对的是上送CPU的报文,主要用于保护设备自身安全,保证已有业务在发生攻击时的正常运转,避免设备遭受攻击时各业务的相互影响
本机防攻击包括CPU防攻击和攻击溯源两部分:
CPU防攻击针对上送CPU的报文进行限制和约束,使单位时间内上送CPU报文的数量限制在一定的范围之内,从而保护CPU的安全,保证CPU对业务的正常处理
攻击溯源针对DoS(Denial of Service,拒绝服务)攻击进行防御。设备通过对上送CPU的报文进行分析统计,然后对统计的报文设置一定的阈值,将超过阈值的报文判定为攻击报文,再对这些攻击报文根据报文信息找出攻击源用户或者攻击源接口,最后通过日志、告警等方式提醒管理员以便管理员采用一定的措施来保护设备,或者直接丢弃攻击报文以对攻击源进行惩罚
**CPU防攻击**
多级安全机制,保证设备的安全,实现了对设备的分级保护。设备通过以下策略实现对设备的分级保护:
第一级:通过黑名单来过滤上送CPU的非法报文
第二级:CPCAR,对上送CPU的报文按照协议类型进行速率限制,保证每种协议上送CPU的报文不会过多
第三级:对上送CPU的报文,按照协议优先级进行调度,保证优先级高的协议先得到处理
第四级:对上送CPU的报文统一限速,对超过统一限速值的报文随机丢弃,保证整体上送CPU的报文不会过多,保护CPU安全
动态链路保护功能的CPU报文限速,是指当设备检测到SSH Session数据、Telnet Session数据、HTTP Session数据、FTP Session数据以及BGP Session数据建立时,会启动对此Session的动态链路保护功能,后续上送报文如匹配此Session特征信息,此类数据将会享受高速率上送的权利,由此保证了此Session相关业务的运行可靠性、稳定性
**攻击溯源原理 **
攻击溯源包括报文解析、流量分析、攻击源识别和发送日志告警通知管理员以及实施惩罚四个过程
![image-20220218120959564](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218120959564.png)
通过图中所示的四个过程,找出攻击源,然后管理员通过ACL或配置黑名单的方式限制攻击源,以保护设备CPU
二:网络设备安全加固部署示例
1.SSH基本配置
![image-20220218154352764](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218154352764.png)
![image-20220218154403992](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218154403992.png)
2.SSH配置示例
用户希望安全的远程登录设备,因此配置STelnet方式进行远程的安全登录
在R3上配置两个登录用户client001和client002,R1使用client001通过password认证方式登录R3,R2使用client002通过RSA认证方式登录R3。配置安全策略,保证只有R1和R2才能登录设备
![image-20220218154446378](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218154446378.png)
**配置步骤:**
在R3生成本地密钥对,实现在服务器端和客户端进行安全的数据交互
在R3配置SSH用户client001和**client002**
在R3开启STelnet服务功能
在R3配置SSH用户client001和client002的服务方式为STelnet
在R3配置SSH服务器的端口号,有效防止攻击者对SSH服务标准端口的访问,确保安全性
用户client001和client002分别以STelnet方式实现登录R3
**配置:**
```shell
[R3] rsa local-key-pair create
The key name will be: Host
RSA keys defined for Host already exist. Confirm to replace them? (y/n):y
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is less than 2048,
It will introduce potential security risks.
Input the bits in the modulus[default = 2048]:2048
Generating keys... ......................................................................................+++ ....+++ .......................................++++++++ ..............++++++++
```
```shell
[R3] user-interface vty 0 4
[R3-ui-vty0-4] authentication-mode aaa
[R3-ui-vty0-4] protocol inbound ssh
[R3-ui-vty0-4] quit
[R3] aaa
[R3-aaa] local-user client001 password irreversible-cipher Huawei@123
[R3-aaa] local-user client001 privilege level 3
[R3-aaa] local-user client002 password irreversible-cipher Huawei@123
[R3-aaa] local-user client002 privilege level 3
[R3-aaa] quit
[R3] ssh user client001 authentication-type password
[R3] ssh user client002 authentication-type rsa
```
```shell
[R3] aaa
[R3-aaa] local-user client001 service-type ssh
[R3-aaa] local-user client002 service-type ssh
[R3-aaa] quit
```
```shell
[R3] ssh server port 1025
```
```shell
# 在R2生成客户端的本地密钥对。
[R2] rsa local-key-pair create
The key name will be: Host
RSA keys defined for Host already exist.
Confirm to replace them? (y/n):y
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is less than 2048,
It will introduce potential security risks.
Input the bits in the modulus[default = 2048]:2048
Generating keys... ......................................................................................
+++ ....+++ .......................................++++++++ ..............++++++++
```
```shell
# 查看R2生成的RSA密钥对的公钥部分。
[R2] display rsa local-key-pair public
Key code: 30820109 02820100 CB0E88EC A1C2CFEA F97126F9 36919C08 0455127B A3A48594 69517096 35626F55 E4FAF0EB FDA2B9E9 5E417B2B E09F38B0 D26FCA73 FE2E3FC4 DFBEC8CF 4ED0C909 E8D975E6 FFC73C81 D13FE71E 759DC805 B0F0E877 4FC9288E BE1E197C 2A7186B0 B56F5573 3A5EA588 29C63E3B 20D56233 8E63278D F941734F 6B359C69 BBAE5A52 EB842179 04B4204D 5DB31D72 97F0C085 DA771F66 0AAADC28 D264CEB9 5BADA92C CDE9F116 D6D99C48 CEBA3A1D 868B053A 32941D85 CCAA9796 A4B55760 0A8108ED DB45DA12 F61634C9 59431600 341FEDEF 5379D565 A8D1953D DEA018A2 72F99FFC 63DE04BF 2A6219BD DF13D705 27D63DEF 83D556BC 5B44D983 8D5EA126 C1EB71CB 0203 010001
=====================================================
Time of Key pair created: 2012-08-06 17:17:44+00:00 Key name: Server Key type: RSA encryption Key =====================================================
Key code: 3067 0260 DF8AFF3C 28213B94 2292852E E98657EE 11DE5AF4 8A176878 CDD4BD31 55E05735 3080F367 A83A9034 47D534CA 81250C1D 35401DC3 464E9E5F A50202CF A7AD09CD AC3F531C A763F0A0 4C8E51B9 18755400 76AF4A78 225C92C3 01FE0DFF 06908363 0203 010001
```
```shell
# 将R2上产生的RSA公钥配置到服务器端(上页display命令显示信息中黑体部分即为客户端产生的RSA公钥,将其拷贝粘贴至服务器端)。
[R3] rsa peer-public-key rsakey001
[R3-rsa-public-key] public-key-code begin
[R3-rsa-key-code] 30820109
[R3-rsa-key-code] 02820100
[R3-rsa-key-code] CB0E88EC A1C2CFEA F97126F9 36919C08 0455127B
[R3-rsa-key-code] ......
[R3-rsa-key-code] 010001
[R3-rsa-key-code] public-key-code end
[R3-rsa-public-key] peer-public-key end
```
```shell
# 在R3上为SSH用户client002绑定STelnet客户端的RSA公钥。
[R3] ssh user client002 assign rsa-key rsakey001
```
**SSH配置验证**
```shell
[R1] ssh client first-time enable
[R1] stelnet 192.168.1.1 1025
Please input the username:client001
Trying 192.168.1.1 ...
Press CTRL+K to abort
Connected to 192.168.1.1 ...
The server is not authenticated. Continue to access it?(y/n)[n]:y
Save the server's public key?(y/n)[n]:y
The server's public key will be saved with the name 192.168.1.1. Please wait... Enter password:
# 显示登录成功
```
```shell
[R2] ssh client first-time enable
[R2] stelnet 192.168.1.1 1025
Please input the username:client002
Trying 192.168.1.1 ... Press CTRL+K to abort Connected to 192.168.1.1 ...
The server is not authenticated. Continue to access it?(y/n)[n]:y
Save the server's public key?(y/n)[n]:y
The server's public key will be saved with the name 192.168.1.1. Please wait...
# 显示登录成功
```
3.本机防攻击基本配置
![image-20220218155331824](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218155331824.png)
![image-20220218155340625](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218155340625.png)
4.本机防攻击配置示例
![image-20220218155435638](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218155435638.png)
如图所示,位于不同局域网的用户通过R1访问Internet。为分析R1受攻击情况,需要配置攻击溯源检查功能记录攻击源信息
管理员发现存在以下现象:
通过攻击溯源检查功能分析可知,Net1中的某个用户经常会发生攻击行为
R1收到大量的ARP Request报文,影响CPU的正常工作
R1无法提供FTP服务
局域网用户通过DHCP方式动态获取IP地址,但R1未优先处理上送CPU的DHCP报文
R1收到大量的Telnet报文
管理员希望通过在R1进行配置,以便解决上述问题
**配置过程:**
配置黑名单,将Net1网段中的攻击者(0001-c0a8-0102)列入黑名单,阻止其接入网络
配置ARP Request报文上送CPU的速率限制,使ARP Request报文限制在较小速率范围内,减少对CPU处理业务的影响
配置FTP协议的动态链路保护功能,保证R1正常提供FTP功能
配置协议优先级,对DHCP Client报文设置较高的优先级,保证R1优先处理上送CPU的DHCP Client报文
关闭R1的Telnet服务器功能,使R1丢弃收到的Telnet报文
```shell
# 配置黑名单使用的ACL。
[R1] acl number 4001
[R1-acl-L2-4001] rule 5 permit source-mac 0001-c0a8-0102
[R1-acl-L2-4001] quit
```
```shell
# 创建防攻击策略。
[R1] cpu-defend policy devicesafety
```
```shell
# 配置攻击溯源检查功能。
[R1-cpu-defend-policy-devicesafety] auto-defend enable
[R1-cpu-defend-policy-devicesafety] auto-defend threshold 50
```
```shell
# 配置黑名单。
[R1-cpu-defend-policy-devicesafety] blacklist 1 acl 4001
```
```shell
# 配置黑名单。
[R1-cpu-defend-policy-devicesafety] blacklist 1 acl 4001
```
```shell
# 配置FTP协议动态链路保护功能的速率限制值。
[R1-cpu-defend-policy-devicesafety] application-apperceive packet-type ftp rate-limit 2000
# 使能FTP协议动态链路保护功能。
[R1] cpu-defend application-apperceive ftp enable
```
```shell
# 应用防攻击策略。
[R1-cpu-defend-policy-devicesafety] packet-type dhcp-client priority 3
[R1] cpu-defend-policy devicesafety
```
```shell
# 关闭telnet server功能。
[R1] undo telnet server enable
```
**本机防攻击配置验证**
```shell
# 查看上送到主控板的报文的统计信息,丢弃的报文表明设备对arp-request进行了速率限制。
display cpu-defend statistics
Packet Type Pass Packets Drop Packets
8021X 0 0
arp-miss 5 0
arp-reply 8090 0
arp-request 1446576 127773
bfd 0 0
bgp 0 0
bgp4plus 0 0
dhcp-client 879 0
dhcp-server 0 0
```
```shell
# 查看配置的防攻击策略的信息。
[R1] display cpu-defend policy devicesafety
Related slot : <0>
……
Slot<0> : Success
Configuration :
Blacklist 1 ACL number : 4001
Packet-type arp-request rate-limit : 64(pps)
Packet-type dhcp-client priority : 3
Rate-limit all-packets : 2000(pps)(default)
Application-apperceive packet-type ftp : 2000(pps)
Application-apperceive packet-type tftp : 2000(pps)
```