興味はあったのですが触れる機会もなかったので・・とりあえずメモとして記載中・・・
参考リンク
このページは基本的に以下の素晴らしいサイトに倣って操作しつつ、メモを追記。
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の自動起動をオフにしておくことをお薦めします。
# virsh net-autostart default --disable
その他、53ポートを使用しているプロセスがいる場合は停止しておきましょう。確認コマンドは以下。
# lsof -i:53
firewalld設定
とりあえずOFF
# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl status firewalld
SELinux設定
とりあえずOFF
# vi /etc/selinux/config
「SELINUX=disabled」として、OS再起動。
/etc/hosts設定
以下名前解決設定が入っていることを確認。
IP: 10.0.12.21/24
ホスト名: cent01
127.0.0.1もcent01に名前解決するように入れました。
/etc/hostname設定
cent01が設定されていることを確認
# uname -n
sambaに必要なパッケージインストール
また、以下を入れるためにはepelパッケージが必要でした。
(公式にはRedHatの場合は必要だけどCentOSの場合は必要ないとか書いてありましたが、私が実施した時点では必要でした。)
# 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インストール
# 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
# /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で変更しました。
# cat /etc/resolv.conf
# nmtui
# systemctl restart network
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
krb5.confの配備
# 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
# vi /etc/systemd/system/samba-ad-dc.service
[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
# 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の確認
# /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にスイッチユーザ。
-
ドメインユーザsuadminグループ所属のuser01でログイン。
-
sudo で ローカルユーザwheelグループ所属のadminにログイン。adminユーザにはパスワード設定しないことで、パスワードログイン禁止とする。
-
rootにログイン
以下設定概要
# gpasswd -a admin wheel
(変更前)
#auth required pam_wheel.so use_uid
(コメント解除)
auth required pam_wheel.so use_uid
%suadmin ALL=(ALL) /usr/bin/su - admin