変更要約: 初版(主題2.09・副主題2.09.1〜2.09.4に対応)
3.4Squidの設定と管理
フォワードプロキシソフトウェアであるSquidの基本設定を学びます。設定ファイルsquid.conf、動作確認に使うsquidclient、アクセス許可を制御するhttp_accessディレクティブ、その条件を定義するacl(アクセスコントロールリスト)を押さえます。
Squidは、社内クライアントが外部Webサイトへアクセスする際に経由させるフォワードプロキシの代表的な実装です。「誰が」「どこへ」アクセスできるかを条件で組み立てるaclとhttp_accessの考え方は、社内ネットワークのアクセス制御ポリシーを表現する上での中核です。
3.4.1設定ファイルと動作確認
- 主設定ファイルはsquid.conf。プロキシとして許可するポート、キャッシュサイズ、アクセス制御ルールなどをここに記述します。
- squidclientはSquidに対して直接リクエストを送り、動作確認やキャッシュの操作(パージ等)に使うコマンドラインツールです。
3.4.2aclとhttp_accessによるアクセス制御
- aclディレクティブで「送信元ネットワーク」「時間帯」「宛先ドメイン」などの条件に名前を付けて定義します(例:
acl localnet src 192.168.1.0/24)。 - http_accessディレクティブで、定義したaclに対して
allow(許可)かdeny(拒否)かを上から順に評価して決定します。最初に一致したルールが適用されるため、記述順序が結果を左右します。
「http_accessは上から順に評価し、最初に一致したルールが適用される」「acl自体はアクセスを許可/拒否しない(条件の定義のみ)」「実際の許可/拒否を行うのはhttp_access」という役割分担が最頻出です。ルールの最後にhttp_access deny allを置き忘れると、意図せず全許可になる設定ミスも定番の出題です。
社内ネットワークからのみプロキシ利用を許可し、それ以外は拒否する典型的なsquid.confを組み立ててみます。まずacl localnet src 192.168.1.0/24で社内ネットワークのアドレス範囲にlocalnetという名前を付けます。次にhttp_access allow localnetでlocalnetに一致する通信を許可し、最後にhttp_access deny allを置いてそれ以外のすべてを拒否します。ここで重要なのは、http_accessは上に書かれたルールから順に評価され、最初に条件が一致した時点で処理が確定する点です。仮にhttp_access deny allをhttp_access allow localnetより先に書いてしまうと、localnetからの通信も含めて全て拒否されてしまいます。逆にdeny allを書き忘れると、どのaclにも一致しなかった通信の扱いが曖昧になり、意図せず外部からの利用まで許可してしまう事故につながります。設定を変更した後は、Squidプロセスへ設定再読込のシグナルを送るか再起動し、squidclientで実際にリクエストを送ってみて、期待通りに許可・拒否されるかを確認するのが安全な運用手順です。aclは「条件に名前を付けるだけ」で、それ自体はアクセスを制御しない、という点をhttp_accessとの役割分担として意識しておくと、設定ファイルを読むときに迷いません。
| 要素 | 役割 | 例 |
|---|---|---|
| squid.conf | 全体設定ファイル | ポート・キャッシュ・ルール |
| acl | 条件に名前を付ける(許可/拒否はしない) | acl localnet src 192.168.1.0/24 |
| http_access | aclへのallow/denyを順に評価 | http_access allow localnet |
| squidclient | 動作確認・キャッシュ操作 | リクエストを直接送信 |
ひっかけ: 「aclディレクティブだけでアクセスを拒否できる」は誤りです。aclは条件に名前を付けるだけで、実際に許可/拒否を行うのはhttp_accessです。また「http_accessは記述順序に関係なく、最も限定的な条件が優先される」も誤り=上から順に評価し、最初に一致したルールがそのまま適用されるため、deny allをallowより前に置くと意図した許可が機能しません。
3.4.3この節のまとめ
- 設定ファイルはsquid.conf、動作確認はsquidclient
- acl=条件に名前を付けるだけ、http_access=上から順に評価しallow/denyを決定(最後に
deny allを置くのが定石)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. Squidで社内ネットワーク192.168.1.0/24からのアクセスのみを許可し、それ以外を拒否する設定として最も適切なのは?
Q2. Squidのhttp_accessディレクティブの評価順序について正しい説明は?
Q3. Squidの設定変更後、実際にリクエストを送って許可/拒否の挙動を確認したい。使うツールは?

