ネットワーク設定 · 2 min read · Sep 23, 2025
Debian Squeeze, Squid, Kerberos/LDAP 認証、Active Directory 統合および Cyfin レポーター
Debian Squeeze, Squid, Kerberos/LDAP 認証、Active Directory 統合および Cyfin レポーター
はじめに
この文書では、Kerberos を使用して認証を行い、LDAP をバックアップとして使用することで Active Directory とシームレスに統合される Squid プロキシのセットアップについて説明します。認可は Active Directory のグループによって管理されます。これは、ローカルコンピュータポリシーを変更せずに NTLMv2 をサポートしない Windows 7 クライアントに特に便利です。 サイトアクセスと制限のためにホワイトリストとブラックリストを使用することができます。
このガイドでは、以下の例を使用します - 必要に応じてクライアントのドメイン、ホスト名、IP を更新してください。
- ドメイン = example.local
- サブネット = 192.168.0.0/24
- プロキシサーバー: IP = 192.168.0.26, HOSTNAME = squidproxy.example.local
- Windows サーバー 1: IP = 192.168.0.1, HOSTNAME = domaincontroller1.example.local
- Windows サーバー 2: IP = 192.168.0.10, HOSTNAME = server2.example.local
Debian Squeeze の基本インストールと基本的な Debian 管理スキルが前提とされています。 vi がテキストエディタとして使用されると仮定します。
前提条件
クライアントの Internet Explorer ブラウザでは、Internet Options :: Advanced settings で「Enable Integrated Windows Authentication」にチェックを入れ、プロキシ自動検出を有効にする必要があります。確信がない場合は、Google で検索してください。すべての最新のウェブブラウザはプロキシ自動検出をサポートしています。Firefox と Chrome も Windows 認証をサポートしています。
DNS 設定
dnsutils をインストールします:
apt-get install dnsutilsWindows DNS サーバーでプロキシサーバーのホスト名の新しい A レコードエントリを追加し、対応する PTR(逆引き DNS)エントリも作成されていることを確認します。 プロキシが名前解決のために Windows DNS サーバーを使用していることを確認し、/etc/resolv.conf を適宜更新します。
vi /etc/resolv.confsearch example.local
nameserver 192.168.0.1
nameserver 192.168.0.10内部および外部のホスト名に ping を実行して DNS が動作していることを確認します。
ping domaincontroller1.example.local -c 4 && ping google.com -c 4Windows DNS から Windows サーバーとローカルプロキシ IP を逆引きできることを確認します。
dig -x 192.168.0.1
dig -x 192.168.0.26
警告: いずれかの DNS ルックアップが失敗した場合は、修正されるまで進まないでください。そうしないとプロキシ認証が失敗します。
NTP 設定
ntp パッケージをインストールします:
apt-get install ntp
Kerberos は認証のために Windows ドメインコントローラーと時間を同期する必要があるため、プロキシがそれらから時間を取得するように設定します。
vi /etc/ntp.conf次のセクションを見つけて、必要に応じて ntp サーバーを更新します。複数のドメインコントローラーまたは NTP サーバーがある場合は、複数の行を追加できます。
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.localその後、NTP を再起動してテストします。
invoke-rc.d ntp restart
tpq -p
ドメインコントローラーと conf ファイルに表示される順序で処理される他の NTP サーバーに関する出力が表示されるはずです。
Kerberos の設定
Kerberos パッケージをインストールします:
apt-get install krb5-user libkrb53提示されたデフォルトをそのまま受け入れます。
Kerberos を設定します。
cp /etc/krb5.conf /etc/krb5.conf.default
cat /dev/null > /etc/krb5.conf
vi /etc/krb5.conf
ファイルを編集し、変数(強調表示された部分)をクライアントのドメインとサーバーに置き換えます。
警告: Windows ドメインコントローラーの OS バージョンに応じて、関連する Windows 200X セクションのコメントを外し、対立するセクションのコメントを付けてください。
ドメインコントローラーが 1 台しかない場合は、”[realms]” セクションから追加の “kdc” エントリを削除します。
[libdefaults]
default_realm = EXAMPLE.LOCAL
dns_lookup_kdc = no
dns_lookup_realm = no
ticket_lifetime = 24h
default_keytab_name = /etc/squid3/PROXY.keytab
; for Windows 2003
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; for Windows 2008 with AES
; default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
EXAMPLE.LOCAL = {
kdc = domaincontroller1.example.local
kdc = server2.example.local
admin_server = domaincontroller1.example.local
default_domain = example.local
}
[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCALSquid 3 のインストール
apt-get install squid3 ldap-utils注意: Squid の設定は msktutil が設定された後に行われます。
msktutil のインストールと実行
msktutil パッケージを取得してインストールします。
cd /var/cache/apt/archives/
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules
dpkg -i msktutil_0.4-2_i386.deb
cd
msktutil が Active Directory にアクセスするために使用するプロキシオブジェクトを作成できるように、サーバーに対して Kerberos セッションを開始します。
kinit administratorドメイン管理者のパスワードを入力してください。
エラーなしで戻るはずです。チケットを正常に取得したかどうかは、次のコマンドで確認できます。
klist次に、サービスプリンシパルを使用して AD でプロキシを設定します。
警告: msktutil を使用して作成した OU からオブジェクトを移動しないでください。
msktutil -c -b “CN=COMPUTERS” -s HTTP -k /etc/squid3/PROXY.keytab –computer-name SQUIDPROXY \
–upn HTTP/squidproxy.example.local –server domaincontroller1.example.local –verbose
サーバー 2008 ドメインを使用している場合は、コマンドの最後に “–enctypes 28” を追加します。
msktutil -c -b “CN=COMPUTERS” -s HTTP -k /etc/squid3/PROXY.keytab –computer-name SQUIDPROXY \
–upn HTTP/squidproxy.example.local –server domaincontroller1.example.local –verbose –enctypes 28
Squid が読み取れるように keytab の権限を設定します。
chgrp proxy /etc/squid3/PROXY.keytab
chmod g+r /etc/squid3/PROXY.keytab
Windows サーバーで SQUIDPROXY コンピュータを右クリックして「アカウントのリセット」を選択し、AD でコンピュータアカウントをリセットします。その後、次のように msktutil を実行して、keytab が期待通りに更新され、msktutil が /etc/krb5.conf から正しく keytab を取得していることを確認します。
最初にプロキシを再起動して kinit コマンドによって生成された Kerberos チケットをクリアし、次のコマンドを実行します。
msktutil --auto-update --verbosekeytab が見つからない場合は、コマンドに “-k /etc/squid3/PROXY.keytab” を追加して動作するか確認し、解決されるまでトラブルシューティングを行います。そうしないと、ユーザーは Squid で認証できなくなります。
次の内容を cron に追加して、コンピュータアカウントが期限切れの際に Active Directory で自動的に更新されるようにします(通常は約 30 日)。必要に応じて syslog でエラーを確認できるように logger を通してパイプします。msktutil はパラメータのためにデフォルトの /etc/krb5.conf ファイルを使用するため、変更を加える場合は注意してください。
SHELL と PATH 変数は cron が正しく実行されることを保証するためにあります。必要に応じて変更してください。
crontab -eSHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h dom mon dow command
00 4 * * * msktutil --auto-update --verbose | logger -t msktutil新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。