PeerGuardian Linux
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