11.建立完整的域名服务器
Linux下的DNS服务器用来存储主机的域名信息。包括三种:
(1)惟高速存域名服务器(Cache-only server)
惟高速存域名服务器(Cache-only server)不包含域名数据库。它从某个远程服务器取得 每次域名服务器查询的回答,一旦取得一个回答,就将它放入高速缓存中。
(2)主域名服务器(Primary Name server)
主域名服务器是特定域所有信息的权威来源。它从域管理员构造的本地文件中加载域信息,该“区文件”包含着服务器具有管理权的部分域结构的最精确的信息。主域名服务器需要配置包括一组完整的文件:主配置文件(named.conf)、正向域的区文件(named.hosts)、反向域的区文件(named.rev)、高速缓存初始化文件(named.ca)和回送文件(named.local)。
(3)辅助域名服务器(Second Name Server)
辅助域名服务器用来从主服务器中转移一整套域信息。辅助域名服务器是可选的配置选项。区文件是从主服务器转移出的,作为磁盘文件保存在辅助域名服务器中。辅助域名服务器不需配置本地区文件。
说明:多数域名服务器要根据网络实际情况将以上三种服务器组合,进行合理配置。所有的域名服务器都需要一个设置惟高速缓存服务器提供名字解析。一个域只能建立一个主域名服务器,另外至少要创建一个辅助域名服务器作为主域名服务器的备份。一个域的主服务器可以是其他域的辅助域名服务器。 为了提高域名系统的可靠性,应建立辅域名服务器。当主域名服务器不能正常工作的情况下,能够替代主域名服务器对外提供不间断的服务。
12.增强DNS服务器的防范Dos/DDoS功能
1.使用SYN cookie
SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。在linux下以root权限执行:
![]() |
2.增大backlog
通过增加backlog的数值,可以一定程度减缓大量SYN请求导致TCP连接阻塞的状况,一般这个数值系统默认是1024,可以增加到1280至2048:
![]() |
这样在强度不是很高的攻击下,系统响应能力提高了一点。
3.缩短retries次数
Linux系统默认的tcp_synack_retries是5次,将这个数值减少可以提高系统响应能力,为2次:
![]() |
修改后,SYN_RECV的数量有了少量减少,系统响应也快了一些。
4.限制SYN频率
目前比较有效的是对SYN的频率和次数进行限制,这样最大限度的控制了单个IP地址发动攻击的能力。例如将SYN请求的次数限制在30次每分钟,系统默认是5次/秒可以将burst从默认的5个降低到2个。
![]() |
进行此操作后正常的用户无任何感觉上的差异,而并发的SYN请求量下降了不少,服务响应基本正常了。
5. 防范SYN Attack攻击
SYN Attack"是一种拒绝服务(DoS)的攻击方式,会消耗掉系统中的所有资源,迫使服务器重新启动。使用下面的命令:
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
把这个命令加入"/etc/rc.d/rc.local"文件中,等下次系统重新启动的时候就可以自动生效。
13. 使用分布式DNS负载均衡
在众多的负载均衡架构中,基于DNS解析的负载均衡本身就拥有对DDOS(SYN Flood)的免疫力,基于DNS解析的负载均衡能将用户的请求分配到不同IP的服务器主机上,攻击者攻击的永远只是其中一台服务器,一来这样增加了攻击者的成本,二来过多的DNS请求可以帮助我们追查攻击者的真正踪迹(DNS请求不同于SYN攻击,是需要返回数据的,所以很难进行IP伪装)。但是基于DNS解析的负载均衡成本很高。很多中小公司没有部署这个技术。
14.防范对于DNS服务器网络
嗅探器技术被广泛应用于网络维护和管理方面,它工作的时候就像一部被动声纳,默默的接收看来自网络的各种信息,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,以便找出网络中的漏洞。在网络安全日益被注意的今天.我们不但要正确使用嗅探器。还要合理防范嗅探器的危害.嗅探器能够造成很大的安全危害,主要是因为它们不容易被发现。对于一个安全性能要求很严格的企业,同时使用安全的拓扑结构、会话加密、使用静态的ARP地址是有必要的。
15.及时更新系统补丁
你应该经常到你所安装的系统发行商的主页上去找最新的补丁。目前操作系统维护主要分两种模式:对于私有操作系统(Windows/Solaris等)由于个人用户不能直接接触其源代码,其代码由公司内部开发人员维护,其安全性由同样的团队保证,内核的修正与其他应用程序一样,以patch/SP包的方式发布。对于Linux这样的开放式系统,是一种开放的结构。应该说,开放的模式是双刃剑。从机制上讲,全世界的开发人员都能获得源代码,从而找出其中的纰漏,似乎安全性应该更好;但是同时,如果网络管理人员不能及时更新内核,也会留下安全隐患。如果你是一个Linux网管员,你经常需要上相应的网站看,是否有补丁,是否有了bug fix,是否需要升级。Linux服务器运行的软件主要包括:Bind, Apache等软件大都是开源软件,而且都在不停升级,稳定版和测试版交替出现。在www.apache.org 上,最新的changeLog中都写着:bug fix, security bug fix的字样。所以Linux网管员要经常的关注相关网站及时升级或添加补丁。
总结:
DNS是网络服务的基础建设,要长期不断地保持其正常运作,每一个DNS服务器都应该定期检测。域名系统的配置和管理是一项比较复杂和繁琐的系统管理任务,它对整个网络的运行影响极大。为了保证DNS服务器的安全运行,不仅要使用可靠的服务器软件版本,而且要对DNS服务器进行安全配置,同时还要跟踪服务器软件和操作系统的各种漏洞。