はじめに
みなさんは、ディレクトリサービスに何を使っていますか?
Active Directory や OpenLDAP など選択肢はいろいろありますが、Active Directory は Windows Server の運用が前提になりやすく、コストがかかりがちです。OpenLDAP は自由度が高い一方で、設定や運用のハードルが高いと感じます。
そこで知ったのが FreeIPA です。FreeIPA は Linux 環境で動作するディレクトリサービスで、Kerberos や DNS などの機能が統合され、Web UI も提供されているため管理しやすいのが特徴です。
この記事では、Samba 認証に FreeIPA を利用する手順を備忘録としてまとめます。
今回の環境
サーバー
- OS: Red Hat Enterprise Linux 9.7
- Samba: 4.22.4
- DNSはCloudflareを使用
クライアント
- OS: Windows 11
- ドメイン非参加
重要CloudflareをDNSサーバーとする場合、有効なパブリックドメインが必要になります。今回は、記事の都合上
example.comを使用しますが、実際には有効なドメインを使用してください。
ヒントCloudflareには、ローカルIPを登録することができます。
FreeIPAのインストール
今回は、RHEL 9.7にFreeIPAをインストールします。
Ubuntu などの Debian 系では、利用できるパッケージがない場合やバージョンが古い場合があるため、本記事では RHEL 系を使用します。
# ホスト名を確認
hostname
# FQDNが設定されていない場合は、以下のコマンドで設定
hostnamectl set-hostname ipa.example.com必要なパッケージをインストールします。
今回は、CloudflareをDNSサーバーとして使用するため、DNS関連のパッケージはインストールしません。
dnf install -y ipa-server ipa-server-trust-adファイヤーウォールの設定を行います。
firewall-cmd --permanent --add-service=freeipa-4
firewall-cmd --permanent --add-service=freeipa-trust
firewall-cmd --reload対話形式でセットアップを行います。
# IPAサーバー本体
ipa-server-install
# Sambaの信頼関係のセットアップ
ipa-adtrust-install一度 IPA サーバーを再起動します。
systemctl restart ipaここでSambaにアクセスできるユーザーグループとユーザーを作成します。
Web UIから作成できるため、https://ipa.example.com/にアクセスして、ユーザーとグループを作成してください。
kinit <作成したユーザー名> を実行すると、初回ログイン時にパスワードの再設定を求められます。案内に従ってパスワードを変更してください。
Sambaのインストール
# ホスト名を確認
hostname
# FQDNが設定されていない場合は、以下のコマンドで設定
hostnamectl set-hostname samba.example.comSambaサーバーもドメインに参加する必要があるため、FreeIPAのクライアントをインストールします。
# パッケージのインストール
dnf install -y ipa-client-samba
# IPAクライアントとしてセットアップ
ipa-client-install
# Sambaの構成
ipa-client-samba-install共有ディレクトリを作成します。
mkdir -p /mnt/storage/share
chmod 2775 /mnt/storage/share
chown root:nasuser /mnt/storage/sharesmb.confに必要事項を追加します。
[global]
# ~~省略~~
security = ads
# ~~省略~~
[share]
# ~~省略~~
valid users = @nasusers
# ~~省略~~ファイヤーウォールの設定を行います。
firewall-cmd --permanent --add-service=samba
firewall-cmd --reloadサービスを有効にして起動します。
systemctl enable --now smb
systemctl enable --now winbindクライアントの設定
ドメインに参加しているクライアントからは、特に設定は必要ありません。
ただし、ドメイン非参加のクライアント(Windows)からアクセスする場合は、追加設定が必要です。
PowerShellを管理者権限で開き、以下のコマンドを実行します。
ksetup /addc EXAMPLE.COM ipa.example.com
ksetup /addrealmflags EXAMPLE.COM sendaddress
ksetup /addkpasswd EXAMPLE.COM ipa.example.com再起動を行い、\\samba.example.com\shareにアクセスしてみてください。
ユーザー名は<ユーザー名>@EXAMPLE.COM、パスワードはFreeIPAで設定したものを使用してください。
参考
FreeIPAではじめるLinuxドメイン管理
AlmaLinux8でIPAユーザー認証できるsambaファイルサーバーの設定