PeerGuardian Linux
PeerGuardian Linux (pgl) はプライバシー指向のファイアウォールアプリケーションです。巨大なブロックリスト (数千数億の IP 範囲) で指定されたホストからの接続をブロックします。pgl は Linux カーネルの netfilter フレームワークと iptables をベースとしています。
同じような効果を実現するネイティブで効率的な方法として pg2ipset ツールと ipset-update スクリプトを ipset カーネルモジュールを組み合わせて使う方法もあります。
インストール
2つの AUR パッケージから選択してください: pgl-cliAUR にはデーモンと CLI ツールしか含まれておらず、pglAUR には (Qt で書かれた) GUI が付属しています。
設定
/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"
プログラムによってはインターネットに接続できなくなることがあります。例えば、インスタンスメッセージとして MSN を使っている場合、ポート 1863 をホワイトリストに追加する必要があります:
/etc/pgl/pglcmd.conf
WHITE_TCP_OUT="http https msnp"
逆に、全てのポートをホワイトリストに追加して、ブロックしたいプログラムのポートだけを除外することもできます。以下の例ではブロックリストを使ってポート 53 (DNS) と 80 (HTTP) からの通信だけを止めています:
/etc/pgl/pglcmd.conf
WHITE_TCP_IN="0:79 81:65535" WHITE_UDP_IN="0:52 54:65535"
サーバー
systemd はシステムの初期化を行いますが、pgl が起動する前に、サーバーが無防備になる瞬間が存在する可能性があります。完全な防護を行うためには、オリジナルのサーバーと同じ名前のサービスファイル (/etc/systemd/system/httpd.service
) を作成して以下を記述します:
/etc/systemd/system/httpd.service
.include /usr/lib/systemd/system/httpd.service [Unit] Wants=pgl.service After=pgl.service
LAN
デフォルトでは、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 Containers の中で 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