Kozupon.com    
 
 SambaでBDCを作る!


とある会社で、未だにWindowsNTサーバを使ってNTドメインを構成して各部署で運用している。
ローカル側とはいえ、サポートがとっくに切れたOSでは当り前のようにセキュリティ的に非常に不安である。とはいえ、既に運用中で共有フォルダに大切なデータに対して日々の業務でアクセスしてるような状態では、システムの再構築はかなりリスクが高いと判断せざる負えない。そこで、以下のような代替案を提案した。

1)SambaサーバでBDCを作り、WindowsNTドメインのPDCのユーザ情報及び認証情報をBDCへ複製して、最終的にBDCをPDCへ昇格させてsambaPDCでドメイン運用する。
2)Windows2003サーバを購入してシステム再構築する。

今後の事を考えると1)の案がお勧めなのだが、samba自体は実績があるが2005年にバージョンアップされたSamba3.0の新機能に対しての信頼性が有るのかが個人的には未知数だ。それと、以下のような懸念事項が有る。

a.NT PDCのユーザデータをsambaBDCが引き付いで、BDCをPDCへ昇格させてPDCとして旨く運用できるのか。
b.実際のsambaPDCは、長期運用に対する信頼性は確保できるのか。

したがって、上記の事柄を試すためsambaにてBDCを作ってみることにした。また、ここではsambaのインストール方法は説明しない。インストール方法は、ここ など 参考にするといいだろう。

■ sambaBDCのマシン環境
マシン:Dell PowerEdge SC430 Pentium4
マシン情報:00:00.0 Host bridge: Intel Corporation E7230 Memory Controller Hub
00:01.0 PCI bridge: Intel Corporation E7230 PCI Express Root Port
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.4 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 (rev 01)
00:1c.5 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
04:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
05:07.0 VGA compatible controller: XGI - Xabre Graphics Inc Volari Z7
OS情報:CentOS4.4
Linux gorira 2.6.9-42.0.3.ELsmp #1 SMP Fri Oct 6 06:21:39 CDT 2006 i686 i686 i386 GNU/Linux
ホスト名:gorira
IPアドレス:192.168.0.47
sambaのバージョン:samba-3.0.10

■ WindowsNT PDCのマシン環境
ドメイン名:MANAGER
ホスト名:mngsvr
IPアドレス:192.168.0.5


構築前の注意:
WindowsNTドメインコントローラでは、BDCをメンバーとして受け入れないので構築中は、sambaを停止させておくこと。動作状態で作業をした場合、そのドメインのメンバーがログオン出来なくなるので注意すること!


1.sambaをBDCにするための設定
1)smb.confを設定する

[root@gorira ~]# vi /etc/samba/smb.conf
unix charset = eucJP-ms
dos charset = cp932
display charset = eucJP-ms

workgroup = manager      ←目的のNT PDCが有るドメイン名を記載
netbios name = gorira
security = user
passdb backend = tdbsam
os level = 20            ←OSのプライオリティレベルを記載、通常BDCのb場合は20で、このホストがPDCへ昇格した場合は64を記載する
domain master = No       ←BDCホストであることを記載(NoはBDC、YesはPDC)
preferred master = Yes
local master = Yes
domain logons = Yes

以下の#の2項目はPDCの設定に必要な項目
# logon script = mount.bat
# add machine script = /usr/sbin/adduser -n -g winpc -c WinPC -d /dev/null -s /bin/false %m$

server string = Samba %v on %h
hosts allow = 192.168.0. 192.168.3. 192.168.10. 127.
log file = /var/log/log.%m
max log size = 50
encrypt passwords = Yes
username map = /etc/samba/smbusers
unix password sync = True
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *ReType*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# wins support = Yes
wins server=192.168.0.5       ←PDCがWinsServerの場合あるいはこのドメインのどこかにWinsServerが有る場合は、PDCのIPアドレスを記載する(このホストがPDCに昇格した場合で、このホストをWinsServerとする場合は、wins support = Yesをコメントアウトしwins serverの行を削除して、他のホストからはこのホストをPDCとして指定させる)

[homes]
comment = %U's Home Directory
browseable = no
writable = yes
create mask = 0644
directory mask = 0755

[public]
comment = public directories
path = /usr/common
public = yes
browseable = yes
guest ok = no
writable = yes
directory mask = 0774
create mask = 0774
read list = readusers
inherit permissions = yes
valid users = root @adm @users

2)sambaを起動する
しかし、起動したら直すぐ止める。
# /etc/init.d/smb start
# /etc/init.d/smb stop


2.WindowsNTドメインのSID(セキュリティ識別子)の複製

1)現状のWindowsNTドメインSID(SecurityID)のView
[root@gorira samba]# rpcclient mngsvr -U Administrator%password -c 'lsaquery'
domain MANAGER has sid S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx

注:この時のPDCホスト名は、DNSで正引き出来なければならない。

2)sambaBDCへPDCからSID情報をいただく
[root@gorira samba]# net rpc getsid
Storing SID S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx for Domain MANAGER in secrets.tdb

