• Home
  • 方法
  • pfSenseで広告をブロックする

pfSense、Squid & SquidGuardを使用して全てのデバイスで広告をブロックする方法

Marc Dahan

By Marc Dahan . 25 3月 2024

サイバーセキュリティジャーナリスト

Miklos Zoltan

Fact-Checked this

pfSenseは、FreeBSDに基づく強力なオープンソースのルーター/ファイアウォールオペレーティングシステムです。標準装備で、pfSenseにはセキュアなネットワークを構築できる堅牢なツールがいくつかあります。

しかし、pfSenseでは、公式リポジトリからパッケージをインストールして、システムにさらに多くの機能を追加することもできます。

この記事で学べること:

  • pfSenseとは何か、どのように使用するか
  • Squidとは何か、どのように使用するか
  • プロキシサーバーの仕組み
  • Squidのインストールと設定方法
  • SquidGuardのインストールと設定方法
  • pfSense、Squid & SquidGuardを使用して広告をブロックする方法

pfSenseは、FreeBSDに基づく強力なオープンソースのルーター/ファイアウォールオペレーティングシステムです。標準装備で、pfSenseにはセキュアなネットワークを構築できる堅牢なツールがいくつかあります。

しかし、pfSenseでは、公式リポジトリからパッケージをインストールして、システムにさらに多くの機能を追加することもできます。

そのようなパッケージの一つがSquidです。Squidはキャッシングウェブプロキシであり、コンテンツフィルタリングも行います。プロキシサーバーとその使用に関するいくつかの文脈を提供し、これを少し詳しく説明しましょう。

関連ガイド: pfBlockerNGを使用してpfSenseでIPフィルタリングとDNSブラックホールの設定を行う方法

要約: この記事では、pfSense、Squid、SquidGuardを使用して全てのデバイスで広告をブロックする方法について説明しました。

pfSenseは、ネットワークのセキュリティを強化する堅牢なツールを備えたオープンソースのルーター/ファイアウォールオペレーティングシステムであり、Squidはコンテンツフィルタリングを提供するキャッシングウェブプロキシです。

プロキシサーバーがコンテンツのキャッシングとフィルタリングで果たす役割、およびpfSense上でSquidとSquidGuardを設定して広告をブロックする方法について議論しました。

これにより、ユーザーはセキュリティとプライバシーを強化し、帯域消費を減らし、ウェブページの読み込み速度を向上させることができます。

広告をブロックする方法

プロキシサーバー

プロキシサーバーは、あなたのデバイス(ラップトップ、タブレット、スマートフォン)と最終的なインターネットの目的地(whateverwebsite.comなど)の間に位置する中間サーバーです。

あなたのトラフィックはデバイスから出発し、プロキシサーバーに接続され、その後プロキシサーバーから最終目的地へと向かいます。

なぜトラフィックをプロキシサーバーを通すのでしょうか?その理由はいくつかあります。一つはコンテンツのキャッシュです。これは、プロキシサーバーがローカルに一部のコンテンツを保存し、次にクライアントがそのコンテンツをリクエストするときに、インターネットから再度ダウンロードするのではなくキャッシュから提供されることを意味します。

これにより、プロキシのローカルキャッシュからコンテンツを取得する方が、インターネット上でダウンロードを再開するよりもはるかに高速になり、インターネットブラウジングの速度が向上します。

もう一つの目的はコンテンツフィルタリングです。コンテンツフィルタリングとは、特定のドメインやIPアドレスへの接続をブロックすることを意味します。たとえば、Facebookへのアクセスをブロックする組織は、コンテンツフィルタリングを行っています。

コンテンツフィルタリングのもう一つの用途は、広告をブロックすることです。オンライン広告は迷惑です。それらはあなたのプライバシーを侵害し、帯域幅を消費し、マルウェアの主要な伝播経路です。それらを排除したいと考えるには十分な理由があります。そして、それがこの記事でSquidを使用する理由です。

