moloch安装配置指南
moloch git地址
Moloch是一个开源的大规模IPv4包捕获(基于PCAP协议)、索引、数据库存储系统,由以下三部分组成:
1. capture:绑定interface运行的单线程C语言应用
2. viewer:运行在capture主机上的node.js web应用
3. elasticsearch:moloch的数据检索驱动
git主页上README有较为详细的安装说明,下面是参照官方说明的我的安装记录,有一定解释和扩充:
注:Linux系统以hostname标识主机,localhost是默认自带的绑定127.0.0.1,修改hostname要修改/etc/hostname和/etc/hosts文件并重启,下面某些配置需要hostname:port,以下配置示例都以localhost为例,单节点运行足够;若要规划集群运行,建议每个机子配置独立的hostname,并应用到配置中,方便区分管理。
系统要求和依赖
Linux系统(各发行版本的支持程度未知,官方文档貌似cent,ubuntu,OS x都有支持,以下安装运行以Ubuntu 14.04 X64为例)
jdk(elasticsearch依赖,具体版本范围未知,推荐1.7,以下以7u75为例)
python(nodejs运行依赖,一般系统自带的v2.7即可)
nodejs(以当前moloch版本,支持node v0.10.21~v0.11.x)
主机性能要求:elasticsearch相当吃内存,据我多次安装实验,2G内存的机子基本带不起来,或者运行一小会就会挂掉(已在一台台式机、两台笔记本上得到验证),8G i5双核台机下成功运行,其虚拟机上都不行。能不能通过调整参数让小破机子也能跑起来?这个有待调研。总之,机子性能越高越好。
安装elasticsearch
推荐elasticsearch版本1.4.x, 至少要求版本1.2.x
elasticsearch是基于lucence的一款全文搜索引擎,支持集群
1. 增加文件描述符(max file descriptors)数量上限
修改/etc/security/limits.conf
文件,在最后加上以下两行:
* - nofile 128000
* - memlock unlimited
2.如果是专用机(内存足够大,不用作其他功能),可以禁止交换分区以提高效率
方法1:使用swapoff –a
命令(相应开启命令为swapon -a
)
方法2:修改/etc/fstab
文件,注释掉swap那一行
3. 下载并解压elasticsearch
elasticserach下载地址
(以下以安装到/usr/local/elasticsearch-1.4.4为例)
4. 安装插件bigdesk和elasticsearch-head
自动安装(需联网):
cd /usr/local/elasticsearch-1.4.4
bin/plugin -install mobz/elasticsearch-head
bin/plugin -install lukas-vlcek/bigdesk
手动安装:
把下载好的两个插件包分别解压到以下路径:
/usr/local/elasticsearch-1.4.4 /plugins/bigdesk/_site
/usr/local/elasticsearch-1.4.4 /plugins/head/_site
5. 配置elasticsearch.yml
(如果有多台机器,应用相同的配置)
此yml配置文件样例来自moloch包中(molocah/db/elasticsearch.yml.sample),elasticsearch中自带的yml配置文件是默认完全没有开启任何配置的,所以不用这个。以下把moloch下载解压到/usr/local/moloch为例
cp /usr/local/moloch/db/elasticsearch.yml.sample /usr/local/elasticsearch-1.4.4/config/elasticsearch.yml
官网注解需要设置的项为以下:
• set cluster.name to something unique
• set node.name to ${ESHOSTNAME}
• set node.maxlocalstoragenodes to number of nodes per machine
• set index.fielddata.cache: node
• set indices.fielddata.cache.size: 40%
• set path.data and path.logs
• set gateway.type: local
• set gateway.recoverafternodes should match the number of nodes you will run
• set gateway.expected_nodes to the number of nodes you will run
• disable zen.ping.multicast
• enable zen.ping.unicast and set the list of hosts
以单node为例实际做的修改:(elasticsearch可配置集群,集群下的配置项还有待研究)
node.max_local_storage_nodes: 1
gateway.recover_after_nodes: 1
gateway.expected_nodes: 1
discovery.zen.minimum_master_nodes: 1
#discovery.zen.ping.unicast.hosts: ["node1", "node2", "node3", "node4"]
path.data
,path.logs
不指定默认是在elasticsearch的安装目录下,data用于存储索引数据,logs为运行日志
6. 创建elasticsearch启动脚本
cp /usr/local/moloch/db/runes.sh.sample /usr/local/elasticsearch-1.4.4/runes.sh
根据实际情况修改路径以及HEAP_SIZE
大小(原文件指定为20G,根据运行机器的内存,不能超过32G)
(可能需要把JAVA_OPTS
那行注释掉,如果运行不报JAVA_OPTS
相关错误则不用注释掉)
把第一行 export ES_HOSTNAME
后面的a去掉(此步将hostname加上一个a赋给ES_HOSTNAME
,运行一个实例的话hostname就是唯一的了,可以把用于区别的a, b去掉)
目前只运行一个elasticsearch node进程,因此把sleep 2以及之后的都注释掉
7. 运行
(依赖perl,可能需要install cpan,再用cpan安装缺失模块 eg install HTTP::Request::Common也可下载好相应的deb包安装)
运行:sh runes.sh
打开浏览器localhost:9200会有json信息输出
访问localhost:9200/_plugin/head确认status是绿色
在moloch路径下运行初始化脚本:
cd /usr/local/moloch
db/db.pl localhost:9200 init
再次刷新localhost:9200/_plugin/head确认status仍然是绿色
安装capture
(在/usr/local/moloch目录下):
1.安装系统依赖
自动安装(需联网):
centOS:
yum install wget curl pcre pcre-devel pkgconfig flex bison gcc-c++ zlib-devel e2fsprogs-devel openssl-devel file-devel make gettext libuuid-devel perl-JSON bzip2-libs bzip2-devel perl-libwww-perl libpng-devel xz libffi-devel
ubuntu:
apt-get install wget curl libpcre3-dev uuid-dev libmagic-dev pkg-config g++ flex bison zlib1g-dev libffi-dev gettext libgeoip-dev make libjson-perl libbz2-dev libwww-perl libpng-dev xz-utils libffi-dev
手动安装:
下载好所有依赖的deb包,执行dpkg –i *.deb
2.安装第三方软件
一共有五个第三方软件
自动安装(需联网):
运行./easybutton-build.sh
会自动下载并安装(注:yara在GoogleCode上,联网下载可能会被墙)
手动安装:
下载好所需的软件包,放在moloch/thirdparty
目录下,然后执行./easybutton-build.sh
会自动安装
如果想每个包单独安装,参考以下:
glib: ./configure --disable-xattr --disable-shared --enable-static --disable-libelf --disable-selinux
yara: ./configure --enable-static
MaxMind GeoIP: ./configure --enable-static
libpcap: ./configure --disable-dbus
libnids: ./configure --disable-libnet --disable-glib2
3. configure
需用—with-<foo>
指定第三方软件的位置
(XXX为包对应的名称)
./configure --with-glib2=/usr/local/moloch/thirdparty/XXX --with-yara=/usr/local/moloch/thirdparty/XX --with-GeoIP=/usr/local/moloch/thirdparty/XXX --with-libpcap=/usr/local/moloch/thirdparty/XXX --with-libnids=/usr/local/moloch/thirdparty/XXX
4. make
make
安装viewer
cd /usr/local/moloch/viewer
npm update
npm update需要联网下载依赖的modules,也可以直接把所有依赖的modules下载好放在/usr/local/moloch/viewer/node_modules
目录下,则不必再执行npm update
命令
配置
1.拷贝文件
下载好以下三个文件,并拷贝到moloch路径下
cp GeoIP.dat /usr/local/moloch
cp GeoIPASNum.dat /usr/local/moloch
cp ipv4-address-space.csv /usr/local/moloch
2.修改/usr/local/moloch/config.ini
文件
elasticsearch=localhost:9200 //hostname:port
#certFile=moloch.cert
#keyFile=moloch.key
interface=eth0 //确定网卡名称
pcapDir = /usr/local/moloch/pcap //指定存储pcap文件的路径(要预先mkdir建好)
dropUser=root //指定用户和用户组,要有写pcapDir的权限
dropGroup=root
3.为web访问添加用户
修改viewer/config.js
:
configFile: "/usr/local/moloch/config.ini"
cd viewer
node addUser.js <username> <nickname> <password> --admin
4.修改db/daily.sh
文件:
略
运行
1. elasticsearch的配置运行参见二的5、6、7部分
2. 启动capture&viewer
启动capture:
cd /usr/local/moloch
./capture/moloch-capture –c config.ini
启动viewer:
cd /usr/local/moloch
node viewer/viewer.js –c config.ini
打开浏览器localhost:8005即可看到moloch的web端运行界面
3. 导入离线pcap文件
cd /usr/local/moloch
./capture/moloch-capture –R /offline-pcap-dir <--recursive> <--copy>
--recursive
可以遍历子目录
--copy
可以将pcap文件拷贝到config.ini中指定的pcapDir