●概要
Squid(スクウィッド)はプロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。Squidの用途は重複しているリクエストに対したキャッシュ応答によるウェブサーバの高速動作や、ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリのキャッシュなど多岐にわたります。
下記URLを参照。
Squid cache
●インストールと設定
参照URL:squid の設定
参照URL:squid入門
インストールと初期設定は下記のとおりです。
●基本認証設定
アクセスを許可していないホストからでもユーザ名・パスワードによる認証を許可することにより、プロキシサーバーを利用できるようにします。
ユーザ名・パスワードはWebdavの設定で作成したユーザ名・パスワードを利用することとします。
●コマンドによるSquidの確認
参照URL:squidの起動と動作確認
squidの起動後、下記コマンドにより動作確認します。
今回はhttps://www.google.com/?hl=jaのコンテンツを取得できるかを確認しました。
「HTTP/1.1 200 OK」とあれば、正常に動作しています。
●Squidの確認
Webブラウザ(Internet Explorer)設定を設定します。
Internet Explorerのメニューで、
ツール
→ インターネットオプション
→ 「接続」タブ
→ 「LANの設定」ボタン押下
→ 「LANにプロキシサーバーを使用する」をチェック
→ 「詳細設定」ボタン押下
→ 「種類」HTTP及びSecureの「使用するプロキシのアドレス」にサーバーのIPアドレス、「ポート」に8888と入力して
注:Secureでも設定しない場合、https://・・・/でのアクセス時にblacklistで定義されたドメインやURLにヒットしなくなります。
→ OKボタンを押下
診断くんにアクセスして、プロキシサーバーの確認をします。
総合評価:?(A 以上 or 生 IP。下記参照)
と表示されれば正常に動作しています。
参照URL:SquidでWebアクセスをフィルタリングする
ホワイトリスト方式とブラックリスト方式がありますが、どっちを設定するかによって設定方法が異なりますので注意が必要です。
●squidGuardのインストールと設定
2022年1月11日からhttp://www.shallalist.de/Downloads/shallalist.tar.gzに接続できなくなっています。
Rocky Linux 9ではquidGuardをインストール出来なくなっています。
squidGuardをインストールし、設定します。
Shalla's Blacklistsのブラックリストを使用し不要なため、squidGuardと一緒にインストールされるサンプルブラックリスト削除します。
注:IPアドレスによる定義のため固定IPアドレスを割り当てておくこと。
squidGuard設定ファイル(アクセス制御定義)を作成します。
squidGuard設定ファイルを生成します。
Apache用squidGuard設定ファイル作成
●キャッシュの削除
動作試験が終了したらキャッシュを削除するようにしましょう。
●squidGuard-blacklists-udate aborted!
2022年1月11日からhttp://www.shallalist.de/Downloads/shallalist.tar.gzに接続できなくなっています。
root宛に「squidGuard-blacklists-udate aborted!」というメールが送信されるようになりました。
動作を確認すると
Squid(スクウィッド)はプロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。Squidの用途は重複しているリクエストに対したキャッシュ応答によるウェブサーバの高速動作や、ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリのキャッシュなど多岐にわたります。
下記URLを参照。
Squid cache
●インストールと設定
参照URL:squid の設定
参照URL:squid入門
インストールと初期設定は下記のとおりです。
# dnf install squid -y # vi /etc/squid/squid.conf # アクセス元となるネットワークを追記 acl localnet src 192.168.220.0/24 # 許可するポートを指定 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 # /etc/squid/blacklistファイルに拒否するドメインを記載 acl blacklist dstdomain "/etc/squid/blacklist" http_access deny blacklist # Safe_portsで指定したポート以外を拒否 http_access deny !Safe_ports # SSL_portsで指定したポート以外を拒否 http_access deny CONNECT !SSL_ports # キャッシュマネージャーへのアクセスはlocalhostのみ許可 http_access allow localhost manager http_access deny manager # 接続クライアントの許可設定 http_access allow localnet ← localnetで指定したネットワークを許可 http_access allow localhost ← localhostを許可 http_access deny all ← すべてを拒否 # 待受ポート番号の変更 http_port 8080 注:Firewallを利用している場合は該当ポートを開放すること # キャッシュの設定 cache_mem 256 MB cache_dir ufs /var/spool/squid 200 16 256 # Squidのキャッシュディレクトリを作成する際は、以下コマンドを実行します。 # squid -z ← Rocky Linux 9ではサービスを起動すると自動的に作成された。 # coredump出力先を設定 coredump_dir /var/spool/squid #キャッシュ更新間隔の設定 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 # 匿名サーバ化の設定を追記 request_header_access Referer deny all request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all # ホスト名を追記 visible_hostname proxy.bigbang.mydns.jp # IP非表示の設定追記 forwarded_for off # アクセスログの時刻を見やすい表示に logformat squid %tl %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt logformat timefm %{%Y/%m/%d %H:%M:%S}tl %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt access_log /var/log/squid/access.log timefmsquidの起動と自動起動を設定します。
# systemctl start squid # systemctl enable squid
●基本認証設定
アクセスを許可していないホストからでもユーザ名・パスワードによる認証を許可することにより、プロキシサーバーを利用できるようにします。
ユーザ名・パスワードはWebdavの設定で作成したユーザ名・パスワードを利用することとします。
# vi /etc/squid/squid.conf #auth_param basic program <uncomment and complete this line> auth_param basic program /usr/lib/squid/ncsa_auth /var/www/.htpasswd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl CONNECT method CONNECT acl password proxy_auth REQUIRED http_access allow password http_access deny all # systemctl start squid # systemctl enable squid
●コマンドによるSquidの確認
参照URL:squidの起動と動作確認
squidの起動後、下記コマンドにより動作確認します。
今回はhttps://www.google.com/?hl=jaのコンテンツを取得できるかを確認しました。
$ squidclient --host localhost --port proxy-port https://www.google.com/?hl=ja
HTTP/1.1 200 OK
Link: </?hl=ja>;rel="canonical"
Date: Wed, 28 Dec 2022 13:12:37 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Shift_JIS
Cross-Origin-Opener-Policy-Report-Only: same-origin-allow-popups; report-to="gws"
Report-To: {"group":"gws","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/gws/other"}]}
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2022-12-28-13; expires=Fri, 27-Jan-2023 13:12:37 GMT; path=/; domain=.google.com; Secure
Set-Cookie: AEC=AakniGMADUeSbANXDW-B-bX_Eu_qNecP1jgSICOylLWFEL6OCm-LSgCpmQ; expires=Mon, 26-Jun-2023 13:12:37 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=511=J2OMfpmohFif4s3PD8HJp8a3PN0BZtAul4TYw6B-ryX3ukXMbiI6sQJDU74Z1pxjs3vjFQ7sUbib1QmYSAUpNB_8k6sCqYvNeVsWofvBbxmfHTAq0L_sujRQv4K4TDWW4V7Jwp0DH2YoqeX5xp_ar7JcjoH9hdqoeTBTfSlPpws; expires=Thu, 29-Jun-2023 13:12:37 GMT; path=/; domain=.google.com; HttpOnly
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Accept-Ranges: none
Vary: Accept-Encoding
X-Cache: MISS from proxy.bigbang.mydns.jp
X-Cache-Lookup: MISS from proxy.bigbang.mydns.jp:3128
Via: 1.1 proxy.bigbang.mydns.jp (squid/4.15)
Connection: close
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="・・・・・・・・
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Shift_JIS
Cross-Origin-Opener-Policy-Report-Only: same-origin-allow-popups; report-to="gws"
Report-To: {"group":"gws","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/gws/other"}]}
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2022-12-28-13; expires=Fri, 27-Jan-2023 13:12:37 GMT; path=/; domain=.google.com; Secure
Set-Cookie: AEC=AakniGMADUeSbANXDW-B-bX_Eu_qNecP1jgSICOylLWFEL6OCm-LSgCpmQ; expires=Mon, 26-Jun-2023 13:12:37 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=511=J2OMfpmohFif4s3PD8HJp8a3PN0BZtAul4TYw6B-ryX3ukXMbiI6sQJDU74Z1pxjs3vjFQ7sUbib1QmYSAUpNB_8k6sCqYvNeVsWofvBbxmfHTAq0L_sujRQv4K4TDWW4V7Jwp0DH2YoqeX5xp_ar7JcjoH9hdqoeTBTfSlPpws; expires=Thu, 29-Jun-2023 13:12:37 GMT; path=/; domain=.google.com; HttpOnly
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Accept-Ranges: none
Vary: Accept-Encoding
X-Cache: MISS from proxy.bigbang.mydns.jp
X-Cache-Lookup: MISS from proxy.bigbang.mydns.jp:3128
Via: 1.1 proxy.bigbang.mydns.jp (squid/4.15)
Connection: close
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="・・・・・・・・
「HTTP/1.1 200 OK」とあれば、正常に動作しています。
●Squidの確認
Webブラウザ(Internet Explorer)設定を設定します。
Internet Explorerのメニューで、
ツール
→ インターネットオプション
→ 「接続」タブ
→ 「LANの設定」ボタン押下
→ 「LANにプロキシサーバーを使用する」をチェック
→ 「詳細設定」ボタン押下
→ 「種類」HTTP及びSecureの「使用するプロキシのアドレス」にサーバーのIPアドレス、「ポート」に8888と入力して
注:Secureでも設定しない場合、https://・・・/でのアクセス時にblacklistで定義されたドメインやURLにヒットしなくなります。
→ OKボタンを押下
診断くんにアクセスして、プロキシサーバーの確認をします。
総合評価:?(A 以上 or 生 IP。下記参照)
と表示されれば正常に動作しています。
参照URL:SquidでWebアクセスをフィルタリングする
ホワイトリスト方式とブラックリスト方式がありますが、どっちを設定するかによって設定方法が異なりますので注意が必要です。
●squidGuardのインストールと設定
2022年1月11日からhttp://www.shallalist.de/Downloads/shallalist.tar.gzに接続できなくなっています。
Rocky Linux 9ではquidGuardをインストール出来なくなっています。
squidGuardをインストールし、設定します。
# yum -y install squidGuard # cd /usr/local/src # git clone https://github.com/soimort/translate-shell # cd translate-shell/ # make && make install # rm -rf translate-shell/ # cdShalla's Blacklistsで提供されるブラックリストを使用して、ブラックリストを作成します。
Shalla's Blacklistsのブラックリストを使用し不要なため、squidGuardと一緒にインストールされるサンプルブラックリスト削除します。
# rm -f /var/squidGuard/blacklists.tar.gzブラックリスト日次更新スクリプトの作成
# vi /etc/cron.daily/squidGuard-blacklists-udate
#!/bin/sh
cd /var/squidGuard/
# ブラックリストダウンロード
wget http://www.shallalist.de/Downloads/shallalist.tar.gz > /dev/null 2>&1
[ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit
# ブラックリスト展開
tar zxvf shallalist.tar.gz > /dev/null 2>&1
[ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit
rm -f shallalist.tar.gz
# squidGuard設定ファイル(ブラックリスト定義)作成
rm -f /etc/squid/squidGuard-blacklist.conf
cat BL/global_usage | while read line
do
echo ${line} | grep "^NAME:" > /dev/null 2>&1
if [ $? -eq 0 ]; then
NAME=`echo ${line} | awk '{print $2}'`
fi
echo ${line} | grep "^DESC EN:" > /dev/null 2>&1
if [ $? -eq 0 ]; then
DESC=`echo ${line} | sed -e 's/DESC EN: \(.*\)/\1/p' -e d | /usr/local/bin/trans -b --no-auto :ja`
fi
echo ${line} | grep "^NAME EN:" > /dev/null 2>&1
if [ $? -eq 0 ]; then
NAME_FULL=`echo ${line} | sed -e 's/NAME EN: \(.*\)/\1/p' -e d`
echo "# ${NAME_FULL}" >> /etc/squid/squidGuard-blacklist.conf
echo "# ${DESC}" >> /etc/squid/squidGuard-blacklist.conf
echo "dest ${NAME} {" >> /etc/squid/squidGuard-blacklist.conf
echo " domainlist BL/${NAME}/domains" >> /etc/squid/squidGuard-blacklist.conf
echo " urllist BL/${NAME}/urls" >> /etc/squid/squidGuard-blacklist.conf
echo " redirect http://www.bigbang.mydns.jp/cgi-bin/squidGuard-simple.cgi?\
clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u" >> /etc/squid/squidGuard-blacklist.conf
echo " log anonymous block.log" >> /etc/squid/squidGuard-blacklist.conf
echo "}" >> /etc/squid/squidGuard-blacklist.conf
echo >> /etc/squid/squidGuard-blacklist.conf
fi
done
if [ ${#} -eq 0 ]; then
# squidGuard設定ファイル生成
cat /etc/squid/squidGuard-common.conf \
/etc/squid/squidGuard-src.conf \
/etc/squid/squidGuard-blacklist.conf \
/etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf
# ブラックリストDB化
squidGuard -C all
chown -R squid.squid /var/squidGuard/
chown -R squid.squid /var/log/squidGuard/
# Squid再読み込み
squid -k reconfigure
fi
ブラックリスト日次更新スクリプトに実行権限の付加
# chmod +x /etc/cron.daily/squidGuard-blacklists-udateブラックリスト日次更新スクリプト実行(squidGuard設定ファイル(ブラックリスト定義)作成)。作成に少し時間を要します。
# /etc/cron.daily/squidGuard-blacklists-udate 1squidGuard設定ファイル(基本)を作成します。
# vi /etc/squid/squidGuard-common.conf dbhome /var/squidGuard logdir /var/log/squidGuardsquidGuard設定ファイル(IPアドレス定義)を作成します。
注:IPアドレスによる定義のため固定IPアドレスを割り当てておくこと。
# vi /etc/squid/squidGuard-src.conf # IPアドレス定義(管理者) src admin { ip 192.168.100.1 } # IPアドレス定義(端末A) src terminalA { ip 192.168.100.2 } # IPアドレス定義(端末B、C) src other_terminal { ip 192.168.100.3 ip 192.168.100.4 }当ファイルを更新した場合、下記コマンドを実行しsquidGuard設定ファイルを生成し直す必要があります。
squidGuard設定ファイル(アクセス制御定義)を作成します。
# vi /etc/squid/squidGuard-acl.conf # アクセス制御定義 acl { # アクセス制御定義(管理者) admin { # 無制限 pass any } # アクセス制御定義(端末A) terminalA { # 無制限 pass any } # アクセス制御定義(その他) default { # ブラックリストの下記カテゴリ以外アクセス許可 # ※各カテゴリの意味はsquidGuard設定ファイル(ブラックリスト定義)参照 pass !aggressive !costtraps !dating !drugs !gamble !hacking !porn !religion \ !sex/lingerie !sex/education !spyware !violence !warez !weapons all } }当ファイルを更新した場合、下記コマンドを実行しsquidGuard設定ファイルを生成し直す必要があります。
squidGuard設定ファイルを生成します。
# cat /etc/squid/squidGuard-common.conf /etc/squid/squidGuard-src.conf \
/etc/squid/squidGuard-blacklist.conf /etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf
# squidGuard -d -C all ← ブラックリストDB化
・
・
・
2018-03-19 14:52:09 [19585] squidGuard 1.4 started (1521438713.550)
2018-03-19 14:52:09 [19585] db update done
2018-03-19 14:52:09 [19585] squidGuard stopped (1521438729.625)
DBディレクトリ所有者変更
# chown -R squid.squid /var/squidGuard/ログディレクトリ所有者変更
# chown -R squid.squid /var/log/squidGuard/Squid設定ファイル編集
# vi /etc/squid/squid.conf ※以下を追加 # squidGuard連携設定 url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.confsquidGuard-simple.cgi編集
# vi /var/www/cgi-bin/squidGuard-simple.cgi # Email Adresse des Proxy Administrators: # Edit to your requirements. Make sure to keep the @ escaped. 管理者メールアドレス変更 my $PROXYEMAIL = "webmaster\@mail.bigbang.mydns.jp"; squidGuardロゴURL変更(3ヶ所) print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"http://www.squidguard.org/Logos/squidGuard.gif\"\n"; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"http://www.squidguard.org/Logos/squidGuard.gif\"\n"; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"http://www.squidguard.org/Logos/squidGuard.gif\"\n";squid再読み込み。
# systemctl reload squidアクセスブロック時に実行されるCGIスクリプトへ内部からのみアクセスできるよう制限します。
Apache用squidGuard設定ファイル作成
# vi /etc/httpd/conf.d/squidGuard.conf <Files "squidGuard-simple.cgi"> <IfModule mod_authz_core.c> # Apache 2.4 Require ip 127.0.0.1 Require ip 10.0.0.0/8 Require ip 172.16.0.0/12 Require ip 192.168.0.0/16 </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order allow,deny Allow from 127.0.0.1 Allow from 10.0.0.0/8 Allow from 172.16.0.0/12 Allow from 192.168.0.0/16 </IfModule> </Files>apache再読み込み。
# systemctl reload httpd使用しないCGIスクリプトの削除
# rm -f /var/www/cgi-bin/squidGuard-simple-de.cgi # rm -f /var/www/cgi-bin/squidGuard.cgi
●キャッシュの削除
動作試験が終了したらキャッシュを削除するようにしましょう。
# systemctl stop squid # rm -rf /var/spool/squid/* # systemctl start squidまた、ブラウザ側のキャッシュも削除しないと、自分でかけたコンテンツフィルターに引っかかったままになりますので注意が必要です。
●squidGuard-blacklists-udate aborted!
2022年1月11日からhttp://www.shallalist.de/Downloads/shallalist.tar.gzに接続できなくなっています。
root宛に「squidGuard-blacklists-udate aborted!」というメールが送信されるようになりました。
動作を確認すると
# bash -x /etc/cron.daily/squidGuard-blacklists-udate 1 + cd /var/squidGuard/ + wget http://www.shallalist.de/Downloads/shallalist.tar.gz + '[' 0 -ne 0 ']' + tar zxvf shallalist.tar.gz + '[' 2 -ne 0 ']' ++ basename /etc/cron.daily/squidGuard-blacklists-udate ++ basename /etc/cron.daily/squidGuard-blacklists-udate + mail -s 'squidGuard-blacklists-udate aborted!' root + echo 'squidGuard-blacklists-udate aborted!' + exit異常終了しました。
# ls -l /var/squidGuard/ 合計 109528 drwxr-x--- 59 squid squid 4096 7月 27 2020 BL -rw-r--r-- 1 squid squid 3700995 1月 20 16:25 shallalist.tar.gz -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.1 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.2 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.3 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.4 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.5 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.6 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.7 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.8 -rw-r--r-- 1 squid squid 9856619 1月 1 09:01 shallalist.tar.gz.9残骸らしきものがありました。
# rm -f /var/squidGuard/shallalist.tar.gz*shallalist.tar.gzという名前が付いているファイルを全て削除し、再実行したところ正常に処理されました。