squidでのホワイトリストとブラックリスト

proxyでの管理でコンフィグファイルをいちいち変更しないでいいようにブラックリストとホワイトリストの運用にしたいと思い作った時のメモです。

いつもはsquid.confに直接記述していましたがaclでリストを読み込む方法に変更します。

aclのベースは下記の通りです。

http_port 8080

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

http_access allow localnet

http_access allow localhost

http_access deny all

ここからaclにファイルを読み込ませる設定を追記します。
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
↓ 間に記述する
## acl allow policy
acl whitelist dstdomain “/usr/local/squid/etc/whitelist” ←ファイルの場所を指定
## acl deny policy
acl blacklist dstdomain “/usr/local/squid/etc/blacklist” ←ファイルの場所を指定

## allow rule
http_access allow whitelist
## deny rule
http_access deny blacklist
↑ 間に記述する
http_access allow localnet

簡単に説明するとaclで読み込むファイルを指定してhttp_accessでallowかdenyか決めています。
注意する所としてはファストマッチなのでallowの上にブラックリストのdenyポリシーを入れることでリストのものだけブロックが可能です。さらにその上にホワイトリストのallowポリシーを入れることでリストのものだけ通過させる事が可能です。
今回は宛先のドメインでの制御にしていますが、dstdoaminをsrcに変更することでクライアントIP等での制御も可能です。

2つに該当しないものはデフォルトのポリシーのlocalnetからの通信は許可して他はすべて禁止にします。

リストの場所はどこでもいいですがなるべくわかりやすい所がいいと思います。

リストの書き方
whitelistで許可するドメインをサブドメインを含む形で書きます。
subdomain.nekofamily.ddo.jp

blacklistではブロックするドメインを書きます。
.nekofamily.ddo.jp ←最初に.を入れることでサブドメインも含む形でブロックできます。

上記の設定だとnekofamily.ddo.jpへのアクセスはできないが、subdomain.nekofamily.ddo.jpだけアクセスできるという形になります。

コメントする