せいさくちゅう
FreeIPAドメイン参加のnfsサーバに samba 機能を付与してsmb共有を行ってみた.
ドメインに参加してないwindowsPC/macからアクセス可能みたい
*本来は同じストレージボリュームをnfsとsmbで共有させないのがいいみたい. ファイルロックとかの問題があるそうな. どちらか一方のファイル共有機能にするのが望ましいみたい
FreeIPAの構築後を想定してます
まずはFreeIPAサーバ側に「adtrust」モジュールを追加する
[root@freeipa ~]# dnf install ipa-server-trust-ad
これで「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]: <-- nisのypservっぽい働きをさせたいならyes. 使わないので[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 ~]#
「ipa-adtrust-install」の実行の最後で
が求められています.
ここではDNSはdnsmasqで運営しているので、フォーマットを変更して「/etc/dnsmasq.conf」に追記します
そしてfirewall対応を行います
要求された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
何を開けるか指定されましたが、こちらは「/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サーバ側の調理.
既に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 --server=freeipa.sybyl.local
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-2296221687-3594954941-118212876
ID range: 653400000 - 653599999
Continue to configure the system with these values? [no]: yes <-- 設定内容を確認して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: cifs"
Principal name: cifs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
Principal name: cifs/freeipa.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 --now
FreeIPAはsssdで認証系を回してberberosが大事. なのでsmbにアクセスしようにもドメインに参加とか求められるみたい?
っでwinbindを合わせて従来の認証系も行けるようにしたって感じかな.