2021SC@SDUSC


os-sim/www源码分析之scripts/connect_ossim_db.sh

  • 一、什么是.sh文件
  • 二、源码分析
  • 三、文件作用



一、什么是.sh文件

.sh文件中一般都是脚本文件,指Bash。

  • 程序以语句#!/bin/sh开始,且独占一行
    符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
    当编写脚本完成时,如果要执行该脚本,还必须使其可执行。
    要使编写脚本可执行:
    编译 chmod +x filename 这样才能用./filename 来运行
  • 所有的变量都由字符串组成,不需要对变量进行声明。要赋值给一个变量,您可以这样写:w=”hahahaha”
  • 以#开头的句子表示注释,直到这一行的结束 。
  • .sh文件可以用pycharm运行,在windows和linux都可以运行。
    它有一些基本的命令,类似liunx中的命令:
  • 常用命令语法及功能
  • echo “some text”: 将文字内容打印在屏幕上
  • ls: 文件列表
  • wc –l file , wc -w file , wc -c file: 计算文件行数、计算文件中的单词数、计算文件中的字符数
  • cp sourcefile destfile: 文件拷贝
  • mv oldname newname : 重命名文件或移动文件
  • rm file: 删除文件
  • cat file.txt: 输出文件内容到标准输出设备(屏幕)上
  • file somefile: 得到文件类型
  • read var: 提示用户输入,并将输入赋值给变量
  • sort file.txt: 对file.txt文件中的行进行排序
  • uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq
  • find: 搜索文件比如:根据文件名搜索find . -name filename -print
  • tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile
  • basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux
  • dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin
  • head file: 打印文本文件开头几行
  • tail file : 打印文本文件末尾几行
  • sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。
  • grep ‘pattern’ file: 在文件内搜索字符串所在的行,比如:grep ’searchstring’ file.txt

二、源码分析

if test -z "$1"; then
#	DB="ossim"
	DB="alienvault"
else
	DB="$1"
fi

if [ ! -f "/etc/ossim/ossim_setup.conf" ];then
        >&2 echo "ossim_setup.conf not found"
        exit 0
fi

HOST=`grep ^db_ip= /etc/ossim/ossim_setup.conf | cut -f 2 -d "=" | sed '/^$/d'`
USER=`grep ^user= /etc/ossim/ossim_setup.conf | cut -f 2 -d "=" | sed '/^$/d'`
PASS=`grep ^pass= /etc/ossim/ossim_setup.conf | cut -f 2 -d "=" | sed '/^$/d'`

if test -z "$HOST"; then
	HOST=localhost
fi

sshpass -p $PASS mysql --default-character-set=utf8 -A -u $USER -h $HOST $DB -p -e "exit" &>/dev/null

if [ $? -ne 0  ]; then
	>&2 echo "Access denied. Trying old settings..."

	if [ ! -f /etc/ossim/ossim_setup.conf_last ]; then
        	>&2 echo "ossim_setup.conf_last not found"
        	exit 0
	fi

	HOST=`grep ^db_ip= /etc/ossim/ossim_setup.conf_last | cut -f 2 -d "=" | sed '/^$/d'`
	USER=`grep ^user= /etc/ossim/ossim_setup.conf_last | cut -f 2 -d "=" | sed '/^$/d'`
	PASS=`grep ^pass= /etc/ossim/ossim_setup.conf_last | cut -f 2 -d "=" | sed '/^$/d'`
fi

sshpass -p $PASS mysql --default-character-set=utf8 -A -u $USER -h $HOST $DB -p

对DataBase建立连接,用指令去查主机、用户、密码,然后进行对比。
访问失败则显示访问被拒绝,然后去找上一次的成功设置。

三、文件作用

在script部分,OSSIM需要进行与各事件与警报交互,这个文件用于建立ossim_db(数据库)的连接。OSSIM关联引擎(简称OSSIM Server)将事件关联结果写入数据库。系统用户可通过Framework(Web前端控制台)对Database进行访问。数据库中alienvault.event表是整个系统事件分析和策略调整的信息源。OSSIM从总体上将其划分为事件数据库(EDB)、知识数据库(KDB)、用户数据库(UDB)。OSSIM数据库用来记录与安全事件关联及配置等相关的信息,对应于设计阶段的KDB和EDB的关联事件部分。