nikolas-trey/LANGhost

GitHub: nikolas-trey/LANGhost

LANGhost 是为 Linux 下的 NetworkManager 提供本地网络匿名性强化与运行时防护的开源工具。

Stars: 0 | Forks: 0


# LANGhost ## Linux 本地网络匿名性强化工具

## 描述 LANGhost 是一个用于 NetworkManager 管理系统的 Linux 匿名性强化层。它在连接建立过程中最小化跨多个网络表面的身份泄露,强制执行以隐私为中心的连接配置,并在运行时检查检测到不安全条件时终止或隔离连接。 ## 功能 - 在激活前随机化 MAC 策略。 - 在激活前分配随机的 DHCP 主机名。 - 为 NetworkManager 派生的标识符应用每次激活的身份种子。 - 强化 DHCP 身份行为。 - 启用更强的 IPv6 隐私行为和稳定的隐私地址生成。 - 禁用可能在受管理链路上暴露系统身份的本地发现功能。 - 使用 `tc` 在建立过程中隔离接口(通过丢弃过滤器)。 - 验证激活后的运行时状态并在失败时触发熔断机制。 ## 隐私强化范围 当前设计专注于减少以下方面的暴露: - 管理链路上硬件 MAC 的重复使用 - DHCP 主机名泄露 - 通过稳定的 IAID 导致的 DHCP 客户端标识符重复使用和租约固定 - IPv6 接口/地址持久性 - 本地发现和邻居识别表面,例如 mDNS、LLMNR 和 LLDP ## 组件 - `/usr/local/sbin/LANGhost-connect` — 包装器,用于应用隐私设置、隔离接口、激活连接并验证激活后状态。 - `/etc/NetworkManager/dispatcher.d/10-LANGhost` — 调度器验证器,用于检查活动连接并在验证失败时触发熔断。 - `/usr/local/sbin/LANGhost-disable-killswitch` — 恢复辅助工具,用于移除隔离并尝试恢复接口可用性。 - `/etc/NetworkManager/dispatcher.d/hostnames.txt` — 用于 DHCP 主机名随机化的主机名池。 - `/etc/NetworkManager/conf.d/90-LANGhost.conf` — 项目安装的 NetworkManager 配置文件。 ## 应用的隐私控制 当 LANGhost 准备一个受管理的连接时,它会配置 NetworkManager 应用以隐私为导向的设置,例如: - 受支持的 Wi‑Fi 和以太网配置文件中随机化的克隆 MAC 行为 - 随机化的 DHCP 主机名选择 - 用于派生标识符的连接身份种子轮换 - 使客户端 ID 跟随已随机化的 MAC 的 MAC 派生 DHCP 客户端标识符 - 每次会话随机的 DHCP IAID(IPv4 和 IPv6)以防止租约固定 - IPv6 稳定隐私地址生成和临时地址优先 - 在受保护的连接上禁用 mDNS、LLMNR 和 LLDP ## 优势 - 减少连接启动期间的标识符泄露。 - 降低意外硬件身份重复使用的可能性。 - 强化多个标识符表面,而不仅依赖 MAC 随机化。 - 通过每次会话随机化 DHCP 主机名和 IAID 来防止 DHCP 租约固定。 - 添加运行时验证,确保隐私设置被检查而不仅仅是请求。 - 在预期未满足时熔断以限制不安全操作。 - 通过日志和恢复实现可重复、可观察的强化。 ## 熔断机制行为 如果运行时验证失败,LANGhost 将通过以下操作尝试熔断: - 应用 `tc` 入口和出口丢弃过滤器 - 在 NetworkManager 中断开设备 - 关闭接口 - 在可用时通过 `rfkill` 阻止 Wi‑Fi - 在支持的情况下通过 sysfs 将接口从其内核驱动程序解绑 这旨在快速包含不安全连接,并防止在违反策略的身份状态下继续运行。 ## 安装 运行: ``` sudo bash install.sh ``` 这将安装: - `/etc/NetworkManager/dispatcher.d/10-LANGhost` - `/etc/NetworkManager/dispatcher.d/hostnames.txt` - `/usr/local/sbin/LANGhost-connect` - `/usr/local/sbin/LANGhost-disable-killswitch` - `/etc/NetworkManager/conf.d/90-LANGhost.conf` 安装程序还会在全局范围内启用随机的 Wi‑Fi 扫描 MAC 行为并禁用 IPv6 DHCP 主机名发送。 ## 要求 必需: - 带 NetworkManager 的 Linux - `nmcli` - `iproute2` 中的 `tc` - 根权限 推荐: - 用于验证物理与活动 MAC 状态的 `ethtool` - Wi‑Fi 系统上的 `rfkill` ## 用法 首选方式: ``` sudo LANGhost-connect ``` 也支持: ``` sudo LANGhost-connect sudo LANGhost-connect --select sudo LANGhost-connect ``` ## 日志与诊断 日志: ``` /tmp/LANGhost.log ``` 诊断示例: ``` cat /tmp/LANGhost.log sudo tc -s qdisc show dev sudo tc -s filter show dev ingress sudo tc -s filter show dev egress ``` ## 恢复 禁用熔断机制: ``` sudo LANGhost-disable-killswitch ``` 或针对特定接口: ``` sudo LANGhost-disable-killswitch wlp2s0 ``` ## 限制 LANGhost 改进了受管理 Linux 连接上的匿名性卫生,但它无法也不能保证完美的匿名性。 重要限制包括: - 某些硬件、固件、驱动或无线电级行为可能超出项目控制范围。 - 带外管理活动或更低层级的无线行为仍可能暴露标识符。 - 受保护的 NetworkManager 管理接口之外的流量不受保护。 - 应用层行为、DNS 选择、浏览器指纹识别和流量分析仍是独立问题。 - 某些隐私导向的设置可能会降低与期望本地发现功能或特定 DHCP 行为的网络的兼容性。 准确的说法是:LANGhost 是一个 Linux 网络匿名性强化层,而不是正式的匿名性保证。 ## 最佳实践 - 在需要熔断行为时,请使用 `LANGhost-connect` 而非直接的 `nmcli connection up`。 - 在远程依赖此设置之前,在本地硬件上测试恢复。 - 在部署期间检查 `/tmp/LANGhost.log`。 - 在 Wi‑Fi 和以太网环境中验证行为。 - 将 LANGhost 与可信 DNS、端点强化和流量层隐私控制结合使用,以获得更强的整体隐私。 ## 卸载 ``` sudo rm -f /etc/NetworkManager/dispatcher.d/10-LANGhost \ /etc/NetworkManager/dispatcher.d/hostnames.txt \ /usr/local/sbin/LANGhost-connect \ /usr/local/sbin/LANGhost-disable-killswitch \ /etc/NetworkManager/conf.d/90-LANGhost.conf sudo systemctl restart NetworkManager ``` ## 许可证 根据 **MIT 许可证** 分发。完整条款请参见 [`LICENSE`](LICENSE)。
标签:DHCP匿名, dispatcher脚本, fail-closed机制, IPv6隐私地址, Linux匿名, LLDP防护, LLMNR防护, MAC地址随机化, mDNS防护, NetworkManager, PB级数据处理, tc流量控制, 主机名随机化, 安全运维, 局域网匿名, 应用安全, 本地发现防护, 杀开关, 流量隔离, 系统加固, 网络匿名, 网络安全, 网络硬化, 网络隐私工具, 身份泄漏防护, 隐私保护