DNS综合练习(限制递归、query限制访问、TSIG、查询日志).note

noteId: WEBfda17661ca711b209862a90878098a0e · 原始路径:/ALL/Linux - A模块/服务配置/DNS/DNS 配置/DNS综合练习(限制递归、query限制访问、TSIG、查询日志).note · 图片:42 · 附件待处理:0

 
 
一、dns综合练习:
 
 
1、限制递归来源客户端:
debian bind9 中,这个递归有时是默认开启的,有时是默认关闭的,所以最好每次都手动配置一下
# 递归:
如果开启了递归,那么客户端就可以解析dns服务器能够解析到的任意域名(例如 委派、转发器、根提示的域名)
如果关闭了递归,那么客户端就只能够解析dns服务器本地的域名,无法解析 委派、转发器、根提示等 的域名
 
这里配置了转发器来模拟递归环境
 
(1)关闭递归,不允许任何网段使用递归:
vim /etc/named.conf.options
 
测试:
dns服务器本地和客户端都无法解析:
 
并且客户端会提示服务器没有可用的递归
 
 
(2)允许所有网段进行递归:
vim /etc/bind/named.conf.options
 
测试:
所有网段都能够进行递归查询:
 
 
 
 
(3)仅允许指定网段递归:
vim /etc/bind/named.conf.options
# 只要这里不写 none,那么默认也会允许 localhost进行递归查询
 
测试:
只有 192.168.10.0网段 和dns服务器本身能够进行递归:
 
 
 
 
2、只允许指定网段解析本地的指定区域:
 
例如,本地有 skills39.edu、cisco.com 区域,可以控制仅 192.168.10.0网段才能够解析 skills39.edu区域
 
如果在 区域配置 和 name.conf.options 中同时指定 allow-query,区域配置中的更优先,将会生效
 
(1)单个区域限制:
# 在named.conf中控制:
## 使用 allow-query:
vim /etc/bind/named.conf
 
测试:
只有 192.168.10.0网段 和dns服务器 能够解析skills39.edu区域,其他网段只能够解析 cisco.com 区域:
 
 
 
 
(2)全局控制:
这里的配置会生效于所有区域
vim /etc/bind/named.conf/options
 
测试:
只有 192.168.10.0 网段 和 dns服务器能够解析域名,其他网段机器不能够解析任何域名
 
 
 
 
3、TSIG:
 
TSIG(Transaction Signature) 是一种为 DNS 消息(如区域传送、动态更新等)提供加密认证的方法。它不会加密整个 DNS 数据包,但会为其添加一段认证签名,确保数据来源可靠且内容未被篡改。
 
可以应用于:
1、DDNS 动态更新
2、主从DNS区域传送
等
 
注意,如果两端时间不一致,TSIG验证是会失败的
 
(1)主从 配置 TSIG:
 
1、主 dns配置:
# 生成 TSIG 密钥:
apt install -y bind9
 
tsig-keygen shanghai.org >> /etc/bind/named.conf
# 可以使用 -a 指定算法(默认使用hmac-sha256)
 
 
# 正常编辑区域配置文件然后调用TSIG密钥即可:
vim /etc/bind/named.conf
systemctl restart bind9
 
2、从 dns配置:
# 将主dns的tsig密钥拷贝过来:
apt install -y bind9
scp root@192.168.1.1:/etc/bind/named.conf /etc/bind
 
# 编辑从dns服务器配置:
vim /etc/bind/named.conf
 
systemctl restart bind9
echo "nameserver 192.168.1.2" > /etc/resolv.conf    //设置dns服务器为本地
能够看到区域传输使用TSIG密钥成功
 
 
(2)ddns 配置 TSIG:
 
1、dns配置:
# 生成 TSIG 密钥:
apt install -y bind9
 
tsig-keygen shanghai.org >> /etc/bind/named.conf
# 可以使用 -a 指定算法(默认使用hmac-sha256)
 
vim /etc/bind/named.conf
systemctl restart bind9
要修改 apparmor 服务的配置,并给 /etc/bind目录其他人可写的权限,否则.jnl文件没有权限生成
 
 
2、dhcp配置:
apt install -y isc-dhcp-server
vim /etc/dhcp/dhcpd.conf
 
# 配置 ddns:
vim /etc/dhcp/dhcpd.conf
## 将TSIG密钥直接复制到 dhcpd.conf中,配置与在dns中的是一样的
 
systemctl restart isc-dhcp-server
 
·客户端测试:
 
 
4、禁止指定IP查询:
allow-query 等同于白名单
blackhole 等同于黑名单
如果同时配置 allow-query 和 blackhole,拒绝会优先于允许,blackhole优先生效
 
allow-query 拒绝会返回:REFUSED
blackhole 拒绝会直接丢弃查询数据包,不返回内容,等同于 防火墙的 drop 效果
 
vim /etc/bind/named.conf.options
# 这里配置的是禁止 100.100.100.0/24 网段的dns查询请求
 
 
测试:
 
 
 
5、定义 dns 查询日志:
man模板:
 
(1)日志存储到默认路径(/var/cache/bind):
这里直接写相对路径 file "queries.log" ,不写绝对路径,日志默认就会存储到 /var/cache/bind 下
vim /etc/bind/named.conf
channel 自定义 通道名称
file 自定义日志文件名称、存储位置,如果不是绝对路径就会存储在 /var/cache/bind 下
category [定义日志类别] { [调用上面channel定义的通道名称]; };
 
# category 常用日志类别:
default	未明确分类的日志消息(默认类别)
general	一般日志信息
client	客户端请求处理信息
config	配置文件解析相关消息
database	数据库操作相关消息(区域文件加载等)
dnssec	DNSSEC 相关操作日志
lame-servers	错误配置的服务器(错误委派)记录
network	网络操作和套接字事件
notify	DNS NOTIFY 协议消息
queries	查询日志(需单独配置)
resolver	递归解析活动日志
security	安全事件(如拒绝访问)
update	动态更新事件
xfer-in	传入区域传输
xfer-out	传出区域传输
dispatch	将传入数据包分派给服务器模块
dnssec	DNSSEC 相关日志
rate-limit	速率限制事件
rpz	响应策略区域(RPZ)日志
unmatched	未匹配的查询(未配置区域)
 
·测试:
客户端访问时,访问日志将被存储到 /var/cache/bind/queries.log 下
 
 
(2)自定义路径:
两个条件:
1、该路径有读写权限
2、apparmor 中开放了 该路径的 rw读写权限
 
# 配置bind9:
vim /etc/bind/named.conf
 
# 放行目录权限:
chmod 777 /var/log
 
# 配置 apparmor:
vim /etc/apparmor.d/usr.sbin.named
添加一行
 
systemctl restart apparmor
systemctl restart bind9
 
·测试:
客户端解析:
 
查看日志: