1. 配置严格的访问控制
通过防火墙规则限制DHCP服务的访问范围,仅允许可信网络(如内部局域网)访问DHCP端口(UDP 67/68)。例如,使用ufw配置:sudo ufw allow from 192.168.1.0/24 to any port 67 proto udp和sudo ufw allow from 192.168.1.0/24 to any port 68 proto udp。此外,在dhcpd.conf中通过**访问控制列表(ACL)**区分可信与不可信客户端,例如定义trusted-clients ACL并仅允许其获取IP:acl "trusted-clients"; allow members of "trusted-clients";,然后在subnet配置中通过pool限制范围。
2. 限制IP地址分配范围与租约时间
在dhcpd.conf的subnet配置中,明确指定range参数(如range 192.168.1.10 192.168.1.100),避免DHCP分配无意义的IP段。同时,设置合理的default-lease-time(默认租约时间,如600秒)和max-lease-time(最大租约时间,如7200秒),缩短IP占用周期,降低IP被滥用的风险。
3. 使用静态绑定(DHCP保留)
为关键设备(如服务器、打印机、网络设备)配置静态IP绑定,通过host语句指定MAC地址与固定IP的映射,确保这些设备始终获得相同的IP,避免动态分配导致的IP冲突或非法占用。例如:host server1 { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.1.100; }。
4. 启用MAC地址过滤
在dhcpd.conf中通过allow/deny语句结合MAC地址过滤,仅允许已知设备的MAC地址请求IP。例如:deny unknown-clients;配合allow members of "trusted-macs";(需提前定义MAC地址列表),防止未经授权的设备通过DHCP获取IP。
5. 配置DHCP Snooping(交换机层防护)
在支持DHCP Snooping的以太网交换机上启用该功能,防止DHCP欺骗攻击(如伪造DHCP服务器)。需在交换机上配置信任端口(连接DHCP服务器的端口),并启用DHCP Snooping全局功能。虽然此配置在交换机上进行,但能有效增强整个网络中DHCP服务的安全性。
6. 加强系统与软件安全基线
定期更新Debian系统和ISC DHCP Server软件包(sudo apt update && sudo apt upgrade),修复已知安全漏洞。禁用root用户远程SSH登录(修改/etc/ssh/sshd_config中的PermitRootLogin no),使用SSH密钥认证替代密码认证,提升系统访问安全性。同时,限制系统日志权限(如/var/log/syslog设置为640),防止日志被篡改。
7. 启用详细日志记录与监控
在dhcpd.conf中设置log-facility local7;,将DHCP日志发送到本地日志设施(如/var/log/syslog或/var/log/dhcpd.log),便于后续审计。定期检查日志文件,监控IP分配异常(如同一MAC地址频繁请求IP、陌生MAC地址获取IP),及时发现潜在攻击。