如何打造一个网络扫描分析平台 —— Part I

admin 2021年11月18日10:58:50评论76 views字数 2920阅读9分44秒阅读模式

如何打造一个网络扫描分析平台 —— Part I

简介


随着网络越来越发达,网络中的各种流量也不断增多,搜索引擎,测绘引擎,恶意扫描探测,网络蠕虫等会不断扫描公网服务器以完成自身的目的。


这一系列教程介绍如何一步步搭建一个针对网络扫描的分析平台,以分析识别各种扫描流量,找到是哪些ip在进行扫描?这些扫描的目的是什么?


现阶段的实现效果如下:


如何打造一个网络扫描分析平台 —— Part I



如何打造一个网络扫描分析平台 —— Part I



如何打造一个网络扫描分析平台 —— Part I


如何打造一个网络扫描分析平台 —— Part I


示例网站



本篇为系列第一篇: 如何搭建分布式的扫描日志收集系统


技术选型


收集扫描日志要做到不被扫描器发现识别为蜜罐,并且提供简单的部署方式,方便扩展和启停,最好占用较少的系统资源,这样可以节约日志收集节点的费用和维护成本。


扫描日志收集节点最好分布在各个国家,这样观测点会更全面。

最终选择使用FaPro,通过FaPro在全球多个国家部署扫描日志收集器,可以针对每个日志收集节点开启不同的服务,模拟正常的设备,防止被扫描器识别、发现。

FaPro占用资源较少,1核1G最低配置的云服务器就可以满足需求,节约节点成本。

日志存储使用Elasticsearch,方便日志检索与分析。


如何打造一个网络扫描分析平台 —— Part I


自动化部署与监控使用ansible,方便批量部署日志收集节点。


准备工具


linux服务器若干台(最低配置即可),用于放置扫描数据收集器(FaPro),最好是分布在不同区域的服务器,这样观测点会更全面,关闭现有服务器上的所有服务端口 避免收集的日志记录被干扰。


日志存储服务器,采用Elasticsearch进行日志存储与分析, 建议8G内存+200G存储,或者直接使用云服务商的Elastic服务。

本地安装ansible,用于批量部署扫描数据收集节点。示例中的本地环境使用ubuntu系统,如果使用其它系统,请参考ansible文档进行修改。


配置设置


本地ansible的配置


设置.ssh/config中host,添加每台服务器的配置项:


Host sensor01 #主机名
HostName x.x.x.x #你的ip地址
Port 22
User root

Host dbserver
HostName 1.2.3.4
Port 22
User root

如果使用秘钥认证,使用ssh-add 添加私钥,在终端中使用ssh dbserver应该可以登录服务器。


修改~/.ansible.cfg配置文件:

[defaults]
gather_timeout = 60
inventory = $HOME/hosts.ini
private_key_file = $HOME/private_key.pem # private key file

修改~/hosts.ini指定主机组:

[sensors] #日志收集器的服务器列表,对应.ssh/config中的主机名
sensor01
sensor02
sensor03

[dbs]
dbserver

克隆FaPro, 使用自动化配置脚本:

git clone https://github.com/fofapro/fapro

# 进入scripts文件夹, 使用相关的脚本及配置
cd scripts

日志服务器的配置


使用docker搭建ELK服务,日志存储服务器上安装docker以及docker-compose

复制docker-compose.yml到日志存储服务器,

修改ELASTIC_PASSWORD设置项的密码,根据需要修改公网映射的端口,

修改network.publish_host为日志存储服务器的公网ip,防止公网访问失败。

然后使用docker-compose启动ELK服务:

docker-compose up -d

做好防火墙配置,确保所有sensor服务器都可以访问es服务器。


扫描数据收集节点的配置


每个收集节点使用单独的配置文件并且开启不同的服务用于模拟真实设备。

设置fapro的配置文件,每个配置的文件名与主机名相同,比如sensor01.json:


{
"version": "0.40",
"network": "127.0.0.1/32",
"network_build": "localhost",
"hostname": "sensor01",
"use_logq": true,
"storage": "es://http://elasticsearch:9200",
"cert_name": "unknown",
"exclusions": ["1.1.1.1"],
"syn_dev": "any",
"hosts": [
{
"ip": "0.0.0.0",
"handlers": [
{
"handler": "ftp",
"port": 21,
"params": {
"accounts": [
"ftp:123456"
],
"welcome_message": "ProFTPD Server (ProFTPD)"
}
}
]
}
],
"templates": null
}

exclusions里可以加上es服务器的ip地址,不记录es服务器ip的日志。


下载最新版本fapro到本地,保存为fapro.tgz:

wget https://github.com/fofapro/fapro/releases/latest/download/fapro_linux_x86_64.tar.gz -O fapro.tgz

tar xvzf fapro.tgz

针对web服务,需要进行网站克隆,首先安装chrome浏览器和chromedriver,然后执行dumpWeb,比如针对bing.com:

./fapro dumpWeb -u https://www.bing.com -a bing
[WebDumper] dump https://www.bing.com to webapps/bing over.

如果要模拟一个路由器,可以使用fofa搜索路由器,找到一个相应的目标,再把登录页面克隆下来。


可以使用自动化配置代码中的ipclone.py脚本,直接从fofa复制ip服务配置:


使用方式先设置FOFA_EMAIL和FOFA_KEY环境变量,下载好fapro, 然后运行:

# 查看使用帮助
./ipclone.py -h

./ipclone.py -i xx.xx.xx.xx -n sensor01

如何打造一个网络扫描分析平台 —— Part I


确保每个sensor服务器都有一个对应的配置文件,然后使用ansible配置所有sensor服务器:

ansible-playbook update_sensor.yml
# 或者指定只更新某些服务器,比如只配置sensor01和sensor02
ansible-playbook -l sensor01,sensor02 update_sensor.yml

如何打造一个网络扫描分析平台 —— Part I


sensor服务器的FaPro版本更新:
下载最新版的FaPro,重新执行update_sensor.yml即可


结果监控


kibana查看日志收集效果


创建一个host.keyword的柱状图,可以查看每个sensor的日志收集量:


如何打造一个网络扫描分析平台 —— Part I


sensor监控


使用ansible对sensor运行状况进行监控,如果服务意外停止,则重新启动。

ansible-playbook check.yml

可以添加到crontab中定时执行。


或者自行搭建zabbix监控体系。


结语


至此,扫描日志收集平台已经搭建完毕,下一步就是对收集的日志进行分析,找到感兴趣的目标。


如何打造一个网络扫描分析平台 —— Part I

原文始发于微信公众号(疯猫网络):如何打造一个网络扫描分析平台 —— Part I

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月18日10:58:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何打造一个网络扫描分析平台 —— Part Ihttp://cn-sec.com/archives/639275.html

发表评论

匿名网友 填写信息