思科交换机安全最佳实践

思科交换机安全最佳实践详解

思科交换机安全最佳实践旨在保护二层网络基础设施,防止来自局域网(LAN)的攻击,确保网络的可用性、机密性和完整性。这些措施可以分为对交换机本身的保护以及对接入层的保护。 
 
一、保护交换机本身
 
1. 严格管理访问控制
  • 使用 SSH 代替 Telnet: 始终使用加密的 SSH 进行远程管理,以防止密码和配置信息被窃听。
  • 启用 AAA(认证、授权、计费): 使用集中式的认证服务器(如 TACACS+ 或 RADIUS),管理对所有网络设备的用户访问和权限。
  • 使用 enable secret: 使用 enable secret 命令设置特权模式密码,它使用更强的加密算法,而 enable password 则使用弱加密。
  • 管理平面保护(MPP): 限制哪些接口和协议可以用来管理交换机,将管理流量隔离到专用的 VLAN 或接口上。 
 
2. 保护控制平面
  • 控制平面管制(CoPP): 使用 QoS(服务质量)策略限制发送到交换机 CPU 的控制流量速率,防止拒绝服务(DoS)攻击耗尽 CPU 资源。
  • STP 安全: 启用 BPDU Guard 和 Root Guard,防止恶意设备通过发送伪造的 BPDU 报文来操纵生成树拓扑。
 
3. 增强硬件和配置安全
  • 禁用不必要的服务: 关闭所有不需要的服务和协议(如 CDP、HTTP 服务器),以减少攻击面。
  • 禁用未使用的端口: 将所有未使用的端口 shutdown,并将它们分配到一个专用的“黑洞” VLAN 中。
  • 定期更新固件: 及时安装最新的 Cisco IOS 软件更新,以修补已知的安全漏洞。 
 
二、保护接入层和二层协议
 
1. 端口安全(Port Security)
  • 原理: 在交换机端口上限制可以学习到的 MAC 地址数量,或只允许特定的 MAC 地址访问网络。
  • 违规处理: 配置违规模式,例如 shutdown,以便在检测到未经授权的设备时自动禁用端口。
  • 配置实践:
    • switchport mode access
    • switchport port-security
    • switchport port-security maximum 1
    • switchport port-security mac-address sticky 
 
2. VLAN 安全
  • 更改默认 VLAN: 不使用 VLAN 1 进行任何生产数据或管理流量传输。为管理流量创建专用的 VLAN。
  • 安全 Trunk 端口: 在用户接入端口上禁用动态中继协议(DTP),并手动配置 Trunk 端口,只允许通过必要的 VLAN。 
 
3. 二层协议安全
  • DHCP Snooping(DHCP 监听): 将交换机端口分为信任和不信任两类,防止恶意 DHCP 服务器分配错误的 IP 地址,并建立 IP-MAC-端口绑定表。
  • 动态 ARP 检测(DAI): 使用 DHCP Snooping 建立的绑定表来验证所有经过不信任端口的 ARP 报文,防止 ARP 欺骗。
  • IP 源防卫(IP Source Guard): 基于 DHCP Snooping 绑定表,过滤不信任端口上伪造源 IP 和 MAC 地址的流量。 
 
三、监控与审计
  • 日志记录: 配置交换机将 Syslog 信息发送到集中的日志服务器,以便进行审计和事件分析。
  • SNMP 访问控制: 限制 SNMP 社区字符串的访问,并仅允许来自指定 IP 地址的查询,以防止敏感网络信息泄露。 
交换机SSH安全配置旨在通过加密管理会话来防止信息被窃听。以下是一个详细的配置步骤和示例:
 
配置前提
在开始配置 SSH 之前,请确保可以通过 Console 口或安全的带外管理方式连接到交换机,以防配置错误导致管理中断。
 
详细配置步骤与示例
假设我们要配置一台名为 Switch-Core 的思科交换机,允许用户 admin 使用密码 CiscoSecurePassword 通过 SSH 登录。
 
步骤 1: 配置主机名和域名
SSH 要求设备具有主机名和域名才能生成 RSA 密钥。
 
Switch> enable
Switch# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)# hostname Switch-Core
Switch-Core(config)# ip domain-name example.com
 
步骤 2: 生成 RSA 密钥对
生成用于加密 SSH 会话的密钥对。密钥长度越长越安全(建议至少 1024 或 2048 位)。
 
Switch-Core(config)# crypto key generate rsa
The name for the keys will be: Switch-Core.example.com
Choose the size of the key modulus in bits [512]: 2048
% Generating 2048 bit RSA keys, keys will be non-exportable...[OK]

Switch-Core(config)# 
 
步骤 3: 创建本地用户账户
为 SSH 登录创建本地用户名和密码。推荐使用 secret 命令以实现更强的密码加密(Type 5 加密)。
 
Switch-Core(config)# username admin secret CiscoSecurePassword
 
步骤 4: 配置 VTY 线路(虚拟终端接口)
VTY 线路用于远程管理访问。需要配置以下内容:
  1. 限制访问协议为 SSH: 阻止 Telnet。
  2. 强制本地登录: 使用本地创建的用户名和密码进行身份验证。
  3. 设置会话超时: 增加安全性。
Switch-Core(config)# line vty 0 15
Switch-Core(config-line)# transport input ssh  # 只允许SSH连接,拒绝Telnet
Switch-Core(config-line)# login local          # 使用本地数据库的用户名密码认证
Switch-Core(config-line)# exec-timeout 10 0    # 设置10分钟无操作后自动断开连接
Switch-Core(config-line)# exit
 
