ActiveDirectoryのドメインコントローラは長らくWindowsServerで構築しないと実用になりませんでしたが、世の中が進歩してWindowsServerを使用しなくてもほぼ実用できるようになりましたので、RaspberryPi上に構築してみました
WindowsServerでActiveDirectoryを構築しなかった理由
今回WindowsServerでActiveDirectoryを構築しなかった理由として
- Windows10のマシンの認証環境はAzure Active Directoryに順次移行している
Azure Active Directory とは - 今後認証必要になるのはAzure Active Directoryに対応していないWindows10以前のマシンだけになる
- 現時点でWindowsServerを使用しないで構築できるActiveDirectoryはWindowsServer2008R2相当だが上記の理由で問題ないと判断した
- 今後利用頻度の低くなっていく環境の認証環境として消費電力の大きいWindowsServerマシンを維持しつづけるのはどうだろうとの判断
などが挙げられます
どういう環境で構築するか?
WindowsServerを仮想環境で構築するというチョイスもありましたが、実験的なことをやってみようということでRaspberryPiで構築してみようということになりました
ラズベリーパイ Raspberry Pi 2 モデル B Raspberry Pi 2 Model B
設定メモ
今回は環境構築にMacOSXを利用した
Raspbian Stretch Liteをダウンロードする
https://downloads.raspberrypi.org/raspbian_lite_latest
ダウンロードしたzipアーカイブはThe Unarchiverを利用して解凍してimgファイルを取り出しておく
Raspbianを書き込む先になるmicroSDを特定する
今回は転がっていたmicroSDを再利用することにした
$ diskutil list
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk4
1: Windows_FAT_32 boot 43.8 MB disk4s1
2: Linux 15.5 GB disk4s2
※今回は/dev/disk4でmicroSDが認識されていた
RaspbianのOSイメージを書き込むためmicroSDをアンマウントする
$ sudo diskutil unmountDisk /dev/disk4
Password:
Unmount of all volumes on disk4 was successful
RaspbianのOSイメージをmicroSDに書き込む
$ sudo dd bs=1m if=~/Downloads/2017-09-07-raspbian-stretch-lite.img of=/dev/disk4
1768+1 records in
1768+1 records out
1854590976 bytes transferred in 1144.485245 secs (1620459 bytes/sec)
ssh接続を有効にしておく
bootとしてマウントされているWindows_FAT_32パーティションにsshという空ファイルを作成しておく
$ diskutil list
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk4
1: Windows_FAT_32 boot 43.8 MB disk4s1
2: Linux 1.8 GB disk4s2
$ touch /Volumes/boot/ssh
取り外したmicroSDをRaspberry Piに取り付けて起動する
$ sudo diskutil unmountDisk /dev/disk4
Password:
Unmount of all volumes on disk4 was successful
RaspberryPiにssh接続する
$ ssh [email protected]
※初期パスワード:raspberry
RaspberryPiに接続できたらとりあえずやっておくこと
パスワードは変更しておく
$ passwd Changing password for pi. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
最新環境にアップデートして再起動する
$ sudo apt-get update $ sudo apt-get -y upgrade $ sudo apt-get dist-upgrade $ sudo rpi-update $ sudo reboot
GPUメモリ割り当て
$ sudo raspi-config nonint do_memory_split 16
TimeZoneの設定
$ sudo timedatectl set-timezone Asia/Tokyo $ sudo dpkg-reconfigure -f noninteractive tzdata
Localeを変更
$ sudo perl -pe 's/^# (ja_JP.UTF-8 UTF-8)/$1/g' -i /etc/locale.gen $ sudo locale-gen $ sudo update-locale LANG=ja_JP.UTF-8 $ sudo dpkg-reconfigure -f noninteractive locales
swapを使わない
$ sudo systemctl disable dphys-swapfile $ sudo dphys-swapfile swapoff $ sudo apt-get -y remove dphys-swapfile
IPv6を無効化
$ sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"
よく使うものをインストールしておく
$ sudo apt-get -y install git $ sudo apt-get -y install screen
IPアドレスとホスト名を設定しておく
$ sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=192.168.0.253/24 static routers=192.168.0.254 static domain_name_servers=8.8.8.8 $ sudo raspi-config nonint do_hostname dc.activedirectory.takeuchi.tk $ sudo nano /etc/hosts 192.168.0.253 dc dc.activedirectory.takeuchi.tk
以前によく見かけた
ほにゃらら.local
的なドメインはおすすめしない
AppleのBonjourもほにゃらら.local
を名前解決に使うので非常にマッチングがわるい
所有しているドメインのサブドメインを使うのが良さそう
Sambaをビルドに必要なパッケージをインストールする
$ sudo apt-get -y install acl attr autoconf bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
libpopt-dev libreadline-dev perl perl-modules pkg-config \
python-all-dev python-dev python-dnspython python-crypto \
xsltproc zlib1g-dev
Sambaのソースコードアーカイブをダウンロードする
$ sudo mkdir /opt/samba
$ cd /opt/samba/
$ sudo wget https://download.samba.org/pub/samba/stable/samba-4.7.1.tar.gz
Sambaのソースコードアーカイブを展開してconfigure、make、install
# tar -zxf samba-4.7.1.tar.gz
# cd samba-4.7.1/
# ./configure
# make
Waf: Leaving directory `/opt/samba/samba-4.7.1/bin'
'build' finished successfully (2h4m29.497s)
# make install
Waf: Leaving directory `/opt/samba/samba-4.7.1/bin'
'install' finished successfully (28m9.799s)
ドメインコントローラを構築する
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm [ACTIVEDIRECTORY.TAKEUCHI.TK]:
Domain [ACTIVEDIRECTORY]:
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:
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=activedirectory,DC=takeuchi,DC=tk
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=activedirectory,DC=takeuhi,DC=tk
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba AD server will be ready to use
Server Role: active directory domain controller
Hostname: dc
NetBIOS Domain: ACTIVEDIRECTORY
DNS Domain: activedirectory.takeuchi.tk
DOMAIN SID: S-1-5-21-*-*-797587748
ドメインコントローラの構築に失敗したときは?
以下のコマンドを実行してドメインコントローラを構築を再実行してみる
# rm -rf /usr/local/samba/private/*
# rm -rf /usr/local/samba/etc/smb.conf
# rm -rf /usr/local/samba/var/locks/sysvol/*
Sambaの起動用スクリプトの作成
$ sudo wget "http://anonscm.debian.org/gitweb/?p=pkg-samba/samba.git;a=blob_plain;f=debian/samba.samba-ad-dc.init;h=3132d2e367675f822342a5b7bc2e50c046aa3b8f;hb=HEAD" -O /etc/init.d/samba-ad-dc
$ sudo sed -i 's|/usr/sbin|/usr/local/samba/sbin|g' /etc/init.d/samba-ad-dc
$ sudo sed -i 's|/etc/samba|/usr/local/samba/etc|g' /etc/init.d/samba-ad-dc
$ sudo sed -i 's|/var/run/samba|/usr/local/samba/var/run|g' /etc/init.d/samba-ad-dc
$ sudo sed -i 's|samba-tool|/usr/local/samba/bin/samba-tool|g' /etc/init.d/samba-ad-dc
$ sudo chmod 755 /etc/init.d/samba-ad-dc
$sudo update-rc.d samba-ad-dc defaults
krb5.confの編集
$ sudo mv /etc/krb5.conf /etc/krb5.conf.orig
$ sudo cp /usr/local/samba/private/krb5.conf /etc
$ sudo nano /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 = ACTIVEDIRECTORY.TAKEUCHI.TK
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
ACTIVEDIRECTORY.TAKEUCHI.TK = {
kdc = dc.activedirectory.takeuchi.tk
}
[domain_realm]
.activedirectory.takeuchi.tk = ACTIVEDIRECTORY.TAKEUCHI.TK
activedirectory.takeuchi.tk = ACTIVEDIRECTORY.TAKEUCHI.TK
起動テスト
$ sudo /etc/init.d/samba-ad-dc start
[ ok ] Starting samba-ad-dc (via systemctl): samba-ad-dc.service.
$ # sudo kinit [email protected]
Password for [email protected]:
Warning: Your password will expire in 41 days on 2017年12月31日 23時59分59秒
$ /usr/local/samba/bin/smbclient -L localhost -U%
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
$ /usr/local/samba/bin/smbclient //dc.activedirectory.takeuchi.tk/netlogon -Uadministrator
Enter ACTIVEDIRECTORY\administrator's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Nov 19 19:38:12 2017
.. D 0 Sun Nov 19 19:39:01 2017
14902912 blocks of size 1024. 12176604 blocks available
smb: \> pwd
Current directory is \\dc.activedirectory.takeuchi.tk\netlogon\
smb: \> exit