Samba4.0.3でActive Directoryドメイン環境を構築
Samba4がリリースされたんだってねー。
MSも協力して、Active Directoryに完全対応したんだってねー。
じゃぁ早速構築してみようではないか!!
最終的には、以下の事ができるようにする。
- Samba4をActive Directoryのドメインコントローラとして稼働
- Windows7ProでADドメイン参加
- Mac OSX MountainLionでADドメイン参加
- Fedora18でSamba4が提供するLDAPで認証
Samba4のインストール
今回はFedora18にインストールする。
Samba4が既にパッケージ化されているのだが、うまく行かなかった。
ADの機能が本体とは別のパッケージになっている様なのだが、まだバイナリはパッケージングされていないのか?容量が数百KBしかないし、色々と動かない。
なので、コードからコンパイルする事にした。
依存関係にあるライブラリをインストール
公式サイトで書かれていた必須・推奨のライブラリをインストールする。
yum install libacl-devel libblkid-devel gnutls-devel python-devel gdb pkgconfig libattr-devel krb5-workstation
コード取得とmake実行
公式サイトから最新版(この時点では4.0.3)を取得しコンパイルを実行してインストールする。
後にパッケージがちゃんとリリースされた際は簡単に削除できる様、デフォルトの/usr/localではなく/opt/samba4にインストールする事にした。
wget http://ftp.samba.org/pub/samba/samba-4.0.3.tar.gz tar -xzf samba-4.0.3.tar.gz cd samba4.0.3 ./configure --prefix=/opt/samba4 make make install
makeコマンドを実行すると、色々と不足してそうな内容が標準出力されるけど気にしないw
環境設定 (Samba3引き継ぎ)
環境設定を対話式に行ってくれる便利コマンドsamba-toolを実行する。
パッケージインストールではこれが見つからなかった。
今回は、既にSamba3で運用していた情報を引き継ぐ。
Samba3もLDAPも今回と同じ端末にインストールされていた場合である。
ただし、途中でこける。SIDは引き継がれるのだが、ユーザやグループは引き継がれない。なぜ・・・
きっと誰かが解決してくれる事を祈って、SIDだけ引き継ぐ。
/opt/samba4/bin/samba-tool domain classicupgrade --testparam=/usr/bin/testparam --realm=YOUR-DOMAIN.LOCAL --dns-backend=BIND9_FLATFILE /etc/samba/smb.conf
環境設定 (新規構築)
まぁ、SIDだけ引き継いでもねーとか、新規構築だぜ!って場合は以下のコマンドを実行。
rfc2307を使える用にしてLinux系アカウントをLDAPで認証できる様に対応しておく。
/opt/samba4/bin/samba-tool domain provision --use-rfc2307 --interactive
実行すると、環境を聞かれるので答えていくと色々設定していくログが表示される。
重要な箇所は、
Realm [LOCALDOMAIN]: YOUR-DOMAIN.LOCAL Domain [YOUR-DOMAIN]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_FLATFILE Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=your-domain,DC=local Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=ado-tech,DC=local rndc: 'freeze' failed: not dynamic See /opt/samba4/private/named.conf for an example configuration include file for BIND and /opt/samba4/private/named.txt for further documentation required for secure DNS updates Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /opt/samba4/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: addc_server NetBIOS Domain: YOUR-DOMAIN DNS Domain: your-domain.local DOMAIN SID: S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx
これが実行結果のキャプチャ。
Administratorパスワードは複雑で推測されにくいものを設定しよう!!
/opt/samba4/sbin/samba -i -M single
上記コマンドで、シングルプロセスで起動しデーモンとしてではなくインタラクティブに起動する。
ログも標準出力されるので、お試し起動する際にはこのパラメータを渡すとよさげ。
DNS設定
ADではDNSとの連携が必須となる。
別件で既にDNSサーバ (bind9.8) を構築してあるので、今回は内蔵DNSを使用せずにそちらを利用する。
samba-toolが既にSamba側の設定ファイルを用意してくれているので、それを読み込む用にするだけ。
bindのバージョンが9.8より古いと設定方法が違うので要注意。詳しくは公式サイトなどを参照。
named.conf修正
/etc/named.confのoptionタグ内とグローバル領域に以下の項目を追加する。
optionタグ内は他の設定が既にあるので、タグ内の最終行あたりに追加すればいい。
options { ## [他の設定] ## tkey-gssapi-keytab "/opt/samba4/private/dns.keytab" } include "/opt/samba4.private/named.conf"
設定を終えたらnamedプロセスを再起動。
systemctl restart named.service
自動起動設定
/opt/samba4/sbin/samba4 を実行するだけでサーバが起動する。
けどこのままでは、毎回rootでログインしてsambaを実行してからでないと他のアカウントでログインできない。
OSが起動したら自動でサーバが起動できる様にする必要がある。
自動起動するにはサービスに登録する。Fedoraのサービスはsystemdで管理されている。
まずは/lib/systemd/system/samba.serviceファイルを作成。
[Unit] Description=Samba Active Directory Domain Controller Daemon [Service] PIDFile=/opt/samba4/var/run/samba.pid ExecStart=/opt/samba4/sbin/samba [Install] WantedBy=multi-user.target
forkする様にすると調子悪いので、単純に起動させる。
これを自動実行できる様にコマンドで登録する。
systemctl enable samba.service
Windows7 ProのADドメイン参加
Samba3で構築したNTドメインに参加する設定とほぼ一緒。(Fedora14でWindowsドメインサーバ構築 - クマーのえんじにありんぐ)
レジストリ変更を行わなくてよいので、その処理を省く。既にレジストリ追加している場合は削除。
Linux(Fedora18)をSamba4提供のLDAP認証へ
OpenLDAP認証の設定とほぼ一緒。(Fedoa14でLDAPサーバを構築 - クマーのえんじにありんぐ)
/etc/sssd/sssd.conf の内容が違うだけ。変更箇所は[domain/default]セクション。
以下の設定ファイルは、ADサーバにOU=kumaに所属に所属しているユーザでunix設定を施したアカウントをログイン対象にする。
ユーザ検索用に別途アカウントを用意しておく。
(今回はアカウント名がldapbindでパスワードをPASSWORD_FOR_BIND_DNとした場合)
[domain/default] ldap_tls_reqcert = never id_provider = ldap min_id = 1000 ldap_id_user_start_tls = True entry_cache_timeout = 60 ldap_uri = ldap://addc_server.your-domain.local ldap_search_base = dc=your-domain,dc=local ldap_schema = ad ldap_default_bind_dn = cn=ldapbind,cn=Users,dc=your-domain,dc=local ldap_default_authtok_type = password ldap_default_authtok = PASSWORD_FOR_BIND_DN ldap_access_filter = memberOf=ou=kuma,dc=your-domain,dc=local ldap_user_search_base = ou=kuma,dc=your-domain,dc=local ldap_user_object_class = user ldap_user_search_filter = (&(objectClass=user)(uidNumber=*)) ldap_user_name = sAMAccountName ldap_user_uid_number = uidNumber ldap_user_gid_number = gidNumber ldap_user_home_directory = unixHomeDirectory ldap_user_shell = loginShell ldap_account_expire_policy = ad ldap_user_principal = userPrincipalName ldap_group_search_base = ou=kuma,dc=your-domain,dc=local ldap_group_object_class = group ldap_group_name = msSFU30Name ldap_group_gid_number = gidNumber ldap_group_search_filter = (&(objectClass=group)(gidNumber=*))