步骤 5: 全局启用并优先使用 SSHv2
默认情况下,SSHv1 和 SSHv2 都可能被启用。SSHv2 更安全,应优先使用或只启用 SSHv2。
 
Switch-Core(config)# ip ssh version 2
Switch-Core(config)# ip ssh time-out 60       # SSH会话超时时间(秒)
Switch-Core(config)# ip ssh authentication-retries 2 # 允许2次密码重试机会
 
步骤 6: 配置管理接口 IP 地址(如果使用带内管理)
如果使用带内管理,确保交换机具有管理 IP 地址和默认网关(例如,为管理 VLAN 99 配置 SVI 接口)。
 
Switch-Core(config)# interface vlan 99
Switch-Core(config-if)# ip address 192.168.99.10 255.255.255.0
Switch-Core(config-if)# no shutdown
Switch-Core(config-if)# exit
Switch-Core(config)# ip default-gateway 192.168.99.1
 
步骤 7: 加密明文密码并保存配置
确保配置中现有的 Type 7 密码被加密,并将配置保存到启动配置中。
 
Switch-Core(config)# service password-encryption 
Switch-Core(config)# exit
Switch-Core# write memory 
Building configuration...
[OK]
 
验证配置
使用 SSH 客户端(如 PuTTY、SecureCRT 或 Linux/macOS 终端)尝试连接到交换机的管理 IP 地址来验证配置:
 
# 在您的管理PC终端中执行
ssh admin@192.168.99.10
 
使用思科命令来检查 SSH 状态:
 
bash
Switch-Core# show ip ssh
SSH Enabled - version 2
Authentication retries: 2           Authentication timeout: 60 seconds
...
 
思科交换机上的 AAA(Authentication, Authorization, and Accounting,认证、授权、计费)安全配置用于集中管理用户对设备的管理访问权限。通常使用外部服务器(如 Cisco ISE、Windows NPS 或 FreeRADIUS)来实现此功能。
以下配置示例展示了如何配置思科交换机,使其使用名为 ACS_Server 的 TACACS+ 服务器进行身份验证和授权。
 
配置前提
  • 需要一台正在运行的 AAA 服务器(本例假设使用 TACACS+)。
  • 需要知道 AAA 服务器的 IP 地址(例如 10.1.1.1)和共享密钥(例如 MySharedSecretKey)。
  • 请确保在配置期间仍能通过 Console 口或本地账户访问交换机,以防外部服务器连接失败。
 
详细配置步骤与示例
假设交换机的 IP 地址为 192.168.99.10,AAA 服务器 IP 为 10.1.1.1
 
步骤 1: 全局启用 AAA 新模型
这是启用 AAA 功能的第一步。
 
Switch> enable
Switch# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)# aaa new-model
 
步骤 2: 定义 AAA 服务器组和服务器地址
将 AAA 服务器的 IP 地址和通信密钥定义到思科设备中。我们使用 TACACS+ 协议。
 
Switch(config)# tacacs server ACS_Server
Switch(config-tacacs-server)# address ipv4 10.1.1.1
Switch(config-tacacs-server)# key MySharedSecretKey  # 共享密钥必须与服务器上的配置一致
Switch(config-tacacs-server)# exit
Switch(config)# aaa group server tacacs+ ACS_Group # 定义一个服务器组
Switch(config-aaa-server-group)# server name ACS_Server # 将服务器添加到组
Switch(config-aaa-server-group)# exit
注:如果您使用 RADIUS 服务器,请使用 radius server ... 命令。
 
步骤 3: 配置身份验证(Authentication)
配置如何对尝试登录的用户进行身份验证。我们将使用 AAA 服务器组,并在服务器无响应时回退到本地账户。
 
Switch(config)# aaa authentication login default group ACS_Group local
  • login default:将此认证方法应用于所有 VTY(远程登录,如 SSH/Telnet)和 Console 登录。
  • group ACS_Group:首先尝试使用 ACS_Group 中定义的 TACACS+ 服务器进行认证。
  • local:如果服务器无响应,则使用交换机本地配置的用户名和密码。
 
步骤 4: 配置授权(Authorization)
配置用户登录后被允许执行哪些命令(例如,是否允许进入特权模式、配置接口等)。这允许服务器根据用户的组别应用精细权限控制。
 
Switch(config)# aaa authorization exec default group ACS_Group local 
Switch(config)# aaa authorization commands 15 default group ACS_Group local
  • authorization exec default:控制用户是否被允许执行 EXEC shell(即登录后的第一级访问权限)。
  • authorization commands 15 default:控制用户在特权模式(级别 15)下被允许执行哪些命令。
 
步骤 5: 配置计费(Accounting)
配置记录用户执行的操作(登录、执行的命令、会话持续时间等),并将这些记录发送到 AAA 服务器。
 
Switch(config)# aaa accounting connection default start-stop group ACS_Group
Switch(config)# aaa accounting exec default start-stop group ACS_Group 
Switch(config)# aaa accounting commands 15 default start-stop group ACS_Group
  • start-stop:记录会话开始和结束时间。
 
步骤 6: 配置 VTY 线路使用新的 AAA 策略
确保您的 VTY 线路(远程访问)正在使用配置的 AAA 认证和授权方案。
 
Switch(config)# line vty 0 15
Switch(config-line)# login authentication default 
Switch(config-line)# authorization exec default
Switch(config-line)# exit
 
步骤 7: 创建本地回退账户(重要!)
如果 AAA 服务器宕机或网络连接中断,您需要一个本地账户进行登录。
 
Switch(config)# username localadmin secret LocalPassword123! # 创建本地管理员账户
 
步骤 8: 保存配置
 
Switch(config)# end
Switch# write memory 
 
