(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

 LinuxとSambaを活用して,Windowsネットワークのファイル/プリント・サーバーを構築しよう。本セミナーは,Linuxの基本事項を含めてSambaの使い方を分かりやすく解説していく。今回は,LinuxとSambaのユーザー管理を取り上げ,特にパスワード管理について掘り下げて解説する。(ミラクル・リナックス 小田切 耕司)

 初回および第2回では,ファイル・サーバーの基本やファイル・システムについて解説した。今回は,運用・管理において最も重要な作業の一つであるユーザー管理を取り上げる。Sambaはいろいろな機能を備えるが,今回のユーザー管理のような基本的な事柄をしっかり理解することがSambaをマスターする近道であることを肝に銘じておこう。

暗号化パスワード問題

 ユーザー管理の解説に入る前に,LinuxとWindowsのパスワードについて説明しておく。

 Windowsクライアントからサーバーのファイル/プリンタを使用するために接続するとき,ユーザー名とパスワードがクライアントからサーバーへ送られる。この送出方法には次の2つがある。

●平文パスワード(Plain Text Password)

 TELNETやFTPと同じように,ネットワーク上にパスワードをそのまま流すので,ネットワーク上のパケットが盗聴されるとパスワードが漏えいしてしまう(知られてしまう)。

●暗号化パスワード(Encrypt Password)

 パスワードを暗号化してネットワーク上に流す。Windows 2000/XP同士の認証ではKerberos5(ケルベロス認証。チケット方式)が使われることもあるが, Windows 95/98/Meでの認証にはLANMANハッシュ(DESで暗号化。ただし,パスワードに大文字/小文字の区別はない),またWindowsNT/2000/XPの認証にはNTハッシュ(MD4ハッシュ)が使用される(これらを合わせてNTLM認証という)。

 ネットワーク上のパケットを盗聴されても,パスワードがすぐ察知されるわけではないが,LANMAN/NTハッシュは単純な暗号化方式なので安易なパスワード(特に7文字以下)を使用していると解析され,突き止められてしまう可能性がある。

 Windows 95/98/Me/NT/2000/XPは,暗号化パスワードと平文パスワードの両方で認証が可能だが,Sambaのデフォルト設定である「encryptpasswords = no」では平文パスワードでしか認証できない。

 初期のWindows(95やNT3.51など)は,Sambaサーバーが平文でしか認証できないと応答を返すと平文パスワードを送信したので,Linux/UNIX側のユーザー管理情報である/etc/passwd(shadow)を使って認証できた。ただ,これではパケットを盗聴されるとパスワードが漏えいするため,Windows NT4.0SP3以降からデフォルトでは,暗号化パスワードしか送信しないように修正された。これにより,Sambaの設定がencrypt passwords = noのままでは,例えばWindows NT4.0の場合,

「そのアカウントは,このワークステーションからのログインを許可されていません」

というエラーになり,接続できない。

 デフォルトのSamba設定で接続できるクライアント(平文パスワードを送信可能なクライアント)は以下のものに限られる。

●パスワード・セキュリティ強化の修正情報*1を適用していない,初期のWindows 95,Windows 95 OSR2,Windows 95 OSR2.1

●Windows NT4.0 SP2以前のもの

●Windows NT3.51以前

●Winodws 3.1のLANMANクライアント

 つまり,最近のWindowsクライアントは暗号化パスワードしか送信しないので,Sambaを使用できるようにするには,Sambaを暗号化パスワードに対応させる必要がある。

 なお,Windowsクライアント側のレジストリ設定を変更して,Windowsクライアントが平文パスワードを送信するようにすることも可能ではあるが,以下の問題があるほか,セキュリティ面にも問題があのでこの方法は絶対に勧めない。

●Windows NT/2000/XPで,Sambaのホーム・ディレクトリをネットワーク・ドライブに割り当て,「ログイン時に再接続」チェックを有効にしても,Windowsを再起動してネットワーク・ドライブにアクセスしようとするとエラーになったり,「パスワードが違います」と警告が出る

●Sambaプリンタの使用で毎回パスワードの入力を求められる

●Sambaマシンがブラウジングできない(ネットワークコンピュータ一覧に表示されない)ことがある

 SambaをWindowsの暗号化パスワードに対応させるには,Linux/UNIXのユーザー管理とは別に,Sambaのユーザー管理(暗号化パスワードの管理)が必要になってくる。これは,Linux OSが管理するユーザー・パスワードはMD5でハッシュされているのに対し,Samba/Windowsは前述のようにLANMANハッシュ(DESで暗号化)やNTハッシュ(MD4ハッシュ)が使われており,互換性がない(相互変換も不可)ためである。

 この2重のユーザー管理方法には(2重でやらない方法を含めて)どのようなものがあるのかを見ていこう。

Sambaのセキュリティモデル

 Sambaのユーザー管理機構は,1.9 , 2.0 , 2.2とバージョンが上がるたびに機能が拡張され,仕様も変更されてきたため,初心者には理解しにくい面がある。次版のSamba 3.0でもまた機能が拡張され,仕様が変更される予定だ。ここでは,現行版のSamba 2.2(最新版は2.2.8a)を前提にユーザー管理機構を解説する。

 Sambaのユーザー管理を理解するためには,まず以下の3つのセキュリティ・モードを正しく把握する必要がある(これらのパラメータは,smb.confの[global]セクションに記述する)。

●security = share (共有認証モード)

 Windows 9x/Meと同様に,共有ごとの認証制御を行う。Samba 1.9のころは,これがデフォルトだったが,現在はあまり使用されない。

 このモードでは,全ユーザーが固定の単一ユーザーとして共有(ファイル/プリンタ)にアクセスできる(認証ユーザーを共有する)。パスワードだけを用いて,共有のアクセス制御ができる。つまり,新規ユーザーのために,アカウントを新たに作成する必要がない。

 小規模な部門サーバーやSOHO用に適しているが,不特定多数が使用する(個別にアカウントを作成したくない)場合にも対応できる。

(使用例)smb.confの例
[global]
security=share
[public]
path=/var/samba/public
writeable=yes
username = common

 この例では,ユーザーcommonとそのパスワードを登録しておくと,パスワードを知っていればだれでもpublicという共有にアクセスでき,アクセスもcommonユーザーで行われる。

●security = domain (ドメイン認証モード)

 ユーザー管理をWindowsNT/2000サーバーのドメインに任せる。Linuxの場合は,Samba 2.2からサポートされたWinbindを使用して運用するのが良いだろう。

 このモードでは,個別のユーザーとして共有(ファイル/プリンタ)にアクセスする。新規ユーザーのために,アカウントをWindowsドメイン・コントローラに対して新たに作成する必要があるが,UNIX/Linuxマシンにユーザー登録する必要はない。

 Windowsドメインが既に構築されていて,そこにSambaマシンを追加する場合に適している。

●security = user (ユーザー認証モード)

 Sambaマシンでユーザー管理を行い,個別のユーザーとして共有(ファイル/プリンタ)にアクセスする。このモードではLinuxアカウントおよびSambaアカウントが必要なので,新規ユーザーのために両方のアカウントを新たに作成する必要がある。

 SambaだけでWindowsドメインやWindowsワークグループを作成する場合に適している。難点は,パスワードをLinux用とは別にSamba用も用意して,管理する必要があること。なお,このモードがデフォルトである。

 Samba 2.2では,security=userまたはdomainでシステム運用することを推奨する。Samba 1.9からサポートされたsecurity = server (サーバー認証モード)もまだ存在し,利用可能であるが,Winbindが利用できるLinuxではこのモードを利用するメリットは無い。