2021SC@SDUSC
os-sim/www源码分析之scripts/connect_ossim_db.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的关联事件部分。