この記事では、pfSense上でSquidとSquidGuard(SquidGuardはSquidの追加コンポーネントで、リストベースのフィルタリングを可能にします)を設定して、あなたのすべてのデバイス上の広告をブロックする方法をお見せします。

このガイドは、機能するWANおよびLANインターフェイスを備えたpfSenseシステムが設定されており、GUIアクセスが可能であることを前提としています。

WAN and LAN Settings

Squidのインストール

まず最初に行うべきことは、Squidプロキシサーバーをインストールすることです。

1. 上部メニューからシステム > パッケージマネージャーを選択します。パッケージマネージャーインストール済みパッケージタブに移動します。

Go To Package Manager

2. 利用可能なパッケージを選択します。利用可能なパッケージのリストが表示されます。

Squid Select Available Packages

3. squidを見つけるまで下にスクロールし、インストールをクリックします。パッケージインストーラーウィンドウが表示されます。

Squid Package

4. 確認をクリックします。インストールが開始されます。

Squid Confirm Installation

5. インストールが完了すると、パッケージインストーラーウィンドウの下部に成功と表示されます。Squidがインストールされました。

Squid Installed

Configuring Squid

Squidがインストールされたので、新しいプロキシサーバーを設定しましょう。

1. 上部メニューからサービス > Squidプロキシサーバーを選択します。Squid設定一般タブに移動します。

Go To Squid Proxy Server

このセクションごとにSquidの設定を行っていきます。私たちの目的はSquidを使って広告ブロックを設定することなので、すべてのサブメニューには触れません。目標を達成するために必要なものだけに焦点を当てます。言及されていない設定はデフォルトの値のままにしてください。

Squidを設定する前に、まずローカルキャッシュタブに移動し、ページの下部にある保存をクリックしてデフォルトのローカルキャッシュ設定を受け入れる必要があります。

プロキシをデフォルトのローカルキャッシュ設定を受け入れずに設定しようとすると、設定した内容が失われることがあるため、受け入れるように促されます。

Local Cache Page

ローカルキャッシュ設定を後で調整したい場合は、Squid設定のローカルキャッシュタブから行うことができます。

Squidの一般設定

  1. 今のところSquidプロキシを有効にするのチェックボックスはオフのままにしておきます。プロキシサーバーを設定した後に有効にします。
  2. pfSenseがIPv4とIPv6の両方を使用している場合は、Listen IPバージョンのドロップダウンメニューからIPv4+IPv6を選択します。そうでなければ、IPv4に設定したままにします。
  3. プロキシインターフェースにLANが選択されていることを確認します。pfSenseに追加のインターフェースを追加し、それらのインターフェースからのトラフィックをSquidを通過させたい場合は、ここで選択する必要があります。
  4. 発信ネットワークインターフェースをデフォルト(自動)に設定します。

Squid General Settings

透過プロキシ設定

プロキシサーバーは、透過または明示的の2つの方法で機能します。透過モードでは、クライアント(コンピュータ、タブレット、スマートフォンなど)の設定は必要ありません。そのトラフィックは透過的にプロキシされます。

しかし、このモードはポート80上のHTTPトラフィックのみをプロキシし、HTTPSトラフィックはプロキシしません(中間者SSLフィルタリングを設定しない限り)。ほとんどのインターネットトラフィックがHTTPSを使用しているため、透過モードは広告ブロックには限定的な範囲ですが、キャッシングには依然として有用です。

明示的モードでは、各クライアントをプロキシへの「アクセス要求」するように設定する必要があります。そしてこのモードでは、すべてのTCPインターネットトラフィック(HTTPおよびHTTPS)がプロキシされます。これが私たちがこのガイドで望むものです。したがって、このガイドでは透過モードを有効にしませんが、問題なく両方のモードをサポートすることは可能です。

Transparent Proxy Settings

SSL中間者攻撃フィルタリング

上述の通り、HTTPS接続を透過的にプロキシすることは可能です。しかし、これを行うには、事実上HTTPSを「破る」必要があります。

