2015年4月20日月曜日

CentOS7 とsamba4でActiveDirectoryを構築する

既出と思いますが。。。。


以下URL参考

http://orebibou.com/2015/03/centos-7%E3%81%A8samba4%E3%81%A7%E8%87%AA%E5%AE%85%E7%94%A8active-directory-domain-controller-ad-dc%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%E2%91%A0-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88/

以下slideshreを見るとあまり複雑なAD環境には適してないです。
http://www.slideshare.net/takahashimotonobu/20150228-osc2015tokyo-springw2k3samba4

とりあえずADいる、とか小規模でADのユーザ管理だけできればいい、というような環境が適しているかと思います。
普通にyum insatll samba4 ではAD機能はインストールされないとのこと

CentOS7で構築しました。

【事前準備】
※完了後再起動してホスト名/IP設定を再確認してください。

リポジトリの更新

yum -y install yum-plugin-priorities

ファイアウォールの無効化

systemctl stop firewalld
systemctl disable firewalld

selinuxの無効化

/etc/selinux/config

 SELINUX=disabled

時刻同期

yum -y install ntp
vi /etc/ntp.conf で以下のようにNTPサーバを参照。(既存ADがある場合はADサーバを指定)

server 192.168.0.11 iburst

パッケージのインストール

yum -y install perl gcc libacl-devel libblkid-devel gnutls-devel \readline-devel python-devel gdb pkgconfig krb5-workstation \zlib-devel setroubleshoot-server libaio-devel \setroubleshoot-plugins policycoreutils-python \libsemanage-python setools-libs-python setools-libs \popt-devel libpcap-devel sqlite-devel libidn-devel \libxml2-devel libacl-devel libsepol-devel libattr-devel \keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils \libxslt docbook-style-xsl openldap-devel

ホスト名/IPアドレスの設定

/etc/sysconfig/network

 HOSTNAME=dcsrv01

/etc/hostname

  dcsrv01
 
/etc/sysconfig/network-scripts/ifcfg-enoXXXXXXXX

 TYPE="Ethernet"
 BOOTPROTO="none"
 IPADDR="192.168.0.100"
 NETMASK="255.255.255.0"
 GATEWAY="192.168.0.254"
 DEFROUTE="yes"
 PEERROUTES="yes"
 IPV4_FAILURE_FATAL="no"
 NAME="enoXXXXXXXX"
 DEVICE="enoXXXXXXXX"
 ONBOOT="yes"
 DOMAIN="example.local"
 DNS1="127.0.0.1"

/etc/resolv.conf

  nameserver 127.0.0.1

【samba4のインストール】

mkdir /tmp/samba
cd /tmp/samba
wget http://www.samba.org/samba/ftp/samba-latest.tar.gz
tar zxvf /tmp/samba/samba-latest.tar.gz
cd samba/samba-4.2.1/
./configure && make && make install

【ドメインの作成】

/usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2

 Realm: example.local
 Domain [example]:(エンター)
 Server Role (dc, member, standalone) [dc]:(エンター)
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:(エンターで内部DNS使用)
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.0.254]: (エンター)
 Administrator password: (administratorパスワード(要複雑性)
 Retype password: (パスワード(再入力)

【ドメインの削除】
 rm -f /usr/local/samba/etc/smb.conf
 rm -rf /usr/local/samba/private/*
 rm -rf /usr/local/samba/var/locks/sysvol/*

【ドメイン参加】

後述するケルベロス設定実施後、下記コマンドでドメイン参加できます。

/usr/local/samba/bin/samba-tool domain join example.local DC -U EXAMPLE\\Administrator --realm=example.local

【ドメインユーザの確認】

/usr/local/samba/bin/samba-tool user list

【FSMOの確認】

/usr/local/samba/bin/samba-tool fsmo show

【複製の確認】

/usr/local/samba/bin/samba-tool drs showrepl


【samba4のサービス起動/有効化】

起動スクリプトの作成

vi /etc/rc.d/init.d/samba4

#!/bin/bash
. /etc/init.d/functions
. /etc/sysconfig/network
prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog

start() {
        [ "$NETWORKING" = "no" ] && exit 1
        #       [ -x /usr/sbin/ntpd ] || exit 5
        # Start daemons.
        echo -n $"Starting samba4: "
        daemon $prog_dir/$prog -D
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
        }
        stop() {
        [ "$EUID" != "0" ] && exit 4
        echo -n $"Shutting down samba4: "
        killproc $prog_dir/$prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
        }

   case "$1" in
   start)
   start
   ;;
   stop)
   stop
   ;;
   status)
   status $prog
   ;;
   restart)
   stop
   start
   ;;
   reload)
   echo "Not implemented yet."
   exit 3
   ;;
   *)
   echo $"Usage: $0 {start|stop|status|restart|reload}"
   exit 2
   esac

chmod 755 /etc/rc.d/init.d/samba4
systemctl start samba4
systemctl enable samba4

【内部DNS動作確認】

/usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
host -t SRV _ldap._tcp.example.local 127.0.0.1
host -t SRV _kerberos._udp.example.local 127.0.0.1
host -t A dcsrv01.example.local 127.0.0.1

【ケルベロス設定】
cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

※AD追加の場合は以下

/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 = EXAMPLE.LOCAL
  dns_lookup_realm = true
  dns_lookup_kdc = true
  ticket_lifetime = 24h
  renew_lifetime = 7d
  forwardable = true

 [realms]
  ADEXAMPLE.COM = {
   kdc = addc.example.local #既存ADサーバ
   admin_server = addc.example.local #既存ADサーバ
  }

 [domain_realm]
  .adexample.com = EXAMPLE.LOCAL
  adexample.com = EXAMPLE.LOCAL
 

Windowsでドメイン参加後、管理ツールを導入することでGUIで上記ADを管理できます。
Windows2008の場合、「機能の追加」-「リモートサーバ管理ツール」

既存WindowsADにも参加可能です。
ただしWindowsADの降格がうまくいかないため、WindowsADから切り替える場合はFSMOの強制移行、sysvolコピー、DNSレコードの手動削除が必要になります。

0 件のコメント:

コメントを投稿