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流量控制, 主机名随机化, 安全运维, 局域网匿名, 应用安全, 本地发现防护, 杀开关, 流量隔离, 系统加固, 网络匿名, 网络安全, 网络硬化, 网络隐私工具, 身份泄漏防护, 隐私保护