LoginSignup
6
16

More than 5 years have passed since last update.

sambaでActive Directoryドメインコントローラー

Last updated at Posted at 2019-03-31

興味はあったのですが触れる機会もなかったので・・とりあえずメモとして記載中・・・

参考リンク

このページは基本的に以下の素晴らしいサイトに倣って操作しつつ、メモを追記。
https://centossrv.com/activedirectory-samba.shtml
https://centossrv.com/activedirectory-winbind.shtml
http://d.hatena.ne.jp/rti7743/20110426/1303840756

随時、公式のマニュアルも参照しました。以下辺り特に。
https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba#Red_Hat_Enterprise_Linux_7_.2F_CentOS_7_.2F_Scientific_Linux_7
https://wiki.samba.org/index.php/BuildsystemUseAndWhy

環境情報

OS: CentOS 7.6.1810
samba: samba-4.9.5 ソースコンパイル版
(4.10.0がリリース済みでしたが、公式マニュアルが4.9系になっていたので、とりあえず多くの人柱様に支えられている4.9.5でやってみました。)
※パッケージ版はAD DCに対応していない旨が公式に記載されていますのでソースコンパイル必須です。
https://wiki.samba.org/index.php/Distribution-specific_Package_Installation#Version_7

IP: 10.0.12.21/24
GW: 10.0.12.1
ホスト名: cent01

ドメイン名:ADTEST
レルム:ADTEST.LC

※libvirtが入っているとDNS周りの自動設定で不具合が発生して修正も面倒なので入れないことをお薦めします。

※入れてしまっている場合はnetworkの自動起動をオフにしておくことをお薦めします。

command
# virsh net-autostart default --disable

その他、53ポートを使用しているプロセスがいる場合は停止しておきましょう。確認コマンドは以下。

command
# lsof -i:53

firewalld設定

とりあえずOFF

command
# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl status firewalld

SELinux設定

とりあえずOFF

command
# vi /etc/selinux/config

「SELINUX=disabled」として、OS再起動。

/etc/hosts設定

以下名前解決設定が入っていることを確認。

IP: 10.0.12.21/24
ホスト名: cent01

127.0.0.1もcent01に名前解決するように入れました。

/etc/hostname設定

cent01が設定されていることを確認

command
# uname -n

sambaに必要なパッケージインストール

以下公式を参考に入れました。
https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba#Red_Hat_Enterprise_Linux_7_.2F_CentOS_7_.2F_Scientific_Linux_7

また、以下を入れるためにはepelパッケージが必要でした。
(公式にはRedHatの場合は必要だけどCentOSの場合は必要ないとか書いてありましたが、私が実施した時点では必要でした。)

command
# yum install epel-release

# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
       python2-crypto gnutls-devel libattr-devel keyutils-libs-devel \
       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel \
       lmdb-devel jansson-devel gpgme-devel pygpgme libarchive-devel

samba 4.9.5インストール

command
# wget https://download.samba.org/pub/samba/stable/samba-4.9.5.tar.gz
# tar xzvf samba-4.9.5.tar.gz
# cd samba-4.9.5/
# ./configure
# make
# make install

ドメイン作成

以下を参考にコマンドヘルプ見つつ
https://centossrv.com/activedirectory-samba.shtml

command
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive
出力/入力
Realm [LOCALDOMAIN]:  ADTEST.LC
Domain [ADTEST]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [8.8.8.8]:
Administrator password:
Retype password:

---省略---

ready to use
Server Role:           active directory domain controller
Hostname:              cent01
NetBIOS Domain:        ADTEST
DNS Domain:            adtest.lc
DOMAIN SID:            S-1-5-21-1599284420-4154522608-2847289813

OSのDNS設定変更

nmtuiで変更しました。

command
# cat /etc/resolv.conf
# nmtui
# systemctl restart network
# cat /etc/resolv.conf
出力
# Generated by NetworkManager
nameserver 127.0.0.1

krb5.confの配備

command
# cp -p /etc/krb5.conf /etc/krb5.conf_01
# cp /usr/local/samba/private/krb5.conf /etc/

systemdによる自動起動設定

以下に従って設定。
https://wiki.samba.org/index.php/Managing_the_Samba_AD_DC_Service_Using_Systemd

command
# vi /etc/systemd/system/samba-ad-dc.service
入力内容は公式のcopy&pasteでOK
[Unit]
Description=Samba Active Directory Domain Controller
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/samba/sbin/samba -D
PIDFile=/usr/local/samba/var/run/samba.pid
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

command
# systemctl daemon-reload

# systemctl status samba-ad-dc.service
# systemctl start samba-ad-dc.service
# systemctl enable samba-ad-dc
# systemctl status samba-ad-dc.service

samba DNSの確認

command
# /usr/local/samba/bin/samba-tool dns query 127.0.0.1 ADTEST.LC ADTEST.LC all -U Administrator
出力
Password for [ADTEST\Administrator]:
  Name=, Records=3, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=3600, ns=cent01.adtest.lc., email=hostmaster.adtest.lc. (flags=600000f0, serial=110, ttl=3600)
    NS: cent01.adtest.lc. (flags=600000f0, serial=110, ttl=900)
    A: 10.0.12.21 (flags=600000f0, serial=110, ttl=900)
  Name=_msdcs, Records=0, Children=0
  Name=_sites, Records=0, Children=1
  Name=_tcp, Records=0, Children=4
  Name=_udp, Records=0, Children=2
  Name=cent01, Records=1, Children=0
    A: 10.0.12.21 (flags=f0, serial=110, ttl=900)
  Name=DomainDnsZones, Records=0, Children=2
  Name=ForestDnsZones, Records=0, Children=2

ADのユーザメンテナンス操作

Windowsのクライアントソフト使用して実施するのが楽です。
以下を参照してドメイン参加してツールをインストールしました。
https://centossrv.com/activedirectory-samba.shtml

Linuxユーザの制限設定

以下ページが分かりやすかったです。
http://d.hatena.ne.jp/rti7743/20110426/1303840756

特定ユーザのみをlinuxログイン可能としたい場合に、上記サイトでは1ファイルの変更しか実施していませんが、私の環境では以下2ファイルの変更が必要なようでした。

  • /etc/pam.d/system-auth-ac
  • /etc/pam.d/password-auth-ac

「auth sufficient pam_winbind.so use_first_pass」

「auth sufficient pam_winbind.so use_first_pass require_membership_of=[グループ名]」

に変更しました。

wheelを使いたいけど諦める。

Linuxユーザとして使用する場合ですが・・・
ローカルグループのwheelはドメインユーザに付与できないので、なんか方法ないかと思っていたのですが諦めた。

wheelグループのローカルユーザ作ってそこを踏み台にすることに。
以下1,2,3の手順でrootにスイッチユーザ。

  1. ドメインユーザsuadminグループ所属のuser01でログイン。

  2. sudo で ローカルユーザwheelグループ所属のadminにログイン。adminユーザにはパスワード設定しないことで、パスワードログイン禁止とする。

  3. rootにログイン

以下設定概要

adminユーザをwheelグループに追加
# gpasswd -a admin wheel
/etc/pam.d/su 変更内容
(変更前)
#auth            required        pam_wheel.so use_uid
(コメント解除)
auth            required        pam_wheel.so use_uid
/etc/sudoers.d/suadmin 追加
%suadmin  ALL=(ALL)   /usr/bin/su - admin
6
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
16