URLフィルタリング(Squid)を導入。

LINEで送る
Pocket

業務システム専用の端末でオペレータに特定のサイト以外アクセスさせたくない。子供にパソコンを与えたが動画サイトばかり見て困る。できることなら有害サイトにはアクセスさせたくないなどURLをフィルタリングする機能が欲しいシチュエーションがあります。プロバイダによっては有害サイトへのアクセスをブロックしてくれるサービスを有料で提供してくれているところもありますが、大人が利用する時に不便に感じることも少なくありません。自分自身でURLフィルタリングを行いたい場合は、プロキシサーバのSquidがお勧めです。プロキシ (Proxy) サーバは、元々はウェブサイトにアクセスしたデータをキャッシュして、同一ネットワーク内の別のコンピュータから同じサイトにアクセスした場合、プロキシサーバはキャシュデータを返して、ネットワークの通信量を抑える為に利用されてきました。しかし通信回線の高速化、ウェブサイトの更新頻度のアップなどによってキャッシュサーバの必要性は薄れてきましたが、URLフィルタリング機能を利用したいのであれば設定も容易なので便利なツールです。
通常Squidはローカルネットワークのゲートウェイなどに設置して、ネットワーク内のコンピュータみんなで利用しますが、今回は個人利用を想定してユーザが使用しているLinux(localhost)上でSquidを起動して、URLフィルタリングを行う方法紹介したいと思います。

squidは、「端末」アプリを開いて次のコマンドを実行するとインストールできます。

$ sudo apt install squid

まずはオペレータが使用する業務システム端末で、特定のサイト以外アクセス出来なくする設定方法です。新規に /etc/squid/whitelist.txt ファイルを作成して、アクセス可能とするサーバのIPアドレスやドメイン名をリストにして記述します。

/etc/squid/whitelist.txt

192.168.0.1
.google.com   <- 正規表現でいうと *.google.com にアクセス可能となりサブドメインもアクセスできます。

新規に /etc/squid/conf.d/my.conf ファイルを作成して、whitelist.txt に記述したサーバはアクセスを許可にする設定をします。
/etc/squid/conf.d/my.conf

acl whitelist dstdomain '/etc/squid/whitelist.txt'
http_access allow whitelist

デフォルトでは、localhost からアクセスした場合は、URLフィルタリングが効かないので、localhost からのフルアクセスを無効にします。
/etc/squid/squid.conf

http_access allow localhost          <- デフォルトでは有効
         ↓
#http_access allow localhost         <- コメント化して無効

設定が完了したので squid を再起動して、マシン再起動後もsquidが自動起動されるように設定します。

$ sudo systemctl restart squid.service
$ sudo systemctl enable squid.service

プロキシサーバの設定は「設定」メニューの「ネットワーク」->「ネットワークプロキシ」より行います。「手動」を選択してIPアドレスに「127.0.0.1」ポート番号に「3128」を設定します。Firefox の設定は、「一般」->「ネットワーク設定」の「接続設定」より「システムのプロキシーを利用する」を選択します。Chromeの設定は「システム」メニューにありますが、システムのプロキシ設定を自動で検出されるようになっており、Firefoxのような設定は必要ありません。

「プロキシサーバーへのアクセスを拒否されました」と表示され、whitelist に登録したサイトだけはアクセスできることが分かります。

今はアクセスしたいドメインのリストを記述しましたが、今度はアクセスさせたくないドメインリストを新規に作成した /etc/squid/blacklist.txt に記述します。なお whitelist の設定をした場合は設定を削除するかコメント化して下さい。

/etc/squid/blacklist.txt

.yahoo.co.jp   <- yahooへのアクセスを禁止します。

/etc/squid/conf.d/my.conf

acl blacklist dstdomain '/etc/squid/blacklist.txt'
http_access deny blacklist

blacklist 以外へのアクセスは許可するので、localhost からのフルアクセスは有効のままにして下さい。
/etc/squid/squid.conf

http_access allow localhost          <- デフォルトのまま

設定が完了したので squid を再起動します。

$ sudo systemctl restart squid.service

今度はyahoo のページは、ブロックされますが他のページはアクセスできると思います。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください