アクセスコントロール


squid.conf

# ACL要素
acl 名前1 タイプ ...
acl 名前2 タイプ ...

# ACLリスト
http_access allow 名前1 # 許可
http_access deny 名前2 # 拒否
http_access deny all # その他すべて拒否

ACL要素

acl 名前 タイプ 引数

# 例: デフォルトの一部
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16 # <- 上書きではなくOR

ACLタイプ


ACLリスト

http_access allow|deny ACL要素1 ACL要素2 ...

リスト末尾: http_access deny all

# 例: デフォルトの一部
http_access allow localnet # 先のもの優先
http_access allow localhost
http_access deny all # <= ローカル以外はここにマッチして全部拒否

(以降例示の前提)

間違い例

acl client1 src 192.168.0.1
acl client2 src 192.168.0.2
http_access allow client1 client2 # 絶対にマッチしない
# 正しくは
http_access allow client1
http_access allow client2

特定ドメインの宛先を禁止する

acl NGdomain dstdomain .example.com
http_access deny NGdomain
acl NGdomain1 dstdomain example.com
acl NGdomain2 dstdomain example.org
http_access deny NGdomain1
http_access allow localnet # localnetはexample.orgにはアクセスできる
http_access deny NGdomain2 # localnetはここにはマッチしない

特定ドメインだけ許可

acl OK dstdomain .example.com
http_access allow OK
http_access deny all

特定のクライアントだけ許可

# client1以外はexample.com禁止
acl client1 src 192.168.1.2
acl onlyClient1 dstdomain example.com
http_access allow client1 onlyClient1 # AND条件
http_access deny onlyClient1

ブラックリスト・ファイル

.example.org
example.com
acl NGdomain dstdomain "/etc/squid/blacklist"
http_access deny NGdomain

timeタイプ: 時間帯で許可

# 月-金 9-17時半
acl daytime1 time MTWHF 09:00-17:30
acl domain1 dstdomain example.com
acl domain2 dstdomain example.org
http_access allow daytime1 domain1
http_access allow !daytime1 domain2 # 時間帯反転
http_access deny all

Safe_ports

http_access deny !Safe_ports