せいさくちゅう

FreeIPAドメイン参加のnfsサーバに samba 機能を付与してsmb共有を行ってみた.
ドメインに参加してないwindowsPC/macからアクセス可能みたい
*本来は同じストレージボリュームをnfsとsmbで共有させないのがいいみたい. ファイルロックとかの問題があるそうな. どちらか一方のファイル共有機能にするのが望ましいみたい

2022y04m29d_175211362.png

FreeIPA server側

FreeIPAの構築後を想定してます
まずはFreeIPAサーバ側に「adtrust」モジュールを追加する

[root@freeipa ~]# dnf module install idm:DL1/adtrust

これで「ipa-server-trust-ad」パッケージがインストールされます. 同時にsamba, samba-winbind, sssd-winbind-idmapらも一緒にインストールされる
設定に使用するコマンドは「ipa-adtrust-install」で、これは「Prepare an IPA server to be able to establish trust relationships with AD domains」なそうな

既にFreeIPAにてFreeIPAサーバを作っているので hostname や /etc/hosts は正しいかと思うけど確認します

[root@freeipa ~]# cat /etc/hostname
freeipa.sybyl.local
 
[root@freeipa ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.146 freeipa.sybyl.local freeipa
[root@freeipa ~]#

その上で「ipa-adtrust-install」を実行します

[root@freeipa ~]# ipa-adtrust-install
 
The log file for this installation can be found in /var/log/ipaserver-adtrust-install.log
==============================================================================
This program will setup components needed to establish trust to AD domains for
the IPA Server.
 
This includes:
  * Configure Samba
  * Add trust related objects to IPA LDAP server
 
To accept the default shown in brackets, press the Enter key.
 
Configuring cross-realm trusts for IPA server requires password for user 'admin'.
This user is a regular system account used for IPA server administration.
 
admin password:                         <-- FreeIPAサーバ時に作ったadminのパスワードを入力
 
WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing samba configuration.
 
 
Do you wish to continue? [no]: yes     <-- 既に /etc/samba/smb.conf があるので上書きして構わないときかれた[yes]
Do you want to enable support for trusted domains in Schema Compatibility plugin?
This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users.
 
Enable trusted domains support in slapi-nis? [no]:    <-- よくわからん...古いsssdを使っているならなので[no]
 
 
WARNING: 1 existing users or groups do not have a SID identifier assigned.
Installer can run a task to have ipa-sidgen Directory Server plugin generate
the SID identifier for all these users. Please note, in case of a high
number of users and groups, the operation might lead to high replication
traffic and performance degradation. Refer to ipa-adtrust-install(1) man page
for details.
 
Do you want to run the ipa-sidgen task? [no]: yes      <--- 既にユーザアカウントがあれば問われます. [yes]
 
The following operations may take some minutes to complete.
Please wait until the prompt is returned.
 
Configuring CIFS
 
(略
 
Done configuring CIFS.
DNS management was not enabled at install time.
Add the following service records to your DNS server for DNS zone sybyl.local:
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 389 freeipa.sybyl.local.
_ldap._tcp.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 389 freeipa.sybyl.local.
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 88 freeipa.sybyl.local.
_kerberos._udp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 88 freeipa.sybyl.local.
_kerberos._tcp.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 88 freeipa.sybyl.local.
_kerberos._udp.dc._msdcs.sybyl.local. 86400 IN SRV 0 100 88 freeipa.sybyl.local.
 
=============================================================================
Setup complete
 
You must make sure these network ports are open:
        TCP Ports:
          * 135: epmap
          * 138: netbios-dgm
          * 139: netbios-ssn
          * 445: microsoft-ds
          * 1024..1300: epmap listener range
          * 3268: msft-gc
        UDP Ports:
          * 138: netbios-dgm
          * 139: netbios-ssn
          * 389: (C)LDAP
          * 445: microsoft-ds
 
See the ipa-adtrust-install(1) man page for more details
 
=============================================================================
 
[root@freeipa ~]#

ここで、DNSにSRVレコードの追加が要求されます. ここではdnsmasqでDNSを動かしていますが、次でこのSRVレコードをdnsmasqに追加してみます

dnsmasqの修正

要求されたSRVレコードをdnsmasq向けにフォーマット変換します.
簡単には「_Service._Proto.Name TTL Class SRV Priority Weight Port Target」の内容は dnsmasq では
「srv-host=_Service._Proto.Name,Target,Port,Priority,Weight」と変換します. っでその変換は下記のようになりまして、これを「/etc/dnsmasq.conf」に追記してdnsmasqを再起動します

srv-host=_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local,freeipa.sybyl.local,389,0,100
srv-host=_ldap._tcp.dc._msdcs.sybyl.local,freeipa.sybyl.local,389,0,100
srv-host=_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local,freeipa.sybyl.local,88,0,100
srv-host=_kerberos._udp.Default-First-Site-Name._sites.dc._msdcs.sybyl.local,freeipa.sybyl.local,88,0,100
srv-host=_kerberos._tcp.dc._msdcs.sybyl.local,freeipa.sybyl.local,88,0,100
srv-host=_kerberos._udp.dc._msdcs.sybyl.local,freeipa.sybyl.local,88,0,100

firewallの修正

それと、「ipa-adtrust-install」の実行でFreeIPAサーバに追加のport開け要求がありました.
内容から「/usr/lib/firewalld/services/freeipa-trust.xml」の適用と手動で「* 1024..1300: epmap listener range」の部分を開けることにします

[root@freeipa ~]# firewall-cmd --add-service=freeipa-trust --permanent
[root@freeipa ~]# firewall-cmd --add-port=1024-1300/tcp --permanent
[root@freeipa ~]# firewall-cmd --reload
[root@freeipa ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client freeipa-4 freeipa-trust ssh
  ports: 1024-1300/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@freeipa ~]#

sambaサーバ側

次にsambaサーバ側の調理. 既にFreeIPAドメインのnfsサーバとして作っているのでFreeIPA/clientでの「ipa-client-install」は実施済み.

さらに「ipa-client-samba」パッケージをインストールします.

[root@freeipa-nfs ~]# dnf install ipa-client-samba           <-- samba, samba-winbind, samba-winbind-modules, sssd-winbind-idmap もインストールされる

次に「ipa-client-samba」を実行します

[root@freeipa-nfs ~]# ipa-client-samba
Searching for IPA server...
IPA server: ['freeipa.sybyl.local']
Chosen IPA master: ['freeipa.sybyl.local']
SMB principal to be created: cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
NetBIOS name to be used: FREEIPA-NFS
Discovered domains to use:
 
 Domain name: sybyl.local
NetBIOS name: SYBYL
         SID: S-1-5-21-3589017916-3043012333-1328634384
    ID range: 1738400000 - 1738599999
 
Continue to configure the system with these values? [no]: yes
Samba domain member is configured. Please check configuration at /etc/samba/smb.conf and start smb and winbind services
[root@freeipa-nfs ~]#

これでFreeIPAサーバ側では、サービス記述子が「cifs」なサービスプリンシパルが用意されます.

[root@freeipa ~]# ipa service-find | grep "Principal name:"
  Principal name: HTTP/freeipa.sybyl.local@SYBYL.LOCAL
  Principal name: cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
  Principal name: cifs/freeipa.sybyl.local@SYBYL.LOCAL
  Principal name: dogtag/freeipa.sybyl.local@SYBYL.LOCAL
  Principal name: ldap/freeipa.sybyl.local@SYBYL.LOCAL
  Principal name: nfs/freeipa-client.sybyl.local@SYBYL.LOCAL
  Principal name: nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
[root@freeipa ~]#

またsamba-adで使われるような keytab も作ってくれるようで

[root@freeipa-nfs ~]# klist -ke /etc/samba/samba.keytab
Keytab name: FILE:/etc/samba/samba.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   1 cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL (DEPRECATED:arcfour-hmac)
[root@freeipa-nfs ~]#

と準備してくれます。

sambaサーバ側のsmb設定ファイル「/etc/samba/smb.conf」は書き換えられて下記のようになります

[root@freeipa-nfs ~]# cat /etc/samba/smb.conf
 
[global]
    # Limit number of forked processes to avoid SMBLoris attack
    max smbd processes = 1000
    # Use dedicated Samba keytab. The key there must be synchronized
    # with Samba tdb databases or nothing will work
    dedicated keytab file = FILE:/etc/samba/samba.keytab
    kerberos method = dedicated keytab
    # Set up logging per machine and Samba process
    log file = /var/log/samba/log.%m
    log level = 1
    # We force 'member server' role to allow winbind automatically
    # discover what is supported by the domain controller side
    server role = member server
    realm = SYBYL.LOCAL
    netbios name = FREEIPA-NFS
    workgroup = SYBYL
    # Local writable range for IDs not coming from IPA or trusted domains
    idmap config * : range = 0 - 0
    idmap config * : backend = tdb
 
 
    idmap config SYBYL : range = 1738400000 - 1738599999
    idmap config SYBYL : backend = sss
 
 
# Default homes share
[homes]
    read only = no
[root@freeipa-nfs ~]#

これで各自のユーザフォルダは共有されますが、共通のフォルダも用意してみます。
「/etc/samba/smb.conf」の末尾に下記を加えて

[data]
        path = /data
        writable = yes
        browsable=yes
        write list = @em

最後に各種関連設定を施して完了です

[root@freeipa-nfs ~]# setsebool -P samba_enable_home_dirs on                  <-- SELinux向け. nfs-clientでは「setsebool -P use_nfs_home_dirs on」を実行した
[root@freeipa-nfs ~]# semanage fcontext -a -t samba_share_t "/data/(.*)?"
[root@freeipa-nfs ~]# restorecon -R -v /data
 
[root@freeipa-nfs ~]# firewall-cmd --add-service=samba --permanent
[root@freeipa-nfs ~]# firewall-cmd --reload
 
[root@freeipa-nfs ~]# systemctl enable smb.service winbind
[root@freeipa-nfs ~]# systemctl start smb.service winbind
 

めも

FreeIPAはsssdで認証系を回してberberosが大事. なのでsmbにアクセスしようにもドメインに参加とか求められるみたい?
っでwinbindを合わせて従来の認証系も行けるようにしたって感じかな.

参照先 https://weblog.hirohiro716.com/?p=1983


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-04-30 (土) 00:32:12 (58d)