Samba AD/DCでLinuxとWindowsのユーザ認証を行う。part2:クライアントLinuxの設定

Linux

はじめに

Samba AD/DCでユーザ認証を行うクライアントLinuxの設定です。
SSSDを使ってユーザ認証します。

Samba AD/DCの構築

環境

- Client
    - Debian bookworm
    - sssd 2.8.2-4
    - Samba 4.17.12-Debian

- Samba AD/DC
    - Samba 4.17.12-Debian

構成

Domain: ND
Realm: ND.LOCAL

DC1(FSMO)
192.168.1.1

DC2
192.168.1.2

client1(クライアントLinux)
192.168.1.55

固定IPアドレスに変更

DHCPに関連するパッケージを削除します。

sudo apt purge isc-dhcp-common isc-dhcp-client

/etc/network/interfacesを編集します。
「8.8.8.8」はGoogle Public DNSです。
クライアントLinuxのIPアドレスは「192.168.1.55」です。

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
auto eno1
iface eno1 inet static
  address 192.168.1.55
  netmask 255.255.255.0
  gateway 192.168.1.xx
  dns-domain xxx.xxx.xxx
  dns-nameservers 8.8.8.8

NetworkManagerが/etc/resolv.confを書き換えないように/etc/NetworkManager/NetworkManager.confを編集します。

 [main]
 dns=none

NetworkManagerを再起動します。

sudo systemctl restart NetworkManager

/etc/resolv.confを編集します。
DC1を指定します。

nameserver 192.168.1.1
nameserver 192.168.1.2

パッケージのインストール

ユーザ認証のみの場合はSambaは不要です。
今回はファイル共有も行うのでインストールします。
adcliを使ってSamba AD/DCに参加します。
realmdは使いません。

sudo apt install samba krb5-user ldb-tools sssd adcli sssd-tools

/etc/hosts

クライアントLinuxのホスト名は「client1」です。
「192.168.1.1」はSamba AD/DCの1台目であるdc1のIPアドレスです。

127.0.0.1      localhost
127.0.0.1      client1.nd.local     client1
133.48.97.20   client1.xxx.xxx.xxx  client1
133.48.97.20   client1.nd.local     client1

192.168.1.1    dc1.nd.local  dc1

時刻の設定

/etc/systemd/timesyncd.confを編集します。

NTP=time.google.com

確認します。

systemctl restart systemd-timesyncd

timedatectl timesync-status

サービスの無効化

samba-ad-dcは不要なので無効化します。

sudo systemctl stop samba-ad-dc
sudo systemctl disable samba-ad-dc
sudo systemctl daemon-reload

/etc/krb5.conf

krb5.confを編集します。
「192.168.1.1」はSamba AD/DCの1台目DC1のIPアドレスです。
デュプリケーションしてSamba AD/DCを2台にした場合は追記します。

 [libdefaults]
 default_realm = ND.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

 [realms]
 ND.LOCAL = {
   kdc = 192.168.1.1
   admin_server = 192.168.1.1
   #kdc = 192.168.1.2
   #admin_server = 192.168.1.2
 }

 [domain_realm]
 .nd.local = ND.LOCAL
 nd.local = ND.LOCAL

/etc/sssd/sssd.conf

 [sssd]
domains = ND.LOCAL
config_file_version = 2
services = nss, pam

 [domain/nd.local]
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad

entry_cache_netgroup_timeout = 15
entry_cache_timeout = 15

ad_domain = nd.local
ad_server = nd.local

krb5_realm = ND.LOCAL

cache_credentials = True

realmd_tags = manages-system joined-with-adcli

default_shell = /bin/bash
override_homedir = /home/%u
fallback_homedir = /home/%u

krb5_store_password_if_offline = True

ldap_id_mapping = False
ldap_schema = rfc2307bis
ldap_group_nesting_level = 5

ldap_user_uid_number = uidNumber
ldap_user_gid_number = gidNumber

# xrdp
use_fully_qualified_names = False
ad_gpo_access_control = permissive
ad_gpo_map_remote_interactive = +xrdp-sesman

/etc/krb5.keytab

Samba AD/DCのパソコンで作業します。
Samba AD/DCのDC1(FSMO)でクライアントLinux「client1」を登録します。

samba-tool spn add host/client1.xxx.xxx.xxx client1$

krb5.keytabを作成します。

samba-tool domain exportkeytab /etc/krb5.keytab --principal=host/client1.xxx.xxx.xxx@ND.LOCAL

クライアントLinuxにコピーします。
今回はUSBを介してコピーしました。

cp /mnt/krb5.keytab /etc

chown root:root /etc/krb5.keytab

chmod 600 /etc/krb5.keytab

pam_sss.soの追記

/etc/pam.d/xrdp-sesmanに追記します。

auth    required    pam_sss.so
account required    pam_sss.so
session  required    pam_sss.so

/etc/pam.d/sshdに追記します。

auth    required    pam_sss.so
account required    pam_sss.so
session  required    pam_sss.so

サービスの再起動

systemctl restart sssd nmbd smbd xrdp sshd

ドメインに登録する

Samba AD/DCのパソコンで「client1」を登録します。

samba-tool computer add client1

Samba AD/DCのパソコンで確認します。

samba-tool spn list client1$

ドメインに参加する

Samba AD/DC構築時に設定した管理者のパスワードを入力します。

sudo adcli join --domain=nd.local --user Administrator

確認(クライアント)

Samba AD/DCに登録したusernameが参照できるか確認します。

id username

getent passwd username

ドメインを参照できるか確認します。

adcli info nd.local

net ads info

realm list

確認(Samba AD/DCのパソコン)

Samba AD/DCのパソコンで、クライアントLinuxのclient1が表示されるか確認します。

samba-tool computer list

samba-tool computer show client1

ldbsearch -H /var/lib/samba/private/sam.ldb '(&(objectClass=computer))' name

ldbsearch -H /var/lib/samba/private/sam.ldb '(&(objectClass=computer))'

/etc/samba/smb.conf

ファイル共有も行うので編集します。
ドメインに参加していないとアクセスできません。

 [global]
workgroup = ND
realm = ND.LOCAL
security = ads

dedicated keytab file = /etc/krb5.keytab
kerberos method = secrets and keytab

 [homes]
comment = Home Directories
path = /home/%U
read only = no
browsable = no
valid users = %U
create mask = 0700
directory mask = 0700

Comments