Red Hat Training

A Red Hat training course is available for RHEL 8

第 27 章 在 RHEL 中使用 dnstap

dnstap 工具提供了一种高级的方法来监控和记录传入的名称查询的详细信息。它记录了从 named 服务发出的消息。本节解释了如何使用 dnstap 记录 DNS 查询。

27.1. 在 RHEL 中使用 dnstap 记录 DNS 查询

网络管理员可以记录 DNS 查询,以收集网站或 IP 地址信息以及域健康的信息。

先决条件

  • BIND 软件包升级到 bind-9.11.26-2 或更高版本。
警告

如果您已安装并运行了 BIND 版本,添加新版本的 BIND 将覆盖现有的版本。

流程

以下是记录 DNS 查询的步骤:

  1. 编辑 /etc/named.conf 文件中的options 块来启用 dnstap 和目标文件:

    options
    {
    # …
    
    dnstap { all; }; # Configure filter
    dnstap-output file “/var/named/data/dnstap.bin”;
    
    # …
    };
    # end of options

    ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ];

    dnstap 过滤器包含多个在 dnstap {} 块中以; 分隔的定义。

    以下是每个规则的语法:

    • auth - 权威区域响应或回答。
    • client - 内部客户端查询或回答。
    • forwarder - 转发的查询或来自它的响应。
    • resolver - 迭代的解析查询或响应。
    • update - 动态区域更新请求。
    • all - 以上选项中的任何一个。
    • query | response - 如果没有指定查询或响应关键字,则两者都会被记录。

      以下示例仅请求 auth 响应,客户端查询 以及动态 更新 的查询和响应:

    Example:
    
    dnstap {auth response; client query; update;};
  2. 为活跃日志配置定期推出。

    在以下示例中,用户编辑的脚本的内容由 cron 每天运行一次。数字 3 表示备份日志文件限制为该数字。由于文件已被删除,因此该文件永远不会达到 .2 后缀。

    Example:
    
    sudoedit /etc/cron.daily/dnstap
    
    #!/bin/sh
    rndc dnstap -roll 3
    mv /var/named/data/dnstap.bin.1 \ /var/log/named/dnstap/dnstap-$(date -I).bin
    
    # use dnstap-read to analyze saved logs
    sudo chmod a+x /etc/cron.daily/dnstap
  3. 使用 dnstap-read 工具以人类可读的格式处理和分析日志。

    在以下示例中,详细的 dnstap 输出以 YAML 文件格式显示。

    Example:
    
    dnstap-read -y [file-name]