MHN开源蜜罐安装踩坑以及golang升级

mhn安装

最近在研究蜜罐,发现了mhn这个项目,想要部署一下试试,但是在安装过程中遇到了一些困难,本文记录了这一过程,供像我一样的小白参考。

github 的项目文档告诉我,mhn 不支持ubuntu16 ,而我的服务器版本都是ubuntu17 ,为了避免踩坑,我选用了和官方测试系统一样的ubuntu12.04 ,事实证明这个系统确实很古老,第一件事是安装ssh ,结果apt-get 不能用,主要是默认源已经不可用。
换源方式请参见 http://blog.csdn.net/inslow/article/details/54378350

换源成功后,系统正常了,根据官方说明进行安装:

sudo apt-get install git -y
cd /opt/
sudo git clone https://github.com/threatstream/mhn.git
cd mhn/
sudo ./install.sh

这些步骤一气呵成,然而根据官方说明检查安装的程序是否正确运行时,

sudo /etc/init.d/nginx status
sudo /etc/init.d/supervisor status
sudo supervisorctl status

发现两个fatal,理论上应该是这样的

geoloc                           RUNNING    pid 31443, uptime 0:00:12
honeymap                         RUNNING    pid 30826, uptime 0:08:54
hpfeeds-broker                   RUNNING    pid 10089, uptime 0:36:42
mhn-celery-beat                  RUNNING    pid 29909, uptime 0:18:41
mhn-celery-worker                RUNNING    pid 29910, uptime 0:18:41
mhn-collector                    RUNNING    pid 7872,  uptime 0:18:41
mhn-uwsgi                        RUNNING    pid 29911, uptime 0:18:41
mnemosyne                        RUNNING    pid 28173, uptime 0:30:08

这里感谢 jackghq大神
他为两个fatal找到了解决方案,参见 http://blog.csdn.net/jackghq/article/details/56281236
在大神的帮助下,我瞬间解决了一个fatal ,只是另一个需要go get

我首先求助同学,装了个open 干你懂的事,然后发现没有装go
自信满满进行了apt-get install golang ,然后发现go get 报错。。。
"crypto: requested hash function is unavailable"

golang升级

google 告诉我应该是go的版本太低
go version 一看果然是go1 ,据说go1.2 之后就没有问题了。
之后,我就开始了升级golang 之路,放一个官方链接 https://golang.org/dl/

一开始想着自己编译,结果最新的1.9在编译过程中报错,说是1.4版本以上的需要特别安装什么组件,我直接选择了去编译1.2版本,然而,在编译的过程中出现了

--- FAIL: TestParseInSydney (0.00 seconds)
    time_test.go:560: ParseInLocation(Feb 01 2013 EST, Sydney) = 2013-02-01 00:00:00 +0000 EST, want 2013-02-01 00:00:00 +1100 AEDT
--- FAIL: TestLoadFixed (0.00 seconds)
    time_test.go:1426: Now().In(loc).Zone() = "-01", -3600, want "GMT+1", -3600

据说是澳大利亚的时区改了一下名字,然而一个tzdata 的包的老版本没有改,我们的ubuntu12.04 显然是老版本,14年之后的包都改对了,这时我选择了放弃治疗,直接下载编译好的包。

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
这个包解压后,小白并不知道如何替换原有的系统软件,于是在
https://studygolang.com/articles/900 学得了以下配置

export GOROOT=yourpath/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin/
export GOTOOLS=$GOROOT/pkg/tool/
export PATH=$GOBIN:$GOTOOLS:$PATH

这时,go version是1.9了。然而,我最初把mhn 装在了/opt 下,所以需要
sudo go get
但是默认export 不会作用到sudo 的时候
http://blog.sina.com.cn/s/blog_4da051a60102uyvg.html 说明了这一问题的原因,
由于有权限问题,直接sudo vi /etc/sudoers 会无法修改,这里提供简单的方法
sudo visudo 进入nano 2.2.6
Defaults env_reset 改为 Defaults !env_reset
此时,sudo 下依旧找不到go ,所以在
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
一行手动添加$GOBIN:$GOTOOLS:
这时,终于我的sudo go get 运行正确。
中间还一度连不上github, 但是最终还是成功搞定。

xxx@svr:/opt/honeymap/server$ sudo go get
  # cd .; git clone https://github.com/fw42/go-hpfeeds /opt/honeymap/server/src/github.com/fw42/go-hpfeeds
Cloning into '/opt/honeymap/server/src/github.com/fw42/go-hpfeeds'...
error: Failed connect to github.com:443; Connection timed out while accessing https://github.com/fw42/go-hpfeeds/info/refs
fatal: HTTP request failed
package github.com/fw42/go-hpfeeds: exit status 128
xxx@svr:/opt/honeymap/server$ sudo go build
honeymap.go:5:2: cannot find package "github.com/fw42/go-hpfeeds" in any of:
    /opt/go/src/github.com/fw42/go-hpfeeds (from $GOROOT)
    /opt/honeymap/server/src/github.com/fw42/go-hpfeeds (from $GOPATH)
xxx@svr:/opt/honeymap/server$ sudo go get
xxx@svr:/opt/honeymap/server$ sudo go build
xxx@svr:/opt/honeymap/server$

最后,sudo supervisorctl start honeymap
终于所有服务都是running

本文在此特别感谢提供解决方案和教程的各位大神。

你可能感兴趣的:(蜜罐系统相关)