AWS Winbind認証でWinとLinuxにユーザを作成

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 サービス自動起動の設定を確認する

関連の記事

AWS IAMユーザを作成するサンプル

△上に戻る