BIND简易教程(3):DNSSec配置
目录:
BIND简易教程(1):安装及基本配置
BIND简易教程(2):BIND视图配置
BIND简易教程(3):DNSSec配置 (本篇)
DNSSec,有个半英半中的名字叫DNS安全扩展。说的好听一点,它是对域名进行签名认证,保证域名的完整性和正确性,不会被修改。DNSSec不能防御对DNS服务器的攻击,也不会对请求和应答的数据进行加密,甚至如果你不知道DNSSec这个东西的话,域名是不是完整正确的你也不知道。
实际上,给我的感觉就是,DNSSec是在花很大的力气去配置一个不怎么有用的东西。然并卵。该用还是得用。当然,也有可能是我才疏学浅,蜩与学鸠笑鹏起不知若何
好了不拽文了,还是说正事。大概要分好几步:
1、开启DNSSec功能:
(1)要在options里面添加几个选项,开启DNSSec功能:
options {
dnssec-enable yes;
dnssec-validation auto;
dnssec-lookaside auto;
notify yes;
allow-transfer { none; };
};
之前有dnssec-enable no;这个选项,改为yes,其余4个是新增的。
(2)建立目录留作生成key放置:
mkdir -p views/dnssec_keys
(3)zone中添加相关参数:
zone “apple.tree” IN {
type master;
auto-dnssec maintain;
update-policy local;
file “/etc/bind/views/zones/dianxin.apple.tree.zone”;
key-directory “/etc/bind/views/dnssec_keys”;
};
其中type和file是原来就有的,其余几个选项是新增的。但是,file后面的文件一会是要改的。暂时先不改放在这儿。
2,生成密钥
在新增的dnssec_keys目录中生成密钥
sudo dnssec-keygen -f KSK -a RSASHA1 -r /dev/urandom -b -n ZONE apple.tree.
sudo dnssec-keygen -a RSASHA1 -r /dev/urandom -b -n ZONE apple.tree.
分别采用KSK和RSA加密。关于dnssec-keygen的使用方法,有时候需要百度查一下,或者用-h看看。比如-r /dev/urandom,这是随机数生成器,如果不加的话,生成key的时候可能要等上好几分钟都没结果。
之后在dnssec_keys目录中可以看到4个文件:
Kapple.tree.+005+54124.key
Kapple.tree.+005+54124.private
Kapple.tree.+005+61152.key
Kapple.tree.+005+61152.private
两个公钥和两个私钥,一会配置解析库的时候会用到>
3,签名
(1)将前面生成的两个公钥添加到区域配置文件末尾
$TTL 86400
@ IN SOA apple.tree. apple.apple.tree. (
2016090100 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
) @ IN NS apple.tree.
@ IN A 192.168.4.135
aaa IN A 192.168.4.100
bbb IN A 192.168.4.101
ccc IN CNAME bbb $INCLUDE "/etc/bind/views/dnssec_keys/Kapple.tree.+005+54124.key"
$INCLUDE "/etc/bind/views/dnssec_keys/Kapple.tree.+005+61152.key"
(2)对zone签名
sudo dnssec-signzone -K /etc/bind/views/dnssec_keys -o apple.tree. /etc/bind/views/zones/dianxin.apple.tree.zone
会生成一个后缀为.signed的文件,这个就是签名后的zone。把这个zone文件的名字写到前面zone一节的file选项中。zone变为
zone "apple.tree" IN {
type master;
auto-dnssec maintain;
update-policy local;
file "/etc/bind/views/zones/dianxin.apple.tree.zone.signed";
key-directory "/etc/bind/views/dnssec_keys";
};
4,生成信任锚
(1)生成信任锚文件:查看刚才生成的两个公钥
$ ls
Kccgslb.bokecs.com.+005+54124.key
Kccgslb.bokecs.com.++.private
Kccgslb.bokecs.com.+005+61152.key
Kccgslb.bokecs.com.++.private
$ sudo cat Kapple.tree.++.key
; This is a key-signing key, keyid , for apple.tree.
; Created: (Thu Aug :: )
; Publish: (Thu Aug :: )
; Activate: (Thu Aug :: )
apple.tree. IN DNSKEY 257 3 5 AwEAAbfkw0jfR6MAIInduMR1WAj6XZIRj3Zso8xyiOSmeQRNVVyS9dOz tBemhoCWhOk5RnEZpu/ITJVEzSZHY3bA1Tc=
$ sudo cat Kapple.tree.++.key
; This is a zone-signing key, keyid , for apple.tree.
; Created: (Thu Aug :: )
; Publish: (Thu Aug :: )
; Activate: (Thu Aug :: )
apple.tree. IN DNSKEY 256 3 5 AwEAAb8mO4dN8I1mCt/f575aACdeSr+Q0igouAWrJa5DGJNZfAoX39eW z3QfG6nmiDdgtT/CoPL+uqH46BERgqk9POc=
在 /etc/bind 目录下生成文件 sec-trust-anchors.conf
trusted-keys {
apple.tree. 257 3 5 "AwEAAbfkw0jfR6MAIInduMR1WAj6XZIRj3Zso8xyiOSmeQRNVVyS9dOz tBemhoCWhOk5RnEZpu/ITJVEzSZHY3bA1Tc=";
apple.tree. 256 3 5 "AwEAAb8mO4dN8I1mCt/f575aACdeSr+Q0igouAWrJa5DGJNZfAoX39eW z3QfG6nmiDdgtT/CoPL+uqH46BERgqk9POc=";
};
这里面的两条内容是刚才生成的两个密钥的内容。用公钥比较方便(也就是.key的文件)。注意复制的时候去掉“IN”和“DNSKEY”这两个词,以及后面的key要加引号。
(2)在named.conf中添加
include "/etc/bind/sec-trust-anchors.conf";
5,重启bind
sudo service bind9 restart
如果重启成功,就可以测试了
$ dig +dnssec aaa.apple.tree @192.168.4.43
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> aaa.apple.tree @192.168.4.43
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53833
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;aaa.apple.tree. IN A
;; ANSWER SECTION:
aaa.apple.tree. 86400 IN A 192.168.4.100
aaa.apple.tree. 86400 IN RRSIG CNAME 5 6 86400 20160924084355 20160825075619 61152 apple.tree. PLHn/VCVSb6mcvYZgM66qH2/19gKxrrfogCDWMWj3n5ZU+iqpu4W5XoY 9osK/d9BM9LM3YfltEubmCDlFBrUKw==
;; Query time: 4 msec
;; SERVER: 192.168.4.43#53(192.168.4.43)
;; WHEN: Fri Jan 08 14:47:48 CST 2016
;; MSG SIZE rcvd: 59
我们看到除了正常的一行解析到192.168.4.100之外,还有一行乱七八糟的字符串,这个就是对aaa.apple.tree的签名。出现这个就代表DNSSec配好了。OK,至此,三篇BIND的介绍就算完成了。其实对于整个BIND来说,这只是冰山一角。但是我的精力也有限,只能写这么点东西了。
题外话:
(1)开始以为BIND的效率挺差的,但是后来真正用起来发现还是相当快的,加上功能多,真不愧是当今世界上应用最广泛的DNS服务器。我关闭日志,测试了一下QPS,有将近12万的表现。比PowerDNS要高出一大截。而且,开启DNSSec后效率并没有降低,我估计是因为缓存的关系。
(2)DNS安全问题是个挺严肃的问题。我所知道的极少,又片面,所以不敢写。前几天跟群里的一位同学谈到了“分布式放大攻击”,简直恐慌。简单说下,比如有攻击者A和受害者B,A将自己的IP地址伪装成B,然后向DNS服务器发送请求。请求是精心准备的,这个请求的应答要比请求本身要大上很多倍。之后,DNS服务器向B发送了应答包。从外部看起来,就是A利用DNS服务器作为放大器,向B发动攻击。当然,一个DNS包再大也不会有什么问题。但是很多的DNS应答包就会出问题了——受害者的计算机毕竟不是服务器,能不能承受住如此大量的网络数据包?这就是放大攻击。而所谓的分布式就是,A可以向很多很多DNS服务器发送请求,这样就会成为N多服务器攻击同一台计算机(服务器:我是冤枉的/(ㄒoㄒ)/~~)。别看我,我也不知道这怎么解决。
BIND简易教程(3):DNSSec配置的更多相关文章
- BIND简易教程(2):BIND视图配置
目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置(本篇)BIND简易教程(3):DNSSec配置 上文书说到,我们把aaa.apple.tree解析到192.168 ...
- BIND简易教程(1):安装及基本配置
首先,为什么说是简易教程呢?因为BIND的功能实在太多,全写出来的话要连载好久,我觉得我没有那么多精力去写:而我了解的仅仅是有限的一点点,不敢造次.百度上的文章也是一抓一大把呐!所以,教点基本使用方法 ...
- BIND简易教程(0):在Ubuntu下源码安装BIND(其实跟前面的教程没太大关系)
之前介绍过BIND的基本使用啦.关于BIND的入门级使用方法见:http://www.cnblogs.com/anpengapple/p/5877661.html简易教程系列,本篇只讲BIND安装. ...
- Ocelot简易教程(五)之集成IdentityServer认证以及授权
Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么 Ocelot简易教程(二)之快速开始1 Ocelot简易教程(二)之快速开始2 Ocelot简易教程(三)之主要特性及路由详解 ...
- [转载]Ocelot简易教程(五)之集成IdentityServer认证以及授权
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html 最近比较懒,所以隔了N天才来继续更新第五篇Ocelot简易教程,本篇教程会先简单介 ...
- WebGL简易教程(十三):帧缓存对象(离屏渲染)
目录 1. 概述 2. 示例 2.1. 着色器部分 2.2. 初始化/准备工作 2.2.1. 着色器切换 2.2.2. 帧缓冲区 2.3. 绘制函数 2.3.1. 初始化顶点数组 2.3.2. 传递非 ...
- JavaScript简易教程(转)
原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...
- Ant 简易教程
转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
随机推荐
- 远程连接postgresql和redis设置
1. 让Postgresql服务器被远程访问 1.1 编辑 pg_hba.conf,配置用户的访问权限 vi /etc/postgresql/8.4/main/pg_hba.conf 增加设置项 ho ...
- gihub简单学习 步步操作(简单易学)
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- 铵钮提交事件PostBack之后,一些动态加载的物件丢失
今早起来,发现skype有网友留言,情况大约如下,不过Insus.NET还是先感谢网友的测试.http://www.cnblogs.com/insus/p/3193619.html 如果你有看此篇博 ...
- Expression Blend实例中文教程(4) - 布局控件快速入门Canvas
上一篇,我介绍了Silverlight控件被分为三种类型, 第一类: Layout Controls(布局控件) 第二类: Item Controls (项目控件) 第三类: User Interac ...
- (C++学习)关于CString的一些疑问
#include <iostream> #include <string> #include <afx.h> #include <vector> usi ...
- MongoDB 线上环境按照及配置(授权方式启动)
1创建文件repo文件 #vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository bas ...
- 互联网轻量级框架SSM-查缺补漏第六天【级联+延迟加载特辑】
简言:本来这是昨天看的,但是因为想好好写一下[级联]这个东西,所以就看完之后今天来整理一下. 级联 1. 什么是级联 级联是一个数据库实体的概念.比如教师就需要存在学生与之对应,这样就有教师学生表,一 ...
- Windows安装配置xampp
建议大家直接看原文 1.安装XAMPP 进入https://www.apachefriends.org/zh_cn/index.html页面下载XAMPP 2 3.打开xampp控制版 4.修改apa ...
- Java并发—–深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线 ...
- jQuery源码分析系列 : 整体架构
query这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍 我也不会照本宣科的翻译源码,结合自己的实际经验一起拜读吧! ...