验证配置
在配置完成后,使用您在 AAA 服务器上配置的远程账户尝试 SSH 连接到交换机。同时,也测试一下本地账户是否能作为备用账户登录。
 
 
思科交换机管理平面保护(MPP,Management Plane Protection)是一项关键的安全功能,用于限制哪些接口可以用于管理交换机本身(例如,SSH、Telnet、SNMP、HTTP)。MPP旨在通过隔离和限制管理流量的来源,保护交换机的CPU资源和管理接口免受未经授权的访问和拒绝服务(DoS)攻击。
 
一、管理平面保护(MPP)原理
默认情况下,思科交换机允许从所有活动接口管理设备。这意味着连接到任何端口的攻击者都可能尝试利用管理服务。MPP通过以下方式提高安全性:
  1. 定义“管理接口”: 管理员明确指定哪些接口被授权用于管理流量。
  2. 限制管理协议: 限制特定管理协议(SSH、SNMP、Telnet等)只能通过指定的管理接口访问。
  3. 隔离流量: 将管理流量从用户数据流量中分离出来,确保即使数据平面拥塞,管理接口仍然可用。
MPP通常用于保护带外(OOB)管理网络,确保只有连接到专用管理网络的设备才能尝试登录或管理交换机。
 
二、配置举例:在思科交换机上实施 MPP
以下示例演示如何在思科 Catalyst 交换机上配置 MPP,将管理访问限制在特定的 VLAN 接口。
假设场景:
  • 管理 VLAN: VLAN 99
  • 管理 IP 地址: 192.168.99.10
  • 非管理接口: GigabitEthernet 0/1 到 0/24
配置步骤:
 
步骤 1: 确保管理接口(SVI)已配置并运行
确保交换机的管理接口(VLAN 99 的 SVI)已配置 IP 地址,并且连接正常。
 
Switch# configure terminal
Switch(config)# interface Vlan 99
Switch(config-if)# ip address 192.168.99.10 255.255.255.0
Switch(config-if)# no shutdown
Switch(config-if)# exit
 
步骤 2: 启用 Management Plane Protection (MPP)
使用 control-plane host 命令来配置管理平面主机接口的访问策略。
 
Switch(config)# control-plane host 
 
步骤 3: 定义允许的管理访问规则(使用 ACL)
创建一个标准的或扩展的访问控制列表(ACL),明确允许哪些源 IP 地址可以访问管理服务。
 
Switch(config)# ip access-list standard MANAGEMENT_ACL
Switch(config-std-nacl)# permit 192.168.99.0 0.0.0.255  # 允许管理子网内的所有设备访问
Switch(config-std-nacl)# permit 10.0.0.5 host          # 允许特定的管理服务器IP地址
Switch(config-std-nacl)# deny any                      # 拒绝其他所有流量
Switch(config-std-nacl)# exit
 
步骤 4: 应用 ACL 到管理接口
将创建的 ACL 应用于管理平面,限制管理流量只能来自 ACL 中允许的源地址。
 
Switch(config)# control-plane host 
Switch(config-cp-host)# management-interface Vlan 99 allow ssh snmp ? # 限制管理协议 (SSH, SNMP)
Switch(config-cp-host)# management-interface Vlan 99 allow ssh snmp # 实际配置
注:思科 IOS CLI 会根据您输入的协议自动关联上一步骤创建的 IP ACL。
 
步骤 5: 验证配置
使用 show control-plane host 命令验证 MPP 配置。
 
Switch# show control-plane host 
 Management interface Vlan99
   Allowed interfaces: Vlan99
   Allowed protocols: ssh snmp 
   Associated ACL: MANAGEMENT_ACL
 
关键注意事项
  • 测试前确保带外连接: 在配置 MPP 之前,请确保您可以通过 Console 口或专用的管理接口进行访问。配置错误的应用可能会导致您无法远程管理交换机。
  • 最小权限原则: ACL 应尽可能严格,只允许必要的管理 IP 地址和协议。
  • MPP与CoPP结合使用: MPP 关注管理流量的来源,而 CoPP(控制平面管制)关注管理流量的速率限制,两者结合使用提供更全面的控制平面保护。

 

思科控制平面管制(CoPP,Control Plane Policing)是一项至关重要的安全和 QoS(服务质量)功能。其目的是保护路由器的 CPU 资源,确保设备即使在遭受攻击或网络拥塞时,也能优先处理关键的控制平面流量(例如路由协议、管理协议),保证网络的稳定运行。
 
一、CoPP 的工作原理
控制平面是路由器中负责处理路由协议(OSPF、BGP)、生成树协议、管理协议(SSH、SNMP)以及其他系统级流量的逻辑部分。如果控制平面流量过大,会耗尽 CPU 资源,导致路由器无法正常转发数据包,造成网络中断。
CoPP 通过以下机制实现保护:
  1. 流量分类(Classify): 使用访问控制列表(ACL)或协议信息识别出不同类型的控制平面流量(如 OSPF、EIGRP、SSH、ICMP 等)。
  2. 流量管制(Police): 使用策略图(Policy Map)对分类后的流量设置速率限制(承诺信息速率 CIR),超过限制的流量将被丢弃或重新标记。
  3. 应用策略(Apply): 将配置好的策略应用到控制平面接口。
 
二、思科 CoPP 配置详解与举例
以下示例展示了如何在思科路由器或交换机上配置 CoPP。此配置使用基于类的 QoS 命令。
配置目标:
  • 允许 SSH 和 SNMP 流量(管理协议)具有较高的速率限制。
  • 允许 OSPF 路由协议流量。
  • 限制 ICMP(Ping)流量。
  • 丢弃所有其他不必要的控制平面流量。
 
