suricata(七)——suricata日志输出到socket

发布时间 2023-04-24 10:28:25作者: 凉城旧巷

suricata日志输出到socket

1、修改配置文件

修改filetypeunix_stream,并将filename修改为sock文件,socket文件默认还是保存在default-log-dir目录下

  • unix_stream:TCP版
  • unix_dgram:UDP版

 

2、创建socket server

  • 这是一个Demo,可以优化
import socket
import os

server_address = '/var/log/suricata/fast.sock'
if os.path.exists(server_address):
    os.remove(server_address)
    
socket_family = socket.AF_UNIX
socket_type = socket.SOCK_STREAM

server = socket.socket(socket_family, socket_type)
server.bind(server_address)
server.listen(1)
print(f"listening on '{server_address}'.")

# 链接循环
while True:
    connection, client_address = server.accept()
    # 通信循环,必须要通信循环,因为suricata到server只有一个连接,一段退出当前链接,就无法在接收到suricata发出的日志消息
    while True:
        # TODO: 这里可以加入逻辑,一旦suricata断开连接就break,退出通信循环,等待一个新的连接
        data = connection.recv(1024)
        # TODO: 接受到流量日志可以写入mysql、kafka等,用于后期处理
        print(repr(f"{data.decode()}"))

 

3、测试

1)规则文件

 

2)启动suricata

这里以IPS为例子

iptables -I INPUT  -j NFQUEUE
iptables -I OUTPUT  -j NFQUEUE

suricata -c /etc/suricata/suricata.yaml -q 0 -v

 

3)生成流量