marcelofmatos/phpnetmap
GitHub: marcelofmatos/phpnetmap
基于 PHP 和 SNMP 协议的网络设备拓扑映射与端口监控 Web 应用,帮助运维人员可视化以太网连接并管理交换机端口状态。
Stars: 51 | Forks: 17
# PHPNetMap
[README.pt-BR](https://github.com/marcelofmatos/phpnetmap/blob/master/README.pt-BR.md)
用于网络设备监控的 PHP 软件,支持
SNMP v(1/2c/3) 协议。已在 3Com/HP、ProCurve、Dell 和 Extreme 设备上通过测试。
其他一些支持 SNMP 的型号也能正常工作。
框架采用 [yii](http://www.yiiframework.com/),并使用了
[Bootstrap](http://www.yiiframework.com/extension/bootstrap)
[Colorpicker](http://www.yiiframework.com/extension/colorpicker) 和
[CAdvancedArBehavior](http://www.yiiframework.com/extension/cadvancedarbehavior)。
地图功能使用了 JavaScript [D3](http://d3js.org/) 库。
## 工作原理
PHPNetMap 根据 [FIB](https://en.wikipedia.org/wiki/Forwarding_information_base)
或交换机的 CAM 表以及设备的 [ARP](https://en.wikipedia.org/wiki/Address_Resolution_Protocol) 表
来显示已连接的主机。您可以通过搜索表单在多台
设备中查询这些表。通过地图视图,您可以查看主机之间的连接情况,并且每个主机都有一个界面显示端口状态及其
各自连接的主机。您可以查看端口的操作状态,以及
在支持 dot1dStpPortState OID 的交换机上查看 [Spanning Tree Protocol](https://en.wikipedia.org/wiki/Spanning_Tree_Protocol)
的状态。使用具有读/写权限的 SNMP community,您可以更改 ifAdminStatus 或设置 ifAlias。
# PHPNetMap 与 Docker
[](https://microbadger.com/images/marcelofmatos/phpnetmap "在 microbadger.com 上获取您自己的 image badge")
我创建了一个包含所有配置的 Docker image,可直接运行 PHPNetMap,
可在 [Docker Hub](https://hub.docker.com/r/marcelofmatos/phpnetmap/) 上获取。
使用项目根目录下的 docker-compose.yml,您只需在项目
目录中运行 `docker-compose up` 命令即可下载 image 并启动
系统。请注意服务器配置,确保以生产模式运行(例如,在 ADMIN_PASSWORD
环境变量中设置密码)。根据需要修改 docker-compose.yml。
## 安装 Docker
```
curl -ssl https://get.docker.com/ | sh
```
创建并运行单个 container
```
docker run -p 80:80 --name=server1 marcelofmatos/phpnetmap
```
打开 Web 浏览器并访问 http://;如果 `docker run` 是在本地计算机上执行的,请访问 http://localhost
HTTP 用户名为 'admin',密码为 ADMIN_PASSWORD 环境变量中设置的字符串。
如果您希望在其他端口运行 container:
```
docker run -p 8081:80 --name=server1 marcelofmatos/phpnetmap
```
然后打开 http://localhost:8081
管理 container:
```
docker start server1
docker stop server1
```
设置 HTTP 用户名和密码:
```
docker run -p 80:80 --name=server1 -e ADMIN_USER=admin -e ADMIN_PASSWORD=pnm marcelofmatos/phpnetmap
```
如果未设置 ADMIN_USER,则默认值为 'admin'。
如果未设置 ADMIN_PASSWORD,系统将设置一个随机值并将其打印在 container 日志中。
查看 container 日志
```
docker logs server1
```
更多信息请参阅 https://docs.docker.com/engine/getstarted/
## 构建 image(multi-arch)
该 image 是基于官方 `php:7.4-apache` 基础镜像,通过本仓库中的 `Dockerfile` 构建的,因此它可以同时在 **linux/amd64** 和
**linux/arm64**(Raspberry Pi、Apple Silicon、ARM 服务器)上运行。
要在本地为这两个平台构建并推送到 registry:
```
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/marcelofmatos/phpnetmap:dev --push .
```
为当前主机构建单架构 image 并在本地加载:
```
docker build -t phpnetmap .
docker run -p 80:80 phpnetmap
```
检查发布的 manifest(列出 `amd64` 和 `arm64`):
```
docker buildx imagetools inspect ghcr.io/marcelofmatos/phpnetmap:latest
```
## 结合 docker-compose 使用
使用以下命令安装 docker-compose
```
apt-get install python-pip
pip install docker-compose
```
运行 [docker-compose.yml](https://github.com/marcelofmatos/phpnetmap/blob/master/docker-compose.yml) 中的配置:
```
docker-compose up
```
运行特定的 YML 文件,例如 [docker-compose-multiple-servers.yml](https://github.com/marcelofmatos/phpnetmap/blob/master/docker-compose-multiple-servers.yml):
```
docker-compose -f docker-compose-multiple-servers.yml up
```
# 服务器
该软件已在 Debian 和 Ubuntu Server 上经过测试,并安装了以下
软件包:
* apache2
* libapache2-mod-php5
* php5-snmp
* php5-sqlite
* php-apc
* snmpd
* sqlite3
登录信息配置在 .htaccess 和 .htpasswd 中,因此必须配置 apache 以
读取这些指令。
# 截图
## 主页

## 主机和网络地图

## 流量端口

# 参考资料
* http://www.yiiframework.com/
* http://d3js.org/
* https://docs.docker.com/engine/getstarted/
* https://docs.docker.com/engine/installation/
* https://docs.docker.com/compose/compose-file/
标签:Docker, Docker 部署, ffuf, OpenVAS, PHP, SNMP监控, 以太网映射, 安全防御评估, 流量捕获, 网络拓扑, 网络运维, 请求拦截