DNS综合练习(限制递归、query限制访问、TSIG、查询日志).note
一、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
·测试:
客户端解析:

查看日志:
