ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


LDAP(Lightweight Directory Access Protocol)は、認証情報を一元化された単一の場所に保持する1つの方法です。 前回の記事では、 Ubuntu 12.04VPSでLDAPサーバーをセットアップする方法について説明しました。 これにより、実際のサーバー構成が説明されました。

この記事では、さまざまなサービスについてそのサーバーでリモート認証するようにクライアントマシンを構成する方法について説明します。

このプロジェクトを完了するには、LDAPサーバーとして構成されたUbuntu12.04サーバーが必要です。 まだ行っていない場合は、前のガイドへのリンクを参照してください。 また、クライアントマシンとして機能する別のUbuntu12.04ドロップレットが必要になります。

クライアントパッケージをインストールする


クライアントマシンでは、LDAPサーバーで認証機能を正しく機能させるために、いくつかのパッケージをインストールする必要があります。

次のコマンドを使用して、デフォルトのUbuntuリポジトリからインストールできます。

sudo apt-get update
sudo apt-get install libpam-ldap nscd

サーバーコンポーネントをインストールするときに尋ねられたものと同様のさまざまな質問が表示されます。

  • LDAPサーバーのURI(Uniform Resource Identifier):ldap:// LDAP-server-IP-Address

    • サーバーの情報を入力する前に、最初の文字列を「ldapi:///」から「ldap://」に変更してください
  • 検索ベースの識別名:

    • これは、LDAPサーバーの/etc/phpldapadmin/config.phpファイルに入力した値と一致する必要があります。

    • ファイル内で「’server’、’base’、array」を検索します。

    • この例は「dc= test、dc =com」でした。

  • 使用するLDAPバージョン: 3

  • ローカルルートデータベースを管理者にする:はい

  • LDAPデータベースにはログインが必要ですか? いいえ

  • ルートのLDAPアカウント:

    • これは、/etc/phpldapadmin/config.phpの値とも一致する必要があります。

    • ファイル内で「’login’、’bind_id’」を検索します

    • この例は「cn= admin、dc = test、dc =com」でした。

  • LDAPルートアカウントのパスワード: Your-LDAP-root-password

間違えて値を変更する必要がある場合は、次のコマンドを発行してメニューを再度実行できます。

sudo dpkg-reconfigure ldap-auth-config

クライアントソフトウェアの構成


いくつかのファイルを調整して、認証情報をLDAPサーバーで検索できることを認証ファイルに通知する必要があります。

まず、/etc/nsswitch.confファイルを編集します。 これにより、ユーザーが認証変更コマンドを発行するときにLDAPクレデンシャルを変更する必要があることを指定できます。

sudo nano /etc/nsswitch.conf

関心のある3つの行は、「passwd」、「group」、および「shadow」の定義です。 次のように変更します。

passwd: ldap compatグループ: ldap compatシャドウ: ldap compat

次に、PAM構成に値を追加します。

PAM 、またはプラガブル認証モジュールは、認証を提供できるアプリケーションを、認証を必要とするアプリケーションに接続するシステムです。

PAMはすでにほとんどのコンピューターに実装されており、ユーザーの操作を必要とせずに舞台裏で機能します。 LDAP PAMモジュールをインストールして構成すると、必要な情報のほとんどが構成ファイルに追加されました。

/etc/pam.d/common-sessionファイルを編集します。

sudo nano /etc/pam.d/common-session

構成の下部に次の行を追加します。

session required	pam_mkhomedir.so skel=/etc/skel umask=0022

これにより、ホームディレクトリを持たないLDAPユーザーがログインしたときに、クライアントマシンにホームディレクトリが作成されます。

これらの変更を実装するには、サービスを再起動する必要があります。

sudo /etc/init.d/nscd restart

権限


LDAPサーバーの構成中に、「admin」というグループを作成しました。 これはランダムに選ばれたわけではありません。 これは、Ubuntuマシンでデフォルトで作成される「admin」グループと一致します。

「admin」グループに追加したLDAPユーザーは、sudoコマンドにアクセスできます。