3)PDCのSIDをsambaBDCへ設定する
[root@gorira samba]# net setlocalsid S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx

4)設定情報を確認する
[root@gorira samba]# net getlocalsid
SID for domain GORIRA is: S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx

[root@gorira samba]# net getlocalsid MANAGER
SID for domain MANAGER is: S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx


3.sambaBDCをNTドメインへ参加させる
1)WindowsNTのサーバマネージャでBDCを追加
WindowsNT PDCのサーバマネージャで、以下図1のようにsambaBDCを追加する。


  図1

2)sambaBDCをNTドメインへ追加
[root@gorira samba]# net rpc join -S mngsvr -w MANAGER -U Administrator%password
Joined domain MANAGER.

3)ユーザ管理情報の複製のため、sambaを停止する
[root@gorira ~]# /etc/init.d/smb stop


4.ユーザ情報及びグループ情報の複製

1)ユーザ情報、グループ情報の複製
[root@gorira samba]# net rpc vampire -S mngsvr -U Administrator%password
Fetching DOMAIN database
SAM_DELTA_DOMAIN_INFO not handled
Creating unix group: 'Domain Admins'
Creating unix group: 'Domain Users'
Creating unix group: 'Domain Guests'
Creating unix group: '総務'
Creating unix group: '管理部'
Creating unix group: '営業部'
Creating unix group: '経理'
Creating account: Administrator
Could not create posix account info for 'Administrator'
Creating account: Guest
Could not create posix account info for 'Guest'
Creating account: MNGSVR$

省略

Fetching BUILTIN database
SAM_DELTA_DOMAIN_INFO not handled
Creating unix group: 'Account Operators'
Creating unix group: 'Administrators'
Creating unix group: 'Backup Operators'
Creating unix group: 'Guests'
Creating unix group: 'Print Operators'
Creating unix group: 'Replicator'
Creating unix group: 'Server Operators'
Creating unix group: 'Users'

2)ユーザ情報、グループ情報の確認
[root@gorira ~]# /usr/bin/getent passwd
[root@gorira ~]# /usr/bin/getent group

注:どうも、WindowsNT PDCのSAM(ユーザ管理情報)をsambaBDCでは複製のサポートをしていないようだ。つまり、暗号化以前のパスワード情報がゲットできずわからないため、Windows用のパスワード情報しか登録されないのであろう。つまり、Unixアカウント&パスワードを改めて手動で登録しなければならないならば、WindowsNT PDCのアカウント情報はsambaBDCへは引き継げないことになる。結果的に前述した問題も含め、sambaBDCではWindowsNT BDCと違ってWindowsNT PDCと同期複製をサポートしていないため、「sambaはWindowsNT PDCのBDCになることは出来ない」ことを意味する。ここいら辺の機能は、今後のバージョンに期待したい。


5.既存の共有フォルダ内のデータの複製

1)共有フォルダのACLをサポートしたアクセス権限も複製する
Windows2000もしくはWindowsXPのDosプロンプトから、
C\> XCOPY \\mngsvr\[共有名] \\gorira\[共有名] /s /E /O

上記のコマンドで、PDCからBDCへ全ての共有フォルダ内のデータがコピーされる。


6.sambaBDCを構築して解ったこと

1)バックエンドデータベース
ドメインコントローラをsambaへ移行する機能については、バックエンドデータベースがLDAPで有る方がかなり有利であると言うことが解った。参考資料もほとんどがLDAPを意識しており、移行に便利なPerlスクリプトもLDAP利用を前提に作られている。

2)WindowsNT PDCでのsambaBDC
sambaサーバのアカウント体系は以下のようになっている。
@Unixグループアカウント登録
AUnixユーザアカウント登録
BSambaユーザアカウント登録
CSambaグループマッピング

前述の注記でも書いたが、WindowsNT固有のSAM情報(ユーザ管理情報でSから始まる、 S-1-5-xx-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxx
のような番号)をsambaBDCではWindowsNT PDCからの複製をサポートしていない。これは、暗号化以前のパスワード情報がゲットできないのでわからないため、Windows用のパスワード情報しか登録されないのである。つまり、Unixアカウント&パスワードを改めて手動で登録しなければならないならば、WindowsNT PDCのアカウント情報はsambaBDCへは引き継げないことになる。いずれにせよ、このSAMの複製の問題も含め sambaBDC ではWindowsNT BDCと違ってWindowsNT PDCと同期複製をサポートしていないため、「sambaはWindowsNT PDCのBDCになることは出来ない」ということが言えそうだ。

3)sambaPDCとsambaBDC
PDCがsambaでBDCがsambaの場合は、BDCへのユーザ管理情報の複製をする場合LDAPが必須のようだ。したがって、今後sambaドメインを構築する場合は、バックエンドデータベースにLDAP(DirectoryService)を前提に構築した方が良いだろう。

以上


 
 
 



Copyright 2007 Kozupon.com.