pfSenseは、FreeBSDに基づく強力なオープンソースのルーター/ファイアウォールオペレーティングシステムです。標準装備で、pfSenseにはセキュアなネットワークを構築できる堅牢なツールがいくつかあります。
しかし、pfSenseでは、公式リポジトリからパッケージをインストールして、システムにさらに多くの機能を追加することもできます。
pfSenseは、FreeBSDに基づく強力なオープンソースのルーター/ファイアウォールオペレーティングシステムです。標準装備で、pfSenseにはセキュアなネットワークを構築できる堅牢なツールがいくつかあります。
しかし、pfSenseでは、公式リポジトリからパッケージをインストールして、システムにさらに多くの機能を追加することもできます。
そのようなパッケージの一つがSquidです。Squidはキャッシングウェブプロキシであり、コンテンツフィルタリングも行います。プロキシサーバーとその使用に関するいくつかの文脈を提供し、これを少し詳しく説明しましょう。
関連ガイド: pfBlockerNGを使用してpfSenseでIPフィルタリングとDNSブラックホールの設定を行う方法
pfSenseは、ネットワークのセキュリティを強化する堅牢なツールを備えたオープンソースのルーター/ファイアウォールオペレーティングシステムであり、Squidはコンテンツフィルタリングを提供するキャッシングウェブプロキシです。
プロキシサーバーがコンテンツのキャッシングとフィルタリングで果たす役割、およびpfSense上でSquidとSquidGuardを設定して広告をブロックする方法について議論しました。
これにより、ユーザーはセキュリティとプライバシーを強化し、帯域消費を減らし、ウェブページの読み込み速度を向上させることができます。
プロキシサーバーは、あなたのデバイス(ラップトップ、タブレット、スマートフォン)と最終的なインターネットの目的地(whateverwebsite.comなど)の間に位置する中間サーバーです。
あなたのトラフィックはデバイスから出発し、プロキシサーバーに接続され、その後プロキシサーバーから最終目的地へと向かいます。
なぜトラフィックをプロキシサーバーを通すのでしょうか?その理由はいくつかあります。一つはコンテンツのキャッシュです。これは、プロキシサーバーがローカルに一部のコンテンツを保存し、次にクライアントがそのコンテンツをリクエストするときに、インターネットから再度ダウンロードするのではなくキャッシュから提供されることを意味します。
これにより、プロキシのローカルキャッシュからコンテンツを取得する方が、インターネット上でダウンロードを再開するよりもはるかに高速になり、インターネットブラウジングの速度が向上します。
もう一つの目的はコンテンツフィルタリングです。コンテンツフィルタリングとは、特定のドメインやIPアドレスへの接続をブロックすることを意味します。たとえば、Facebookへのアクセスをブロックする組織は、コンテンツフィルタリングを行っています。
コンテンツフィルタリングのもう一つの用途は、広告をブロックすることです。オンライン広告は迷惑です。それらはあなたのプライバシーを侵害し、帯域幅を消費し、マルウェアの主要な伝播経路です。それらを排除したいと考えるには十分な理由があります。そして、それがこの記事でSquidを使用する理由です。
この記事では、pfSense上でSquidとSquidGuard(SquidGuardはSquidの追加コンポーネントで、リストベースのフィルタリングを可能にします)を設定して、あなたのすべてのデバイス上の広告をブロックする方法をお見せします。
このガイドは、機能するWANおよびLANインターフェイスを備えたpfSenseシステムが設定されており、GUIアクセスが可能であることを前提としています。
まず最初に行うべきことは、Squidプロキシサーバーをインストールすることです。
1. 上部メニューからシステム > パッケージマネージャーを選択します。パッケージマネージャーのインストール済みパッケージタブに移動します。
2. 利用可能なパッケージを選択します。利用可能なパッケージのリストが表示されます。
3. squidを見つけるまで下にスクロールし、インストールをクリックします。パッケージインストーラーウィンドウが表示されます。
4. 確認をクリックします。インストールが開始されます。
5. インストールが完了すると、パッケージインストーラーウィンドウの下部に成功と表示されます。Squidがインストールされました。
Squidがインストールされたので、新しいプロキシサーバーを設定しましょう。
1. 上部メニューからサービス > Squidプロキシサーバーを選択します。Squid設定の一般タブに移動します。
このセクションごとにSquidの設定を行っていきます。私たちの目的はSquidを使って広告ブロックを設定することなので、すべてのサブメニューには触れません。目標を達成するために必要なものだけに焦点を当てます。言及されていない設定はデフォルトの値のままにしてください。
Squidを設定する前に、まずローカルキャッシュタブに移動し、ページの下部にある保存をクリックしてデフォルトのローカルキャッシュ設定を受け入れる必要があります。
プロキシをデフォルトのローカルキャッシュ設定を受け入れずに設定しようとすると、設定した内容が失われることがあるため、受け入れるように促されます。
ローカルキャッシュ設定を後で調整したい場合は、Squid設定のローカルキャッシュタブから行うことができます。
プロキシサーバーは、透過または明示的の2つの方法で機能します。透過モードでは、クライアント(コンピュータ、タブレット、スマートフォンなど)の設定は必要ありません。そのトラフィックは透過的にプロキシされます。
しかし、このモードはポート80上のHTTPトラフィックのみをプロキシし、HTTPSトラフィックはプロキシしません(中間者SSLフィルタリングを設定しない限り)。ほとんどのインターネットトラフィックがHTTPSを使用しているため、透過モードは広告ブロックには限定的な範囲ですが、キャッシングには依然として有用です。
明示的モードでは、各クライアントをプロキシへの「アクセス要求」するように設定する必要があります。そしてこのモードでは、すべてのTCPインターネットトラフィック(HTTPおよびHTTPS)がプロキシされます。これが私たちがこのガイドで望むものです。したがって、このガイドでは透過モードを有効にしませんが、問題なく両方のモードをサポートすることは可能です。
上述の通り、HTTPS接続を透過的にプロキシすることは可能です。しかし、これを行うには、事実上HTTPSを「破る」必要があります。
Squidは、アクセスしようとしているウェブサイトの適切なSSL証明書を自身のものと置き換え、接続を復号化し、その証明書で再び暗号化することができます。これにより、SSL接続をフィルタリングすることが可能になりますが、ブラウザで行われるべきHTTPSの検証も同時に破壊します。
特定の目的のために、そしてそれを行っていることを理解している人々に限り、中間者SSLフィルタリングを推奨します。この機能もまた無効にしておきます。
ここでの設定はオプションですが、Squidヘッダーに表示される情報の量を制限します。
Squidで明示的にブロックできるものを確認するために、ACLsタブに移動する必要があります。
Squidがフィルタリングするために異なる要素を定義するための複数のボックスがあることがわかります。それぞれを見ていきましょう。
許可されたサブネット
ここでは、Squidプロキシを通過させる追加のサブネットを追加できます。これは、システムのインターフェイスに結びついていないサブネットに便利です。たとえば、IPSecなど。この例ではここに何も追加する必要はありません。
制限のないIP
ここにリストされたIPアドレスは、プロキシサーバーによってそのトラフィックがフィルタリングされません。
禁止されたホストアドレス
ここにリストされたIPアドレスは、そのサブネットが許可されていてもプロキシサーバーを使用することはできません。
ホワイトリスト
ホワイトリストボックスにリストされたドメインは、プロキシを使用する権限があるすべてのホストに利用可能です。ホワイトリストエントリは、ブラックリストエントリを上書きします。
ブラックリスト
ブラックリストボックスにリストされたドメインは、プロキシサーバーを使用できるすべてのホストからアクセスできません。
ユーザーエージェントのブロック
このボックスは、特定のアプリケーションがインターネットにアクセスするのをブロックするのに非常に便利です。アプリケーションがインターネットにリクエストするとき、そのヘッダーにはユーザーエージェントと呼ばれるフィールドが含まれています。ユーザーエージェントは、使用されているアプリケーションを識別します。例として、Google ChromeのユーザーエージェントはChromeです。
ユーザーエージェントは当初、ウェブリクエストを行うウェブブラウザーを識別するために使用され、サーバーがその特定のブラウザーで要求されたデータをどのようにレンダリングするかを知るためでした。しかし、現在ではインターネット上でリクエストを行うあらゆるアプリに一般化されています。
Squidでユーザーエージェントをブロックするには、”^”(引用符なし)でプレフィックスを付ける必要があります。
したがって、Squidのユーザーエージェントのブロックボックスに^Chromeをリストすると、Google Chromeがインターネットにアクセスするのをブロックします。
^Mozillaをリストすると、Firefoxがインターネットにアクセスするのをブロックします。^WhatsAppをリストすると、WhatsAppがインターネットにアクセスするのをブロックします。
ユーザーエージェントは非常に特定であり、上記の例のように単純ではないことがよくあります。アプリが使用している正確なユーザーエージェントを知っていなければ、ここでそれをブロックすることはできません。
MIMEタイプのブロック(返信のみ)
MIMEタイプでのMIMEは、Multipurpose Internet Mail Extensions(多目的インターネットメール拡張)の略で、URL内のファイルタイプを定義するために使用されます。MIMEタイプは次のように構成されます:
type/subtype
したがって、Block MIME Typesボックスにaudio/mpegを追加すると、mp3ファイルのダウンロードがブロックされます。image/pngを追加すると、png画像のダウンロードがブロックされます。
ユーザーエージェントと同様に、MIMEタイプは非常に特定です。Squidでフィルタリングを機能させるためには、正確なタイプとサブタイプを入力する必要があります。
次のステップに進む前に、Squidのインストールが正しく機能していることを確認するために、テストを行いましょう。ブラックリストボックスにドメインを入力し、Squidが期待通りにそれをブロックするかどうかを確認します。
1. Squidプロキシ設定のACLsタブから、facebook.comをブラックリストボックスに入力します。
2. ページの下部にある保存をクリックします。
3. Squidプロキシ設定の一般タブに移動します。
4. Squidプロキシを有効にするボックスをチェックします。
5. ページの下部にある保存をクリックします。
これで、プロキシサーバーが有効になり、facebook.comをブロックするように設定されました。
プロキシサーバーを介してWebブラウザをすぐに設定し、適切に機能しているかどうかを確認します。すべてが正しく設定されていれば、facebook.comにアクセスできないはずです。
1. ブラウザの右上にある設定アイコンをクリックし、設定(Windowsではオプションと呼ばれます)を選択します。一般設定ページに移動します。
2. 一般設定ページを下にスクロールしてネットワーク設定セクションに移動し、設定ボタンをクリックします。
3. 手動プロキシ設定を選択します。
4. HTTPプロキシボックスに、pfSenseボックスのIPアドレスを入力します。私の場合は192.168.1.1です。
5. ポートフィールドに3128を設定します。
6. FTPとHTTPSにもこのプロキシを使用するボックスにチェックを入れます。
7. ウィンドウの下部にあるOKをクリックし、設定ページを閉じます。
これで、facebook.com(HTTPまたはHTTPS経由)にアクセスしようとすると、ブラウザに次のページが表示されます:
これはまさに私たちが望む結果です。
これで、facebook.comをブロックするように設定された動作中のプロキシサーバーができました。素晴らしいことです。しかし、広告をブロックしたい場合は、Squidのブラックリストボックスに何千ものドメインを追加する必要があります。これはあまり最適とは言えません…
ここでSquidGuardの出番です。SquidGuardは、Squidに追加されるモジュールで、リストベースのフィルタリングを扱うことができます。
リストベースのフィルタリングでは、ブラックリストに載っているドメインのリストへのURLを入力し、ブラックリストに一致するドメインがブロックされます。
基本的なSquidプロキシサーバーが稼働しているので、次にSquidGuardをインストールして設定しましょう。
1. 上部メニューからシステム > パッケージマネージャーを選択します。パッケージマネージャーのインストール済みパッケージタブに移動します。
2. 利用可能なパッケージを選択します。利用可能なパッケージのリストが表示されます。
3. SquidGuardを見つけてインストールをクリックします。パッケージインストーラーウィンドウが表示されます。
4. 確認をクリックします。インストールが開始されます。
5. インストールが完了すると、パッケージインストーラーウィンドウの下部に成功と表示されます。SquidGuardがインストールされました。
SquidGuardがインストールされました。リストベースのフィルタリングを設定しましょう。
1. 上部メニューからサービス > SquidGuardプロキシフィルターを選択します。SquidGuardプロキシフィルター設定の一般タブに移動します。
Squidを設定した時と同様に、Squid Guardのセクションごとの設定を見ていきます。また、目標を達成するために必要なものだけに焦点を当て、すべてのサブメニューには触れません。言及されていない設定はデフォルトの値のままにしてください。
1. 今のところ有効ボックスのチェックは外しておきます。
1. 広告をクリーンにするボックスをチェックします。
1. ブラックリストボックスにチェックを入れます。
2. ブラックリストURLフィールドに次のURLを入力します:https://shallalist.de/Downloads/shallalist.tar.gz。これが私たちのブラックリストURLです。SquidGuardはこのリストをダウンロードし、許可またはブロックするさまざまなカテゴリのドメインを提供します。これは無料で提供されており、Shalla Secure Servicesによって提供されています。他にも使用できるリストはありますが、多くは有料です。Shallalistは長年使用しており、非常によく機能し、頻繁に更新されているので、これを使用することをお勧めします。
3. ページの下部にある保存をクリックします。
1. SquidGuardプロキシフィルター設定のブラックリストタブに移動します。ブラックリストURLが表示されます。
2. ダウンロードボタンをクリックします。ブラックリストのダウンロードと解析が始まります。
3. 完了すると、ブラックリスト更新ログウィンドウの下部にブラックリストの更新完了と表示されます。
1. SquidGuardプロキシフィルター設定の共通ACLタブに移動します。
2. ターゲットルールリストの横にある+記号をクリックします。ターゲットルールリストが表示されます。
3. リストの最初のエントリはadvで、これは広告を意味します。その右側のドロップダウンメニューから拒否を選択します。
4. ブロックしたい他のカテゴリのコンテンツも同様にブロックします。
5. ブロックしたいすべてのカテゴリを拒否したら、リストの一番下に移動し、デフォルトアクセスの横にあるドロップダウンメニューから許可を選択します。
6. ページの下部にある保存をクリックします。
7. SquidGuardプロキシフィルター設定の一般タブに戻り、有効にするボックスにチェックを入れ、ページの下部にある保存をクリックします。
8. 保存したら、適用ボタンをクリックします。
これで、Squidをブラックリストフィルタリングで設定しました。プロキシを使用するように既に設定されているブラウザを使用して、広告が表示されることで知られているウェブページにアクセスすると、広告は表示されなくなるはずです。
Squid有効時:
Squid無効時:
うまくいきました。これは素晴らしいことです。しかし、現在の設定では、Squidはブラウザのトラフィックのみを傍受するため、Squidの広告ブロッキングの恩恵をウェブブラウザでのみ受けることになります。
デバイス全体のトラフィックをプロキシサーバーを通すように設定する方法を紹介します。これにより、ブラウザだけでなく、アプリでも広告ブロッキングの恩恵を受けることができます。macOS、Windows、Linux、iOS、Androidでこれを行う方法を紹介します。
接続をテストするためにFirefoxで設定した手動プロキシ設定を元に戻し、クライアントデバイスをシステム全体のプロキシ設定で設定する前に、元に戻しましょう。
1. Firefoxのネットワーク設定に戻り、システムのプロキシ設定を使用するを選択します。これにより、ブラウザはシステムの設定をそのプロキシ設定として使用するように指示されます。これはデフォルトの設定です。
2. OKをクリックし、設定ページを閉じます。
1. システム環境設定アプリからネットワークを選択します。
2. 現在の接続が選択されていることを確認し、右下の詳細をクリックします。
3. プロキシタブを選択します。
4. Webプロキシ(HTTP)とセキュアWebプロキシ(HTTPS)の両方のボックスにチェックを入れます。
5. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.1と3128です。
6. OKと適用をクリックします。
1. 設定アプリ(Win+Iキーボードショートカット)を開きます。
2. ネットワークとインターネットに移動します。
3. プロキシタブを選択します。
4. 手動プロキシ設定セクションまでスクロールダウンします。
5. プロキシサーバーを使用するスイッチを有効にします。
6. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.1と3128です。
7. 保存をクリックします。
1. ネットワーク設定ウィンドウからネットワークプロキシを選択します。
2. 方法ドロップダウンメニューから手動を選択します。
3. HTTPプロキシとHTTPSプロキシの横にpfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.1と3128です。
4. ネットワーク設定ウィンドウを閉じます。
1. 設定 > WiFiから、接続中のWiFiに対応する「i」をタップします。
2. 下にスクロールし、プロキシの設定を選択します。
3. 手動を選択します。
4. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.1と3128です。これをサーバーとポートの隣に入力します。
5. 設定アプリを閉じます。
1. 設定アプリからWiFiを選択します。
2. 現在接続中のWiFiネットワークを長押しします。
3. ネットワークを変更を選択します。
4. 詳細オプションを展開します。
5. プロキシドロップダウンメニューから手動を選択します。
6. プロキシホスト名とプロキシポートの下にpfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.1と3128です。
7. 保存をクリックします。
iOSやAndroidでモバイルデータを介してプロキシを機能させるには、モバイルデバイス管理(MDM)プロファイルをインストールする必要がありますが、これは現在のガイドの範囲を超えます。将来的にこれについて取り上げるかもしれません。
これで、全てのデバイスで広告をブロックするために使用できるブラックリストフィルタリング機能付きのプロキシサーバーが整いました。迷惑な広告がデータを盗むことを防ぐことで、セキュリティとプライバシーを強化しました。
また、帯域幅の消費も少なくなります。広告がダウンロードやレンダリングされる必要がないため、ウェブページの読み込みも速くなります。さらに、Squidがコンテンツをキャッシュしてくれるため、頻繁にリクエストするコンテンツはより速く読み込まれます。
良いことづくしですね。安全にお過ごしください。