我可以从 BIND 查询日志记录中排除某些客户端吗?

我可以从 BIND 查询日志记录中排除某些客户端吗?

我们正在考虑关闭一些 BIND DNS 服务器。我打开查询日志记录来查看哪些客户端正在联系这些服务器。绝大多数条目来自三个已知的罪魁祸首。我想消除这些记录。有什么方法可以从 BIND 内部执行此操作吗?

我找不到in-BIND的方式,所以我想到的not-within-BIND的方法就是让channel语句中的文件不是一个文件,而是一个socket。然后让脚本从该套接字读取并在写入文件之前进行过滤。

    channel queries {
            file "/var/adm/named/querylogsocket" versions 7;
            print-time yes;
            print-category yes;
            print-severity yes;
            severity info;
    };

这是一个可行的方法吗?

答案1

有两种方法:日志过滤和查看配置更改。一种是简单的,另一种是困难的并且容易出错。

两者都无法减少您的日志输出。

日志过滤

如果您想继续让 Bind9 响应您的三大罪魁祸首,但只对其他查询和答案感兴趣,那么这些 Bind9 子句、声明和选项都无法帮助您。

在所有 Bind9 版本中(我有一个当前数据库这些关键字),目前没有按地址进行选择性日志过滤,因为它仅提供按严重性进行过滤。

许多以 开头的 Bind9 语句allow-直接影响协议(而不是您想要的选择性日志记录输出)。

此时,最快(但并不总是最好)的方法是使用 Unix 管道并过滤掉三个不需要的 IP/主机名地址。

cd /var/log/named
cat query-errors | \
    grep -v 1.1.1.1 | \
    grep -v 1.1.1.2 | \
    grep -v 1.1.1.3 | \
    <your-log-analysis-program>

只需将1.1.1.x示例中的部分替换为 3 个最大的不需要的地址即可。

-v选项将过滤掉不需要的输出,以便您只能看到您希望日志分析程序看到的内容。

查看配置变化

或者您可以修改named.conf设置并将当前视图分成两个视图。

如果那里已经没有视图声明,那么对于非 Bind 人来说这将变得有点困难。

要拆分视图,请编辑named.conf包含所需子句的(或其包含文件之一)view

复制整个view子句(及其一对花括号内的所有语句。

将新克隆的第二个视图重命名为其他名称,可能只是在视图名称中添加“_original”后缀。

返回到第一个视图子句(这很重要,因为地址匹配是按第一个匹配顺序完成的。)

match-client在第一个视图子句中添加另一个语句。

view red {
    match-clients {
        1.1.1.1; 1.1.1.2; 1.1.1.3;
    };
...

现在您有了一个日志文件,其行具有不同的视图名称,您可以轻松扫描该视图名称。

结论

现在我知道这仍然不能解决不通过 Bind9 记录特定视图或地址集的需要。

相关内容