2 DHCP攻击的防范 
2.1采用DHCP管理的常见问题:
采用 DHCP server 可以自动为用户设置网络 IP 地址、掩码、网关、 DNS 、 WINS 等网络参数,简化了用户网络设置,提高了管理效率。但在 DHCP 管理使用上也存在着一些另网管人员比较问题,常见的有:
l        DHCP server 的冒充。 
l        DHCP server 的 Dos 攻击。 
l        有些用户随便指定地址,造成网络地址冲突。 
  由于 DHCP 的运作机制,通常服务器和客户端没有认证机制,如果网络上存在多台 DHCP 服务器将会给网络照成混乱。由于用户不小心配置了 DHCP 服务器引起的网络混乱非常常见,足可见故意人为破坏的简单性。通常黑客攻击是首先将正常的 DHCP 服务器所能分配的 IP 地址耗尽,然后冒充合法的 DHCP 服务器。最为隐蔽和危险的方法是黑客利用冒充的 DHCP 服务器,为用户分配一个经过修改的 DNS server ,在用户毫无察觉的情况下被引导在预先配置好的假金融网站或电子商务网站,骗取用户帐户和密码,这种攻击是非常恶劣的。 
  对于 DHCP server 的 Dos 攻击可以利用前面将的 Port Security 和后面提到的 DAI 技术,对于有些用户随便指定地址,造成网络地址冲突也可以利用后面提到的 DAI 和 IP Source Guard 技术。这部分着重介绍 DHCP 冒用的方法技术。 
2.2 DHCP Snooping技术概况
DHCP Snooping技术是DHCP安全特性,通过建立和维护DHCP Snooping绑定表过滤不可信任的DHCP信息,这些信息是指来自不信任区域的DHCP信息。DHCP Snooping绑定表包含不信任区域的用户MAC地址、IP地址、租用期、VLAN-ID 接口等信息,如下表所示: 
  cat4507#sh ip dhcp snooping binding 
  MacAddress IpAddress Lease(sec) Type VLAN Interface 
  ------------------ --------------- ---------- ------- ---- -------------------- 
  00:0D:60:2D:45:0D 10.149.3.13 600735 dhcp-snooping 100 GigabitEthernet1/0/7 
  这张表不仅解决了 DHCP用户的IP和端口跟踪定位问题,为用户管理提供方便,而且还供给动态ARP检测DA)和IP Source Guard使用。 