步骤 1: 创建 ACL 分类控制平面流量
首先,定义不同类型的流量。
 
Router> enable
Router# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.

# Classify SSH (端口 22)
Router(config)# ip access-list extended ACL_SSH
Router(config-ext-nacl)# permit tcp any any eq 22
Router(config-ext-nacl)# exit

# Classify SNMP (UDP 端口 161)
Router(config)# ip access-list extended ACL_SNMP
Router(config-ext-nacl)# permit udp any any eq 161
Router(config-ext-nacl)# exit

# Classify OSPF (IP 协议号 89)
Router(config)# ip access-list extended ACL_OSPF
Router(config-ext-nacl)# permit ospf any any 
Router(config-ext-nacl)# exit

# Classify ICMP (Ping)
Router(config)# ip access-list extended ACL_ICMP
Router(config-ext-nacl)# permit icmp any any
Router(config-ext-nacl)# exit
 
步骤 2: 创建类图(Class Map)
将 ACL 分配到类图中,以便在策略图中引用。
 
Router(config)# class-map match-all CM_SSH
Router(config-cmap)# match access-group name ACL_SSH
Router(config-cmap)# exit

Router(config)# class-map match-all CM_SNMP
Router(config-cmap)# match access-group name ACL_SNMP
Router(config-cmap)# exit

Router(config)# class-map match-all CM_OSPF
Router(config-cmap)# match access-group name ACL_OSPF
Router(config-cmap)# exit

Router(config)# class-map match-all CM_ICMP
Router(config-cmap)# match access-group name ACL_ICMP
Router(config-cmap)# exit

# 创建一个默认类,用于匹配所有未分类的流量
Router(config)# class-map match-any CM_UNDESIRABLE
Router(config-cmap)# match any
Router(config-cmap)# exit
 
步骤 3: 创建策略图(Policy Map)并应用管制
定义对每种流量类型如何处理,设置速率限制。速率根据实际网络需求调整。
 
Router(config)# policy-map PM_COPP
Router(config-pmap)# class CM_SSH
Router(config-pmap-c)# police cir 128000 bc 8000 be 8000 conform-action transmit exceed-action drop # 限制速率 128 kbps
Router(config-pmap-c)# exit

Router(config-pmap)# class CM_SNMP
Router(config-pmap-c)# police cir 128000 bc 8000 be 8000 conform-action transmit exceed-action drop # 限制速率 128 kbps
Router(config-pmap-c)# exit

Router(config-pmap)# class CM_OSPF
Router(config-pmap-c)# police cir 256000 bc 8000 be 8000 conform-action transmit exceed-action drop # 限制速率 256 kbps (确保路由稳定)
Router(config-pmap-c)# exit

Router(config-pmap)# class CM_ICMP
Router(config-pmap-c)# police cir 64000 bc 8000 be 8000 conform-action transmit exceed-action drop # 限制速率 64 kbps (限制Ping泛洪)
Router(config-pmap-c)# exit

# 处理所有其他不需要的流量:全部丢弃
Router(config-pmap)# class CM_UNDESIRABLE
Router(config-pmap-c)# drop
Router(config-pmap-c)# exit
 
步骤 4: 将策略图应用到控制平面
将配置好的策略应用到路由器的控制平面接口。
 
Router(config)# control-plane
Router(config-cp)# service-policy input PM_COPP
Router(config-cp)# exit
Router(config)# end
Router# write memory
 
三、验证配置
使用 show policy-map control-plane 命令来验证策略是否应用以及流量命中情况。
 
Router# show policy-map control-plane 
 Control Plane 
 Service-policy input: PM_COPP

  Class-map: CM_SSH (match-all)  
  Match: access-group name ACL_SSH
   ... (police statistics) ...
   
  Class-map: CM_OSPF (match-all)  
   ...

  Class-map: CM_UNDESIRABLE (match-any)  
  Match: any 
   ... (statistics showing packets dropped here) ...
 
 
思科交换机上的 BPDU Guard 和 Root Guard 是生成树协议(STP)安全性的两个重要功能,用于保护 STP 域的稳定性,防止未经授权的设备操纵网络拓扑。
 
一、BPDU Guard 配置与原理
BPDU Guard 用于保护连接终端用户设备的接入层端口。在这些端口上,理论上不应该接收到任何 BPDU(Bridge Protocol Data Unit)报文,因为终端设备(如 PC、打印机)不运行 STP。
  • 原理: 当一个配置了 portfast(端口快速启动)且启用了 BPDU Guard 的接口收到 BPDU 报文时,交换机会立即将该端口置于 error-disabled(错误禁用)状态,从而阻止未经授权的设备或恶意设备加入网络,操纵生成树拓扑。
  • 用途: 应用于所有面向终端设备的接入层端口。
 
BPDU Guard 配置举例
可以在接口级别单独配置,也可以在全局配置后应用于所有配置了 portfast 的端口。
方法 1: 全局配置(推荐)
 
Switch> enable
Switch# configure terminal
Switch(config)# spanning-tree portfast default # 默认启用全局 portfast (应用于所有access口)
Switch(config)# spanning-tree bpduguard enable # 全局启用 BPDU Guard

# 如果某个端口例外(例如连接其他交换机),可以在该端口禁用:
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# spanning-tree bpduguard disable 
 
方法 2: 接口级别配置
 
Switch(config)# interface GigabitEthernet0/2
Switch(config-if)# switchport mode access 
Switch(config-if)# spanning-tree portfast enable # 启用 PortFast
Switch(config-if)# spanning-tree bpduguard enable # 启用 BPDU Guard
Switch(config-if)# exit
恢复端口:
当端口被 BPDU Guard 关闭后,需要手动或配置自动恢复:
 
