MAC Flooding Attack,MAC地址表泛洪攻击,用于监听网络通讯
1. 本来交换机只会根据MAC地址转发表,在特定端口上转发以太网帧
2. 攻击者不断向交换机发送大量以太网帧,而且是不同的伪造的MAC地址,造成原本的MAC地址记录被冲掉
3. 这时A在向B发送消息时,交换机就找不到相应的MAC地址记录,只能把该帧广播出去
4. 攻击者也就能收到该帧
解决办法
port security ,用于控制一个access端口上学所得MAC地址数量
if# switchport port-security //在access端口上激活port-security
if# switchport port-security maximum 2 //设置端口上允许学到的MAC地址最大数目2
if# switchport port-serurity violation [protect(忽略新学到的MAC) | restrict(在protect的基础上再发送syslog消息) | shutdown(在restrict的基础上把端口errordisable)]
//设置超出最大数目限制时的动作
if# switchport port-security mac-address x.x.x //把MAC地址x.x.x静态绑定在某端口上(即某端口的MAC转发表上有一条恒定的项)。能够和maximum 1合用,让一个端口上只能够连接一台指定PC
if# switchport port-security mac-address sticky //端口动态学习到一条地址时,会自动转化为静态绑定的指令加入配置文件run-config
sh port-security {interface …}
正常MAC的老化时间300s,而port security动态学习到的MAC的老化时间为20min,静态绑定的MAC的老化时间infinit
[port security应该设置在接入层交换机上]
非法客户连接
解决办法
AAA,认证(识别用户)、授权(用户权限)、记账(记录用户的行为)
组件:
用户数据库 可存放在设备的配置文件中(如,在交换机中创建用户username … password …)
可存放在后台服务器上,网络设备作为AAA client向后台AAA server发送认证请求(认证协议分为TACACS+和RADIUS)
TACACS+是cisco的私有协议,它的强项在于能够对cisco一些特有的动作做AAA(如,对用户登陆到交换机后所能执行的命令)
RADIUS是IETF标准
AAA的作用:
1. 限制管理性访问:当用户从telnet,SSH,console,http等方式登陆设备时,提供口令验证,限制在网络设备上能所执行的命令,可以记录管理员在网络设备上所作的操作
2. 限制用户网络访问:用户做PPP拨号或者建立VPN或者访问特定网络资源的时候,提供用户的身份认证,限制用户能访问的资源,可以记录用户的连接时间、流量等
利用AAA认证的配置方法
# aaa new-model //激活AAA认证
# aaa authenticate [login | PPP | dot1x] [default | list-name] method1 [method2…](当method1不可用时,就用下一种方法)
对什么行为作认证 认证方法列表名称,在接口上或者line上可以指定认证方法列表名称,默认使用default列表
[对于login行为来说,method方法包括,local(用本地数据库认证,用交换机配置文件中的用户名,密码)、enable(用enable密码做认证)…]
[通常为aaa authentication group tacacs+ local enable]
[group tacacs+,意味着可以在交换机上设置一系列tacacs+服务器地址,前面的不可用时自动使用后面的]
[tacacs+不可用时,如果随意输入一个用户名,这时由于提供的用户名在本地找不到,使用enable密码认证,再属于enable密码]
[对于802.1x行为来说,名称只能选default,method只能是RADIUS]
802.1x认证流程
1. 交换机发送EAP overLAN,向用户发起认证请求(可以用EAP-MD5口令认证,EAP-TLS双向数字证书认证,PEAP 交换机提供证书,用户提供用户名、口令,相互认证)
2. 交换机收到用户口令后,向后台RADIUS服务器发起认证
# aaa authentication dot1x default group radius
# radius-server host x.x.x.x key … //RADIUS服务器地址和key
# dot1x system-auth-control //全局激活802.1x认证
if# dot1x port-control auto //指定特定端口的802.1x的认证模式,分为三种force-authorized(把端口设置为已认证,不需要用户提供认证信息), force-unauthorized(不提供认证服务)和auto(用户接入时进行用户名口令认证)
[authentication,authorization使用端口1812,accounting使用1813]
VLAN Hopping,跳VLAN攻击
实现方法一,
攻击者把自己假扮成交换机,利用DTP协议,和交换机之间形成trunk
解决方法
把不连接交换机的端口设置为access模式或者shutdown,而不是动态协商
实现方法二
double tagging双标记攻击,书上8-28
解决方法
使用没有用户流量的VLAN作为native vlan
防止VLAN内部的攻击,VLAN内部访问限制:
解决方法一,VACL
对于三层交换机,ACL的类型包括:标准ACL能够限制不同VLAN间的数据转发
VACL能够限制VLAN内的数据转发
VACL的配置:
定义流量
# access-list 100 permit tcp any any eq telnet //用ACL定义需要过滤的流量
# access-list 101 permit ip any any //用ACL定义允许通过的流量
丁以VACL map
vlan access-map map-name 10(seq)
match ip addrss access-list 100
action drop
vlan access-map map-name 20
match ip address access-list 110
action forword
[action还可以capture、redirect]
[流量的ACL除了可以使标准ACL,也可以是mac address ACL]
vlan filter map-name vlan-list 10 //在VLAN10内启用VACL map-name
解决方法二private vlan,私有VLAN技术
首先创建一个private vlan,对应一个ip子网,下面可以管辖若干个secondary vlan次VLAN
[secondary vlan类型包括, isolate vlan孤立VLAN,属于isolate vlan的接口互相之间不能访问
community vlan通讯VLAN,属于同一个通讯VLAN的接口间可以互访,但同其他的secondary vlan的端口不能互访
promiscuous混杂端口,一个private vlan中的混杂端口能够与任何端口互访]
private vlan的配置
1. 首先把交换机设置成VTP的透明模式
2. 创建secondary vlan,并说明它的信息(isolate ,community)vlan# private-vlan [isolated | community]
3. 创建private vlan的主VLAN vlan# private-vlan primary
4. 把private vlan 和secondary vlan相关联 在主VLAN的配置命令中 vlan# private-vlan association secondary-vlan-list
5. 把端口分配进vlan,并且创建混杂端口
if# switchport mode private-vlan promiscuous //创建为混杂端口
if# switchport private-vlan host-associatin 202 440 //??
if# switchport mode private-vlan host //把端口分配进入某个次VLAN
if# switchport private-vlan host-associatin 202 440 //端口加入主VLAN 202下的次VLAN 440
DHCP欺骗
1. 攻击者伪装成DHCP Server,向client分配错误的ip地址及设置
2. 攻击者伪装成DHCP client,不断更换MAC向server申请地址,耗净地址池
解决方法一,DHCP监听
DHCP建立至少有四步 client->server: DHCP Discovery (UDP 67. 68) ;
Server->client: DHCP offer
Client->server: DHCP request
Server->client: DHCP confirm
可在交换机上监听这些DHCP服务的数据包
防止伪装成DHCP server
在端口上设置 DHCP trust:允许该接口上接受DHCP server的offer和confirm响应包
DHCP untrust:不允许接口上接受DHCP服务器的响应包,即这个接口下只能有client,不能有server
防止伪装成DHCP client
交换机在收到DHCP client的DHCP request后,在请求中插入82 option字段后传给server(包含了该请求是在哪个设备,哪个端口上收到的),server如果支持82 option,可以根据自身配置来限制从一个设备的一个端口允许的最大申请数
配置方法
# ip dhcp snooping //全局启用DHCP snooping
# ip dhcp snooping information option //自动插入82 option字段
if# ip dhcp snooping [trust | untrust] //在端口上启用dhcp snooping,并说明端口下能不能连接DHCP server
# ip dhcp snooping limit rate rate //限制端口上DHCP请求的最大流量
# ip dhcp snooping vlan vlan //在一个VLAN上启用dhcp
*[dhcp snooping不光能够解决DHCP欺骗的问题,还能够帮助交换机建立每个client的MAC和分配的ip地址的对应关系,用于动态ARP检查和ip guard]
解决方法二,ip source guard
判断从某个接口上收到的ip包的源ip是否和已知的接口对应。(该端口只能收到该源ip的数据包,该源ip的数据包也只能从该端口进入)
例如,通过ip snooping获知地址10.1.1.1分配给了f0/1下的主机,当从接口f0/1收到其他源ip地址的数据包时,会丢弃。防止了ip欺骗。
# ip dhcp snooping
# ip dhcp snooping vlan vlan
#
ARP spoofing,ARP欺骗实行中间人攻击
[无代价ARP,在没有任何ARP请求的时候发送ARP响应,主要用于主机修改ip地址时刷新其他主机的MAC表]
问题在于,交换机无法判断ARP的正确性。这个问题需要通过ip snooping解决。
解决方法DAI,动态ARP检测
trust,在这个接口上的ARP响应不需要检查
untrust,在这个接口上的ARP响应需要检查,与已知的IP,MAC的对应关系是否符合(对应关系通过ip snooping或者手工绑定获得)
# ip dhcp snooping //激活DHCP窃听
# ip arp inspection vlan vlan
if# ip arp inspection [trust | untrust]
交换机自身安全保护
关闭CDP
# no cdp run //全局关闭
if# no cdp enable //在端口上关闭
SSH代替telnet(telnet访问的数据是明文传播的)(SSH使用RSA认证,对称加密算法加密传输数据)
[注:有的交换机版本不支持加密,就不能使用SSH登陆]
配置步骤
1. 配置交换机的domain name和host name # ip domai name …
2. 生成RSA公钥/私钥 # crypto key generate rsa general-keys
3. line vty 0 4
transport input ssh //启用允许SSH登陆
设置line访问控制列表,限制可以telnet ,SSH等访问路由器的源ip
line# access-class ACL in
交换机管理建议:
1. line密码,enable密码设置
2. 物理手段管理好console口
3. 如果无法使用SSH,建议使用ACL限制telnet访问
4. 配置warning banners
5. 关闭不需要的服务,如service tcp-small-servers, udp-small-servers, finger, config…
6. 没必要的话,关闭http访问 no ip http server
7. 设置log ( logging buffered, logging host …, logging trap …)
8. 保护好生成树
9. 保护好trunk(尤其注意trunk协商)
10. 激活port security功能[宏命令switchport host = access mode; portfast; …]
11. 把不用的端口shut,或者放入不使用的VLAN








发表评论 评论 (2 个评论)