PeerGuardian Linux

来自 ArchWiki

PeerGuardian Linux (pgl) 是一个面向隐私的防火墙应用程序。它阻止与巨型阻止列表(数千或数百万个 IP 范围)中指定的主机的连接。 pgl 基于 Linux 内核 netfilter 框架和 iptables

一个更原生、高效的解决方案来实现相同的目的,是使用 ipset 内核模块,结合 pg2ipset 工具和 ipset-update 脚本。

安装

有两个可能的软件包可以安装pgl-cliAUR 仅包含守护程序和 CLI 工具,而 pglAUR 完整地配备了 GUI(使用 Qt 编写)。

配置

  • /etc/pgl/blocklists.list 包含用于检索各种阻止列表的 URL 列表。
  • /etc/pgl/pglcmd.conf,默认情况下为空,会覆盖 /usr/lib/pgl/pglcmd.defaults 中存在的默认设置。
  • /etc/pgl/allow.p2p 列出了不会被过滤的自定义 IP 范围。

/etc/pgl/blocklists.list 中的默认列表阻止了许多潜在的合法 IP 地址。 建议用户运用最佳判断力,并参考 I-Blocklist 上提供的信息。

建议通过将以下内容添加到 /etc/pgl/pglcmd.conf 来禁用 HTTP 连接的过滤

/etc/pgl/pglcmd.conf
WHITE_TCP_OUT="http https"

相反,可以白名单除要阻止的程序使用的端口之外的所有端口。 以下示例仅使用阻止列表来阻止端口 53 (DNS) 和 80 (HTTP) 上的传入流量

/etc/pgl/pglcmd.conf
WHITE_TCP_IN="0:79 81:65535"
WHITE_UDP_IN="0:52 54:65535"

服务器

systemd 系统的初始化意味着服务器很可能在 pgl 启动之前短暂地处于未受保护状态。 为了确保充分的保护,扩展单元 httpd.service,添加以下内容

/etc/systemd/system/httpd.service.d/override.conf
[Unit]
Wants=pgl.service
After=pgl.service

局域网

默认情况下,pgl 会阻止本地 IPv4 地址上的流量。 要禁用此行为,请编辑 /etc/pgl/pglcmd.conf 以使用 WHITE_IP_* 设置添加例外

/etc/pgl/pglcmd.conf
WHITE_IP_OUT="192.168.0.0/24"
/etc/pgl/pglcmd.conf
WHITE_IP_IN="192.168.0.0/24"

有关更多信息,请参阅 /usr/lib/pgl/pglcmd.defaults# Whitelist IPs # 部分。

启动

在熟悉守护程序和列表的配置后,启动 pgl 服务。 为了确保 pgl 按预期工作,请发出此命令

# pglcmd test

要使 pgl 在启动时自动启动,请启用 pgl 服务。

在容器中运行 pgl

Linux 容器 中运行 pgl 的用户可能需要编辑 包含的 lxc@.service 以添加 pgl 所需的关键模块的加载。

/etc/systemd/system/lxc@.service
[Unit]
Description=%i LXC
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/bin/modprobe -a xt_NFQUEUE xt_mark xt_iprange
ExecStart=/usr/bin/lxc-start -d -n %i
ExecStop=/usr/bin/lxc-stop -n %i
Delegate=true

[Install]
WantedBy=multi-user.target