Switch(config)# interface GigabitEthernet0/2
Switch(config-if)# shutdown
Switch(config-if)# no shutdown
 
二、Root Guard 配置与原理
Root Guard 用于控制网络中**根桥(Root Bridge)**的位置。在大型网络中,通常会手动指定核心交换机作为根桥。Root Guard 确保只有指定的交换机才能成为根桥。
  • 原理: 当一个启用了 Root Guard 的端口接收到优先级更高(即 BID 更低,更优)的 BPDU 报文时,它不会禁用端口,而是将该端口置于 Root Inconsistent(根不一致)状态。该端口无法成为根端口,从而阻止外部交换机成为根桥,但仍然可以转发其他流量。一旦优选 BPDU 停止接收,端口将自动恢复。
  • 用途: 应用于连接下游接入层交换机的上行链路,确保接入层交换机不能竞选为根桥。
 
Root Guard 配置举例
Root Guard 只能在接口级别配置,因为它应用于特定的上行链路。
配置步骤:
假设 R1 是核心交换机,通过 Gi0/1 接口连接到下游交换机 R2。我们希望 R1 保持根桥地位。
 
R1-Switch> enable
R1-Switch# configure terminal
R1-Switch(config)# interface GigabitEthernet0/1
R1-Switch(config-if)# spanning-tree rootguard enable # 在上行接口启用 Root Guard
R1-Switch(config-if)# exit
R1-Switch(config)# end
R1-Switch# write memory
验证 Root Guard 状态:
使用 show spanning-tree inconsistentports 命令或 show spanning-tree interface <interface-id> detail 命令来检查端口状态。
 
R1-Switch# show spanning-tree interface GigabitEthernet0/1 detail 
...
BPDU: received 4, sent 2
BPDU Guard : disabled
Root Guard : enabled
...
 
三、总结与区别
 
功能BPDU GuardRoot Guard
目的 保护终端接入端口,防止非法 BPDU。 控制根桥选举,确保核心交换机是根桥。
应用位置 连接终端设备的 Access 端口。 连接下游交换机的 上行 Trunk 端口。
违规处理 置于 error-disabled 状态(需要手动恢复)。 置于 Root Inconsistent 状态(自动恢复)。
是否需要 PortFast 需要(BPDU Guard 通常与 PortFast 结合使用)。 不需要。
 
 
思科交换机端口安全(Port Security)是一项关键的二层安全功能,用于限制或控制连接到交换机端口的终端设备数量和身份。这是防止未经授权的设备接入局域网(LAN)最有效的基础防御措施之一。
 
一、端口安全的工作原理
端口安全通过检查进入端口的数据帧的源 MAC 地址来工作。管理员可以限制每个端口允许学习的最大 MAC 地址数量,并指定在违规发生时的处理方式。
 
二、配置步骤详解
以下是在思科 Catalyst 交换机上配置端口安全的详细步骤和示例。
 
1. 进入接口配置模式
首先,确定要配置的接入端口(例如 FastEthernet 0/1)并进入其配置模式。建议先将端口明确设置为接入(Access)模式。
 
Switch> enable
Switch# configure terminal
Switch(config)# interface FastEthernet 0/1
Switch(config-if)# switchport mode access
 
2. 启用端口安全
在接口上启用端口安全功能。
 
Switch(config-if)# switchport port-security 
 
3. 设置最大允许 MAC 地址数量 (可选)
默认情况下,思科交换机只允许学习一个 MAC 地址。您可以根据需要增加这个限制(例如,如果一个端口连接了一个小型 Hub 或 IP 电话后再连接 PC)。
 
Switch(config-if)# switchport port-security maximum 2 
 
4. 定义允许的 MAC 地址 (重要步骤)
这是配置的核心部分,有三种方式指定允许的 MAC 地址:
  • 手动指定(最安全): 管理员手动输入允许的 MAC 地址。
    Switch(config-if)# switchport port-security mac-address 001a.b2c3.d4e5 
  • Sticky MAC 地址(推荐): 交换机首次学习到的 MAC 地址将被自动保存到运行配置和启动配置中。这平衡了安全性和管理便利性。
    Switch(config-if)# switchport port-security mac-address sticky
  • 动态学习(默认): 交换机动态学习 MAC 地址,但不会保存到启动配置。重启后需要重新学习。
 
5. 配置违规行为(Violation Mode)
当有未经授权的设备连接或 MAC 地址数量超出限制时,交换机应如何响应。有三种模式:
  • Shutdown(默认且最推荐): 立即关闭端口,并将其置于 error-disabled 状态。这是最严格的模式。
    Switch(config-if)# switchport port-security violation shutdown 
    注:error-disabled 的端口需要管理员手动使用 shutdown 和 no shutdown 命令恢复。
  • Restrict: 丢弃违规数据包,但保持端口开启,同时生成 Syslog 消息、SNMP trap 并增加违规计数器。
    Switch(config-if)# switchport port-security violation restrict 
  • Protect: 最不严格的模式。只丢弃违规数据包,不发送通知,也不增加计数器。
    Switch(config-if)# switchport port-security violation protect 
 
6. 保存配置
完成配置后,务必保存,特别是使用了 sticky 模式时。
 
Switch(config-if)# exit
Switch(config)# exit
Switch# write memory 
 
三、验证和故障排除命令
使用以下命令来验证端口安全状态和解决问题:
  • 显示所有端口安全配置:
    Switch# show port-security 
  • 显示特定接口的详细端口安全信息:
    Switch# show port-security interface FastEthernet 0/1
  • 查看端口状态(是否被 error-disabled):
    Switch# show interface status err-disabled
 
