如果我们必须记住 IP 地址来查找内容,互联网就不会那么有趣了。这就是域名系统的用武之地,它将域名与托管内容的 IP 连接起来。但是 DNS 有一个大问题:安全性。
最近引入的 DNSSEC 有助于防止通过您的 IP 进行的攻击。DNSSEC 代表域名系统安全扩展。它是一组安全规范,通过使用公钥和私钥对区域文件和注册表级别之间的名称服务器进行身份验证,帮助防止客户端级别的 DNS 欺骗。
DNS 欺骗或 DNS 缓存中毒是最常见的攻击,它基本上迫使传入流量盲目地转到另一个 IP,在该 IP 通常将恶意内容下载到访问者的计算机上。
如果您与域名注册商*合作,如果他们支持,他们可以在内部实施 DNSSEC。如果您拥有单独的 DNS专用服务器(或名称服务器),您可以自己做。
- 了解使用名称服务器如何减少高流量站点使用的资源
DNSSEC 如何保护我的网站?
DNSSEC 通过使用公钥加密对记录进行数字签名来保护 DNS 数据。域所有者可以与他们的域注册商合作,在域注册的根区域设置 DNSSEC 公钥。查找过程如下:
- 首先,解析器(配置为遵循 DNSSEC)注意到 DNS 查询中的“DO”标志位
- 然后解析器在根区域验证 DS 和 DNSKEY 记录
- 使用在根区域找到的顶级域的 DS 记录,它验证该区域中的 DNSKEY 记录
- 然后检查 TLD 区域中域的 DS 记录
- 如果存在,解析器使用 DS 记录来验证在域的区域文件中找到的 DNSKEY 记录
- 最后,它将验证在 DNS 区域文件的 A 记录中找到的 RRSIG 记录
如何安装 DNSSEC?
您可以按照以下步骤在 CentOS 上安装 DNSSEC。说明因您的 Linux 发行版而异。
步骤 1:修改命名的配置选项。
vi /etc/bind/named.conf.options
在选项中设置以下内容:
dnssec-启用是;
dnssec 验证是的;
dnssec-后备自动;
第 2 步:导航到您的区域文件。
cd /var/cache/bind
第 3 步:创建区域签名密钥。
dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE example.com
第 4 步:创建密钥签名密钥
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE example.com
该目录现在将有 4 个密钥 - ZSK 和 KSK 的私有/公共对。
第 5 步:使用以下 for 循环将公钥添加到区域文件:
用于 `ls Kexample.com*.key` 中的键
做
echo “$INCLUDE $key”>> example.com.zone
完毕
第6步:签署区域,用随机的东西代替盐。
dnssec-signzone -3 <salt> -A -N INCREMENT -o <zonename> -t <zonefilename>
这将创建一个名为 example.com.zone.signed 的新文件,其中包含每个 DNS 记录的 RRSIG 记录。
第 7 步:加载签名区域。
纳米 /etc/bind/named.conf.local
更改 zone { } 部分内的文件选项。
区域“example.com” IN {
类型大师;
文件“example.com.zone.signed”;
允许转移 { 2.2.2.2; };
允许更新{无;};
};
第 8 步:保存文件并重新加载绑定
服务绑定9重新加载
第 9 步:在您的域名注册商处添加 DS 记录。
在此过程的早期创建了一个名为 dsset-example.com 的文件。此文件包含您可以带到您的域注册商的 DS 记录。
测试您的 DNS 安全工作
您可以使用此处的工具来测试您的 DNSSEC 是否在您的域上正确配置。DNSSEC 是一个相当新的工具,但实施它可以对您的专用服务器安全性产生巨大影响。
*根据ICANN的规定,只有部分域名注册商支持“最终用户 DNSSEC 管理,包括输入 DS 记录” 。