#author("2018-08-29T15:46:55+09:00","","") #author("2018-08-29T15:48:14+09:00","","") [[CentOS7]] *プロキシサーバーでコンテンツフィルタリング(squidGuard) [#refb7806] [[Squid>squidインストール]]と連携して使用するフィルタリングソフトである[[squidGuard>http://www.squidguard.org/]]を利用して子供がスマホでアダルトサイト等の不適切なサイトへアクセスできないようにする。ここでは、アクセス元IPアドレス※により、ブラックリストに登録されたサイトへアクセスできないようにする。 &color(red){※あらかじめ[[DHCP>DHCPサーバーインストール]]設定で固定IPアドレスを割り当てておくこと}; *squidGuardインストール [#rc072d8f] |BGCOLOR(black):COLOR(white):|c |[root@centos ~]# yum -y install squidGuard &color(lime){← squidGuardインストール};| |[root@localhost ~]# yum -y install squidGuard &color(lime){← squidGuardインストール};| *squidGuard設定 [#k2a51f74] **Google翻訳コマンドインストール ※後述の「ブラックリスト作成」で使用 [#c5785397] |BGCOLOR(black):COLOR(white):|c |[root@centos ~]# git clone https://github.com/soimort/translate-shell &color(lime){← translate-shellダウンロード};| |[root@centos ~]# cd translate-shell/ &color(lime){← ダウンロード先ディレクトリへ移動};| |[root@centos translate-shell]# make && make install &color(lime){← translate-shellインストール};| |[root@centos translate-shell]# cd &color(lime){← ホームディレクトリへ戻る};| |[root@centos ~]# rm -rf translate-shell/ &color(lime){← translate-shellディレクトリ削除};| |[root@localhost ~]# git clone https://github.com/soimort/translate-shell &color(lime){← translate-shellダウンロード};| |[root@localhost ~]# cd translate-shell/ &color(lime){← ダウンロード先ディレクトリへ移動};| |[root@localhost translate-shell]# make && make install &color(lime){← translate-shellインストール};| |[root@localhost translate-shell]# cd &color(lime){← ホームディレクトリへ戻る};| |[root@localhost ~]# rm -rf translate-shell/ &color(lime){← translate-shellディレクトリ削除};| **ブラックリスト作成 [#w17f4b10] Shalla's Blacklistsで提供されるブラックリストを使用する。 |BGCOLOR(black):COLOR(white):|c |[root@centos ~]# rm -f /var/squidGuard/blacklists.tar.gz &color(lime){← squidGuardと一緒にインストールされるサンプルブラックリスト削除 ※[[Shalla's Blacklists>http://www.shallalist.de/]]のブラックリストを使用するので不要なため};| |[root@centos ~]# vi /etc/cron.daily/squidGuard-blacklists-udate &color(lime){← ブラックリスト日次更新スクリプト作成};| |#!/bin/sh &br; &br; cd /var/squidGuard/ &br; &br; # ブラックリストダウンロード &br; wget http://www.shallalist.de/Downloads/shallalist.tar.gz > /dev/null 2>&1 &br; [ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit &br; &br; # ブラックリスト展開 &br; tar zxvf shallalist.tar.gz > /dev/null 2>&1 &br; [ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit &br; rm -f shallalist.tar.gz &br; &br; # squidGuard設定ファイル(ブラックリスト定義)作成 &br; rm -f /etc/squid/squidGuard-blacklist.conf &br; cat BL/global_usage | while read line &br; do &br; echo ${line} | grep "^NAME:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; NAME=`echo ${line} | awk '{print $2}'` &br; fi &br; echo ${line} | grep "^DESC EN:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; DESC=`echo ${line} | sed -e 's/DESC EN: \(.*\)/\1/p' -e d | /usr/local/bin/trans -b --no-auto :ja` &br; fi &br; echo ${line} | grep "^NAME EN:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; NAME_FULL=`echo ${line} | sed -e 's/NAME EN: \(.*\)/\1/p' -e d` &br; echo "# ${NAME_FULL}" >> /etc/squid/squidGuard-blacklist.conf &br; echo "# ${DESC}" >> /etc/squid/squidGuard-blacklist.conf &br; echo "dest ${NAME} {" >> /etc/squid/squidGuard-blacklist.conf &br; echo " domainlist BL/${NAME}/domains" >> /etc/squid/squidGuard-blacklist.conf &br; echo " urllist BL/${NAME}/urls" >> /etc/squid/squidGuard-blacklist.conf &br; echo " redirect http://centossrv.com/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u" >> /etc/squid/squidGuard-blacklist.conf &br; echo " log anonymous block.log" >> /etc/squid/squidGuard-blacklist.conf &br; echo "}" >> /etc/squid/squidGuard-blacklist.conf &br; echo >> /etc/squid/squidGuard-blacklist.conf &br; fi &br; done &br; &br; if [ ${#} -eq 0 ]; then &br; &br; # squidGuard設定ファイル生成 &br; cat /etc/squid/squidGuard-common.conf \ &br; /etc/squid/squidGuard-src.conf \ &br; /etc/squid/squidGuard-blacklist.conf \ &br; /etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf &br; &br; # ブラックリストDB化 &br; squidGuard -C all &br; chown -R squid.squid /var/squidGuard/ &br; chown -R squid.squid /var/log/squidGuard/ &br; &br; # Squid再読み込み &br; squid -k reconfigure &br; fi| |[root@centos ~]# chmod +x /etc/cron.daily/squidGuard-blacklists-udate &color(lime){← ブラックリスト日次更新スクリプトに実行権限付加};| |[root@centos ~]# /etc/cron.daily/squidGuard-blacklists-udate 1 &color(lime){← ブラックリスト日次更新スクリプト実行(squidGuard設定ファイル(ブラックリスト定義)作成)};| |[root@localhost ~]# rm -f /var/squidGuard/blacklists.tar.gz &color(lime){← squidGuardと一緒にインストールされるサンプルブラックリスト削除 ※[[Shalla's Blacklists>http://www.shallalist.de/]]のブラックリストを使用するので不要なため};| |[root@localhost ~]# vi /etc/cron.daily/squidGuard-blacklists-udate &color(lime){← ブラックリスト日次更新スクリプト作成};| |#!/bin/sh &br; &br; cd /var/squidGuard/ &br; &br; # ブラックリストダウンロード &br; wget http://www.shallalist.de/Downloads/shallalist.tar.gz > /dev/null 2>&1 &br; [ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit &br; &br; # ブラックリスト展開 &br; tar zxvf shallalist.tar.gz > /dev/null 2>&1 &br; [ $? -ne 0 ] && echo "$(basename ${0}) aborted!" | mail -s "$(basename ${0}) aborted!" root && exit &br; rm -f shallalist.tar.gz &br; &br; # squidGuard設定ファイル(ブラックリスト定義)作成 &br; rm -f /etc/squid/squidGuard-blacklist.conf &br; cat BL/global_usage | while read line &br; do &br; echo ${line} | grep "^NAME:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; NAME=`echo ${line} | awk '{print $2}'` &br; fi &br; echo ${line} | grep "^DESC EN:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; DESC=`echo ${line} | sed -e 's/DESC EN: \(.*\)/\1/p' -e d | /usr/local/bin/trans -b --no-auto :ja` &br; fi &br; echo ${line} | grep "^NAME EN:" > /dev/null 2>&1 &br; if [ $? -eq 0 ]; then &br; NAME_FULL=`echo ${line} | sed -e 's/NAME EN: \(.*\)/\1/p' -e d` &br; echo "# ${NAME_FULL}" >> /etc/squid/squidGuard-blacklist.conf &br; echo "# ${DESC}" >> /etc/squid/squidGuard-blacklist.conf &br; echo "dest ${NAME} {" >> /etc/squid/squidGuard-blacklist.conf &br; echo " domainlist BL/${NAME}/domains" >> /etc/squid/squidGuard-blacklist.conf &br; echo " urllist BL/${NAME}/urls" >> /etc/squid/squidGuard-blacklist.conf &br; echo " redirect http://hoge.com/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u" >> /etc/squid/squidGuard-blacklist.conf &br; echo " log anonymous block.log" >> /etc/squid/squidGuard-blacklist.conf &br; echo "}" >> /etc/squid/squidGuard-blacklist.conf &br; echo >> /etc/squid/squidGuard-blacklist.conf &br; fi &br; done &br; &br; if [ ${#} -eq 0 ]; then &br; &br; # squidGuard設定ファイル生成 &br; cat /etc/squid/squidGuard-common.conf \ &br; /etc/squid/squidGuard-src.conf \ &br; /etc/squid/squidGuard-blacklist.conf \ &br; /etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf &br; &br; # ブラックリストDB化 &br; squidGuard -C all &br; chown -R squid.squid /var/squidGuard/ &br; chown -R squid.squid /var/log/squidGuard/ &br; &br; # Squid再読み込み &br; squid -k reconfigure &br; fi| |[root@localhost ~]# chmod +x /etc/cron.daily/squidGuard-blacklists-udate &color(lime){← ブラックリスト日次更新スクリプトに実行権限付加};| |[root@localhost ~]# /etc/cron.daily/squidGuard-blacklists-udate 1 &color(lime){← ブラックリスト日次更新スクリプト実行(squidGuard設定ファイル(ブラックリスト定義)作成)};| **squidGuard設定 [#s5a13867] |BGCOLOR(black):COLOR(white):|c |[root@centos ~]# vi /etc/squid/squidGuard-common.conf &color(lime){← squidGuard設定ファイル(基本)作成};| |[root@localhost ~]# vi /etc/squid/squidGuard-common.conf &color(lime){← squidGuard設定ファイル(基本)作成};| |dbhome /var/squidGuard &br; logdir /var/log/squidGuard| |[root@centos ~]# vi /etc/squid/squidGuard-src.conf &color(lime){← squidGuard設定ファイル(IPアドレス定義)作成};| |[root@localhost ~]# vi /etc/squid/squidGuard-src.conf &color(lime){← squidGuard設定ファイル(IPアドレス定義)作成};| |# IPアドレス定義(管理者) &br; src admin { &br; ip 192.168.1.11 &br; } &br; &br; # IPアドレス定義(ママ) &br; src mama { &br; ip 192.168.1.12 &br; } &br; &br; # IPアドレス定義(子供) &br; src kids { &br; ip 192.168.1.13 &br; ip 192.168.1.14 &br; }| |[root@centos ~]# vi /etc/squid/squidGuard-acl.conf &color(lime){← squidGuard設定ファイル(アクセス制御定義)作成};| |[root@localhost ~]# vi /etc/squid/squidGuard-acl.conf &color(lime){← squidGuard設定ファイル(アクセス制御定義)作成};| |# アクセス制御定義 &br; acl { &br; &br; # アクセス制御定義(管理者) &br; admin { &br; # 無制限 &br; pass any &br; } &br; &br; # アクセス制御定義(ママ) &br; mama { &br; # 無制限 &br; pass any &br; } &br; &br; # アクセス制御定義(その他) &br; default { &br; # ブラックリストの下記カテゴリ以外アクセス許可 &br; # ※各カテゴリの意味はsquidGuard設定ファイル(ブラックリスト定義)参照 &br; pass !aggressive !costtraps !dating !drugs !gamble !hacking !porn !religion !sex/lingerie !sex/education !spyware !violence !warez !weapons all &br; } &br; }| |[root@centos ~]# cat /etc/squid/squidGuard-common.conf \ &br; /etc/squid/squidGuard-src.conf \ &br; /etc/squid/squidGuard-blacklist.conf \ &br; /etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf &color(lime){← squidGuard設定ファイル生成};| |[root@centos ~]# squidGuard -d -C all &color(lime){← ブラックリストDB化};| |[root@localhost ~]# cat /etc/squid/squidGuard-common.conf \ &br; /etc/squid/squidGuard-src.conf \ &br; /etc/squid/squidGuard-blacklist.conf \ &br; /etc/squid/squidGuard-acl.conf > /etc/squid/squidGuard.conf &color(lime){← squidGuard設定ファイル生成};| |[root@localhost ~]# squidGuard -d -C all &color(lime){← ブラックリストDB化};| |・ &br; ・ &br; ・ &br; 2017-06-19 16:01:40 [782] squidGuard 1.4 started (1497855664.965) &br; 2017-06-19 16:01:40 [782] db update done &br; 2017-06-19 16:01:40 [782] squidGuard stopped (1497855700.105)| |[root@centos ~]# chown -R squid.squid /var/squidGuard/ &color(lime){← DBディレクトリ所有者変更};| |[root@centos ~]# chown -R squid.squid /var/log/squidGuard/ &color(lime){← ログディレクトリ所有者変更};| |[root@centos ~]# vi /etc/squid/squid.conf &color(lime){← Squid設定ファイル編集};| |[root@localhost ~]# chown -R squid.squid /var/squidGuard/ &color(lime){← DBディレクトリ所有者変更};| |[root@localhost ~]# chown -R squid.squid /var/log/squidGuard/ &color(lime){← ログディレクトリ所有者変更};| |[root@localhost ~]# vi /etc/squid/squid.conf &color(lime){← Squid設定ファイル編集};| |&color(lime){以下を追加}; &br; # squidGuard連携設定 &br; url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf| |[root@centos ~]# vi /var/www/cgi-bin/squidGuard-simple.cgi &color(lime){← squidGuard-simple.cgi編集};| |# Email Adresse des Proxy Administrators: &br; # Edit to your requirements. Make sure to keep the @ escaped. &br; my $PROXYEMAIL = "root\@&color(lime){centossrv.com};"; &color(lime){← 管理者メールアドレス変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更};| |[root@centos ~]# systemctl reload squid &color(lime){← Squid設定再読込み};| |[root@localhost ~]# vi /var/www/cgi-bin/squidGuard-simple.cgi &color(lime){← squidGuard-simple.cgi編集};| |# Email Adresse des Proxy Administrators: &br; # Edit to your requirements. Make sure to keep the @ escaped. &br; my $PROXYEMAIL = "root\@&color(lime){hoge.com};"; &color(lime){← 管理者メールアドレス変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更}; &br; &br; print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"&color(lime){http://www.squidguard.org/Logos/squidGuard.gif};\"\n"; &color(lime){← squidGuardロゴURL変更};| |[root@localhost ~]# systemctl reload squid &color(lime){← Squid設定再読込み};| **Apache設定 [#ie13c0d3] アクセスブロック時に実行されるCGIスクリプトへ内部からのみアクセスできるよう制限する。 |BGCOLOR(black):COLOR(white):|c |[root@centos ~]# vi /etc/httpd/conf.d/squidGuard.conf &color(lime){← Apache用squidGuard設定ファイル作成};| |[root@localhost ~]# vi /etc/httpd/conf.d/squidGuard.conf &color(lime){← Apache用squidGuard設定ファイル作成};| |<Files "squidGuard-simple.cgi"> &br; <IfModule mod_authz_core.c> &br; # Apache 2.4 &br; Require ip 127.0.0.1 &br; Require ip 10.0.0.0/8 &br; Require ip 172.16.0.0/12 &br; Require ip 192.168.0.0/16 &br; </IfModule> &br; <IfModule !mod_authz_core.c> &br; # Apache 2.2 &br; Order allow,deny &br; Allow from 127.0.0.1 &br; Allow from 10.0.0.0/8 &br; Allow from 172.16.0.0/12 &br; Allow from 192.168.0.0/16 &br; </IfModule> &br; </Files>| |[root@centos ~]# systemctl reload httpd &color(lime){← Apache用squidGuard設定反映};| |[root@centos ~]# rm -f /var/www/cgi-bin/squidGuard-simple-de.cgi &color(lime){← 使用しないCGIスクリプト削除};| |[root@centos ~]# rm -f /var/www/cgi-bin/squidGuard.cgi &color(lime){← 使用しないCGIスクリプト削除};| |[root@localhost ~]# systemctl reload httpd &color(lime){← Apache用squidGuard設定反映};| |[root@localhost ~]# rm -f /var/www/cgi-bin/squidGuard-simple-de.cgi &color(lime){← 使用しないCGIスクリプト削除};| |[root@localhost ~]# rm -f /var/www/cgi-bin/squidGuard.cgi &color(lime){← 使用しないCGIスクリプト削除};| *squidGuard確認 [#n72567a9] -管理者、ママは無制限にアクセスできること -管理者、ママ以外は制限サイト(例:/var/squidGuard/BL/porn/domainsに登録されているサイト)にアクセスできないこと