最佳实践
  • 全局应用 PortFast: 端口安全通常与 spanning-tree portfast 结合使用,以防止生成树协议(STP)延迟用户设备的连接。
  • 使用 Shutdown 模式: 在企业环境中,通常使用 shutdown 模式来强制执行安全策略。
  • 定期监控: 使用 NMS 或 Syslog 服务器监控端口安全违规事件。
 
 
思科交换机 VLAN 安全配置旨在防止常见的二层攻击,如 VLAN 跳跃(VLAN hopping)、MAC 地址泛洪,并隔离不同网络区域,确保网络安全性和稳定性。
以下是思科交换机 VLAN 安全配置的几个关键实践和配置举例:
 
一、更改默认管理 VLAN 和禁用未使用端口
默认情况下,思科交换机的所有端口都属于 VLAN 1,管理接口也在 VLAN 1 上。这是一个重大的安全风险。
 
1. 创建并使用专用的管理 VLAN
 
Switch(config)# vlan 99
Switch(config-vlan)# name MANAGEMENT_VLAN
Switch(config-vlan)# exit

# 配置管理接口 SVI 的 IP 地址
Switch(config)# interface Vlan 99
Switch(config-if)# ip address 192.168.99.10 255.255.255.0
Switch(config-if)# no shutdown
Switch(config-if)# exit

# 将 Trunk 端口 Native VLAN 改为其他不使用的 VLAN
Switch(config)# interface <trunk-interface-id>
Switch(config-if)# switchport trunk native vlan 999
Switch(config-if)# exit
 
2. 禁用未使用的端口并移入“黑洞” VLAN
将所有未使用的端口 shutdown,并将它们分配到一个专用的、不路由的“黑洞” VLAN 中,防止任何人随意插入设备接入网络。
 
Switch(config)# vlan 998
Switch(config-vlan)# name BLACKHOLE_VLAN
Switch(config-vlan)# exit

Switch(config)# interface range FastEthernet 0/10 - 24 # 示例范围
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 998
Switch(config-if-range)# shutdown
Switch(config-if-range)# exit
 
二、安全地配置 Trunk 端口
Trunk 链路用于连接交换机或路由器,承载多个 VLAN 流量。不安全的 Trunk 配置可能导致 VLAN 跳跃攻击。
 
1. 手动配置 Trunk 模式并禁用 DTP
动态中继协议(DTP)允许端口自动协商成为 Trunk 链路。攻击者可以利用此机制将自己的接入端口伪装成 Trunk,获取所有 VLAN 的访问权限。
  • 在用户接入端口上完全禁用 DTP。
  • 在合法的 Trunk 端口上手动配置 Trunk。
 
# 在用户接入端口上:
Switch(config)# interface FastEthernet 0/1
Switch(config-if)# switchport mode access 
Switch(config-if)# switchport nonegotiate # 禁用DTP

# 在合法的 Trunk 端口上(例如连接另一台交换机的上联口):
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport nonegotiate # 禁用DTP
 
2. 限制允许通过的 VLAN
Trunk 端口默认允许所有 VLAN 通过。应将其限制为仅允许必要的 VLAN,减少攻击面。
 
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# switchport trunk allowed vlan 10,20,30,999 # 只允许VLAN 10, 20, 30, 999通过
Switch(config-if)# exit
 
三、防止 MAC 地址泛洪攻击
MAC 地址泛洪攻击试图通过向交换机发送大量伪造源 MAC 地址的数据包,填满交换机的 MAC 地址表。一旦表满,交换机会进入“泛洪”(Flooding)模式,将所有流量像集线器一样广播出去,使攻击者能够嗅探整个 VLAN 的流量。
 
1. 使用端口安全(Port Security)
端口安全是抵御 MAC 地址泛洪攻击最有效的手段。通过限制每个接入端口允许学习的最大 MAC 地址数量,可以防止攻击者塞满 MAC 表。
  • 详见“思科交换机端口安全配置详解”指南。
 
Switch(config)# interface FastEthernet 0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security 
Switch(config-if)# switchport port-security maximum 1 # 限制一个MAC地址
Switch(config-if)# switchport port-security violation shutdown # 违规时关闭端口
Switch(config-if)# exit
 
2. 配置泛洪阈值(基于硬件)
在某些高端思科交换机上,可以配置硬件级别的泛洪阈值。
通过实施上述 VLAN 安全最佳实践,可以显著提高思科交换机环境的安全性,保护局域网免受多种二层威胁。
 
 
思科 DHCP Snooping(DHCP 监听)是一项重要的二层安全特性,用于防止未经授权的 DHCP 服务器(恶意服务器或配置错误的服务器)向网络分发错误的 IP 地址,并有效抵御 DHCP 欺骗和中间人攻击。
 
一、DHCP Snooping 的工作原理
DHCP Snooping 的核心原理是将交换机端口分为两种类型:
 
1. 信任端口(Trusted Port)
  • 连接到合法、受信任的 DHCP 服务器或连接其他上游合法交换机/路由器的端口。
  • 允许所有 DHCP 报文(请求和响应)无限制地通过。
 
2. 非信任端口(Untrusted Port)
  • 连接到终端用户设备(PC、服务器、无线AP)的端口。
  • 默认阻止任何 DHCP 响应/提供报文。只允许 DHCP 请求报文。
  • 如果非信任端口收到 DHCP Offer(提供)或 ACK(确认)报文,交换机会立即丢弃它。
 
