关于在线安装和离线安装的配合方式,在本文中不再赘述。基本就是准备在线、离线两个一模一样的环境,在在线环境中边安装边借助yumdownloader、wget等解析依赖和下载安装包,然后再离线环境中构建本地repo,利用yum进行直接安装。
具体细节,可以参考 Suricata 离线部署 这篇文章。
另外,本文的安装整体思路基本借鉴了 Arkime3(moloch)安装与配置 这篇文章,但是将环境迁移到了CentOS 8 Stream中,并且主要还是为了在离线环境中安装所记录。
转向CentOS8,纯粹是因为要在离线环境下装一台古董机器,古董到主板似乎不支持UEFI设备启动。而CENTOS7的everything ISO高达7G多,小一点的标准ISO有4.8G,刚好超过一张标准DVD 4.7G的容量一丢丢。这搞得……如果不去买盒DVD9,估计是装不了了。而且,就算是DVD9,也不知道我的古董光驱能不能读出来。无奈,只能转向CENTOS 8 STREAM。因为好歹CENTOS8提供了一个boot版的安装镜像,只需要800M,一张DVD还是能刻下的。
CentOS官方网站进去,选择CentOS Steam,8,x86_64,随便选一个镜像地址进去就可以下载了。
至于安装过程,当然还是需要联网,好在可以先装好再离线,离线后用那个10G的ISO,可以构建本地的完整repo,用来进一步把yum-utils,createrepo装好。
既然CentOS升级了,Arkime咱也用最新的,当前最新的是Arkime3.4,直接到官网去下载rpm,当然这里似乎需要魔法,就是当你点下download看到一个小圈不停转、一直转的时候,就是提示你掏出魔法棒使用魔法了,注意念咒语的时候平卷舌和重音把握好,有效的话,应该能够看到下面的界面:
看到这个界面后面的操作其实就可以不用魔法加持了。直接到CentOS8下面下载,导入到要安装Arkime的系统中,可以用windows的SSH,也可以自己弄FTP,比如这篇文章有描述。如果是虚拟机,最好还是放在共享文件夹中,用vmhgfs-fuse映射。我这里是映射到/home/pig/share中。
直接安装一下试试,看看缺少啥依赖不……
可以看到,arkime在这里缺少的主要就3个依赖,分别是perl-JSON、perl-libwww-perl和perl-LWP-Protocol-https。使用yumdownloader解析并下载依赖包后安装。
依赖安装好以后,再执行arkime的安装就可以了。不过需要注意的是,这只是安装了arkime自身的一些组件,尚缺少elasticsearch,以及一些配置。而解决这一步的问题才是整个安装过程中比较复杂的部分。
至于如何安装elasticsearch,如何配置arkime,在/opt/arkime/bin/Configure这个脚本中列得很清楚了,建议直接读懂这个脚本,其实有用得行不多,看明白以后就知道后面的安装大致都干了什么,出错了也好处理。
最容易出错的地方(尤其是在离线安装时)是ElasticSearch的安装。
从官网上这里就可以看出,Arkime和ElastcSearch的版本是有一个配对关系的(实际就算版本号对准了,类型没对准也会转不起来,离线安装时我在这里卡了好久),所以还是不要自己去官网直接下载ES了,下不对很麻烦。我们可以借助这个Configure脚本,在在线安装的同时帮助我们直接下载对应版本的ES。
打开/opt/arkime/bin/Configure脚本,找到如下安装ES的这一行,复制一行后改一下命令,
把yum install改成wget,直接借用脚本中的ES下载链接,把对应版本的ES的rpm包给弄下来。
然后就可用用Configure进行ES的安装和Arkime的配置工作。
在此之前,先确定网络配置是正确的,最好使用手动配置IP,DHCP的IP地址每次开虚拟机都加1,很是崩溃:
并确认对应网络接口的名字,因为一会要填。
然后执行Configure,注意如下图的地方,第一个要填网卡接口名,第二个只能填yes,第三个填一个你自己的口令密码,好记不好记的无所谓,反正到现在也没让我输入第二次,然后就是下载和安装的时候,因为我们没有用-y选项,所以要敲两次Y,最后是GEO信息的下载,这里要选no,回头我们用前面参考那片博客的文章手动的配置它。
如果一切正常,主要是ES能够正确下载并安装的话,就会报告完毕,然后再GEO那个选项输入no后,基本就完事了,然后需要我们参考屏幕上返回的指示完成剩下的4、5、6、7、8、9步,这也很简单,复制对应的命令粘贴执行就好。
当然在systemctl start elasticsearch.service后,需要看看ES是否正常——有时虽然服务是开的,端口是开的,但是执行curl http://localhost:9200时就是看不到如下的结果,那么再继续往下就是没有意义的:
如果结果正确,可以执行第5步,初始化ES数据库,注意替换ESHOST为localhost;第6步,增加用户名和密码(这个会用来登录Arkime界面),密码记得用自己的,不要用我的:)
然后第7步,到这里,只要viewer的服务启动了,就可以再浏览器里输入http://localhost:8005登录arkime的界面了。但由于GEO还没配置号,capture服务应该无法正确启动,在arkime中还看不到实际采集的数据。
实际上,只要读懂了前面的Configure脚本,就能跟踪到此处是执行arkime_update_geo.sh,主要目的就是下载2个文件。从arkime_update_geo.sh直接拿出两个地址进行wget。
打开/opt/arkime/etc目录,下载下面两个地址的文件到该目录下:
1. https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv
2.https://raw.githubusercontent.com/wireshark/wireshark/master/manuf
其中,第二个地址下载下来的文件应该改名为oui.txt。另外,第二个地址比较魔幻,早上连不上晚上能连上,固网能连上移动网连不上,不知是不是DNS问题,所以如果不太好用的话,就再试试下面这个地址,没准更好使一点:
https://gitlab.com/wireshark/wireshark/-/raw/master/manuf
等一会应该就能看到数据上来了,比如再session界面……实在等得着急的话,ping一下主机看看,应该也就可以了:
离线安装的第一步,当然是建立本地repo;这个参考之前文章,不多说了,建库、清走原先的repo配置文件,新建local配置文件,清缓存、建缓存,5步走。
然后就可以愉快地安装缺少的3个依赖项了,perl-JSON,perl-libwww-perl,perl-LWP-Protocol-https:
安装arkime的时候也不用rpm了,因为已经建立了库,所以直接yum install arkime……什么?不知道后面接着写啥?直接tab键就知道了。是不是很清爽:)
同样,用这个办法也可以在安装ES前知道yum install的那个ES的全名是什么,先tab出来,不要回车,我们复制一下,后面有用……
vim /opt/arkime/bin/Configure,把前面提到的那行下载并安装ES的语句直接替换成这一句,保存。
执行/opt/arkime/bin/Configure,是不是继续很清爽? :)
装完以后,接着依葫芦画瓢4、5、6、7、8、9。当然,那两个文件要提前拷贝到/opt/arkime/etc文件夹下面
弄完基本就装好了,唯一不同的是,因为网络接口上只配置了固定IP地址而没有任何数据,所以虽然capture服务运转良好,但在arkime里其实现在是看不到数据的。
至于离线环境下的pcap的解析建索引操作,可以直接执行/opt/arkime/bin/下的capture,命令很简单,参考--help,只需要使用-R一类的参数指定cap文件的目录或者list文件的位置即可,其它使用默认设置就行,arikimecapture服务也没有必要启动。
当然,如果所需做索引的数据量比较大的话,需要考虑默认存储索引的地方容量是否够用问题,这个需要先停止elasticsearch的服务后,编辑/etc/elasticsearch/elasticsearch.yml文件,配置将path.data: /var/lib/elasticsearch这个目录配置到有足够容量的地方,并且开启相应的权限。
由于我的模拟环境拆掉了,所以这里没有办法再贴图。话说更改ElasticSearch的数据存放目录,有一个比较坑的地方:就是直接建立一个目录去替换/var/lib/elasticsearch,百分之百服务会启动失败的。一般来说原因在于自建的目录所属和权限不对。使用ls -l /var/lib/elasticsearch观察一下目录权限,并且保证自建目录的权限和它一致,这里有几点需要注意:
1. /var/lib/elasticsearch的ls结果是"drwxr-s--- elasticsearch elasticsearch”,表示其用户是elasticsearch user,组是elastic search和。
2. drwxr-s---,指该目录拥有者可以读写执行,所属组可以读和执行,并且拥有GUID一类的权限(就是这个S,大写的S代表有这些GUID一类什么的权限,小写s代表除此之外还有执行权限);所以,在使用chmod调整新建目录的权限时,应该使用"chmod 2750 目录名"命令。
3.新建目录的外面应该所属是root,因为/var/lib都是root的,保持一致。
这个实在就几句话,不想新开贴了,在这里mark一下。用vmware可以不必关注,直接拉边框就行,但是用hyperV实在难受。在CentOS下,可以执行如下命令:
grubby --update-kernel=ALL --args="video=hyperv_fb:1600x1280"
分辨率可以自设,硬件支持就好,还有就是那个乘号,是英文字母x,欸克斯,不是全角数学符号。