設定 · 4 min read · Nov 06, 2025

Debian Squeeze, Squid, Kerberos/LDAP 認証, Active Directory 統合と Cyfin Reporter - ページ 2

Squid の設定

冗長 LDAP アクセスと Active Directory のセキュリティ グループを介した認証を使用するには、Active Directory 属性を照会する権限を持つアカウントを作成する必要があります。Squid はこのアカウントを使用してユーザーにアクセスを提供します。

Active Directory で「Squid Proxy」というユーザーを作成し、ログオン名を [email protected] とし、パスワードをメモしておき、以下の「squidpass」という単語をあなたのパスワードに置き換えてください。

アカウントを作成する際に次のことが真であることを確認してください。

  • 次回ログオン時にユーザーがパスワードを変更する 必要なし
  • ユーザーはパスワードを変更できない チェック
  • パスワードは期限切れにならない チェック
  • アカウントは無効になっていない 必要なし

デフォルトでは、squid アカウントは AD の「memberOf」属性を照会できません。Active Directory ユーザーとコンピュータで、Active Directory ドメインの最上位を選択し、右クリックしてプロパティを選択し、セキュリティ タブで squid ユーザーを追加し、読み取り権限を付与します(デフォルトで行われるはずです)、「このオブジェクトとすべての子オブジェクトを読み取る」を許可するには、詳細オプションに入ります。

次のセキュリティ グループを Active Directory で作成し、説明を追加し、関連するグループにユーザーを追加します - ユーザーがグループの一部でない場合、ホワイトリストサイト ACL のサイトにのみアクセスできます。

インターネット ユーザーのメンバーは、blocksites ACL のウェブサイトにアクセスできません。

  • インターネット ユーザー | 説明: このグループのメンバーはインターネットにアクセスできます。アクセスはウェブサイトの制限とともに記録されます
  • インターネット ユーザー フル ログ | 説明: このグループのメンバーはインターネットにアクセスできます。アクセスはフルウェブサイトアクセスで記録されます
  • インターネット ユーザー フル ノーログ | 説明: このグループのメンバーはインターネットにアクセスできます。アクセスはフルウェブサイトアクセスで記録されません

次に、squid とその関連設定ファイルを設定します。

Squid の起動

次の設定を /etc/default/squid3 に追加します(このファイルはデフォルトでは存在しません)。

vi /etc/default/squid3
KRB5_KTNAME=/etc/squid3/PROXY.keytab
export KRB5_KTNAME

squid.conf

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default
cat /dev/null > /etc/squid3/squid.conf
vi /etc/squid3/squid.conf

キャッシュ マネージャー変数をプロキシの担当者のメールアドレスで更新します。

以下のテキストを注意深く確認し、例の内容(強調表示された部分)をネットワークの設定に置き換えます - 何かを間違えるとプロキシが機能しません。

####### /etc/squid3/squid.conf 設定ファイル #######
####### キャッシュ マネージャー
cache_mgr [email protected]
####### kerberos 認証
auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -d -s HTTP/squidproxy.example.local
auth_param negotiate children 10
auth_param negotiate keep_alive on
####### kerberos で認証されていないクライアントのために ldap 経由でアクセスを提供する
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R \
        -b "dc=example,dc=local" \
        -D [email protected] \
        -w "squidpass" \
        -f sAMAccountName=%s \
        -h domaincontroller1.example.local
