はじめに
Samba AD/DCでユーザ認証を行うクライアントLinuxの設定です。
SSSDを使ってユーザ認証します。
環境
- 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