Samba4の自動起動スクリプト
Samba4をソースからインストールした場合、自動起動スクリプトを環境に合わせて準備する必要がある。#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi
CWD=$(pwd)
prog="samba4"
start() {
# Attach irda device
echo -n $"Starting $prog: "
/opt/app/samba4/sbin/samba
sleep 2
if ps ax | grep -v "grep" | grep -q /sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
echo
}
stop() {
# Stop service.
echo -n $"Shutting down $prog: "
killall samba
sleep 2
if ps ax | grep -v "grep" | grep -q /sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
echo
}
status() {
/opt/app/samba4/sbin/samba --show-build
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status irattach
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
|
|
SAMBA4を2台目ドメインコントローラ(DC)サーバとして稼働させる
WindowsでActiveDirectoryを構築したが、予算の関係で2台目のDCサーバをCentOS6.5のSAMBA4で構築した際の導入手順です。 SAMBA4だけでもActiveDirecoryを構築できますし、Windowsサーバと混在環境でも構築可能です。 ・ActiveDirectoryはWindowsServer2012サーバで下記内容で構築済み
フォレストの機能レベル:Windows Server 2008 R2
ドメインの機能レベル:Windows Server 2008 R2
・既存ActiveDirectoryに2台目(BDC)のDCサーバとしてSAMBA4を導入する
| フォレストの機能レベル | Windows Server 2008 R2 |
|---|---|
| ドメインの機能レベル | Windows Server 2008 R2 |
| ドメイン名 | ad.hogehoge.jp |
| NetBiosドメイン名 | ad |
| 1台目DCサーバIP | 172.20.1.203 |
| 1台目DCサーバ名 | dc01.ad.hogehoge.jp |
| 2台目DCサーバIP | 172.29.1.204 |
| 2台目DCサーバ名 | dc02.ad.hogehoge.jp |
SAMBA4のDC構築手順(2台目以降)
PDCがWindowsでもSAMBAでも、2台目以降のSAMBA4の構築手順は同じである。SAMBA4で2台目以降のDCサーバ構築前の事前作業
■不要パッケージを削除# yum remove samba-client samba-winbind samba-winbind-clients samba-common
# vi /etc/resolv.conf
#DC01(172.20.1.203) nameserver 172.20.1.203 domain=ad.hogehoge.jp※DNSサーバIPとドメイン名は環境に合わせて変更する
SAMB4インストール
■SAMB4の依存関係パッケージインストール# yum install gcc libacl-devel libblkid-devel gnutls-devel \ python-devel pkgconfig krb5-workstation zlib-devel libaio-devel \ policycoreutils-python libsemanage-python setools-libs-python \ setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel \ libxml2-devel libsepol-devel keyutils-libs-devel \ cyrus-sasl-devel bind-utils
# cd /usr/local/src # wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz
# tar zxvf samba-latest.tar.gz # cd samba-4.1.6/
# ./configure --prefix=/opt/app/samba4/ --enable-selftest
※赤字のインストール先は環境に合わせること。# make : Waf: Leaving directory `/usr/local/src/samba-4.1.6/bin' 'build' finished successfully (14m45.145s)
# make install : Waf: Leaving directory `/usr/local/src/samba-4.1.6/bin' 'install' finished successfully (3m12.883s)
# vi /etc/init.d/samba4Samba起動スクリプト作成内容はこちらを参照。
# vi /etc/yum.conf
[main] exclude=kernel* samba* bind-utils
SAMBA4のDC昇格
■kerberos関連設定# cp /etc/krb5.conf /etc/krb5.conf.org
# vi /etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = AD.HOGEHOGE.JP dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] AD.HOGEHOGE.JP = { kdc = dc01.ad.hogehoge.jp } [domain_realm] .ad.hogehoge.jp = AD.HOGEHOGE.JP ad.hogehoge.jp = AD.HOGEHOGE.JP※大文字小文字の区別があるので注意を!!
# kinit administrator@AD.HOGEHOGE.JP・エラーメモ
| kinit(v5): Cannot resolve network address for KDC in requested realm while getting initial credentials | ドメインが存在しない |
|---|---|
| kinit(v5): Client not found in Kerberos database while getting initial credentials | ユーザーが存在しない |
| kinit(v5): KDC reply did not match expectations while getting initial credentials | ドメインが小文字を指定している |
| kinit(v5): Preauthentication failed while getting initial credentials | パスワードが違う |
| kinit(v5): Clock skew too great while getting initial credentials | Linuxと ActiveDirectoryの DCの時刻が 5分以上ずれている |
# /etc/rc.d/init.d/samba4 start
# /opt/app/samba4/bin/samba-tool domain join ad.hogehoge.jp DC -U administrator --realm=AD.HOGEHOGE.JP Committing SAM database descriptor_sd_propagation_recursive: DC=DomainDnsZones,DC=ad,DC=hogehoge,DC=jp not found under DC=ad,DC=hogehoge,DC=jp descriptor_sd_propagation_recursive: DC=ForestDnsZones,DC=ad,DC=hogehoge,DC=jp not found under DC=ad,DC=hogehoge,DC=jp Sending DsReplicateUpdateRefs for all the replicated partitions Setting isSynchronized and dsServiceName Setting up secrets database Joined domain AD(SID S-1-5-xx-3469xxxxxx-26xxxxxxx-249xxxxxxxxx) as a DC※赤文字は環境に合わせて変更すること
# /opt/app/samba4/bin/smbclient -L localhost -U%
Domain=[AD] OS=[Unix] Server=[Samba 4.1.6]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.6)
Domain=[AD] OS=[Unix] Server=[Samba 4.1.6]
Server Comment
--------- -------
Workgroup Master
--------- -------
# /opt/app/samba4/bin/samba-tool drs showrepl■Samba4の自動起動設定
# chmod 755 /etc/init.d/samba4 # chkconfig --add samba4 # chkconfig --level 345 samba4 on
DC構築後の環境整備
■Samabサーバのリゾルバ設定# vi /etc/resolv.confnameserver 127.0.0.1 nameserver 172.20.1.203
・SAMBA4のDNS利用方法1
1つめは内部DNSの使用でSamba4にDNSサーバを取り込んだものでデフォルトではこの内部DNSが使用されます。この場合、特別な設定を実施せずともコンピュータやDCの名前解決ができます。また、DNSのゾーン情報はSamba4のデータベースに登録されるため別のDCにレプリケーションされます。これにより複数のサーバでDNSのゾーン情報を更新可能となります。
・SAMBA4のDNS利用方法2
2つ目の方法はBINDと連携する方法でこの場合、BINDを通常のDNSサーバとして設定しSamba4用のゾーン情報を追記すれば連携が可能となります。
# vi /opt/app/samba4/etc/smb.conf
[global] workgroup = AD realm = ad.hogehoge.jp netbios name = DC02 server role = active directory domain controller dns forwarder = 8.8.8.8
・設定反映# /etc/init.d/samba4 restart※8.8.8.8はGOOGLEのDNSサーバです。
# /opt/app/samba4/sbin/samba -b | grep NTP_SIGND_SOCKET_DIR NTP_SIGND_SOCKET_DIR: /opt/app/samba4/var/lib/ntp_signd
# chgrp ntp /opt/app/samba4/var/lib/ntp_signd
# vi /etc/ntp.conf
#NTP Server #アクセス許可 restrict 127.0.0.1 restrict 172.20.1.0 mask 255.255.255.0 restrict 172.20.2.0 mask 255.255.255.0 # 同期サーバとのアクセス許可 restrict 172.20.1.203 noquery restrict 133.100.11.8 noquery #同期するNTPServer指定 # DC01(172.20.1.203) server 172.20.1.203 # clock.tl.fukuoka-u.ac.jp server 133.100.11.8 ntpsigndsocket /opt/app/samba4/var/lib/ntp_signd restrict default mssntp includefile /etc/ntp/crypto/pw keys /etc/ntp/keys
# /etc/init.d/ntpd start # chkconfig ntpd on
# grep MS-SNTP /var/log/messages May 15 18:38:17 dc02 ntpd[25887]: MS-SNTP signd operations currently block ntpd degrading service to all clients. May 15 18:43:46 dc02 ntpd[25917]: MS-SNTP signd operations currently block ntpd degrading service to all clients.
ApacheのKerberos認証でAD認証連携させる
Apacheの基本認証にActiveDirectory(AD)のユーザ認証と連携する方法は2つあります。| 利用モジュール | mod_auth_kerb |
|---|---|
| メリット | Apache-ADサーバ間はKERBEROS経由を利用するため、パスワードが暗号化されます。 |
| デメリット | KERBEROS認証の場合は、ActiveDirectory上の有効なユーザ全員が対象となり、ActiveDirectory上の特定OU内のユーザのみにすることは出来ないようです。 特定ユーザのみにする場合は「Require user」か、ユーザを列挙したファイルを用意して「Require group」を使用することになります。 Chromeブラウザからの認証は500エラーが発生する。(IE,FireFoxは正常にアクセスできることを確認) |
DCサーバ側作業
・事前作業
Apacheサーバ側作業
・mod_auth_kerbモジュールインストール
・krb5.confファイルの編集
・ApacheのAD連携設定
# yum install mod_auth_kerb
| Windowsドメイン名 | ad.hoge.com |
|---|---|
| DC(ドメインコントローラ)サーバ | 192.168.2.4 |
# mkdir /var/log/krb5 ;chown apache /var/log/krb5
# vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5/krb5libs.log
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
[libdefaults]
default_realm = AD.HOGE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
AD.HOGE.COM = {
default_domain = ad.hoge.com
kdc = 192.168.2.4:88
admin_server = 192.168.2.4:749
}
[domain_realm]
.ad.hoge.com = AD.HOGE.COM
ad.hoge.com = AD.HOGE.COM
※大文字小文字は重要です。# kinit testapache@AD.HOGE.COM Password for testapache@AD.HOGE.COM:※何も表示されず終了すれば、成功!!
# vi /etc/httpd/conf/httpd.conf
LoadModule auth_kerb_module modules/mod_auth_kerb.so
Alias /krb5 /var/www/krb5
<Location /krb5>
AuthType Kerberos
AuthName "Kerberos Login(ActiveDirectory)"
KrbAuthRealms AD.HOGE.COM
KrbVerifyKDC Off
KrbServiceName HTTPS/webdav-01.web.hoge.com
KrbMethodNegotiate off
KrbSaveCredentials off
Require valid-user
Order deny,allow
Deny from none
Allow from all
</Location>
<Directory "/var/www/krb5">
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
KrbMethodNegotiate off
KrbSaveCredentials off