Suricata文档——第16章 通过UnixSocket交互

16.1.介绍

Suricata可以监听unix套接字并接受来自用户的命令。 交换协议是基于JSON的,消息的格式是通用的。
源代码中提供了一个名为suricatasc的示例脚本,并在安装/更新Suricata时自动安装。
如果libjansson可用,则默认启用unix套接字。
你需要安装libjansson:

  • libjansson4 - C library for encoding, decoding and manipulating JSON data
  • libjansson-dev - C library for encoding, decoding and manipulating JSON data (dev)
  • python-simplejson - simple, fast, extensible JSON encoder/decoder for Python

Debian/Ubuntu:

apt-get install libjansson4 libjansson-dev python-simplejson
如果系统上存在libjansson,则会自动编译unix套接字。
在Suricata YAML配置文件中,通过在unix-command下启用“yes”或“auto”来管理套接字的创建:

unix-command:
enabled: yes
////filename: custom.socket # use this to specify an alternate file

filename变量可以用来设置一个备用的套接字文件名。 文件名总是相对于本地状态的基本目录。
客户端是为某种语言实现的,可以用作编写自定义脚本的代码示例:

16.2.在标准运行模式下的命令

he set of existing commands is the following:

  • command-list: list available commands
  • shutdown: this shutdown suricata
  • iface-list: list interfaces where Suricata is sniffing packets
  • iface-stat: list statistic for an interface
  • help: alias of command-list
  • version: display Suricata’s version
  • uptime: display Suricata’s uptime
  • running-mode: display running mode (workers, autofp, simple)
  • capture-mode: display capture system used
  • conf-get: get configuration item (see example below)
  • dump-counters: dump Suricata’s performance counter
    您可以使用提供的名为suricatasc的示例脚本访问这些命令。 与suricatasc典型的会议将如下所示:
# suricatasc
Command list: shutdown, command-list, help, version, uptime, running-mode, capture-mode, conf-get, dump-counters, iface-stat, iface-list, quit
>>> iface-list
Success: {'count': 2, 'ifaces': ['eth0', 'eth1']}
>>> iface-stat eth0
Success: {'pkts': 378, 'drop': 0, 'invalid-checksums': 0}
>>> conf-get unix-command.enabled
Success:
"yes"

16.3 cmd提示符下的命令

您可以直接在命令提示符下使用suricatasc:

root@debian64:~# suricatasc -c version
{'message': '2.1beta2 RELEASE', 'return': 'OK'}
root@debian64:~#
root@debian64:~# suricatasc -c uptime
{'message': 35264, 'return': 'OK'}
root@debian64:~#

注意:您需要引用涉及多个参数的命令:

root@debian64:~# suricatasc -c "iface-stat eth0"
{'message': {'pkts': 5110429, 'drop': 0, 'invalid-checksums': 0}, 'return': 'OK'}
root@debian64:~#

16.4 Pcap处理模式

这个模式是这个代码背后的主要动机之一。 这个想法是能够要求Suricata处理不同的pcap文件,而不必在文件之间重新启动Suricata。 由于您不需要等待签名引擎初始化,因此这可以为您提供巨大的收益。

要使用此模式,请使用您的首选YAML文件启动suricata,并提供选项--unix-socket作为参数:

suricata -c /etc/suricata-full-sigs.yaml --unix-socket

也可以将套接字文件名指定为参数:

suricata --unix-socket=custom.socket

在最后一种情况下,您将需要提供suricatasc套接字的完整路径。 为此,您需要传递文件名作为suricatasc的第一个参数:

suricatasc custom.socket

一旦Suricata启动,您可以使用提供的脚本suricatasc连接到命令套接字并要求pcap处理:

root@tiger:~# suricatasc
>>> pcap-file /home/benches/file1.pcap /tmp/file1
Success: Successfully added file to list
>>> pcap-file /home/benches/file2.pcap /tmp/file2
Success: Successfully added file to list

您可以在不等待结果的情况下添加多个文件:它们将被顺序处理,生成的日志/警报文件将被放入作为pcap-file命令的第二个参数指定的目录中。 您需要提供文件和目录的绝对路径,因为suricata不知道脚本的运行位置。

要知道有多少文件正在等待处理,您可以执行以下操作:

>>> pcap-file-number
Success: 3

要获得排队文件列表,请执行以下操作:

>>> pcap-file-list
Success: {'count': 2, 'files': ['/home/benches/file1.pcap', '/home/benches/file2.pcap']}

To get current processed file:

>>> pcap-current
Success:
"/tmp/test.pcap"

16.5. 构建你自己的客户端

该协议记录在以下页面https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Unix_Socket#Protocol
以下会话显示服务器发送(SND)和接收(RCV)的内容。 初步谈判如下:

# suricatasc
SND: {"version": "0.1"}
RCV: {"return": "OK"}

一旦完成,命令可以发出:

>>> iface-list
SND: {"command": "iface-list"}
RCV: {"message": {"count": 1, "ifaces": ["wlan0"]}, "return": "OK"}
Success: {'count': 1, 'ifaces': ['wlan0']}
>>> iface-stat wlan0
SND: {"command": "iface-stat", "arguments": {"iface": "wlan0"}}
RCV: {"message": {"pkts": 41508, "drop": 0, "invalid-checksums": 0}, "return": "OK"}
Success: {'pkts': 41508, 'drop': 0, 'invalid-checksums': 0}

In pcap-file mode, this gives:

>>> pcap-file /home/eric/git/oisf/benches/sandnet.pcap /tmp/bench
SND: {"command": "pcap-file", "arguments": {"output-dir": "/tmp/bench", "filename": "/home/eric/git/oisf/benches/sandnet.pcap"}}
RCV: {"message": "Successfully added file to list", "return": "OK"}
Success: Successfully added file to list
>>> pcap-file-number
SND: {"command": "pcap-file-number"}
RCV: {"message": 1, "return": "OK"}
>>> pcap-file-list
SND: {"command": "pcap-file-list"}
RCV: {"message": {"count": 1, "files": ["/home/eric/git/oisf/benches/sandnet.pcap"]}, "return": "OK"}
Success: {'count': 1, 'files': ['/home/eric/git/oisf/benches/sandnet.pcap']}

有一点需要注意:在多个发送操作中发送一个suricata消息。 这导致客户端可能不完整的读取。 更糟的解决方法是在尝试recv呼叫之前睡一会儿。 另一种解决方案是使用非阻塞套接字,如果前一个失败,则重试一个recv。 这里使用这个方法:source:scripts / suricatasc / suricatasc.in#L43

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容