2021SC@SDUSC
OSSIM-agent源代码分析(一)
1、简述
OSSIM Agent的主要职责是收集网络上存在的各种设备发送的所有数据,然后按照一种标准方式(standardized way)有序的发送给OSSIM Server,Agent收集到数据后在发送给Server之前要对这些数据进行标准化处理,这样Server就可以依一种统一的方式来处理这些信息,并且也简化了Server的处理过程。
OSSIM Server接收到的每一个事件都是被某个Agent事先处理过的,即便是当一个Server只有另外一个Server(被设计用来只负责转发数据的server)和他链接时(即该server不和Agent直接链接,而是和别的Server链接),那个处在这个链接链的最后的那个Server的数据肯定也是某个Agent处理后发送过来的。
OSSIM Agent发送给Server的数据,绝大多数情况下是通过读取网络设备终端中的日志文件得来的。OSSIM有计划将来会实现从其他类型的数据来源(如DB或Socket)中读取数据信息。
Agent和Server的连接断掉后,Agent便不能将事件发送给Server了,但是Agent会将这些事件入栈(stacks),当连接重新建立后Agent会自动将这些事件按照到达的顺序发送给Server端
2、Agent.py源码分析
本部分将对agent模块中的最核心的代码文件Agent.py
的源代码中main函数的守护进程模块进行初步分析
Agent.py使用python语言编写
import os
import sys
import time
import signal
import threading
import socket
import codecs
import uuid
import yaml
import subprocess as sub
from Config import Conf, Plugin, Aliases, CommandLineOptions
from ConfigParser import Error as BaseConfigError
from ParserLog import ParserLog
from ParserJson import ParserJson
from Watchdog import Watchdog
from Logger import Logger
from Output import Output
from Stats import Stats
from Conn import ServerConn, IDMConn, FrameworkConn
from Exceptions import AgentCritical
from ParserDatabase import ParserD