2014年3月1日土曜日

samba4.1 をActive Directoryに参加させてみた



会社などですでにActiveDirectoryがあって、そこに自分のパソコンを登録させる時の話です。


ネットワーク管理者からは以下の情報が各パソコン所有者に伝えられてるはず。




  • 参加するドメイン(ワークグループ):CORP

  • レノム(ドメインと称してるかも): CORP.WAGASYA.LOCAL

  • ドメインに参加するためのユーザ名: domain_adder


FreeBSD10.0とnet/samba41で確認しました。~


samba3系列とは設定方法が違うので気をつけて下さい


0.前準備


しなくても大丈夫だけど、合わせておくとあとで混乱せずに済みます。



rc.confのホスト名設定やhostsの設定をすべて
corp.wagasya.localドメインに書き換え


1.秘密鍵などをsambaに用意させる


色々試行錯誤して、全てをリセットするために行った作業です。portsから入れた直後なら無視してもいいかもしれません。





samba4系列をとりあえずダミーで設定(秘密鍵などを作らせる)



rm -r /var/db/samba4/*
samba-tool domain provision --realm=CORP.WAGASYA.LOCAL --domain=CORP
--server-role=member --adminpass 'some#complex!Passowrd'


ここで指定しているパスワードはこのサーバに対する管理者パスワードです。どうせ使う事は有りません。複雑度が低いと跳ねられるので適当に複雑なのを指定します。


2./usr/local/etc/smb4.confに以下を記述



[global]

dos charset = CP932
unix charset = UTF8
#↓ドメイン名
workgroup = CORP
realm = CORP.WAGASYA.LOCAL
#↓自分のマシン名:ADドメイン管理者が余り短い名前はNGって設定してるときもあるので注意
netbios name = ORE_NO_MACHINE
security = ADS
encrypt passwords = yes
#winbind use default domain = no
#winbind separator =\
idmap config *:backend = autorid
idmap config *:rane = 1000000-1999999
autorid:rangesize = 1000000
dns forwarder = 172.31.20.10
#おまけ1.で使う設定(後述)
template homedir = /home/corp/%U
template shell = /bin/tcsh 

#この行以下はグループ共有フォルダの作成例
#WAGABUSYOユーザとしてアクセスできます
[WAGABUSYO]
path = /home/WAGABUSYO
guest ok = No
read only = No
#許可するユーザの一覧を書く「ドメイン名\ユーザ名」で書く (環境によっては\で表示される)
#↓ダミーユーザWAGABUSYOを含めないと誰もアクセスできないので注意
valid users =
WAGABUSYO,CORP\akira,CORP\yoko,CORP\muji,CORP\zara,
#read list= CORP\akira,,,,,#読める人一覧で指定する場合
#write list= CORP\yoko,,,,,#書き込める人一覧で指定する場合
#↓ここにアクセスするひとはWAGABUSYOだとみなしてアクセスする
force user= WAGABUSYO


4.グループアクセス用ダミーアカウント追加


データ処理ユニットを意味する適当なユーザ & グループを追加(ユーザ名、グ


ループ名共にWAGABUSYO)


5.ドメインに参加する


domain_addrはActiveDirectory管理者から通知された、ドメイン参加のためのユーザ名です。(普通に作業するアカウントと違うので注意)



#rc.confにsamba_server_enable="YES"と書いているのを確認してから
service samba_server start
net ads join -U domain_addr


6.テストする


smbclientはnet ads~で指定したkerberosをのユーザ名・パスワードを使ってログインするので、パスワード聞いてきません。-Uでユーザを指定しても無視されるので注意



net ads kerberos kinit -U 自分のアカウント名
smbclient '\\ORE_NO_MACHINE\WAGABUSYO' -k






おまけ、UNIXマシンをActiveDirectoryに参加させる



sshのログインをActive Directoryのパスワードをつかって出来るようにする事もできます。sshでそれをやることはまぁ、無いでしょうが、PAMを使えるとwebだったり、svnだったり色々活躍するシーンはあるかと思います。


おまけ1. /etc/nssswitch.confにwinbindを追加する


(ユーザ情報[ログインシェルの設定等]をsmb.confから拾ってこれるようにする)



#
#group: compat
#group_compat: nis
group: files winbind
hosts: files dns
networks: files
#passwd: compat
#passwd_compat: nis
passwd: files winbind
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files


おまけ2. /etc/pam.d/sshd の編集 (PAMの設定 for ssh)


パスワード認証をsambaに投げます。


(webだとかsvnサーバの設定はきっとこれに類似していると思う)


なおsystem等を設定すれば、コンソールからのログインもできるようになるはず



# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
#↓以下の行を追加
auth sufficient /usr/local/lib/pam_winbind.so
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass

# account
account required pam_nologin.so
account required pam_login_access.so
account required pam_unix.so

# session
#session optional pam_ssh.so want_agent
session required pam_permit.so

# password
password required pam_unix.so no_warn try_first_pass


おまけ3. SSHでPAMを使う様に設定する


/etc/ssh/sshd_configの設定でUsePAM yesとなっている事を要確認


これで slogin 'CORP\muji'@ip_address とするとログインできるはず。


設定後はservice sshd restartとしてsshdを再起動。リモートからsshで入って作業中であってもsshdを再起動しても接続が切れることはありませんが、


別ターミナル画面などから、ちゃんとログインできる事を確認してから、作業中の接続を切るようにして下さい。泣きを見ますよ。