Moloch 是一个由AOL开源的,能够大规模的捕获IPv4数据包(PCAP)、索引和数据库系统,由以下三个部分组成:
- capture :绑定interface运行的单线程C语言应用
- viewer :运行在capture主机上的node.js web应用
- elasticsearch : moloch的数据检索驱动
Moloch git地址 git主页上README
有较为详细的安装说明,以下是参照官方说明,我的安装记录,本章只为了快速搭建Moloch
,都是使用RPM包安装。
系统要求和环境搭建
- 存储数据包对机器的性能要求moloch提供了评估页面 Moloch Estimators
- 本次安装,找了一台陈旧的机器,4G 1333内存,i3CPU,150 interl SSD,一块500GB HDD,这个配置相对简陋,并且我把所有组件都安装在了一台机器上面,如果有条件的话,请把
Capture Machines
和Elasticsearch Machines
组件分开来安装,由于elasticsearch
相当吃内存,2G内存的机器基本带不起来。
- Linux 系统(官方支持Centos、ubuntu、OS x)
- JDK (elasticsearch依赖,推荐8u65)
- python(nodejs 运行依赖,一般系统都自带v2.7满足需求)
- nodejs(当前的moloch版本支持node)
- Moloch is no longer supported on 32 bit machines
- 内核4.X有助于抓包性能提升
安装elasticsearch
- ES可以选择在moloch安装时安装,也可以单独安装,我这边选择单独安装,从
elasticsearch
官网下载rpm包,下载地址,最新的elasticsearch
版本是v6.2.0,由于moloch支持较低版本,下载ealsticsearch-5.6.6
版本的RPM包 - 下载JDK
yum install -y wget curl perl-JSON perl-libwww-perl libyaml-devel ##依赖组件
wget http://iso.epoint.com.cn/JDK/jdk-8u65-linux-x64.rpm ##下载jdk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.6.rpm ##下载elasticsearch
rpm -ivh jdk-8u65-linux-x64.rpm ##安装jdk
rpm -ivh elasticsearch-5.6.6.rpm ##安装elasticsearch
systemctl daemon-reload ##重载修改过的配置文件
systemctl enable elasticsearch.service ##开机启动elasticsearch
systemctl start elasticsearch.service ##启动elasticsearch
安装Moloch
先去官网下载安装包Downloads,我下载的是Nightly版本,获取最新特性
下载地址wget https://files.molo.ch/builds/centos-7/moloch-nightly.x86_64.rpm ##下载moloch
rpm -ivh moloch-nightly.x86_64.rpm ##安装moloch
配置Moloch
/data/moloch/bin/Configure ##moloch基本配置
Found interfaces: lo;ens160
Semicolon ';' seperated list of interfaces to monitor [eth1] ens160 ##选择监听网卡,多个网卡用;隔开
Install Elasticsearch server locally for demo, must have at least 3G of memory, NOT recommended for production use (yes or no) [no] no ##本机寻找elasticsearch
Elasticsearch server URL [http://localhost:9200] http://localhost:9200 ##本机的elasticsearch的URL
Password to encrypt S2S and other things [no-default] moloch ##配置密码
Moloch - Creating configuration files
Not overwriting /data/moloch-nightly/etc/config.ini, delete and run again if update required (usually not), or edit by hand
Installing systemd start files, use systemctl
Moloch - Downloading GEO files
2018-02-07 19:29:06 URL:http://www.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz [2513493/2513493] -> "GeoIPASNum.dat.gz" [1]
2018-02-07 19:29:16 URL:http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNumv6.dat.gz [2896577/2896577] -> "GeoIPASNumv6.dat.gz" [1]
2018-02-07 19:29:22 URL:http://www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz [700469/700469] -> "GeoIP.dat.gz" [1]
2018-02-07 19:29:28 URL:http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz [1110013/1110013] -> "GeoIPv6.dat.gz" [1]
初始化、升级 Elasticsearch Moloch配置
/data/moloch-nightly/db/db.pl http://localhost:9200 init ##第一次安装初始化、或者想删除所有数据
/data/moloch-nightly/db/db.pl http://localhost:9200 upgrade ##升级moloch 数据包
添加admin账户
/data/moloch-nightly/bin/moloch_add_user.sh admin "Admin User" moloch --admin ##新增admin账户,密码是moloch
开启所有服务
systemctl enable molochcapture.service ##开机启动Capture
systemctl start molochcapture.service ##启动Capture
systemctl enable molochviewer.service ##开机启动Viewer
systemctl start molochviewer.service ##启动Viewer
日志查看
tail -f /data/moloch-nightly/log/capture.log
tail -f /data/moloch-nightly/log/viewer.log
数据清理
ES的数据增长根据流量大小决定,如果不定期清理ES数据,总有一天空间会写满,所以要定期清理ES数据
cd /data/moloch-nightly/db
vim daily.sh
#ES服务端口
ESHOSTPORT=127.0.0.1:9200
#保留ES日志七天
RETAINNUMDAYS=7
crontab -e
0 1 * * * sh /data/moloch-nightly/db/daily.sh >> /var/log/moloch/daily.log 2>&1
登入Moloch系统
访问http://molochhost:8005
user : admin
password : moloch
FAQ
-
Capture
服务抓取的数据包文件存储在/data/moloch-nightly/raw/ 目录下,如果流量大的化可以mount大一点的硬盘 - Elasticsearch由于是通过rpm包默认安装,数据文件存在路径
/var/lib/elasticsearch/nodes/0/indices
,可以修改elasticsearch.yml
配置文件path to data
,path to logs
,重启服务生效 - 镜像网卡开启混杂模式
ifconfig eth0 promisc
-
freeSpaceG = 5%
存放PCAP文件的空间重复使用的临界空间值 - 插入手动添加的PCAP文件
${moloch_dir}/bin/moloch-capture -c [config_file] -r [pcap_file]
- 无法启动molochcapture.service,
ERROR - pcap open failed - Couldn't open file: '/data/moloch-nightly/raw/localhost-180207-00000038.pcap' with Permission denied (13)
. 原因是用户问题,chown nobody:root raw/ ,设置nobody用户就可以了 -
path.data path.logs
设置了指定路径后,无法启动elasticsearch服务,原因是指定的路径权限是root,需要修改成elasticsearch
用户和组
网友评论