2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

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グループアカウント登録
②Unixユーザアカウント登録
③Sambaユーザアカウント登録
④Sambaグループマッピング

前述の注記でも書いたが、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)を前提に構築した方が良いだろう。

以上

コメント