OSSIM项目研究记录(四)

16 篇文章 1 订阅

2021SC@SDUSC


一、frameworked与action

下图在ossim项目中各个主要模块之间的数据流动示意。
在这里插入图片描述
关注framework与其他模块的交互,主要有:

  1. Server至Frameworkd:发送请求命令,要求Frameworkd针对警告(Alarm)采取相应操作,例如执行外部程序或发出Email来通知管理员。

  2. Framework至Server:发送请求命令至Server。要求Server通知Agent对插件(Plugins)进行启动、停止等操作。

  3. Framework至Frameworkd:发送请求命令,要求Frameworkd启动OpenVas扫描进程。

  4. Frameworkd至Framework: 传送OpenVas扫描结果在前端页面中显示。

  5. Frameworkd至Database:在Frameworkd执行过程中将Openvas扫描结果存入数据库。

  6. Database至Framework: PHP页面显示需要调用数据库的告警事件。

  7. Framework至Database:用户参数设置信息需要存入数据库。

二、重点解析

2.1、action.py

代码整体结构如下

在这里插入代码片class Action(threading.Thread):
    base64field = ["username", \
                 "password", "filename", \
                 "userdata1", "userdata2", "userdata3", \
                 "userdata4", "userdata5", "userdata6", \
                 "userdata7", "userdata8", "userdata9"] 

    def __init__(self, request):
  
    def get_mail_server_data(self):
     
    def parseRequest(self, request):
       
    def getActions(self, id):
  
    def requestRepr(self, request, email_to):
        
    def getHostnameFromIP(self, hostip):
      
    def doAction(self, action_id):
        
    def mailNotify(self):
       
    def run(self)
       

首先import了若干包
然后定义了一个类Action,
其数据结构中包含了用户名,密码,文件名,用户数据。
同时定义了9个函数,分别用于初始化,获取服务器数据,解析请求,获取动作,从Ip获取主机名等操作

2.2、部分函数

1. _init _

构造函数/初始化函数,将应答内容置空,邮件服务器的端口号,用户名密码等初始化。

   def __init__(self, request):

        self.__request = self.parseRequest(request)
        self.__responses = {}
        self.__conf = OssimConf()
        self.__db = OssimDB(self.__conf[VAR_DB_HOST], \
                            self.__conf[VAR_DB_SCHEMA], \
                            self.__conf[VAR_DB_USER],
                            self.__conf[VAR_DB_PASSWORD]
                            )
        self.__component_id = None
        self.__email_server_relay_enabled = False
        
        self.__email_server = ""
        self.__email_server_port = 0
        self.__email_server_user = ""
        self.__email_server_passwd = ""

        threading.Thread.__init__(self)

2. get_mail_server_data

获取邮件服务器数据。用异常捕获结构编写的,从数据库检索电子邮件服务器配置。
然后打印服务器、服务器密码、服务器端口、服务器用户。
如果服务器未打开成功,警告“电子邮件服务器中继未配置”
尝试赋值服务器端口, 如果值错误:警告“无效的服务器端口"
抛出其他异常,则导入回溯,警告“获取电子邮件服务器配置时出错”

 def get_mail_server_data(self):
        """Retrieves the email server configuration from the database.
        """
        try:
            server = ossim_setup['mailserver_relay']                #data['mailserver_relay']
            server_port = ossim_setup ['mailserver_relay_port']      #data['mailserver_relay_port']
            server_user = ossim_setup['mailserver_relay_user']      #data['mailserver_relay_user']
            server_passwd = ossim_setup['mailserver_relay_passwd']  #data['mailserver_relay_passwd']
            print server,server_passwd,server_port,server_user
            if server == "no":
                logger.warning("Email server relay not configured -> mailserver_relay = no")
                self.__email_server_relay_enabled = False
                return
            self.__email_server = server

            try:
                self.__email_server_port = int(server_port)
            except ValueError:
                logger.warning("Invalid server port: %s" % server_port)
                self.__email_server_relay_enabled = False
                return
            self.__email_server_user = server_user
            self.__email_server_passwd = server_passwd
            self.__email_server_relay_enabled = True
        except Exception, e:
            self.__email_server_relay_enabled = False
            import traceback
            traceback.print_exc()
            logger.error("Error getting the email server configuration: %s" % str(e))

三、总结

Action 定义了一个Server至Frameworkd的行为标准,要求Frameworkd对通信进行检查,针对警告采取相应操作,例如执行外部程序或发出Email来通知管理员。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值