auth_param basic children 10
auth_param basic realm Internet Proxy
auth_param basic credentialsttl 1 minute
####### ldap 認可
# 制限されたプロキシアクセスが記録される
external_acl_type internet_users %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D [email protected] \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
# フルプロキシアクセス、ログなし
external_acl_type internet_users_full_nolog %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D [email protected] \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full NoLog,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
# フルプロキシアクセス、ログあり
external_acl_type internet_users_full_log %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D [email protected] \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full Log,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
####### プロキシ認証と ldap 認可の acl
acl auth proxy_auth REQUIRED
# フォーマット "acl, aclname, acltype, acltypename, activedirectorygroup"
acl RestrictedAccessLog external internet_users Internet\ Users
acl FullAccessNoLog external internet_users_full_nolog Internet\ Users\ Full\ NoLog
acl FullAccessLog external internet_users_full_log Internet\ Users\ Full\ Log
acl whitelistsites url_regex -i "/etc/squid3/whitelistsites.txt"
acl blockedsites url_regex -i "/etc/squid3/blockedsites.txt"
####### squid のデフォルト
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
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  # 登録されていないポート
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
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
####### 認証を強制する: ルールの順序は認可レベルにとって重要です
no_cache deny whitelistsites
http_access allow whitelistsites
http_access allow FullAccessNoLog auth
http_access allow FullAccessLog auth
http_access deny blockedsites
http_access allow RestrictedAccessLog auth
####### ロギング
# whitelistsites、FullAccessNoLog をログに記録しない
access_log /var/log/squid3/access.log squid !whitelistsites !FullAccessNoLog
####### squid のデフォルト
http_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid3
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

touch /etc/squid3/whitelistsites.txt
touch /etc/squid3/blockedsites.txt
invoke-rc.d squid3 restart

プロキシ自動設定

Apache2 をインストールします:

apt-get install apache2

Apache2 にプロキシ設定スクリプトのファイル形式を識別する設定を追加します。

vi /etc/apache2/conf.d/wpad.dat
AddType    application/x-ns-proxy-autoconfig .dat

ウェブブラウザが設定に使用する wpad.dat ファイルを作成します:

vi /var/www/wpad.dat

$proxy で始まる行をプロキシの FQDN(強調表示されたテキスト)に変更します。

function FindProxyForURL(url, host)
{
        $proxy = "PROXY squidproxy.example.local:3128";
        // このネットワーク内の URL は直接アクセスされます
        if (isInNet(host, "192.168.0.0", "255.255.0.0"))        {return "DIRECT";}
        if (isInNet(host, "172.16.0.0", "255.240.0.0"))         {return "DIRECT";}
        if (isInNet(host, "10.0.0.0", "255.0.0.0"))             {return "DIRECT";}
        if (isInNet(host, "127.0.0.0", "255.0.0.0"))            {return "DIRECT";}
        // その他すべてのためにプロキシを返します
        else return $proxy;
}

Apache2 を再起動します:

invoke-rc.d apache2 restart

WPAD DNS エントリ

警告: 次の DNS エントリを追加すると、プロキシがライブになります。この時点で停止し、確認してください。

  1. クライアント ブラウザが統合 Windows 認証を使用していること
  2. すべてのユーザーを AD の関連するインターネット ユーザー セキュリティ グループに追加したこと
  3. すべてのクライアント ブラウザがインターネット アクセスのためにプロキシ設定を自動的に検出するように設定されていること。グループ ポリシーを使用することはここで賢明な選択です。または、ファイアウォールでのアウトバウンド HTTP アクセスを制限して、自動検出が設定されていないユーザーを排除することもできます。

Internet Explorer でアクセスをテストするには、「自動構成スクリプトを使用する」にチェックを入れ、アドレスフィールドに http://squidproxy.example.local/wpad.dat (もちろんプロキシの FQDN をあなたのものに変更)を挿入し、任意のウェブサイトにアクセスします。幸運を祈ります、うまくいくことを願っています!ここで停止し、動作しない場合はトラブルシューティングを行ってください。さもなければ、多くの怒っているユーザーが出てきます!

DNS に CNAME レコードを追加して wpad.example.local を squidproxy.example.local にポイントします。

注: Server 2008 には wpad をブロックするセキュリティ対策が付いています。Server 2003 でも見たことがあります。

wpad DNS 制限を削除しますが、ブロックリストを有効のままにするには、Regedit を実行し、次の場所を開きます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList

Server 2008 には WPAD と ISATAP のエントリがある可能性があります。WPAD エントリを削除し、DNS サービスを再起動してブロックリストを再読み込みします。これで wpad.example.local を解決できるようになるはずです。

