Sign inSign up

ad80a1/nmap-scanner

By ad80a1

Updated about 2 months ago

NMAP Web 在线扫描系统

Image
Networking
Security
0

274

ad80a1/nmap-scanner repository overview

NMAP 在线扫描系统

基于 nmap 的 Web 端口扫描平台,支持模板管理、扫描对比、服务分布、AI 助手

Python FastAPI License

截图

仪表盘服务分布
仪表盘服务分布

功能特性

  • 仪表盘 — 扫描统计、服务分布 Top8、趋势图、系统信息
  • 新建扫描 — 15 个预置模板 + 8 个扫描选项 + 高级参数 + 命令实时预览
  • 扫描结果 — 主机列表、端口详情、端口分布饼图
  • 扫描对比 — 同目标 diff:新增/消失/端口变更
  • 服务分布 — 按服务聚合主机数、饼图/柱状图、排序
  • AI 助手 — 浮动聊天面板,关联扫描数据自然语言分析
  • 通知推送 — 企业微信 / 飞书 Webhook,扫描完成自动推送
  • 认证鉴权 — JWT 登录、admin/viewer 角色
  • 系统设置 — nmap 配置、运行诊断、操作日志、备份恢复

快速开始

方式一:端口映射模式(推荐)

最通用的方式,适合所有 Linux 环境。

docker run -d \
  --name nmap-scanner \
  --restart unless-stopped \
  -p 8090:8090 \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  -e FRONTEND_URL=http://YOUR_IP:8090 \
  -v /usr/bin/nmap:/usr/bin/nmap:ro \
  -v scanner_data:/app/data \
  -v scanner_logs:/app/logs \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  ad80a1/nmap-scanner:latest

容器内已预装 nmap,如宿主机无 nmap 或 /usr/bin/nmap 为目录,可省略 -v /usr/bin/nmap 挂载。

访问 http://YOUR_IP:8090,默认管理员:admin / admin123

方式二:Host 网络模式

容器直接使用宿主机网络栈,性能最佳。

docker run -d \
  --name nmap-scanner \
  --restart unless-stopped \
  --network host \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  -e FRONTEND_URL=http://127.0.0.1:8090 \
  -v /usr/bin/nmap:/usr/bin/nmap:ro \
  -v scanner_data:/app/data \
  -v scanner_logs:/app/logs \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  ad80a1/nmap-scanner:latest

容器内已预装 nmap,如宿主机无 nmap 或 /usr/bin/nmap 为目录,可省略 -v /usr/bin/nmap 挂载。

访问 http://YOUR_IP:8090

方式三:Docker Compose
# 下载 docker-compose.yml
wget https://gitee.com/cncsrf/nmap-scanner-web/raw/main/docker-compose.yml

# 生成密钥并启动
export JWT_SECRET=$(openssl rand -hex 32)
docker compose up -d

方式对比

特性端口映射(-p)Host 网络
通用性✅ 所有 Linux⚠️ 仅 Linux
性能⚠️ 有 docker-proxy 开销✅ 无额外开销
端口隔离✅ 容器端口独立❌ 共享宿主机端口
FRONTEND_URLhttp://IP:8090http://127.0.0.1:8090
适合场景生产环境、多容器单容器、高性能需求

环境变量

变量必填默认值说明
JWT_SECRETJWT 签名密钥
FRONTEND_URL前端访问地址(含协议和端口)
NMAP_PATH/usr/bin/nmapnmap 可执行文件路径
JWT_EXPIRE_HOURS72JWT 过期时间(小时)

数据持久化

容器内 /app/data 存放 SQLite 数据库,/app/logs 存放日志。建议挂载 volume:

-v scanner_data:/app/data \
-v scanner_logs:/app/logs \

权限说明

扫描功能需要 NET_RAWNET_ADMIN 能力(用于 SYN 扫描等)。使用 --cap-add 授予,不要使用 --privileged

默认账号

  • 用户名:admin
  • 密码:admin123
  • ⚠️ 首次登录后请立即修改密码

更新

docker pull ad80a1/nmap-scanner:latest
docker stop nmap-scanner && docker rm nmap-scanner
# 重新运行上述 docker run 命令

常见问题

Q: docker-proxy 模式下端口不通?

# 检查 docker0 网桥
ip addr show docker0  # 应有 inet 172.17.0.1/16
ip route show | grep docker  # 应有 172.17.0.0/16 dev docker0

# 如缺失,修复后重启 Docker
ip addr add 172.17.0.1/16 dev docker0
ip route add 172.17.0.0/16 dev docker0
systemctl restart docker

Q: 扫描报 Permission denied?

确保使用了 --cap-add NET_RAW --cap-add NET_ADMIN--privileged

相关链接

License

MIT License

Tag summary

Content type

Image

Digest

sha256:8572225a7

Size

64.3 MB

Last updated

about 2 months ago

docker pull ad80a1/nmap-scanner