Squidは、アクセスしようとしているウェブサイトの適切なSSL証明書を自身のものと置き換え、接続を復号化し、その証明書で再び暗号化することができます。これにより、SSL接続をフィルタリングすることが可能になりますが、ブラウザで行われるべきHTTPSの検証も同時に破壊します。

特定の目的のために、そしてそれを行っていることを理解している人々に限り、中間者SSLフィルタリングを推奨します。この機能もまた無効にしておきます。

SSL Man In the Middle Filtering

Logging Settings

ログ設定

  1. アクセスログを有効にするボックスをチェックします。これにより、Squidのトラフィックがログに記録され、何かをトラブルシューティングする必要がある場合にSquidの動作を確認できます。
  2. SquidGuardによって拒否されたページのログを記録するボックスをチェックします。これにより、SquidGuardのログをSquidプロキシログと並んでリアルタイムタブから閲覧できるようになります。これは、SquidGuardをインストールした後に役立ちます。

Logging Settings

ヘッダー処理、言語、その他のカスタマイズ

ここでの設定はオプションですが、Squidヘッダーに表示される情報の量を制限します。

  • X-Forwardedヘッダーモードをオフに設定します。
  • VIAヘッダーを無効にするボックスをチェックします。
  • Squidバージョンを抑制するボックスをチェックします。
  • 保存をクリックします。

Headers Language

ACLsタブ

Squidで明示的にブロックできるものを確認するために、ACLsタブに移動する必要があります。

Squidがフィルタリングするために異なる要素を定義するための複数のボックスがあることがわかります。それぞれを見ていきましょう。

ACLs Tab

許可されたサブネット

ここでは、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のブラックリストにエントリを追加する

次のステップに進む前に、Squidのインストールが正しく機能していることを確認するために、テストを行いましょう。ブラックリストボックスにドメインを入力し、Squidが期待通りにそれをブロックするかどうかを確認します。

1. Squidプロキシ設定ACLsタブから、facebook.comブラックリストボックスに入力します。

Facebook Blacklist

2. ページの下部にある保存をクリックします。

3. Squidプロキシ設定一般タブに移動します。

4. Squidプロキシを有効にするボックスをチェックします。

Enable Squid Proxy

5. ページの下部にある保存をクリックします。

これで、プロキシサーバーが有効になり、facebook.comをブロックするように設定されました。

プロキシサーバーを介してWebブラウザをすぐに設定し、適切に機能しているかどうかを確認します。すべてが正しく設定されていれば、facebook.comにアクセスできないはずです。

プロキシサーバーを使用するようにFirefoxを設定する

1. ブラウザの右上にある設定アイコンをクリックし、設定(Windowsではオプションと呼ばれます)を選択します。一般設定ページに移動します。

FireFox Preferences

2. 一般設定ページを下にスクロールしてネットワーク設定セクションに移動し、設定ボタンをクリックします。

FireFox Network Settings

3. 手動プロキシ設定を選択します。

4. HTTPプロキシボックスに、pfSenseボックスのIPアドレスを入力します。私の場合は192.168.1.1です。

5. ポートフィールドに3128を設定します。

6. FTPとHTTPSにもこのプロキシを使用するボックスにチェックを入れます。

7. ウィンドウの下部にあるOKをクリックし、設定ページを閉じます。

FireFox Proxy Settings

これで、facebook.com(HTTPまたはHTTPS経由)にアクセスしようとすると、ブラウザに次のページが表示されます:

Facebook Blocked

これはまさに私たちが望む結果です。

SquidGuard

これで、facebook.comをブロックするように設定された動作中のプロキシサーバーができました。素晴らしいことです。しかし、広告をブロックしたい場合は、Squidのブラックリストボックスに何千ものドメインを追加する必要があります。これはあまり最適とは言えません…

ここでSquidGuardの出番です。SquidGuardは、Squidに追加されるモジュールで、リストベースのフィルタリングを扱うことができます。

リストベースのフィルタリングでは、ブラックリストに載っているドメインのリストへのURLを入力し、ブラックリストに一致するドメインがブロックされます。

