ウェブサイト検索

Ubuntu 12.04 VPSでLDAPを使用してクライアントコンピュータを認証する方法


ステータス: 廃止された

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

  • Ubuntu 14.04にアップグレードします。
  • Ubuntu 14.04からUbuntu 16.04へのアップグレード
  • サーバーデータをサポートされているバージョンに移行する

理由: Ubuntu 12.04は2017年4月28日にサポートが終了(EOL)し、もはやセキュリティパッチやアップデートを受けることはありません。このガイドはもはや維持されていません。

代わりに見る: このガイドは参考としてまだ役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。もし可能であれば、使用しているUbuntuのバージョンに対して書かれたガイドを使用することを強くお勧めします。ページの上部にある検索機能を使って、より新しいバージョンを見つけることができます。

紹介

LDAP(軽量ディレクトリアクセスプロトコル)は、認証情報を単一の中央の場所に保管する方法の一つです。前回の記事では、Ubuntu 12.04 VPSでLDAPサーバーを設定する方法について説明しました。これにより、実際のサーバーの設定がどうなっているかが説明されました。

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

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

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

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

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

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

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

  • LDAPサーバーの統一リソース識別子: ldap://LDAPサーバーのIPアドレス

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

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

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

    • 私たちの例は「dc=test,dc=com」でした

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

  • ローカルルートデータベースの管理者を作成: はい

  • LDAPデータベースはログインを必要としますか?いいえ

  • rootの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

私たちが興味を持っている三つの行は、「passwd」、「group」、「shadow」の定義です。これらを次のように変更してください。

 passwd:\t\t\tldap 互換グループ:\t\t\tldap 互換シャドウ:\t\t\tldap 互換 

次に、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」グループと一致しています。

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

これは、私たちが「admin」グループのメンバーに/etc/sudoersファイル内でsudoアクセスを付与する行を持っているためです。このファイルを編集するには、次のコマンドを実行します:

sudo visudo

次のような記載があります:

%admin ALL=(ALL) ALL

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

#%admin ALL=(ALL) ALL

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

私たちは今、クライアントマシンを十分に設定し、LDAPユーザーの一人としてログインできるようにしました。このユーザーはクライアントマシン上に存在する必要はありません。

新しいターミナルウィンドウで(設定ミスに備えて元のターミナルウィンドウにログインしておくのが最善です)、LDAPユーザーの資格情報を使用してクライアントマシンにsshします:

 ssh LDAP_user@LDAP_client_IP_Address 

あなたは、ユーザーがローカルで作成されたかのようにログインできるはずです。現在の作業ディレクトリを表示するコマンドを実行してください:

pwd

選択したユーザーのホームディレクトリがこのマシンで使用されていることがわかるはずです。これは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番目のコロンから行の最後まで、どのような状況下でそのルールが適用されるべきかを指定します。私たちのケースでは、制限はローカルログインを除くすべての状況に適用されます。

 -:ルート(管理者)以外のすべて:ローカル以外のすべて 

これにより、ログインを「管理者」グループに制限することができます。他のグループを追加したり、グループを変更したりすることもできます。

これにより、SSHから自分をロックアウトしてしまった場合でも、DigitalOceanコンソールの「コンソールアクセス」ボタンを通じてログインできるようになります。

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

結論

これで、中央集権的なLDAPサーバーを使用して複数のコンピュータを認証できるようになったはずです。あなたのLDAPユーザーは、この方法で設定した任意のマシンを使用できるようになります。ただし、適切なログイン資格情報を持っている必要があります。

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

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

関連記事: