
加强linux系统的dns服务的安全防御能力.doc
28页M8-1 加强 Linux 系统的 DNS 服务的安全防御能力1.1 场景描述1.1.1 学习目的学生通过该能力模块的学习,能够独立完成和熟练掌握安全配置 DNS 服务器,加强 Linux 系统的 DNS 服务的安全防御能力1.1.2 学习要求理解:DNS 服务存在安全风险掌握:DNS 服务安全选项配置掌握:DNS 服务 TSIG 配置1.1.3 学习重点和难点1.学习重点 保护 DNS 服务器本身安全 保护 Zone Transfer 的安全 保护 DNS 免于 Spoofed 攻击 使用 TSIG 保护 DNS 服务器 保护 Dynamic Update 的安全2.学习难点 使用 TSIG 保护 DNS 服务器1.2 知识准备1.2.1 Zone TransferDNS 的区域传输目的是为了 DNS 的备份,当 DNS 服务器坏了,它的数据不会丢失注意在配置区域传输是一定要注意辅助服务器上建立的区域是辅助区域且与主服务器的域名相同,而且区域传输是双向的,不但需要在辅助服务器上配置还要在主服务器上进行相应的配置1.2.2 DNS 威胁DNS 服务面临的安全问题主要包括:DNS 欺骗(DNS Spoffing) 、拒绝服务(Denial of service,DoS )攻击、分布式拒绝服务攻击和缓冲区漏洞溢出攻击(Buffer Overflow) 。
1. DNS 欺骗DNS 欺骗即域名信息欺骗是最常见的 DNS 安全问题当一个 DNS 服务器掉入陷阱,使用了来自一个恶意 DNS 服务器的错误信息,那么该DNS 服务器就被欺骗了DNS 欺骗会使那些易受攻击的 DNS 服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器网络攻击者通常通过三种方法进行 DNS 欺骗图 1 是一个典型的 DNS 欺骗的示意图2. TuPkVGdvW6tl(1)缓存感染黑客会熟练的使用 DNS 请求,将数据放入一个没有设防的 DNS 服务器的缓存当中这些缓存信息会在客户进行 DNS 访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的 Web 服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息2)DNS 信息劫持入侵者通过监听客户端和 DNS 服务器的对话,通过猜测服务器响应给客户端的 DNS 查询 ID每个 DNS 报文包括一个相关联的 16 位 ID 号,DNS 服务器根据这个 ID 号获取请求源位置黑客在 DNS 服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站3)DNS 复位定向攻击者能够将 DNS 名称查询复位向到恶意 DNS 服务器。
这样攻击者可以获得DNS 服务器的写权限2.拒绝服务攻击黑客主要利用一些 DNS 软件的漏洞,如在 BIND 9 版本(版本 9.2.0 以前的 9 系列)如果有人向运行 BIND 的设备发送特定的 DNS 数据包请求, BIND 就会自动关闭攻击者只能使 BIND 关闭,而无法在服务器上执行任意命令如果得不到 DNS 服务,那么就会产生一场灾难:由于网址不能解析为 IP 地址,用户将无方访问互联网这样,DNS 产生的问题就好像是互联网本身所产生的问题,这将导致大量的混乱3、分布式拒绝服务攻击DDOS 攻击通过使用攻击者控制的几十台或几百台计算机攻击一台主机,使得服务拒绝攻击更难以防范:使服务拒绝攻击更难以通过阻塞单一攻击源主机的数据流,来防范服务拒绝攻击Syn Flood 是针对 DNS 服务器最常见的分布式拒绝服务攻击4.缓冲区漏洞Bind 软件 的缺省设置是允许主机间进行区域传输(zone transfer) 区域传输主要用于主域名服务器与辅域名服务器之间的数据同步,使辅域名服务器可以从主域名服务器获得新的数据信息一旦起用区域传输而不做任何限制,很可能会造成信息泄漏,黑客将可以获得整个授权区域内的所有主机的信息,判断主机功能及安全性,从中发现目标进行攻击。
1.2.3 TSIGDNS 的事务签名分为 TSIG (Transaction Signatures) 与 SIG0 (SIGnature)两种该如何选择呢? 首先,要先判断客户端与服务器间的信任关系为何,若是可信任者,可选择对称式的 TSIGTSIG 只有一组密码,并无公开/私密金钥之分;若是非完全信任者,可选择非对称式金钥的 SIG0,虽有公开/私密金钥之分,相对的,设定上也较复杂至于要选用哪种较适合,就由自己来判断通常区带传输是主域名服务器到辅助域名服务器1.TSIG 技术交易签章 (TSIGRFC 2845),是为了保护 DNS 安全而发展的从 BIND 8.2版本开始引入 TSIG 机制,其验证 DNS 讯息方式是使用共享金钥 (Secret Key) 及单向杂凑函式(One-way hash function) 来提供讯息的验证和数据的完整性主要针对区带传输(ZONE Transfer)进行保护的作用,利用密码学编码方式为通讯传输信息加密以保证 DNS 讯息的安全,特别是响应与更新的讯息数据也就是说在DNS 服务器之间进行辖区传送时所提供保护的机制,以确保传输数据不被窃取及监听。
2.SIG0 技术简介SIG0 是一九九九年三月 由 IBM 公司的 D. Eastlake 提出成为标准其是利用公开金钥机制为辖区资料进行数字签章的动作,以保证每笔传输的 source record 具有可验证性与不可否认性实际上 SIG0 才是防止 DNS Spoofing 发生最主要的技术,SIG0 是使用公开金钥加密法,让辖区管理者为其辖区数据加上数字签章,由此证明辖区资料的可信赖性除此之外,SIG0 保有是否选择认证机制的弹性,以及可灵活地配合自订的安全机制1.3 注意事项在对 DNS 进行安全配置之前,需要确认 DNS 是否能够正常解析1.4 操作步骤1.4.1 选择没有安全缺陷的 DNS 版本BIND 主要分为三个版本:(1)v4:1998 年多数 unix 捆绑(2)v8:如今使用最多最广大版本安全信息: http://www.isc.org)2.保持 DNS 服务器配置正确、可靠dlint 是专门检查 DNS 配置文件开源代码软件: 可以查询 DNS 服务器状态:http://www.ctearns.org/dnstop/dentop-20010809-1.i386.rpm1.4.2 保护 DNS 服务器本身安全第一步:隔离 DNS 服务器DNS 服务器要专用,不要在 DNS 服务器上运行其它服务,尽量允许普通用户登录。
第二步:隐藏 DNS 服务器网络攻击者对 DNS 服务进行攻击前,首先要知道 BIND 有版本号,根据 BIND版本号找到漏洞来确定攻击 DNS 服务器方法,攻击者使用 dig 命令可以查询到BIND 的版本号为了保障 DNS 服务器安全的首先要隐藏 DNS 服务器下面是没有隐藏 DNS 服务,攻击者查询到的 DNS 服务器的版本[root@centos ~]# dig @192.168.123.11 txt chaos version.bind; > DiG 9.3.4-P1 > @192.168.123.11 txt chaos version.bind; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER> DiG 9.3.4-P1 > @192.168.123.11 txt chaos version.bind; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER : \AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)(2)IPsec 网络到网络配置IPsec 还可以使用网络到网络连接配置把整个网络(如 LAN 或 WAN)连接到一个远程网络上。
网络到网络配置要求你在所连接网络的每一方设置 IPsec 路由器来处理和选路发送从一个网络上的节点到另一个远程网络上的节点间的信息 图 6-1 显示了一个网络到网络的 IPsec 隧道连接该图表显示了两个被互联网分开的 LAN这些网络使用 IPsec 路由器来验证和引发使用通过互联网的安全隧道的连接在传输中被劫获的分组将需要强力解密才能攻破保护这些 LAN 之间的分组的加密术从 192.168.1.0/24 IP 范围的一个节点到 192.168.2.0/24 上的另一个节点间的通信对于这些节点而言是完全透明的,因为对 IPsec 分组的处理、加密、解密、以及选路都是由 IPsec 路由器一手经办网络到网络连接所需的信息包括: 专用 IPsec 路由器的可从外部进入的 IP 地址 被 IPsec 路由器提供服务的 LAN/WAN 的网络地址范围(如 192.168.0.0/24 或 10.0.1.0/24) 把来自网络节点的数据选路发送到互联网的网关设备的 IP 地址 用来把 IPsec 连接从其它设备或连接中区别出来的独特名称(如 ipsec0) 固定的加密钥匙或被 racoon 自动生成的钥匙 用来引发连接和在会话中交换加密钥匙的预共享验证钥匙 例如:假设 LAN A()和 LAN B()想通过 IPsec 隧道来彼此连接。
LAN A 的网络地址在 192.168.1.0/24 范围内,LAN B 使用 192.168.2.0/24 范围LAN A 的网关 IP 地址是 192.168.1.254,LAN B 的网关地址是 192.168.2.254IPsec 路由器不同于每个 LAN 的网关,并且使用两个网络设备:eth0 被分派给可从外部进入的静态 IP 地址,它被用来进入互联网;eth1 充当在每个节点间和 eth0 设备中处理和传输 LAN 分组以便传输到互联网的选路点每个网络间的 IPsec 连接使用一个值为 r3dh4tl1nux 的预共享钥匙,A 和 B 的管理员都同意让 racoon 自动生成和共享每个 IPsec 路由器之间的验证钥匙LAN A 的管理员决定把 IPsec 连接命名为 ipsec0,而 LAN B 的管理员决定把 IPsec 连接命名为 ipsec1以下是 LAN A 的网络到网络 IPsec 连接的 ifcfg 文件在这个例子中用来识别该连接的独特名称是 ipsec1,因此其结果文件被命名为 /etc/sysconfig/network-scripts/ifcfg-ipsec1。
TYPE=IPSECONBOOT=yesIKE_METHOD=PSKSRCGW=192.168.1.254DSTGW=192.168.2.254SRCNET=192.168.1.0/24DSTNET=192.168.2.0/24DST=X.X.X.X连接被设置成引导时被引发(ONBOOT=yes ) ,并使用预共享钥匙验证方法(IKE_METHOD=PSK) LAN A 的管理员输入目标网关(即 LAN B 的网关 DSTGW=192.168.2.254) ,以及源网关(即 LAN A 的网关 IP 地址 SRCGW=192.168.1.254) 然后,管理员输入。