基本的なSquidプロキシサーバーが稼働しているので、次にSquidGuardをインストールして設定しましょう。

SquidGuardのインストール

1. 上部メニューからシステム > パッケージマネージャーを選択します。パッケージマネージャーインストール済みパッケージタブに移動します。

Go To Package Manager

2. 利用可能なパッケージを選択します。利用可能なパッケージのリストが表示されます。

SquidGuard Available Packages

3. SquidGuardを見つけてインストールをクリックします。パッケージインストーラーウィンドウが表示されます。

Find SquidGuard Install

4. 確認をクリックします。インストールが開始されます。

Confirm SquidGuard Installation

5. インストールが完了すると、パッケージインストーラーウィンドウの下部に成功と表示されます。SquidGuardがインストールされました。

SquidGuard Installed

SquidGuardの設定

SquidGuardがインストールされました。リストベースのフィルタリングを設定しましょう。

1. 上部メニューからサービス > SquidGuardプロキシフィルターを選択します。SquidGuardプロキシフィルター設定一般タブに移動します。

Go to SquidGuard Pages

Squidを設定した時と同様に、Squid Guardのセクションごとの設定を見ていきます。また、目標を達成するために必要なものだけに焦点を当て、すべてのサブメニューには触れません。言及されていない設定はデフォルトの値のままにしてください。

一般オプション

1. 今のところ有効ボックスのチェックは外しておきます。

SquidGuard General Options

ログオプション

  • GUIログを有効にするボックスをチェックします。
  • ログを有効にするボックスをチェックします。
  • ログローテーションを有効にするボックスをチェックします。

SquidGuard Logging Options

その他のオプション

1. 広告をクリーンにするボックスをチェックします。

SquidGuard Misc Options

ブラックリストオプション

1. ブラックリストボックスにチェックを入れます。

2. ブラックリストURLフィールドに次のURLを入力します:https://shallalist.de/Downloads/shallalist.tar.gz。これが私たちのブラックリストURLです。SquidGuardはこのリストをダウンロードし、許可またはブロックするさまざまなカテゴリのドメインを提供します。これは無料で提供されており、Shalla Secure Servicesによって提供されています。他にも使用できるリストはありますが、多くは有料です。Shallalistは長年使用しており、非常によく機能し、頻繁に更新されているので、これを使用することをお勧めします。

3. ページの下部にある保存をクリックします。

SquidGuard Settings Blacklist Options

ブラックリストのダウンロード

1. SquidGuardプロキシフィルター設定ブラックリストタブに移動します。ブラックリストURLが表示されます。

2. ダウンロードボタンをクリックします。ブラックリストのダウンロードと解析が始まります。

SquidGuard Blacklist ~Page

3. 完了すると、ブラックリスト更新ログウィンドウの下部にブラックリストの更新完了と表示されます。

Blacklist Update Complete

SquidGuardでブラックリストフィルタリングを設定する

1. SquidGuardプロキシフィルター設定共通ACLタブに移動します。

2. ターゲットルールリストの横にある+記号をクリックします。ターゲットルールリストが表示されます。

Configuring blacklist filtering in SquidGuard

3. リストの最初のエントリはadvで、これは広告を意味します。その右側のドロップダウンメニューから拒否を選択します。

Deny Adverts

4. ブロックしたい他のカテゴリのコンテンツも同様にブロックします。

5. ブロックしたいすべてのカテゴリを拒否したら、リストの一番下に移動し、デフォルトアクセスの横にあるドロップダウンメニューから許可を選択します。

6. ページの下部にある保存をクリックします。

SquidGuard ACL

7. SquidGuardプロキシフィルター設定の一般タブに戻り、有効にするボックスにチェックを入れ、ページの下部にある保存をクリックします。

8. 保存したら、適用ボタンをクリックします。

Enable SquidGuard

設定のテスト

