beholder是一款简洁而小巧的系统,主要作用是通过监控端口变化来发现企业内部的信息孤岛。例如:运维或开发新部署了一台机器未通知安全。没有采用masscan+nmap的组合进行检测,原因是在实际的使用中发现,虽然masscan可以提高扫描速度,但是漏报的情况太严重了。最终还是只使用nmap来进行探测。
系统由 beholder_scanner
、 beholder_web
两个部分组成。这两个部分可以部署在一台机器上,也可以分开部署在不同的机器上。当前项目为 beholder_scanner
部分。beholder_web
部分可以查看这里
- beholder_scanner:对IP进行端口扫描、比较端口变化,可部署多个beholder_scanner来组成集群加快扫描速度。
- beholder_web:提供前端界面展示。
- Linux
- Windows
如果只是测试和尝鲜可以部署Demo版:
优点是部署简单,缺点是不利于扩展和管理。
依赖:项目运行依赖于mongodb和redis,所以需准备好mongodb和redis,mongodb和redis安装请参考:
常规部署步骤如下:
在 mongodb 服务器上新建 db 用户,这里新建了一个用户名为scan
密码为123456
的用户。
# mongo
> use admin
> db.createUser({user:'scan',pwd:'123456', roles:[{role:'readWriteAnyDatabase', db:'admin'}]})
> exit
把beholder_scanner项目下的db
文件夹导入 mongodb 。在 mongodb 服务器上执行如下命令:
# git clone https://github.com/zj1244/beholder_scanner.git
# cd beholder_scanner/db/
# mongorestore -u scan -p 123456 --authenticationDatabase admin -d portscan .
接下来你有两个选择:
源码部署请参考:
如准备好了mongodb和redis,只需要部署scanner和web即可。
分布式部署请参考:
建议准备至少两台机器,把mongodb和redis安装在一台机器上,另一台机器安装web端和scanner端。