次に、ブラウザをプロキシ自動構成を使用するように設定します。すべての最新のウェブブラウザは wpad 標準に従い、設定情報を取得するために http://wpad.example.local/wpad.dat を検索しようとします。

WPAD に関する詳細情報は、こちらで確認できます: http://wiki.squid-cache.org/Technology/WPAD/DNS

ブラウザがプロキシを使用しているかどうかを確認するには、squid ログを確認してください。

オプション: Cyphin Reporter のインストール

私たちが運営するプロキシでは、適切なレポートが必要です。sarg、mysar などのプログラムは、ユーザーのインターネット使用状況を監視するための適切なレポートオプションとしては不十分でした。Wavecrest の Cyfin Reporter は、多くの機能を備えた非常に優れた直感的なレポートシステムであることが証明されています。

これは、Debian Squeeze で squid と一緒に Cyfin Reporter をセットアップしてインストールする方法です。

執筆時点での最新の Cyfin Reporter バージョンはバージョン 8.5 です。アーキテクチャに応じて、ダウンロードする前に次の場所を確認し、必要に応じて次のコマンドを更新してください。

http://downloads.wavecrest.net/release/cyfin/linux32/

http://downloads.wavecrest.net/release/cyfin/linux64/

したがって、インストールは次のようになります…

cd /usr/local/src/
wget “http://downloads.wavecrest.net/release/cyfin/linux32/v850/c850linux32.bin.gz”
gunzip c850linux32.bin.gz
chmod +x c850linux32.bin

注: Install Anywhere プログラムは PS1 を変更するため、現在のシェルのためにこれを変更すると問題が解決します。

export PS1=”>”
./c850linux32.bin

インストールパスについてのプロンプトが表示されたら、次のように入力します。

* ENTER AN ABSOLUTE PATH, OR PRESS  TO ACCEPT THE DEFAULT
      : /opt/wavecrest/cyfin*

他のすべてはデフォルトのままにします。

Debian の方法で cyfin を開始および停止するための initscript を作成する必要があります。

vi /etc/init.d/cyfin
#! /bin/sh
### BEGIN INIT INFO
# Provides:          cyfin
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: cyfin reporter initscript
### END INIT INFO
NAME=cyfin
SCRIPTNAME=/etc/init.d/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
case "$1" in
        start)          sh /opt/wavecrest/cyfin/cyfin start
        ;;
        stop)           sh /opt/wavecrest/cyfin/cyfin stop
        ;;
        status)         sh /opt/wavecrest/cyfin/cyfin start
        ;;
        restart)        sh /opt/wavecrest/cyfin/cyfin restart
        ;;
        *)              echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
                        exit 3
        ;;
esac
:

chmod +x /etc/init.d/cyfin
update-rc.d cyfin defaults

Cyfin Reporter の設定には新しいチュートリアルが必要ですが、基本的なことを説明します。

http://squidproxy.example.local:7999 から設定 GUI にアクセスします。デフォルトのログオンはユーザー名とパスワードが「admin」です。

  • GUI のヘルプを使用してください。ドキュメントは非常に良いです。
  • http://www.wavecrest.net/support/cyfin/reporter/faqs.html の FAQ を確認してください。
  • クイック スタート メニューを使用して基本的な設定を行います。これは非常に簡単です。
  • データ マネージャーを有効にしてログファイルをインポートし、ログファイルのインポートスケジュールを設定します。
  • Active Directory との統合を使用します。LDAP 認証用に作成した squid アカウントを使用して、Active Directory から情報を抽出することもできます。
  • Active Directory からユーザーリストをインポートするスケジュールを設定します。
  • ユーザーが Active Directory のセキュリティ グループまたは配布グループの一部であることを確認し、これらのグループを Cyfin Reporter に追加します。
  • 部門のマネージャーをメールレポートの受取人として割り当てます。
  • ログを表示する権限を持つスタッフのアクセスアカウントを設定します。

Cyfin Reporter を使用する場合は、追加のメモリ使用量を考慮する必要があるため、実行するために十分なリソースを割り当ててください。

これでチュートリアルは終了です。お役に立てれば幸いです。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。