2.3基本防范 
首先定义交换机上的信任端口和不信任端口,对于不信任端口的 DHCP 报文进行截获和嗅探, DROP 掉来自这些端口的非正常 DHCP 报文,如下图所示: 



  基本配置示例如下表: 
 IOS 全局命令: 
 ip dhcp snooping vlan 100,200 /* 定义哪些 VLAN 启用 DHCP 嗅探 
ip dhcp snooping 
接口命令 
  ip dhcp snooping trust 
  no ip dhcp snooping trust (Default) 
  ip dhcp snooping limit rate 10 (pps) /* 一定程度上防止 DHCP 拒绝服 /* 务攻击 
  手工添加 DHCP 绑定表 
ip dhcp snooping binding 1.1.1 vlan 1 1.1.1.1 interface gi1/1 expiry 1000 
导出 DHCP 绑定表到 TFTP 服务器 
  ip dhcp snooping database tftp:// 10.1.1 .1/directory/file 
需要注意的是 DHCP 绑定表要存在本地存贮器 (Bootfalsh 、 slot0 、 ftp 、 tftp) 或导出到指定 TFTP 服务器上,否则交换机重启后 DHCP 绑定表丢失,对于已经申请到 IP 地址的设备在租用期内,不会再次发起 DHCP 请求,如果此时交换机己经配置了下面所讲到的 DAI 和 IP Source Guard 技术,这些用户将不能访问网络。 
2.4攻击实例 
目前利用 ARP原理编制的工具十分简单易用,这些工具可以直接嗅探和分析FTP、POP3、SMB、SMTP、HTTP/HTTPS、SSH、MSN等超过30种应用的密码和传输内容。 下面是测试时利用工具捕获的 TELNET 过程,捕获内容包含了 TELNET 密码和全部所传的内容 : 

不仅仅是以上特定应用的数据,利用中间人攻击者可将监控到数据直接发给 SNIFFER等嗅探器,这样就可以监控所有被欺骗用户的数据。 
还有些人利用 ARP原理 开发出网管工具,随时切断指定用户的连接。这些工具流传到捣乱者手里极易使网络变得不稳定,通常这些故障很难排查。 
2.5防范方法 
思科 Dynamic ARP Inspection (DAI)在交换机上提供IP地址和MAC地址的绑定, 并动态建立绑定关系。DAI 以 DHCP Snooping绑定表为基础,对于没有使用DHCP的服务器个别机器可以采用静态添加ARP access-list实现。DAI配置针对VLAN,对于同一VLAN内的接口可以开启DAI也可以关闭。通过DAI可以控制某个端口的ARP请求报文数量。通过这些技术可以防范“中间人”攻击。
2.6配置示例 
在cisco设备中的配置
ip dhcp excluded-address 192.168.23.1 192.168.23.20
(不由dhcp   server分配的地址

ip dhcp pool vlan23
(定义地址池
)
    network 192.168.23.0 255.255.255.0
(定义地址池做用的网段及地址范围
)
    default-router 192.168.23.1
(定义客户端的默认网关
)
    domain-name sina.com.cn
(定义客户端所在域
)
    dns-server 192.168.23.2
(定义客户端的
dns)
    lease 5
(定义地址租约时间, 5天是为了在安全上考虑,客户端在可控的时间内相对固定
)

ip dhcp snooping
(打开dhcp snooping功能,不能省略, 否则在sh ip dhcp snooping binding时将看到一个空的绑定表, 客户端会时断时续
)
ip dhcp snooping vlan 23
(定义snooping作用的
vlan)
ip dhcp snooping database flash:dhcp
(将绑定表保存在flash中,可以避免重启设备后,从新绑定
)


ip arp inspection vlan 23
(定义arp inspection 作用的vlan,它是根据dhcp snooping binding表做判断的)
ip arp inspection validate src-mac dst-mac ip
(侦测有效客户端须满足src-mac dst-mac ip 均无错)
ip arp inspection log-buffer entries 1024
(inspection 日志大小)
ip arp inspection log-buffer logs 1024 interval 300
(inspection 日志刷新时间,interval太小会占用大量cpu时间)
!
!
!
errdisable recovery cause udld
errdisable recovery cause bpduguard
errdisable recovery cause security-violation
errdisable recovery cause channel-misconfig
errdisable recovery cause pagp-flap
errdisable recovery cause dtp-flap
errdisable recovery cause link-flap
errdisable recovery cause gbic-invalid
errdisable recovery cause l2ptguard
errdisable recovery cause psecure-violation
errdisable recovery cause dhcp-rate-limit
errdisable recovery cause unicast-flood
errdisable recovery cause vmps
errdisable recovery cause arp-inspection
errdisable recovery interval 30
(上面所有的是在端口因为被errdidable 后能在一段时间内自动恢复, 其中包括dhcp snooping与arp inspection在端口中设限制造成的端口自动关闭)
no file verify auto

logging on
(有的设备是默认打开的,在这写是因为当logging关闭时3550,3560,3750等均会占用大量cpu资源,一定勿忘打开,经测试,打开后一台3550-48下连10台48口设备,2个lan,480台计算机,正常使用.不打开,2台设备90 台计算机就能让其死机)
no spanning-tree loopguard default
(最好不要打开,因为当spanning-tree结构稍有改变,它都会blocking,然后unblocking一些端口,造成时断时续的现象)

ip source binding 0060.B322.2C2A vlan 23 192.168.23.8 interface Gi1/0/2
(设备或计算机需用静态地址的,在这儿定义)
!
interface GigabitEthernet1/0/2
switchport trunk encapsulation dot1q
switchport mode trunk
(下连设备,所以定义为trunk口)
ip arp inspection limit none
(由于下连设备,为了避免inspection让端口errdisable,所以对arp的侦测不做限制,若直接为接入设备, 可使用ip arp inspection limit rate)

相关命令:
sh logging 查看Dymatic Arp Inspection (DAI) 是否生效.
sh ip dhcp snooping binding 查看snooping是否生效
sh ip dhcp binding 看dhcp server 是否生效.
sh arp 看arp信息是否与 dhcp snooping binding表一致.

下级设备若支持dhcp snooping 可这样配置
ip dhcp snooping
int g0/1
(上连端口)
switchport trunk encapsulation dot1q
switchport mode trunk
ip dhcp snooping trust
(定义此端口为信任端口,从此口来的dhcp server数据有效,避免有人乱设dhcp server

不支持,根据设备用acl或其它禁止非信任端口发送dhcp server数据.
华为设备
dhcp-server 0 ip   192.168.21.1
(定义dhcp server组)
dhcp-security static 192.168.21.1 000f-e231-72fb
dhcp-security static 192.168.21.11 0013-2015-b971
(定义设置静态地址的设备或计算机)

dhcp server ip-pool vlan21
network 192.168.21.0 mask 255.255.255.0
gateway-list 192.168.21.1
dns-list 192.168.21.1
domain-name sina.com.cn
expired day 5
(与cisco 类似)

interface Vlan-interface21
ip address 192.168.21.1 255.255.255.0
dhcp-server 0
(使用上面定义的dhcp server组)
address-check enable
(与ip arp inspection类似)

dhcp server forbidden-ip 192.168.21.0 192.168.21.10
(定义不由dhcp server分配的地址)

interface GigabitEthernet1/0/1
(下连端口)
port link-type trunk
port trunk permit vlan all


下级设备若支持dhcp snooping 可这样配置
interface GigabitEthernet1/1/1
(上连端口)
port link-type trunk
port trunk permit vlan all
dhcp-snooping trust

至此,所有工作完成,还有一点值得一提,如果要收集日志,最好设备ntp服务同步时间,无论在安全性,可管理性上都是有所帮助的.至于日志服务器及日志分析工具的配备可根据自己的喜好或需要自行选定.

Quidway S系列交换机采用DHCP Snooping防止伪DHCP服务器
Quidway S系列以太网交换机可以通过DHCP Snooping功能防止伪DHCP服务器的攻击。具体操作步骤如下:
全局开启DHCP Snooping:
[Quidway] dhcp-snooping enable
VLAN视图下使能DHCP Snooping:
[Quidway-VLAN2] dhcp-snooping enable
注:只有部分交换机需要在VLAN视图下使能DHCP Snooping
在连接合法DHCP Server的端口上配置信认端口:
[Quidway-Ethernet0/1] dhcp-snooping trust
注:部分交换机不支持配置端口为dhcp-snooping trust端口,请参考产品相应的《操作手册》和《命令手册》。
防网关攻击
6500(config)#arp access-list deny-arp
//只允许正确的网关IP地址和网关MAC对应的ARP包通过
6500(config-arp-nacl)#permit ip host 210.53.131.169 mac host 0015.fa87.3fc0  
6500(config-arp-nacl)#deny  ip host 210.53.131.169 mac any log
6500(config-arp-nacl)#permit ip any mac any
//将此ARP ACL应用到vlan 300上
6500(config)#ip arp access-list filter deny-arp vlan 300