3. DHCP Snooping 绑定表(Binding Table)
当合法的 DHCP 交互发生时,DHCP Snooping 会监听并创建一个“绑定表”,记录每个端口学到的有效的 IP 地址、MAC 地址、VLAN ID 和租约时间。这个绑定表对于后续的安全功能(如 DAI 和 IP Source Guard)至关重要。
 
二、思科 DHCP Snooping 配置详解
以下是在思科 Catalyst 交换机上配置 DHCP Snooping 的详细步骤和示例。
 
步骤 1: 全局启用 DHCP Snooping
首先,在全局配置模式下启用 DHCP Snooping 功能。这将在所有 VLAN 上默认启用该功能,但需要指定在哪些 VLAN 上真正激活它。
 
Switch> enable
Switch# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.

# 全局启用 DHCP snooping
Switch(config)# ip dhcp snooping 
 
步骤 2: 激活特定 VLAN 上的 DHCP Snooping
指定需要监控 DHCP 流量的 VLAN(例如 VLAN 10 和 VLAN 20)。
 
Switch(config)# ip dhcp snooping vlan 10,20
 
步骤 3: 配置信任端口(关键步骤)
进入连接合法 DHCP 服务器的上行接口,将其配置为“信任端口”。这是允许合法 DHCP 响应报文通过的唯一途径。
 
# 假设 GigabitEthernet 0/1 连接到合法的 DHCP 服务器或上游交换机
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# ip dhcp snooping trust 
Switch(config-if)# exit
 
步骤 4: 配置非信任接入端口速率限制(可选,推荐)
在用户接入端口上,虽然默认是非信任的,但可以限制每秒允许通过的 DHCP 客户端请求报文的数量,以防止 DHCP 拒绝服务攻击(DoS)。
 
# 假设 FastEthernet 0/1 连接到终端用户
Switch(config)# interface FastEthernet 0/1
Switch(config-if)# ip dhcp snooping limit rate 100 # 限制速率为每秒100个DHCP请求
Switch(config-if)# exit
 
步骤 5: 启用选项 82 插入(可选)
选项 82 允许交换机在 DHCP 请求中添加额外的信息(如端口号、VLAN ID),帮助 DHCP 服务器根据设备位置应用不同的 IP 分配策略。
 
Switch(config)# ip dhcp snooping information option 
 
步骤 6: 保存配置
 
Switch(config)# end
Switch# write memory
 
三、验证和故障排除命令
使用以下命令来验证 DHCP Snooping 的配置状态和绑定表内容:
  • 显示 DHCP Snooping 状态:
    Switch# show ip dhcp snooping 
  • 显示 DHCP Snooping 绑定表:
    Switch# show ip dhcp snooping binding 
  • 显示接口特定的 DHCP Snooping 配置:
    Switch# show ip dhcp snooping interface GigabitEthernet 0/1
 
思科动态 ARP 检测(DAI,Dynamic ARP Inspection)是一项至关重要的二层安全功能,用于防止 ARP 欺骗(ARP Spoofing)和 ARP 泛洪攻击。DAI 通过验证 ARP 报文中的 IP-MAC 绑定关系,确保只有合法的 ARP 流量可以在网络中传输。
 
一、DAI 的工作原理
DAI 的核心原理是信任与非信任端口的概念,并依赖于一个可靠的绑定表(通常由 DHCP Snooping 提供):
 
1. 信任与非信任端口
  • 信任端口(Trusted Port): 连接上游交换机、路由器或合法 DHCP 服务器的端口。DAI 不对这些端口的 ARP 流量进行检查。
  • 非信任端口(Untrusted Port): 连接终端用户设备的端口。默认所有端口都是非信任的。 DAI 会检查这些端口上的每一个 ARP 报文。
 
2. 依赖 DHCP Snooping 绑定表
DAI 默认依赖于 DHCP Snooping 生成的DHCP Snooping 绑定表。该表记录了合法的 IP 地址、MAC 地址、VLAN ID 和端口号之间的映射关系。
  • 当 ARP 报文进入非信任端口时,DAI 会将报文中的源 IP、源 MAC 和端口信息与绑定表进行比对。
  • 匹配: 如果信息一致,则允许 ARP 报文通过。
  • 不匹配: 如果信息不一致,则认为 ARP 报文是伪造的(欺骗报文),交换机会丢弃该报文。
 
二、思科 DAI 配置详解
配置 DAI 通常需要先配置 DHCP Snooping。
 
步骤 1: 配置并启用 DHCP Snooping
确保 DHCP Snooping 正在运行,并且信任端口已正确配置。
  • 详见“思科DHCP Snooping(DHCP 监听)安全配置详解”指南。
 
Switch> enable
Switch# configure terminal
Switch(config)# ip dhcp snooping 
Switch(config)# ip dhcp snooping vlan 10,20 # 启用特定VLAN
Switch(config)# interface GigabitEthernet 0/1 # 配置信任端口
Switch(config-if)# ip dhcp snooping trust 
Switch(config-if)# exit
 
步骤 2: 在 VLAN 上全局启用 DAI
在需要保护的 VLAN 上启用动态 ARP 检测。
 
Switch(config)# ip arp inspection vlan 10,20
 
步骤 3: 配置信任端口
与 DHCP Snooping 类似,必须将连接到合法基础设施的上行端口配置为信任端口。
 
# 假设 GigabitEthernet 0/1 连接上游交换机/路由器,已配置 DHCP Snooping trust
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# ip arp inspection trust 
Switch(config-if)# exit
 
步骤 4: 配置 DAI 违规处理(可选,推荐)
可以配置当 DAI 检测到违规 ARP 报文时,如何处理非信任端口。
  • 默认行为: 丢弃违规报文并记录日志。
  • 可选配置: 将违规端口置于 error-disabled 状态(类似于 Port Security 的 shutdown 模式)。
