Bro:禁用所有日志生成

时间:2016-11-21 13:57:31

标签: file logging network-analysis bro

我创建了一个兄弟脚本,目的是从pcap文件中提取所有可用协议的所有文件。但我不想写所有日志。 Bro为每个协议创建一个日志文件。示例:'http.log','smtp.log'等。甚至生成'weird.log'。我的pcap文件很大(20gb),因此,每个日志文件包含超过30mb的信息。此日志生成会降低文件提取的性能。 我可以使用行@load base/files/extract event bro_init() { Log::disable_stream(Conn::LOG); } event file_sniff(f: fa_file, meta: fa_metadata) { local ext = ""; if ( meta?$mime_type ) ext = split_string(meta$mime_type, /\//)[1]; local fname = fmt("%s-%s.%s", f$source, f$id, ext); Files::add_analyzer(f, Files::ANALYZER_EXTRACT, [$extract_filename=fname]); } 禁用'conn.log',但是,所有协议日志记录呢? 这是我的剧本

{{1}}

3 个答案:

答案 0 :(得分:1)

您可以像这样使用none作家:

bro -r packets.pcap Log::default_writer=Log::WRITER_NONE

我并不完全相信编写这些日志会以任何真实的方式损害您的性能。通常,将文件写入磁盘会导致最大的开销。

答案 1 :(得分:1)

这是一种关闭所有日志记录(在bro_init之前)的方法,而无需知道哪些流ID是相关的:

event bro_init()
{
   # We don't want any output other than from this script.
   for (id in Log::active_streams)
       Log::disable_stream(id);
}

这种构造使我在迭代表时略微修改了表,但是它似乎有效,而且如果不进行迭代,我实际上找不到从表中窥视一个键的任何方法。我想一个人可以写

event bro_init()
{
    while (|Log::active_streams|) {
        for (id in Log::active_streams) {
            Log::disable_stream(id);
            break;
        }
    }
}

但这很可怕,除非我发现必须这样做,否则我不会使用它。

答案 2 :(得分:0)

我用main.bro中的这行代码实现了这一点:

    Log::remove_filter(Conn::LOG, "default");