SambaのログインにFreeIPAを使う

はじめに

みなさんは、ディレクトリサービスに何を使っていますか?
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.com

Sambaサーバーもドメインに参加する必要があるため、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/share

smb.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ファイルサーバーの設定

Hugo で構築されています。
テーマ StackJimmy によって設計されています。