Switch(config)# interface FastEthernet 0/1 # 针对单个接入端口
Switch(config-if)# ip arp inspection limit rate 150 burst 1000 # 限制 ARP 速率以防泛洪
Switch(config-if)# ip arp inspection violation shutdown        # 违规时关闭端口
Switch(config-if)# exit
 
步骤 5: 处理静态 IP 地址的主机(重要!)
如果某些主机使用静态 IP 地址(例如服务器、打印机),它们的 IP-MAC 绑定不会出现在 DHCP Snooping 绑定表中。DAI 默认会阻止它们的 ARP 报文。需要手动添加静态绑定条目,或配置该特定端口为信任端口(存在风险)。
 
Switch(config)# arp access-list STATIC_IPS 
Switch(config-arp-acl)# permit ip host 192.168.10.50 mac host 001a.b2c3.d4e5 # 允许该特定绑定
Switch(config-arp-acl)# exit
Switch(config)# ip arp inspection filter STATIC_IPS vlan 10 static # 将静态 ACL 应用到 VLAN
 
步骤 6: 保存配置
 
Switch(config)# end
Switch# write memory
 
三、验证和故障排除命令
使用以下命令来验证 DAI 的配置状态和违规统计信息:
  • 显示 DAI 状态:
    Switch# show ip arp inspection vlan 10
  • 显示 DAI 违规统计信息:
    Switch# show ip arp inspection statistics vlan 10
  • 显示 DHCP Snooping 绑定表(DAI 的依据):
    Switch# show ip dhcp snooping binding
 
思科 IP 源防卫(IPSG,IP Source Guard)是一项关键的二层安全功能,它通过限制非信任端口上的入站流量,确保只有具有有效源 IP 和 MAC 地址组合的数据包才能通过交换机。IPSG 通常与 DHCP Snooping 和 DAI 结合使用,提供全面的二层防御。
 
一、IP 源防卫(IPSG)的工作原理
IPSG 的核心原理是创建一个 IP Source Binding Table(IP 源绑定表),并根据这个表来过滤流量:
 
1. 依赖 DHCP Snooping 绑定表
IPSG 依赖于DHCP Snooping生成的绑定表。当 DHCP Snooping 启用并正确工作时,它会记录每个非信任端口上学习到的合法 IP 地址、MAC 地址和 VLAN ID 之间的映射关系。
 
2. 状态防火墙式过滤
当在接口上启用 IPSG 后:
  • 交换机会根据绑定表,动态地在应用了 IPSG 的接口上配置一个隐式的访问控制列表(ACL)。
  • 此 ACL 会检查所有进入该端口的流量:
    • 匹配: 如果数据包的源 IP 地址和源 MAC 地址与绑定表中的记录匹配,则允许数据包通过。
    • 不匹配: 如果数据包的源地址不匹配绑定表条目,数据包将被丢弃。
 
3. 信任与非信任端口
IPSG 只在非信任端口上应用。信任端口(连接上游设备)不受 IPSG 影响。
 
二、思科 IPSG 配置详解
配置 IPSG 通常需要先配置 DHCP Snooping 和 DAI。
 
步骤 1: 配置并启用 DHCP Snooping 和 DAI
确保 DHCP Snooping 正在运行,并且信任端口已正确配置。
  • 详见“思科DHCP Snooping”和“思科DAI”指南。
Switch> enable
Switch# configure terminal
Switch(config)# ip dhcp snooping 
Switch(config)# ip dhcp snooping vlan 10,20
Switch(config)# interface GigabitEthernet 0/1 # 配置信任端口
Switch(config-if)# ip dhcp snooping trust 
Switch(config-if)# ip arp inspection trust 
Switch(config-if)# exit
 
步骤 2: 在非信任接入端口上启用 IP Source Guard
进入连接终端用户设备的接口(例如 FastEthernet 0/2),并启用 IPSG。
Switch(config)# interface FastEthernet 0/2
Switch(config-if)# ip verify source 
注:ip verify source 命令会在该接口上强制实施基于 DHCP Snooping 绑定表的过滤。
 
步骤 3: 处理使用静态 IP 地址的主机(重要!)
与 DAI 类似,使用静态 IP 地址的主机不会出现在 DHCP Snooping 绑定表中。当 IPSG 启用后,它们的流量将被默认阻止。您需要手动配置静态绑定条目,以允许静态 IP 主机的流量通过。
Switch(config)# ip source binding 001a.b2c3.d4e5 vlan 10 192.168.10.50 interface FastEthernet 0/2 # 手动添加静态绑定
Switch(config)# exit
 
步骤 4: 结合使用源 IP 和源 MAC 验证(可选)
可以强制 IPSG 同时检查源 IP 地址和源 MAC 地址。这提供了更严格的控制。
Switch(config)# interface FastEthernet 0/2
Switch(config-if)# ip verify source port-security # 要求同时验证 IP 和 MAC 地址
Switch(config-if)# exit
 
步骤 5: 保存配置
Switch(config)# end
Switch# write memory
 
三、验证和故障排除命令
使用以下命令来验证 IPSG 的配置状态和绑定表内容:
  • 显示 IPSG 状态和配置:
    Switch# show ip verify source 
  • 显示 DHCP Snooping 绑定表(IPSG 的依据):
    Switch# show ip dhcp snooping binding 
  • 查看接口上的隐式 ACL(需要特定IOS版本支持):
    Switch# show ip access-lists interface FastEthernet 0/2
     
 
 
 
posted @ 2025-11-03 11:30  Ahabe  阅读(101)  评论(0)    收藏  举报