これで、Squidをブラックリストフィルタリングで設定しました。プロキシを使用するように既に設定されているブラウザを使用して、広告が表示されることで知られているウェブページにアクセスすると、広告は表示されなくなるはずです。

Squid有効時:

SquidGuard Test

Squid無効時:

SquidGuard Test

うまくいきました。これは素晴らしいことです。しかし、現在の設定では、Squidはブラウザのトラフィックのみを傍受するため、Squidの広告ブロッキングの恩恵をウェブブラウザでのみ受けることになります。

デバイス全体のトラフィックをプロキシサーバーを通すように設定する方法を紹介します。これにより、ブラウザだけでなく、アプリでも広告ブロッキングの恩恵を受けることができます。macOS、Windows、Linux、iOS、Androidでこれを行う方法を紹介します。

クライアントデバイスでのシステム全体のコンテンツフィルタリングの設定

ブラウザ設定のリセット

接続をテストするためにFirefoxで設定した手動プロキシ設定を元に戻し、クライアントデバイスをシステム全体のプロキシ設定で設定する前に、元に戻しましょう。

1. Firefoxのネットワーク設定に戻り、システムのプロキシ設定を使用するを選択します。これにより、ブラウザはシステムの設定をそのプロキシ設定として使用するように指示されます。これはデフォルトの設定です。

2. OKをクリックし、設定ページを閉じます。

FireFox System Proxy

macOS

1. システム環境設定アプリからネットワークを選択します。

2. 現在の接続が選択されていることを確認し、右下の詳細をクリックします。

3. プロキシタブを選択します。

4. Webプロキシ(HTTP)セキュアWebプロキシ(HTTPS)の両方のボックスにチェックを入れます。

5. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.13128です。

6. OK適用をクリックします。

macOS Proxy Settings

Windows

1. 設定アプリ(Win+Iキーボードショートカット)を開きます。

2. ネットワークとインターネットに移動します。

3. プロキシタブを選択します。

4. 手動プロキシ設定セクションまでスクロールダウンします。

5. プロキシサーバーを使用するスイッチを有効にします。

6. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.13128です。

7. 保存をクリックします。

Windows 10 Proxy Settings

Linux

1. ネットワーク設定ウィンドウからネットワークプロキシを選択します。

2. 方法ドロップダウンメニューから手動を選択します。

3. HTTPプロキシHTTPSプロキシの横にpfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.13128です。

4. ネットワーク設定ウィンドウを閉じます。

Linus Proxy Setup

iOS

1. 設定 > WiFiから、接続中のWiFiに対応する「i」をタップします。

2. 下にスクロールし、プロキシの設定を選択します。

3. 手動を選択します。

4. pfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.13128です。これをサーバーポートの隣に入力します。

5. 設定アプリを閉じます。

iPhone Proxy Settings

Android

1. 設定アプリからWiFiを選択します。
2. 現在接続中のWiFiネットワークを長押しします。
3. ネットワークを変更を選択します。
4. 詳細オプションを展開します。
5. プロキシドロップダウンメニューから手動を選択します。
6. プロキシホスト名プロキシポートの下にpfSenseボックスのIPアドレスとプロキシポートを入力します。私の場合は192.168.1.13128です。
7. 保存をクリックします。

Android Proxy

iOSやAndroidでモバイルデータを介してプロキシを機能させるには、モバイルデバイス管理(MDM)プロファイルをインストールする必要がありますが、これは現在のガイドの範囲を超えます。将来的にこれについて取り上げるかもしれません。

セットアップを完了して

これで、全てのデバイスで広告をブロックするために使用できるブラックリストフィルタリング機能付きのプロキシサーバーが整いました。迷惑な広告がデータを盗むことを防ぐことで、セキュリティとプライバシーを強化しました。

また、帯域幅の消費も少なくなります。広告がダウンロードやレンダリングされる必要がないため、ウェブページの読み込みも速くなります。さらに、Squidがコンテンツをキャッシュしてくれるため、頻繁にリクエストするコンテンツはより速く読み込まれます。

良いことづくしですね。安全にお過ごしください。