moloch安装配置指南

ps:所使用的es是2.4.2版本,node是4.6.2版本


2015-03-02

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.max
localstoragenodes 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.datapath.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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