■問題を解く鍵 【3】【4】
【3】プロキシサーバSquidのアクセス制御の設定方法を把握
Squidのアクセス制御の設定は次の2段階で行います。
(1)aclディレクティブで制御の対象を定義する
(2)http_accessディレクティブでアクセス対象への許可あるいは拒否を設定する
aclディレクティブの書式は次のようになります。
acl acl名 aclタイプ 引数
acl名には、任意の分かりやすい名前を付けます。
aclタイプには、主に次のようなものがあります。
src、dst、time、url_regex、port、proto、method、proxy_auth
acl all src 0.0.0.0/0.0.0.0 # すべての発信元ホスト acl manager proto cache_object # キャッシュされたオブジェクト情報へのアクセス acl localhost src 127.0.0.1/255.255.255.255 # 発信元ローカルホスト acl SSL_ports port 443 # https acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 1025-65535 # 未定義ポート番号 acl CONNECT method CONNECT # CONNECTメソッドを定義
●httpプロトコルのCONNECTメソッドについて
CONNECTメソッドはプロキシサーバにトンネリングを要求するメソッドです。SSLなどで暗号化されたデータを送る場合に利用されます。
http_accessディレクティブの書式:
http_access allow|deny [!]acl名
http_accessのデフォルトの動作は次のようになります。
http_access allow all あるいは http_access deny all
(例)http_accessの基本的な設定例
# cachemgrアクセス(キャッシュされたオブジェクト情報へのアクセス)はローカルホストからのみ許可する。
http_access allow manager localhost http_access deny manager
# acl名Safe_portsで定義したポート以外へのリクエストを拒否する。
http_access deny !Safe_ports
# SSLポート以外へのCONNECTメソッドのリクエストは拒否する。
http_access deny CONNECT !SSL_ports
# ローカルホストからのアクセスは許可する。
http_access allow localhost
# そのほかのアクセスはすべて拒否する。
http_access deny all
クライアントからリクエストされたURLに対する正規表現(Regular Expression)によるパターンマッチングで、アクセス制御することもできます。この場合、aclタイプはurl_regexを指定します。
aclの書式:
acl acl名 url_regex 正規表現
デフォルトでは正規表現の指定は大文字/小文字を識別します。大文字/小文字を識別しない場合は-i(ignore)オプションを指定します。
acl acl名 url_regex -i 正規表現
acl eduSite url_regex "http://.*\knowd\.com"
時間帯によるアクセス制御もできます。この場合、aclタイプはtimeを指定します。
aclの書式:
acl acl名 time 曜日指定 開始(時:分)-終了(時:分)
曜日の指定は次のようになります。
S(日:Sunday)、M(月:Monday)、T(火:Tuesday)、W(水:Wednesday)、H(木:Thursday)、F(金:Friday)、A(土: Saturday)
acl MF9-17 time MF 9:00-17:00 http_access allow MF9-17
【4】プロキシサーバSquidのユーザー認証の設定方法を把握
ユーザーがプロキシサーバSquidを利用するとき、Squidがユーザー名とパスワードを要求し、正しく入力したユーザーだけがアクセスできるよう、ユーザー認証の設定を行うことができます。
Squidの認証方式にはBasic認証、Digest認証、NTLM認証(Windows NT LAN Manager認証)があります。設定はauth_paramディレクティブにより、認証方式と認証プログラムを指定し、aclディレクティブとhttp_accessディレクティブで認証ユーザーのアクセスを許可します。
この場合、aclディレクティブではaclタイプproxy_authを指定します。ここでは例として、ユーザー名とパスワードを平文でやりとりするBasic認証方式で、NCSAスタイルの認証ヘルパープログラムncsa_authを使用する設定を取り上げます。
(例)
htpasswdコマンドでユーザー認証ファイル/etc/squid/passwdを作成し、ユーザーuser01を登録する。
# htpasswd -c /etc/squid/passwd user01
ユーザーuser02も追加して登録する。
# htpasswd /etc/squid/passwd user02
次に設定ファイルsquid.confを編集する。
# auth_paramディレクティブにより、認証ヘルパープログラムとユーザー認証ファイルを指定する。
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
# aclディレクティブによりaclタイプ proxy_authを使用してユーザーuser01をacl名basic_ncsa として定義する。
acl basic_ncsa proxy_auth user01
# ユーザー名にREQUIREDを指定すると、ユーザー認証ファイルに登録されたすべてのユーザーとなる。
acl basic_ncsa proxy_auth REQUIRED
# 指定したユーザーによるアクセスを許可する。
http_access allow basic_ncsa
認証されたユーザーに対して、特定の時間帯を指定してアクセスを許可・拒否することもできる。
http_access allow basic_ncsa MF9-17
http_access allow basic_ncsa & MF9-17
(1)Apache HTTP サーバ バージョン 2.2 ドキュメント
(2)RFC2617
(3)/etc/squid/squid.conf.default:
(注)CentOS 5.2では、squidパッケージに含まれています。
Copyright © ITmedia, Inc. All Rights Reserved.