labunix's blog

labunixのラボUnix

debian stretchにsquid3+blacklistを導入する。

■debian stretchにsquid3+blacklistを導入する。
 Squid+squidGuard構成は沢山構築してきたけど、今はやり方が少し異なる様子。
 個人で使うにはヒット率から考えても、個別のblacklistがあれば十分。
 Squidもまた設定方法が変わっているのでSquidに限定して進める。

$ lsb_release -d
Description:	Debian GNU/Linux 9.4 (stretch)

■「/etc/squid3/」ではなく「/etc/squid/」にインストールされる。

$ apt-cache show squid3 | grep -A 4 ^Description-ja
Description-ja: 移行用パッケージ
 Squid は、FTP、gopher、ICY、HTTP データオブジェクトをサポートする、
 ウェブクライアント用の高性能なキャッシュプロクシサーバです。
 .
 squid3 から squid へ移行するための遷移パッケージです。

$ sudo apt-get install -y squid3

■squidの設定変更
 「squid -k parse」で確認すると「via off」に対して警告が出るので消している以外はいつもどおり。

$ sudo cp /etc/squid/squid.conf{,bak}

$ diff /etc/squid/squid.conf{.bak,} | awk '/^>/{gsub("> ","",$0);{print $0}}'
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
http_access allow localnet
http_port 0.0.0.0:8080
logformat combined   %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log daemon:/var/log/squid/access.log combined
request_header_access User-Agent deny all
request_header_replace User-Agent Gozilla/5.0
visible_hostname unknown_internal
never_direct allow all
dns_nameservers XX.XX.XX.XX
forwarded_for off

$ sudo systemctl status squid | grep Active
   Active: active (running) since Wed 2018-05-02 02:50:58 JST; 37min ago

$ sudo chown -R proxy:proxy /etc/squid; \
    sudo -u proxy squid -k parse; \
    sudo -u proxy squid -k reconfigure

■以下同様IPv6無効を行う。

 下位プロキシサーバとして、Squid3+SquidGuardを導入する。
 http://labunix.hateblo.jp/entry/20151114/1447511721

$ diff /etc/squid/squid.conf{.20180502,} | awk '!/^. #/&&/^> [a-z]/{gsub("> ","",$0);print $0}' 
pinger_enable off
udp_incoming_address 0.0.0.0
udp_outgoing_address 0.0.0.0

■ブラックリストの設定
 blacklistにはドメインを指定、「.」ではじめるとサブドメインを含める。
 blacklist_regexにはドメインを正規表現で指定。
 squidGuardの書式と変わらないので書き方については触れない。
 「http_access allow localnet」等の評価の前となるように順序に気をつける。

$ sudo touch /etc/squid/blacklist{,_regex}

$ diff /etc/squid/squid.conf{.20180502,} | awk '!/^. #/&&/^> [a-z]/{gsub("> ","",$0);print $0}' 
acl blacklist dstdomain "/etc/squid/blacklist"
acl blacklist_regex url_regex "/etc/squid/blacklist_regex"
http_access deny blacklist
http_access deny blacklist_regex

$ sudo systemctl reload squid.service

■ブラックリストドメインのテスト
 「https://5ch.net/」にリダイレクトされる前に「403: Forbidden」となる。

$ grep 2ch /etc/squid/blacklist
.2ch.net

$ wget -O - http://www.2ch.net
--2018-05-02 03:37:31--  http://www.2ch.net/
172.XX.XX.XX:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 403 Forbidden
2018-05-02 03:37:31 エラー 403: Forbidden。

■正常ドメインのテスト
 「https://www.google.co.jp/」にリダイレクトされて、stdoutに出力。

--2018-05-02 03:46:30--  https://google.co.jp/
172.31.XX.XX:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: https://www.google.co.jp/ [続く]
--2018-05-02 03:46:30--  https://www.google.co.jp/
172.31.31.XX:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`STDOUT' に保存中

-       [ <=>                                                   ]  10.37K  --.-KB/s    in 0.003s  

2018-05-02 03:46:31 (3.03 MB/s) - stdout へ出力しました [10614]