Dansguardian をマルチグループフィルタリングで導入し、Squid を NTLM 認証で設定する(Debian Etch)
目的と想定環境
- 目的: 小〜中規模ネットワーク向けの完全なインターネットゲートウェイを構築する。Dansguardian でマルチグループフィルタリング、Squid で NTLM 認証、dnsmasq で DNS/DHCP、Samba/Winbind でドメイン統合を実現する。
- 想定ハードウェア/ネットワーク: 2 NIC(eth0 = 外部、静的または動的;eth1 = 内部、静的 192.168.1.1/24)
- 前提: Debian Etch の最小インストール(ベースシステムのみ)。root または sudo 権限。
重要: Debian Etch は非常に古いリリースです。セキュリティや公式サポートを要する本番環境では、現行の安定版への移行を強く検討してください。ここでは原著の手順を忠実に訳・整理しています。
準備: ベースシステム設定
このハウツーは以下の設定を前提とします。
- eth0: 外部 NIC(静的または DHCP)
- eth1: 内部 NIC(192.168.1.1/24)
ベースインストールでは SSH が入っていないため、まず SSH を導入します。以下を実行します。
apt-get install ssh openssh-serverSSH を入れたら、この続きを SSH セッション内で作業できます。
ClamAV(ウイルス定義エンジン)は Etch の標準版にバグがあり、Dansguardian 起動時にロードが遅くなることがあります。backports から新しいバージョンを取得するよう apt を設定して回避します。
/etc/apt/sources.list に以下を追加します。
deb http://download.webmin.com/download/repository sarge contrib
deb http://www.backports.org/debian etch-backports main contrib non-free次に、ClamAV 系パッケージだけを backports から取得するよう /etc/apt/preferences を編集します。注意: Etch 向けにバグ修正版の ClamAV が公式に出ていれば、この指定は不要になる場合があります。
Package: clamav
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-base
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-freshclam
Pin: release a=etch-backports
Pin-Priority: 999
Package: libclamav2
Pin: release a=etch-backports
Pin-Priority: 999次にパッケージを更新し、必要なソフトウェアをインストールします。以下を実行してください。
apt-get update
apt-get install debian-backports-keyring
apt-get install dnsmasq webmin squid dansguardian samba winbind krb5-user libcompress-zlib-perl resolvconf ntp ntpdateインストール中にいくつか質問が出ます。回答は大文字小文字を区別する場合があるため、例のとおりに入力してください。以下は例です(各自の環境に合わせて置き換えてください)。
- Workgroup: EXAMPLEDOMAIN
- Modify smb.conf to use WINS settings from DHCP?: No
- Kerberos servers for your realm: domaincontroller.EXAMPLEDOMAIN.LOCAL
- Administrative server for your Kerberos realm: domaincontroller.EXAMPLEDOMAIN.LOCAL
Kerberos 設定の再構成を行います。
dpkg-reconfigure krb5-configさらに質問が出ます。例(環境に合わせて変更):
- Default Kerberos version 5 realm: EXAMPLEDOMAIN.LOCAL
- Does DNS contain pointers to your realm’s Kerberos Servers?: Yes
resolvconf と dnsmasq の設定
多くのインターネット接続は動的で、pppd や DHCP によって DNS サーバが更新されると Kerberos が失敗することがあります。resolvconf を導入済みであればこれを利用して問題を和らげます。
/etc/resolvconf/resolv.conf.d/head を編集し、3 行目に次を追加します(例):
search exampledomain.localdnsmasq は軽量の DNS フォワーダかつ DHCP サーバです。resolvconf と統合されます。
/var/run/dnsmasq/resolv.conf に正しいネームサーバが入っているか確認してください。例:
nameserver
nameserver
nameserver dnsmasq の設定をパフォーマンスとセキュリティ向上のため変更します。/etc/dnsmasq.conf を編集し、必要な行をアンコメントします。
編集例(nano を使用):
nano -c /etc/dnsmasq.conf- 14 行目と 16 行目のコメントを外す。
- 71 行目のコメントを外し、行末に eth0 を追加する。
dnsmasq の DHCP 機能は現在無効になっています。DHCP を使う場合は 100 行目あたりから DHCP オプションが始まるのでそちらを参照してください。DNS の高度なオプション(MX レコード等)は 307 行目付近にあります。詳細はこのハウツーの範囲外です。
NTP をドメインコントローラに合わせる
nano -c /etc/ntp.conf/ etc/ntp.conf の 19 行目〜22 行目をコメントアウトし、23 行目に次を挿入します(例):
server domaincontroller.exampledomain.local iburst正確なホスト名は環境に合わせてください。
Samba を設定してドメインに参加する
まず /etc/samba/smb.conf のバックアップを取り、編集します。
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
nano -c /etc/samba/smb.conf- 53 行目に interfaces = 192.168.1.1/255.255.255.0 を追加します。
- 59 行目のコメントを外します。
- 91 行目のコメントを外し、security = ads に変更します。
- 204 行目と 205 行目のコメントを外します。
- 217 行目の前に以下を追加します。
winbind trusted domains only = yes
realm = EXAMPLEDOMAIN.LOCAL
winbind cache time = 3600Samba と winbind を再起動し、ドメインコントローラと時刻同期を行います。
net time set -S domaincontroller
/etc/init.d/samba restart
/etc/init.d/winbind restartドメインへ参加します。
net ads join -U Administrator参加に成功すれば、以下のコマンドが期待する出力を返します。
wbinfo -t出力: checking the trust secret via RPC calls succeeded
wbinfo -uドメイン内のユーザが一覧表示されます。
wbinfo -gドメイン内のグループが一覧表示されます。
Dansguardian と Squid(NTLM)の統合ヒント
- Dansguardian はコンテンツフィルタです。ユーザ/グループごとにフィルタ設定を分けるには、複数のグループ定義とプロセス分離(マルチグループフィルタ)を利用します。
- Squid は認証プロキシとして動作し、NTLM 認証を使うには winbind と連携させてプロキシ認証を有効にします。
- 透過プロキシを行う場合、iptables でポート転送(80/tcp)を行い、Squid/Dansguardian の構成に合わせて ACL を設定してください。
注意: 各種設定ファイル(dansguardian.conf、squid.conf、/etc/samba/smb.conf など)を編集する際は、オリジナルのバックアップを必ず保存してください。
トラブルシューティングのチェックリスト
- Kerberos エラー: /etc/krb5.conf の realm と kdc 設定を再確認。DNS の逆引き/正引きが正しいか確認。
- Samba ドメイン参加失敗: 管理者権限で net ads join を実行しているか。時刻差(NTP)で失敗する場合が多い。
- dnsmasq が期待通りのネームサーバを使わない: /var/run/dnsmasq/resolv.conf を確認。resolvconf が正しく機能しているかチェック。
- Dansguardian の起動が遅い: ClamAV のバージョンが原因の可能性あり。backports からの更新設定を確認。
代替アプローチと比較
- フリーで一元管理したい場合: pfSense(FreeBSD ベースのファイアウォールアプライアンス)を検討。GUI が充実しており、プロキシ/フィルタリング機能もある。
- Linux のより新しいディストリビューションを使う: Debian の現行安定版(bookworm など)で同様の構成を行うと、パッケージの安全性/互換性が改善される。
- クラウド型/サービスを利用する: オンプレミスでの運用負荷を避けたい場合はクラウド型プロキシ/フィルタリングを検討する。
メリット/デメリットの判断: 古い Etch 手順は学習用途や既存環境の保守には有効だが、新規導入では最新 OS を選ぶ方が保守コストは低い。
セキュリティ強化チェック(基本)
- SSH: パスワード認証を無効化し、公開鍵認証に切り替える。
- サービスの最小化: 不要なデーモンは停止/削除する。
- ファイアウォール: iptables または netfilter で外部からの不要な接続を遮断。
- ログ監査: Samba、winbind、Squid、Dansguardian、dnsmasq のログを定期確認し、ログローテーションを設定する。
ロール別チェックリスト
- 管理者(設計): ネットワークアドレス計画、ドメイン情報(ホスト名/IP)、NTP 設定の方針決定。
- 運用担当: バックアップ手順、サービス再起動フロー、監視設定(ログ、疎通監視)の整備。
- ユーザサポート: 認証問題時の問診テンプレート(時刻、DNS、ユーザ名)を用意。
移行と互換性のヒント
- Etch は古いため、パッケージが既にリポジトリから消えている可能性があります。リポジトリ URL の可用性を必ず確認してください。
- 最新の Debian に移行する場合、smb.conf や krb5 の項目やオプション名が変わっていることがあるため、移行前に公式ドキュメントと差分を確認してください。
受け入れ基準(Критерии приёмки)
- サーバがドメインに参加し、wbinfo -u でユーザが見える。
- NTP がドメインコントローラと同期している。
- dnsmasq が意図したネームサーバを参照している。
- Dansguardian と Squid が起動し、ブラウザ経由でフィルタリングと認証が行える。
テストケースと確認事項
- クライアントから HTTP リクエストを行い、Squid 経由で NTLM 認証プロンプトが出るか。
- グループごとのフィルタ設定でアクセス制限が正しく適用されるか。
- ドメインユーザでログイン後、許可されたサイトへアクセス可能か。
1行用語集
- NTLM: Windows 系の認証プロトコル(旧式)。
- Kerberos: 時刻同期とチケットベースの認証システム。
- winbind: Samba のコンポーネントで、Windows のユーザ/グループ情報を Linux 上に連携する。
短い発表文(100–200 文字)
Debian Etch 上で Dansguardian によるマルチグループフィルタと Squid の NTLM 認証を組み合わせ、dnsmasq・resolvconf・Samba/Winbind を使ってドメイン統合された透過プロキシ型ゲートウェイを構築する手順です。小〜中規模ネットワーク向けのオンプレミス構成に有用です。
まとめ
- Debian Etch の最小インストールから、ClamAV の backports 指定、dnsmasq/resolvconf による DNS 管理、NTP のドメイン同期、Samba/Winbind を使ったドメイン参加、そして Dansguardian と Squid の統合までを扱いました。
- 本手順は教育・保守目的で有用ですが、セキュリティやライフサイクルを考えると現行のディストリビューションへの移行を推奨します。
重要: 実行前に必ず設定ファイルのバックアップを取り、変更を段階的に適用してください。