AWSのWinbind認証でWindowsとLinuxにユーザを作成するサンプルです。
目次
サンプル | 目的 |
インバウンドルールを追加 | |
winbindをインストールする | |
hostsを修正する | |
resolv.confを修正する | |
sambaの設定ファイルを修正する | |
smb.confに設定された箇所の確認と修正 | |
krb5.confに設定された箇所を確認する | |
nsswitch.confに設定された箇所を確認する | |
ADに接続する | |
ユーザ情報を確認する | |
サービスのコマンド |
目的
- WindowsサーバのActiveDirectoryにlinuxサーバを参加させます。
- ADでユーザ作成し、Linuxでその作成したユーザに変更できるようにします。
- WindowsとLinuxの日時が異なっている場合は同じに設定する必要があります。
- sambaの設定は完了している前提です。
AWS sambaでWindowsとLinuxのファイル共有をする
インバウンドルールを追加
Windowsサーバーのセキュリティポリシーにインバウンドルールを追加します。
ポート番号 | プロトコル | 備考 |
---|---|---|
すべて | ICMP | pingで確認するため |
88 | Kerberos | TCP/UDP |
53 | DNS | TCP/UDP |
445 | SMB | TCP |
389 | LDAP | TCP/UDP |
3389 | RDP | リモートデスクトップ接続で使用 |
22 | SSH | TeraTerm接続で使用 |
139 | NetBIOS-ssn | TCP/UDP |
135 | RPC | TCP |
winbindをインストールする
1.Tera TermのSSHでEC2に接続します。
Tera TermのSSHでEC2に接続する
2.winbindをインストールします。
インストール済みかの確認は、yum list installed | grep samba-winbindで行います。
インストール済みの場合はsamba-winbindの行が表示されます。
sudo yum -y install samba-winbind samba-winbind-clients
hostsを修正する
1.hostsファイル編集します。
sudo vi /etc/hosts
ファイルの最終行にWindowsサーバのIPとホスト名を追加します。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
10.0.10.8 WIN-JFILNHJ6C81
ホスト名(Host Name)は、Windowsサーバーに入りpower shellのipconfig /allで確認できます。
ホスト名は、smb.confのpassword serverで使用します。
resolv.confを修正する
resolv.confファイル編集します。
sudo vi /etc/resolv.conf
nameserverのIPアドレスは、WindowsサーバーのIPを指定します。
searchは、Windowsサーバーのホスト名(WIN-JFILNHJ6C81)とドメイン名(testdomain1.local)を指定します。
options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
nameserver 10.0.10.8
search WIN-JFILNHJ6C81.testdomain1.local
※ドメイン名は、Windowsサーバーの画面左下のServer Managerのアイコンをクリックし「Local server」のDomainの箇所から取得しました。
※サーバーを再起動するとresolv.confの値は元に戻ってしまいます。
sambaの設定ファイルを修正する
1.Sambaの設定ファイル(smb.conf)のバックアップを取ります。
[ec2-user@ip-10-0-10-4 ~]$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.20220821
[ec2-user@ip-10-0-10-4 ~]$ ls -l /etc/samba/
total 28
-rw-r--r-- 1 root root 20 Feb 2 2022 lmhosts
-rw-r--r-- 1 root root 753 Aug 20 14:59 smb.conf
-rw-r--r-- 1 root root 753 Aug 20 16:03 smb.conf.20220821
-rw-r--r-- 1 root root 11327 Feb 2 2022 smb.conf.example
-rw-r--r-- 1 root root 706 Aug 20 14:58 smb.conf.org
[ec2-user@ip-10-0-10-4 ~]$
2.Winbindの設定をGUIで行います。
authconfig-tuiを入力すると設定画面が表示されます。
[ec2-user@ip-10-0-10-12 ~]$ sudo authconfig-tui
Job for winbind.service failed because the control process exited with error code. See "systemctl status winbind.service" and "journalctl -xe" for details.
[ec2-user@ip-10-0-10-12 ~]$
2行目は、設定画面が閉じた時に表示されます。
3.Use Winbindを選択しUse Shadow Passwords,Use Winbind Authentication,Local authorization is sufficientが選択されていることを確認し、Nextを選択します。
選択はスペースを押すと設定できます。
4.Security Modelは、adsを選択し、Domain Controllers,ADS Realmを入力します。
Template Shellは、/bin/bashを選択しOKを選択します。
Join Domain(ドメイン参加)は後で行うのでクリックしなくてよいです。
Domainは、ドメイン名の.localより前の部分を入力しました。
ADS Realmは、ドメイン名を入力しました。
smb.confで設定された箇所を確認と修正
上記設定後のsmb.confで設定された箇所を確認します。
2-18行目までが追記され、19-20行目は変更されました。
[global]
#--authconfig--start-line--
# Generated by authconfig on 2022/08/20 18:10:23
# DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--)
# Any modification may be deleted or altered by authconfig in future
workgroup = TESTDOMAIN1
password server = win-jfilnhj6c81
realm = TESTDOMAIN1.LOCAL
security = ads
idmap config * : range = 16777216-33554431
template shell = /bin/bash
kerberos method = secrets only
winbind use default domain = true
winbind offline logon = false
#--authconfig--end-line--
; workgroup = SAMBA
; security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
上記ファイルの12行目を12,13行目のように修正し14行目を追加しました。
sudo vi /etc/samba/smb.conf
workgroup = TESTDOMAIN1
password server = win-jfilnhj6c81
realm = TESTDOMAIN1.LOCAL
security = ads
idmap uid = 300000-500000
idmap gid = 300000-500000
template homedir = /home/%U
template shell = /bin/bash
kerberos method = secrets only
winbind use default domain = true
winbind offline logon = false
14行目は、ホームディレクトリが/home/ユーザーになります。
15行目は、デフォルトのシェルが/bin/bashになります。
17行目は、trueにするとドメイン名\ユーザー名ではなくユーザー名でログインできます。
krb5.confで設定された箇所を確認する
上記設定で/etc/krb5.confも修正されています。
krb5.confは、Kerberosの設定ファイルです。
[ec2-user@ip-10-0-10-12 ~]$ cat /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
default_realm = TESTDOMAIN1.LOCAL
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
TESTDOMAIN1.LOCAL = {
kdc = testdomain1
}
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
testdomain1.local = TESTDOMAIN1.LOCAL
.testdomain1.local = TESTDOMAIN1.LOCAL
[ec2-user@ip-10-0-10-12 ~]$
nsswitch.confに設定された箇所を確認する
上記設定で/etc/nsswitch.confも修正されています(7-9行目)。
nsswitch.confは、名前解決の優先順位を指定するファイルです。
[ec2-user@ip-10-0-10-12 ~]$ cat /etc/nsswitch.conf
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files winbind
shadow: files winbind
group: files winbind
#hosts: db files nisplus nis dns
hosts: files dns myhostname
# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files
publickey: nisplus
automount: files
aliases: files nisplus
[ec2-user@ip-10-0-10-12 ~]$
ADに接続する
0.smbとwinbindのサービスを停止します。
sudo systemctl stop smb.service
sudo systemctl stop winbind
1.net ads joinコマンドでADに接続します。
[ec2-user@ip-10-0-10-12 ~]$ sudo net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- TESTDOMAIN1
Joined 'IP-10-0-10-12' to dns domain 'testdomain1.local'
No DNS domain configured for ip-10-0-10-12. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
[ec2-user@ip-10-0-10-12 ~]$
Failed to join domain: failed to find DC for domain TESTDOMAIN1 - {Operation Failed} The requested operation was unsuccessful. |
上記エラーが発生しました。
確認したところ/etc/resolv.confのnameserver 10.0.10.8のIPアドレスが間違っていました。
修正すると成功しました。
2.net ads infoコマンドでADの接続情報を確認します。
[ec2-user@ip-10-0-10-12 ~]$ sudo net ads info
LDAP server: 10.0.10.8
LDAP server name: WIN-JFILNHJ6C81.testdomain1.local
Realm: TESTDOMAIN1.LOCAL
Bind Path: dc=TESTDOMAIN1,dc=LOCAL
LDAP port: 389
Server time: Sun, 21 Aug 2022 22:16:40 JST
KDC server: 10.0.10.8
Server time offset: 0
Last machine account password change: Sun, 21 Aug 2022 19:59:07 JST
[ec2-user@ip-10-0-10-12 ~]$
3.WindowsサーバーではLinuxサーバが表示されます。
ユーザ情報を確認する
0.smbとwinbindのサービスを開始します。
sudo systemctl start smb.service
sudo systemctl start winbind
1.wbinfo -uでADのユーザ情報を参照できます。
[ec2-user@ip-10-0-10-12 ~]$ sudo wbinfo -u
administrator
guest
krbtgt
dom1
t.suzuki
[ec2-user@ip-10-0-10-12 ~]$
2.WindowsサーバーのActive DirectoryでT.Tanakaを作成しました。
PS C:\Users\Administrator> Get-ADUser -Filter {SamAccountName -like "t.tanaka"}
DistinguishedName : CN=Taro Tanaka,CN=Users,DC=testdomain1,DC=local
Enabled : True
GivenName : Taro
Name : Taro Tanaka
ObjectClass : user
ObjectGUID : f26341fc-06c5-403b-ad02-527b31a53e84
SamAccountName : T.Tanaka
SID : S-1-5-21-1982188251-3569139106-3058498453-1118
Surname : Tanaka
UserPrincipalName : T.Tanaka@testdomain1.local
3.wbinfo -uでADのユーザ情報を参照したところ表示されました。
[ec2-user@ip-10-0-10-12 ~]$ sudo wbinfo -u
administrator
guest
krbtgt
dom1
t.suzuki
t.tanaka
[ec2-user@ip-10-0-10-12 ~]$
4.idコマンドでuidとgidを確認できます。 smb.confで指定した300000からの値になっています。
[ec2-user@ip-10-0-10-12 ~]$ id t.tanaka
uid=300003(t.tanaka) gid=300000(domain users) groups=300000(domain users)
[ec2-user@ip-10-0-10-12 ~]$
5.suコマンドでADで作成したユーザに変更できます。
[ec2-user@ip-10-0-10-12 ~]$ su t.tanaka
Password:
[t.tanaka@ip-10-0-10-12 ec2-user]$ whoami
t.tanaka
[t.tanaka@ip-10-0-10-12 ec2-user]$
サービスのコマンド
sambaはsmb.service,winbindはそのままwinbindです。
systemctl status winbind | サービスの状態を確認する |
sudo systemctl start winbind | サービスを起動する |
sudo systemctl stop winbind | サービスを停止する |
systemctl status smb.service | サービスの状態を確認する |
sudo systemctl start smb.service | サービスを起動する |
sudo systemctl stop smb.service | サービスを停止する |
sudo systemctl restart smb.service | サービスを再起動する |
sudo systemctl enable smb.service | サービス自動起動を有効にする |
sudo systemctl disable smb.service | サービス自動起動を無効にする |
systemctl is-enabled smb.service | サービス自動起動の設定を確認する |
関連の記事