最終更新日: 2014年1月13日
Squid Home / Index

ディレクティブ: acl

以前の名前:
動作条件:
デフォルト値: none
提案された設定: ACLs all, manager, localhost, そしてローカルホストに対する所定値
#
# Recommended minimum configuration:
# 最小限の推奨される設定:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
# 参考ルールはローカルネットワークからのアクセスを許可します。
# あなたの(内部)ネットワークから閲覧が許可される場所のリストに適応します。
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

アクセスリストの定義

すべてのアクセスリストの定義はacl名(aclname)とaclタイプ(acltype)で始まり、タイプ固有の引数(argument)または引用符で囲まれたファイル名(file)から引数が読み込まれる。
acl aclname acltype argument ...
acl aclname acltype "file" ...

"file"を使用している場合、そのファイルでは1行につき1つのアイテムがとなっている必要があります。

いくつかのACLタイプは、デフォルトの動作を変更するオプションをサポートしています。
利用可能なオプションは次のとおりです。:
-i,+i
By default, regular expressions are CASE-SENSITIVE. To make them case-insensitive, use the -i option.
To return case-sensitive use the +i option between patterns, or make a new ACL line without -i.
デフォルトでは、正規表現は大文字と小文字が区別されます。正規表現で大文字と小文字を区別しないようにするには、-i オプションを使用します。
大文字と小文字を区別する場合には、パターン間で + i オプションを使うか、-i なしのACLの行で 作成します。
-n
パラメータのタイプ(ドメイン名やIPアドレス)はメッセージアドレスのタイプと一致しないため、ルックアップや変換が必要な場合は、ACLには、直ちに警告やルックアップすることなく、不整合を宣言します。つまり、ドメイン名が必要なACLにIPアドレスを、IPアドレスが必要なACLにドメイン名を指定してはいけません。
--
ACLへの値として'-'を最初の文字(例えば'-' は有効なドメイン名)としているような場合には、すべてのオプションの処理を停止する。
いくつかのaclタイプでの要求は外部データ・ソースにアクセスするために処理が遅延する。
これらのものには、早いものは[fast]、遅いものには[slow]のタグがつけてある。
さらに詳しい情報については、http://wiki.squid-cache.org/SquidFaq/SquidAclを参照してください
***** ACL タイプ ***** 

acl aclname src ip-address/netmask ... # クライアントIPアドレス [fast]
acl aclname src addr1-addr2/netmask ... # 範囲内のアドレス [fast]

acl aclname [-n] dst ip-address/netmask ... #URLホストのIPアドレス [slow]

acl aclname localip ip-address/mask ... # クライアントが接続してきたIPアドレス [fast]

