SamabaとLDAPを使用したネットワーク認証 – Ubuntuでの実装ガイド
近年、企業や組織のネットワーク環境において、ユーザー認証の管理はますます重要となっています。特に、ネットワーク越しにファイルやリソースにアクセスする際に、統一的で効率的な認証システムが求められます。このような要求を満たすために、Samba と LDAP (Lightweight Directory Access Protocol) を組み合わせたネットワーク認証システムが広く利用されています。この記事では、UbuntuにおけるSambaとLDAPの設定方法を詳しく解説します。
SambaとLDAPとは?
- Samba は、LinuxやUnix系のシステムとWindowsシステムの間でファイル共有やプリンタ共有を可能にするオープンソースソフトウェアです。また、Windowsネットワークのドメインコントローラーとしても機能します。
- LDAP は、ネットワーク上のユーザーやグループの情報を格納するためのプロトコルであり、ディレクトリサービスとしての役割を果たします。主にActive DirectoryやOpenLDAPなどで使用されます。
これらを組み合わせることで、LinuxサーバーがWindows環境内でユーザー認証を行えるようになり、全てのリソースに対して一貫したアクセス管理が可能となります。
必要なパッケージのインストール
まず、Ubuntuに必要なパッケージをインストールする必要があります。以下のコマンドでSambaとLDAP関連のツールをインストールします。
bashsudo apt update sudo apt install samba samba-common-bin libnss-ldap libpam-ldap ldap-utils
このコマンドは、SambaとLDAPのクライアントツール、そしてLDAPの認証に必要なライブラリをインストールします。
Sambaの設定
Sambaは、LinuxシステムとWindowsシステムの間でファイル共有やプリンタ共有を提供するだけでなく、ドメインコントローラーとしても機能します。LDAPを利用して、Sambaのユーザー認証を行う設定を行います。
- Sambaの設定ファイルを編集
Sambaの設定ファイル/etc/samba/smb.conf
を編集します。まず、バックアップを取ってから編集します。
bashsudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
次に、以下のように設定を変更します。
ini[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = UBUNTU-SERVER
security = user
passdb backend = tdbsam
ldap admin dn = "cn=admin,dc=example,dc=com"
ldap suffix = "dc=example,dc=com"
ldap group suffix = "ou=groups"
ldap user suffix = "ou=users"
ldap machine suffix = "ou=computers"
ldap port = 389
ldap server = ldap://localhost
idmap backend = tdb
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
log level = 2
log file = /var/log/samba/log.%m
max log size = 50
上記の設定では、SambaがLDAPサーバーに接続し、ユーザーやグループ情報を取得するように構成されています。ldap admin dn
の部分には、LDAPサーバーへの管理者権限を持つユーザーを指定します。
- Sambaサービスの再起動
設定変更を反映させるため、Sambaサービスを再起動します。
bashsudo systemctl restart smbd
sudo systemctl enable smbd
LDAPの設定
LDAPはディレクトリサービスとして、ユーザーやグループ情報を管理します。ここでは、Sambaと連携するために、LDAPサーバーの設定を行います。
- LDAPサーバーのインストールと設定
UbuntuでOpenLDAPをインストールするには、以下のコマンドを使用します。
bashsudo apt install slapd ldap-utils
インストール後、設定を行います。slapd
(OpenLDAPサーバー)の設定を行うために、以下のコマンドを使用して設定を開始します。
bashsudo dpkg-reconfigure slapd
ここでは、ドメイン名や管理者パスワードなどを設定します。例えば、example.com
というドメイン名を使用している場合、設定時にこの情報を入力します。
- LDAPサーバーにユーザーとグループを追加
LDAPにユーザーやグループを追加するためには、LDIFファイルを使用します。以下は、サンプルのLDIFファイルの例です。
ldifdn: ou=users,dc=example,dc=com objectClass: organizationalUnit ou: users dn: uid=john,ou=users,dc=example,dc=com objectClass: inetOrgPerson uid: john sn: Doe cn: John Doe userPassword: password
このファイルをusers.ldif
として保存し、以下のコマンドでLDAPサーバーにインポートします。
bashldapadd -x -D "cn=admin,dc=example,dc=com" -W -f users.ldif
PAM(Pluggable Authentication Modules)の設定
次に、PAMを使って、ユーザー認証がLDAPを通じて行われるように設定します。/etc/nsswitch.conf
を編集し、以下のように設定します。
bashsudo nano /etc/nsswitch.conf
変更点は、passwd
, group
, shadow
にldap
を追加することです。
inipasswd: files ldap group: files ldap shadow: files ldap
さらに、/etc/pam.d/common-auth
や/etc/pam.d/common-account
などのPAM設定ファイルも編集して、LDAP認証を有効にします。
bashsudo nano /etc/pam.d/common-auth
ここで、以下の行を追加します。
iniauth required pam_ldap.so
動作確認
設定が完了したら、実際にLDAP認証が機能するか確認します。Sambaサーバーでログイン試行を行い、正しく認証されるか確認します。
bashsmbclient -L localhost -U john
これで、LDAP認証を利用したSambaサーバーの設定が完了しました。
まとめ
この記事では、Ubuntu上でSambaとLDAPを組み合わせてネットワーク認証を実現する方法を説明しました。Sambaを利用することで、LinuxサーバーをWindowsドメインに統合し、LDAPを使ってユーザーやグループの情報を管理することができます。この設定を実施することで、ネットワーク上のリソースへのアクセス管理が一元化され、セキュリティと利便性が向上します。