DNS网关的部署
为了实现基于DNS网关的校园网安全联动,需要在校园网的边界设备上做DNS访问控制,除了服务器网段外,禁止其他网段向校园网外部发送目的端口为53的UDP包。如此可以达到三个目标:
1.校园网用户无法私设DNS服务器,也不能使用校外的DNS服务器,一旦其计算机被木马或恶意代码篡改了DNS服务器设置,则不能正常上网,避免了网络钓鱼攻击和DNS欺骗。
2.保证所有校园网用户全部使用学校的DNS网关,使DNS网关可以收集所有用户的域名解析请求,完整记入DNS日志,一旦发现非法的上网行为,可对DNS日志进行审核,追查责任。
3.一旦校内用户的IP地址记入IP黑名单,该用户就无法正常上网,促使其解决自己计算机的问题。而且,对所有的域名解析请求,DNS网关都会响应一个特定的DNS报文,指向IP黑名单网站(见图5),告知需解决的问题和方法。
DNS网关、递归和缓存服务器、权威域服务器、日志分析服务器之间通过千兆交换机组成一个内部网。权威域服务器、递归和缓存服务器上的ISC Bind或Windows DNS软件仅监听内部网的53端口,以免校园网用户和外部用户直接使用其DNS服务。
DNS网关工作原理和流程

图2 DNS网关工作流程
如图2所示,DNS网关面向校园网和外部网监听UDP 53端口,接到请求报文后,进行如下处理:
1.检查DNS包的来源IP地址,如果该IP已被列入黑名单,则直接将其扔掉且不记入日志。由于这个步骤计算简单,消耗很小的服务器资源,因此DNS网关能承受较大规模的DoS或DDoS攻击。经过SmartBits 6000C网络分析测试仪实测,配置为两颗至强3.0、2G内存的DNS网关可以承受每秒30万个DNS请求。
2.如果来源IP地址不在黑名单中,则对请求报文进行分析,检查其格式和结构是否正确。若不正确,则扔掉,并记入日志。在这个环节里尤其要对报文的边界条件进行检查,以降低缓冲区漏洞溢出攻击的危险性。
3.若请求报文完全合法,则提取其请求的域名,检查请求的域名是否在域名黑名单。若在域名黑名单,则记入日志并向DNS请求源IP返回一个指向127.0.0.1的DNS响应报文。域名黑名单中存放非法的或不希望访问的域名,例如网络钓鱼网站、含有非法内容的网站、流氓软件指向的域名等,主要靠人工维护。
通过这个环节,DNS网关还可以从应用层实施一些网络管理策略。例如,有些学生在外网以学校官方的名义建立一些私人论坛,到处张贴广告,我们就通过DNS网关把这些论坛域名过滤掉,禁止我校用户访问。还有的情况是P2P等应用占用了大量的网络带宽,现在一般是使用价格高昂的流量控制设备来解决这个问题。我们通过DNS网关把应用较广的P2P软件的下载域名禁用,就可以有效地控制非法流量。
4.DNS网关存放了一个最近24小时访问量排在前500名的域名及其解析结果的列表,该列表由日志分析服务器动态维护,可人工干预。如果请求的域名在此列表中,则记录日志后直接向DNS请求来源IP返回DNS响应报文。否则根据来源IP和请求解析的域名,依照以下策略转发DNS请求包。
(1)所请求的域名属于我们管理的权威域
若来源IP属于校园网,则将请求转发给权威域服务器的内部DNS域服务,解析为仅供校内访问的IP地址。
若来源IP不属于校园网,则检索需要智能解析的域名列表,若需要智能解析,就判断来源IP归属的网络(教育网、中国网通、中国电信),选择返回的相对应的IP地址。若不需要智能解析,则将请求转发给权威域服务器的外部DNS域服务,解析为对校外开放的IP地址。
(2)所请求的域名不属于我们管理的权威域
若来源IP属于校园网,则将请求转发给递归和缓存服务器,由其进行解析。由于域名的递归解析会消耗较大的服务器资源,因此可根据需要设置多台递归和缓存服务器,并在此环节实现递归和缓存服务器的负载均衡。
转发请求报文时,DNS网关会缓存DNS请求的两字节标示和来源IP,并记入日志。权威域服务器、递归和缓存服务器将解析后的DNS响应报文发回DNS网关。DNS网关根据DNS报文的两字节标示将DNS响应报文发送给DNS请求源IP。
若来源IP不属于校园网,则拒绝为其提供DNS解析服务,并记入日志。