Linux 智能端口诱捕与内核级主动防御系统
专为 Linux 服务器打造的主动安全防御网关。支持自定义多端口与大范围诱饵探针,一旦感知未授权端口扫描或恶意嗅探,直接联动 Linux 内核下发iptables/ip route blackhole实施毫秒级硬丢包阻断,并提供纯原生的轻量 Web 控制台与威胁溯源大屏。
在任意 Linux 服务器(Ubuntu / Debian / CentOS / RHEL / Alibaba Cloud Linux / Rocky Linux)终端中,直接复制并执行下方一行命令即可完成全自动部署:
curl -fsSL https://raw.githubusercontent.com/Level6me/portguard/main/install.sh | bash或者使用 wget 一行命令:
wget -qO- https://raw.githubusercontent.com/Level6me/portguard/main/install.sh | bash
部署完成后,即可在浏览器中打开:
👉 http://<您的服务器IP>:9099
- 🚀 内核级毫秒阻断:基于
iptables INPUT首行丢弃 +ip route blackhole路由黑洞双重丢弃机制,拦截后攻击流量直接在内核层丢弃,0 额外 CPU 消耗。 - ⚡ 自研 Raw Socket 嗅探引擎:毫秒级解析 TCP 握手数据包,零外部重型依赖,资源占用极低(内存通常小于 30MB)。
- 🍯 多层级端口诱捕:支持单独设置典型高危端口(FTP/SSH/RDP/SMB/MSSQL/Redis/VNC/ES/MongoDB等),亦支持配置
1-60000大范围诱捕探针。 - 🏢 正常业务端口绝对优先级:四级防御架构确保用户业务端口(如 Web 80/443、自定义隧道端口等)100% 绝对放行,绝不误阻断。
- 🛡️ 智能运维白名单防误封:部署时自动捕获当前 SSH 运维来源 IP、网卡内网 IP 与本机回环,杜绝管理员误操作被拉黑。
- 🌐 轻量现代化 Web 控制台:
- 纯原生 Python 服务端驱动,零第三方重量级框架依赖
- 弹性流体响应式布局,完美适配手机移动端与桌面大屏
- 暗黑 (Dark) / 明亮 (Light) 双主题无缝切换与 Chart.js 图表实时重绘
- 🌍 全球威胁画像与 ASN 识别:自动异步查询攻击者国家、城市、ISP 运营商,生成地域攻击热力排行。
- 🙈 审计隐藏与多维过滤:支持在 IP 详情卡片一键全局隐藏指定 IP 的所有日志与统计,便于过滤内部测试流量。
- 📥 审计报表一键导出:支持一键导出完整的 CSV / JSON 安全事件清单与访问审计日志。
# 查看防御服务状态
systemctl status portguard.service
# 查看实时拦截日志流
journalctl -u portguard.service -f
# 重启防御系统
systemctl restart portguard.service
# 停止防御系统
systemctl stop portguard.service在终端执行以下命令,会自动拉取最新版本程序并平滑热重载,100% 完整保留您现有的策略配置 (config.json) 和黑名单/事件数据库 (data.db):
curl -fsSL https://raw.githubusercontent.com/Level6me/portguard/main/update.sh | bash或者使用部署脚本的更新参数:
curl -fsSL https://raw.githubusercontent.com/Level6me/portguard/main/install.sh | bash -s -- update
在终端执行以下命令即可将 PortGuard 防御服务、后台进程、systemd 服务单元及安装目录完全彻底删除:
curl -fsSL https://raw.githubusercontent.com/Level6me/portguard/main/uninstall.sh | bash或者使用已安装目录自带的卸载脚本:
sudo bash /opt/portguard/uninstall.sh
/opt/portguard/
├── sentry_daemon.py # 蜜罐监听引擎、内核阻断核心、SQLite 事件存储与 ASN 识别
├── web_server.py # 响应式控制台服务端 (纯 Python 原生无重型依赖)
├── config.json # 诱饵策略、白名单与防火墙动作配置文件
└── data.db # SQLite 本地轻量化事件审计与黑白名单库
- 为什么外部扫描无法触发拦截?
- 请确保在云服务商控制台的 「安全组」 中放行了诱饵端口(例如
21, 135, 445, 1433, 3389, 5900, 6379, 8888, 9200, 27017等)。
- 请确保在云服务商控制台的 「安全组」 中放行了诱饵端口(例如
- 如何确保自己的业务端口不被误封?
- 在 Web 控制台「策略中心」-「正常业务」中添加您的业务端口(如
80,443,4212等),系统将绝对放行外部合法访问。
- 在 Web 控制台「策略中心」-「正常业务」中添加您的业务端口(如
- 误封了管理员 IP 如何解除?
- 方式一:在 Web 控制台「内核黑名单池」或「拦截日志」中点击 「一键解封」;
- 方式二:在服务器终端执行
iptables -D INPUT -s <IP> -j DROP和ip route del blackhole <IP>/32。