acl aclname arp mac-address ... (xx:xx:xx:xx:xx:xx notation)
# arp ACLを使うためには configure で --enable-arp-acl オプションの指定が必要です。
# さらに、幾つかのオペレーティングシステムでは ARP ACL のコードを移植することができません。
# これは、Linux, Solaris, Windows, FreeBSDそして*BSD系で動作します。[fast] # # 注:Squidは、同じサブネット上にあるクライアントのMACアドレスを確定することができます。 # クライアントが異なるサブネット上にある場合は、SquidはそのMACアドレスを見つけることができません。 acl aclname srcdomain .foo.com ... # クライアントのIPアドレスからドメイン名を検索 [slow] acl aclname dstdomain [-n] .foo.com ... # URLから接続先のドメイン名を得ます。 [fast] acl aclname srcdom_regex [-i] \.foo\.com ... # 正規表現を使いクライアントのドメインとマッチするか調べます。 [slow] acl aclname dstdom_regex [-n] [-i] \.foo\.com ... # 正規表現を使いサーバのドメインとマッチするか調べます。 [fast] # # dstdomainとdstdom_regexでは、IPベースのURLが使用され場合一致するものが見つからなかった場合には逆引きをする。 # 逆引きが失敗した場合に名前"none"使われます。 acl aclname src_as number ... acl aclname dst_as number ... # [fast] # アクセス・コントロールを除いて、番号(number)は特定のキャッシュへのリクエストを送るため # に使用することができます。 # 例えば、mycache.mydomain.netへの転送を1241番だけにすべて転送なら: # acl asexample dst_as 1241 # cache_peer_access mycache.mydomain.net allow asexample # cache_peer_access mycache_mydomain.net deny all acl aclname src_as number ... acl aclname dst_as number ... # [fast] # アクセス・コントロールを除いて、AS番号を使って特定のキャッシュへリクエストを送るために使用できます。 # ここに、AS#1241の要求をすべて mycache.mydomain.net へ送るための例を示します: # acl asexample dst_as 1241 # cache_peer_access mycache.mydomain.net allow asexample # cache_peer_access mycache_mydomain.net deny all acl aclname peername myPeer ... # [fast] # cache_peer エントリを適合させるため、cache_peer での設定で "name="をセットしてください。 acl aclname time [day-abbrevs] [h1:m1-h2:m2] # [fast] # day-abbrevs: # S - Sunday # M - Monday # T - Tuesday # W - Wednesday # H - Thursday # F - Friday # A - Saturday # h1:m1 は h2:m2よりも小さくすること acl aclname url_regex [-i] ^http:// ... # URLの中から正規マッチング [fast] acl aclname urllogin [-i] [^a-zA-Z0-9] ... # URLのloginフィールドの中から正規マッチング acl aclname urlpath_regex [-i] \.gif$ ... # URLパスの正規マッチング [fast] acl aclname port 80 70 21 0-1024... # 接続先 TCPポート [fast] # 範囲を指定できる acl aclname localport 3128 ... # クライアントから接続されたTCPポート [fast] # NP: interception モードではこれは通常 '80' # (NP:って慣用句だと思うが、何の意味だ? "No Problem?") acl aclname myportname 3128 ... # http(s)_port の名前 [fast] acl aclname proto HTTP FTP ... # リクエストプロトコル [fast] acl aclname method GET POST ... # HTTPリクエストメソッド [fast] acl aclname http_status 200 301 500- 400-403 ... # 応答コードのステータス [fast] acl aclname browser [-i] regexp ... # ユーザエージェントヘッダーとパターンマッチ (req_headerも参照のこと) [fast] acl aclname referer_regex [-i] regexp ... # Referer ヘッダーとパターンマッチ [fast] # Refererは非常に信頼性が低い。ですから注意して使用してください。 acl aclname ident username ... acl aclname ident_regex [-i] pattern ... # ident 出力の文字列とマッチ [slow] # すべての null 以外の ident を受け入れるには REQUIRED を使う。 acl aclname proxy_auth [-i] username ... acl aclname proxy_auth_regex [-i] pattern ... # [slow] # クライアントへのHTTP認証チャレンジを実行し提供された資格情報との照合 # し許可されたユーザー名のリストを取ります。 # 任意の有効なユーザ名を受け付けるには REQUIRED を使用しています。 # # プロキシ認証はフォワードプロキシのシナリオと、リバースプロキシにおけるプレーンHTTP認証 # のシナリオで利用できます。 # # 注: Proxy-Authenticationヘッダーは送信されますが、ACLのチェックの際には必要なく、 # ユーザ名もaccess.logには記録されません。 # # 注: proxy_authはユーザ名/パスワードの組み合わせを確認するために、外部認証プログラム # (auth_paramディレクティブを参照)が必要です。 # # 注: proxy_authはブラウザによってプロキシ認証を使う設定が必要になるため、透過(transparent)/ # インターセプト(intercepting)プロキシでは、使用することができない。 acl aclname snmp_community string ... # SNMPエージェントへのアクセスを制限するコミュニティの名前 [fast] # 例: # acl snmppublic snmp_community public acl aclname maxconn number # これは、クライアントのIPアドレスが <number> より多くのTCP接続を行ったときにマッチします。 [fast] # 注: この測定はTCPでのダイレクトリンクだけで、X-Forwarded-For のような間接ののクライアントは数えられません。 acl aclname max_user_ip [-s] number # ユーザーが異なるIPアドレスから<number>よりも多くログインしようとしたときにマッチします。 # authenticate_ip_ttlパラメータは、IPのエントリのタイムアウトを制御します。 [fast] # -sが指定された場合、制限が厳格で、TTLが経過するまでそれ以上のIPアドレスからアクセス拒否しします。 # -sがないとSquid「無作為」に要求を拒否することになり、ユーザーをいらいらさせるでしょう。 # (上限に達するたびにカウンタはリセットされ、要求は拒否されます。) # 注: アクセラレーションモードやメッシュの中の子プロキシがある中では、クライアントはプロキシファームを # 経由している場合は複数のアドレスから来るように見えることがあるので、リミットで1とすると、ユーザに # 問題を引き起こす可能性があります。 acl aclname random probability # リクエストが擬似ランダムに一致する。確率に基づいて与えられる。 # Probability には小数点(0.333)、分数(1/3)または配分(1:3)のように記述できる。 # 上記がマッチする場合(3:5)ではマッチしない。 # (訳者: この機能はアップリンクへのロードバランシングなどに利用することを目的とされいるようである) acl aclname req_mime_type [-i] mime-type ... # クライアントによって生成されたリクエストのMIMEタイプに対する正規表現マッチ。フ # ァイルのアップロードまたはいくつかのタイプのHTTPトンネリング要求を検出するために # 使用することができる [fast] # 注: これは、リプライ(応答)と一致していません。あなたは、返されたファイルタイプのマッチにこれを使用することは # できません。 acl aclname req_header header-name [-i] any\.regex\.here # 既知のリクエストヘッダのいずれかに対して正規表現マッチ。 # "browser","referer"そして"mime-type"のスーパーセットACLとして考えることができる。 acl aclname rep_mime_type [-i] mime-type ... # Squidが受信したリプライ(応答)のMIMEタイプに対する正規表現マッチ。 # ファイルのダウンロードまたはいくつかの種類のHTTPトンネリング要求を検出するために使用することが # できる。 [fast] # これはhttp_accessはルールには効果がありません。唯一、http_reply_accessなどのリプライ(応答) # データストリームに影響を与えるルールに効果があります。 acl aclname rep_header header-name [-i] any\.regex\.here # 既知のリプライヘッダのいずれかに対して正規表現マッチ。 # "browser","referer"そして"mime-type"のスーパーセットACLとして考えることができる。[fast] acl aclname external class_name [arguments...] # external_acl_type ディレクティブで定義されたヘルパークラスを介して外部のACL検索 [slow] acl aclname user_cert attribute values... # ユーザSSL証明書属性の中で属性に対して DN/C/O/CN/L/ST の1つが一致する [fast] acl aclname ca_cert attribute values... # ユーザ発行元のCA SSL証明書の属性に対して DN/C/O/CN/L/ST の1つが一致する [fast] acl aclname ext_user username ... acl aclname ext_user_regex [-i] pattern ... # 外部ACLヘルパーによって返されたユーザ名と文字列をマッチ [slow] # null以外のどんなユーザー名も受け入れするためには REQUIRED を使用してください。 acl aclname tag tagvalue ... # 外部ACLヘルパーによって返されたタグと文字列をマッチ [slow] acl aclname hier_code codename ... # Squidの階層コードに対する文字列。 [fast] # 例えば、 DIRECT, PARENT_HIT, NONE, etc. # # 注: これは http_access' ルールでは効果がありません。 # http_reply_access のようなリプライ(応答)データストリームに対して影響を与える # ルールに効果があります。 acl aclname note name [value ...] # トランザクションの注釈とマッチ [fast] # valueを省略した場合、与えたnameとつねに注釈がマッチします。 # valueを指定した場合、指定された値のいずれかを持った名前の注釈と一致します。 # name と value の文字列は等価テストを使用して比較している。 # 注釈ソースは note と adaptation_meta ディレクティブだけでなく、ヘルパーおよびeCAPの応答が含まれています。 >以下はSSLを使う場合のみ acl aclname ssl_error errorname # SSL証明書の検証エラーに対してマッチを行います。 [fast] # # 有効なエラー名は、/usr/local/squid/share/errors/templates/error-details.txt # テンプレートファイルで参照してください。 # # 証明書のプロパティのショートカットとして以下を使用することができる。 # [ssl::]certHasExpired: "not after"であり、フィールドは過去のものである。 # [ssl::]certNotYetValid: "not before" であり、フィールドは未来のものである。 # [ssl::]certUntrusted: 証明書発行者を信頼できない。 # [ssl::]certSelfSigned: 証明書は自己署名されています。 # [ssl::]certDomainMismatch: 証明書のCNドメインの名前と接続しているホストの名前と一致していません。 # # SSL::certHasExpired, SSL::certNotYetValid, SSL::certDomainMismatch, SSL::certUntrusted, # および SSL::certSelfSigned、また、単に'all'は、あらかじめ定義されたACLとして使用することができます。 # # 注: ssl_error ACL は、sslproxy_cert_error, sslproxy_cert_sign, およびsslproxy_cert_adaptオプションで # のみサポートされています。 acl aclname server_cert_fingerprint [-sha1] fingerprint # サーバーのSSL証明書のフィンガープリントに対してマッチ [fast] # # フィンガープリントは全証明書のDERエンコードされたバージョンのダイジェストです。ユーザーは # form: XX:XX:...を使っているであろう。 # 使用するダイジェストアルゴリズムを指定は省略可能な引数です。 # ダイジェストアルゴリズムはデフォルトSHA1で、これは現在サポートされている唯一のアルゴリズムです。 <以上、SSLを使う場合 acl aclname any-of acl1 acl2 ... # acl のうちのいずれか1つとマッチします。 [fast or slow] # 最初に適合したACLがあれば、その後のACLは評価しません。 # # ACLの複数の行で同じ名前の行はいずれかの論理和です。 # 例として、 A = (a1 or a2) or (a3 or a4)は次のように記述できます。 # acl A any-of a1 a2 # acl A any-of a3 a4 # # ごのグループACLでは、全評価対象のACLの最初が早いものであれば、早く評価されます。 acl aclname all-of acl1 acl2 ... # acl のうちのすべてとマッチします。 [fast or slow] # 不適合したACLがあれば、その後のACLは評価しません。 # # ACLの複数の行で同じ名前の行はいずれかの論理和です。 # 例として、 B = (b1 and b2) or (b3 and b4) は次のように記述します。 # acl B all-of b1 b2 # acl B all-of b3 b4 # # ごのグループACLでは、全評価対象のACLの最初が早いものであれば、早く評価されます。
使用例:
acl macaddress arp 09:00:2b:23:45:67
acl myexample dst_as 1241
acl password proxy_auth REQUIRED
acl fileupload req_mime_type -i ^multipart/form-data$
acl javascript rep_mime_type -i ^application/x-javascript$

Topへ戻る

Copyright© 1998-2014 ROBATA.ORG