これは、「admin」グループのメンバーに/etc/sudoersファイル内のsudoアクセスを許可する行があるためです。 次のコマンドを発行してファイルを編集します。

sudo visudo

次のような行があります。

%admin ALL=(ALL) ALL

パーセント記号(%)で始まるエントリは、ユーザーではなくグループを指定します。 この機能を無効にする場合、または特定のユーザーにのみこの機能を付与する場合は、次の行をコメントアウトしてください。

#%admin ALL=(ALL) ALL

LDAPユーザーとしてログインする


これで、LDAPユーザーの1人としてログインできるようにクライアントマシンを構成しました。 このユーザーは、クライアントマシンに存在する必要はありません。

新しいターミナルウィンドウで(構成に誤りがある場合に備えて、元のターミナルウィンドウをログインしたままにしておくことをお勧めします)、LDAPユーザーの資格情報を使用してクライアントマシンにSSH接続します。

ssh LDAP_user @ LDAP_client_IP_Address

ユーザーがローカルで作成されたかのようにログインできるはずです。 printworkingdirectoryコマンドを発行します。

pwd

LDAPサーバーでユーザー用に選択したホームディレクトリがこのマシンで使用されていることを確認する必要があります。 LDAPユーザーにサービスを提供するためにオンデマンドで作成されています。

別のLDAPユーザーでログアウトしてログインすると、2つのホームディレクトリエントリがあることがわかります。

ls /home

user1  user2

ユーザーが「admin」グループの一部であり、前のセクションで機能を無効にしなかった場合は、通常のsudoアクセスが許可されます。それ以外の場合は、無効になりません。

passwdコマンドを発行してパスワードを変更すると、LDAPクレデンシャルが変更されることがわかります。

passwd

Enter login(LDAP) password:

グループによるアクセスの制限


特定のグループのメンバーだけがこの特定のマシンにログインできるようにする場合は、PAMファイル内でその制限を構成できます。

ルート権限で次のファイルを編集します。

sudo nano /etc/pam.d/common-auth

下部で、PAMがセキュリティアクセスファイルを調べて、ユーザーログインを制限する方法を確認するように指定します。 これを一番下に追加します:

auth	required	pam_access.so

ファイルを保存して閉じます。

その設定が構成されているときにPAMがセキュリティ情報のために参照するファイルは/etc/security/access.confにあります。 ルート権限でこのファイルを今すぐ開きます。

sudo nano /etc/security/access.conf

ファイルの最後にルールを追加する必要があります。

行頭の破線(-)は、これが制限であることを意味します。 最初のコロン(:)から次のコロンまで、このルールを誰に適用するかを指定します。

これは、rootとグループ「admin」を除くすべてのユーザーに適用されることを指定します。 グループは括弧内に示されています。

2番目のコロンから行の終わりまで、どのような状況でルールを適用するかを指定します。 この場合、制限はローカルログインを除くすべての状況に適用されます。

-:ALL EXCEPT root(admin):ALL EXCEPT LOCAL 

これにより、ログインを「admin」グループに制限できます。 他のグループを追加したり、グループを変更したりできます。

これにより、SSHから自分自身をロックアウトした場合に、DigitalOceanコンソールの[コンソールアクセス]ボタンからログインすることもできます。

これは、LDAPユーザーだけでなく、すべてのユーザーに適用されることに注意してください。 したがって、クライアントマシンで作成するすべてのユーザーは、指定されたグループの1つのメンバーである必要があります。

結論


これで、集中型LDAPサーバーを使用して複数のコンピューターを認証できるようになります。 LDAPユーザーは、適切なログイン資格情報を持っている限り、この方法で構成した任意のマシンを使用できます。

これにより、ユーザー情報が分散したり、重複したり、管理できなくなったりするのを防ぐことができます。 サーバーまたはプロジェクトにアクセスするユーザーの数が増加し、マシンの数も増加している場合、LDAP認証は非常に役立ちます。

ジャスティン・エリングウッド