OpenLDAPサーバーをセットアップしてクライアントワークステーションを認証する方法

LDAPまたはライトウェイトディレクトリアクセスプロトコルを使用すると、誰でも組織、人、およびネットワーク内のファイルやデバイス(パブリック/プライベート)などの他のリソースを見つけて接続できます。 LDAPは、通常のクライアント/サーバーパラダイムを使用するネットワークのディレクトリサービスの標準であるX.500標準に従います。 LDAPは、初期バージョンではセキュリティ機能が含まれていなかったため、軽量です。 ディレクトリサービスの主な用途は、ユーザーとオブジェクトデータを中央システムに保存し、このデータを他のアプリケーションで主に認証またはアドレスブックとして利用できるようにすることです。これは、OpenLDAPサーバーを使用して実現できます。 この記事では、Ubuntu 16.04でLightweightディレクトリアクセスプロトコルを使用してOpenLDAPサーバーをセットアップし、クライアントワークステーションを認証する方法について説明します。

このチュートリアルでは、Ubuntu 16.04でLightweightディレクトリアクセスプロトコルを使用してOpenLDAPサーバーをセットアップし、クライアントワークステーションを認証する方法について説明します。

LDAPの使用

→LDAPは、ユーザーやその他のネットワークオブジェクトを中央データベースに保持します。

→LDAPは、プレーンテキスト情報、画像、バイナリデータ、公開鍵証明書などの情報を中央データベースに保存します。

→LDAPは、ログイン管理などの認証および承認サービスを提供します。

→LDAPはDNSレコードをデータベースに保存することもできます。

→LDAPは、あらゆる組織のイエローページディレクトリサービスのように使用できます。

LDAPの用語

LDAPの用語は、LDAPディレクトリ内のノードを定義するX.500ディレクトリ仕様の一部です。

CN commonName
L localityName
ST stateOrProvinceName
O OrganizationName
OUorganizationalUnitName
CcountryName
ストリートストリートアドレス
DC domainComponent
UIDユーザーID
DN識別名

最後のDN(識別名)は、ディレクトリ階層内のエントリを一意に識別するために使用される一連のコンマ区切りのキーと値のペアです。 DNは、実際にはエントリの完全修飾名です。 たとえば、文字列「CN = India、OU = Distribution Groups、DC = gp、DC = gl、DC = linoxide、DC = com」は、次のような階層構造からのパスです。 ディレクトリ情報ツリー 右(ルート)から左(リーフ)に読む必要があります。

この記事では、Ubuntu 16でOpenLDAPサーバーをセットアップし、サーバーからログイン資格情報を取得してユーザーを認証するOpenLDAPクライアントを構成します。

IPアドレス
OpenLDAPサーバー
10.0.0.196
OpenLDAPクライアント
10.0.0.33

OpenLDAPサーバーをインストールします

apt-getを使用してOpenLDAPとそのユーティリティをインストールし、起動時に有効にします。 インストール中に、提供するように求められます admin パスワード。

# sudo apt-get update
# apt-get install slapd ldap-utils
# systemctl enable slapd

netstatを使用して、slapdがポート番号389で実行されているかどうかを確認します

# netstat -pltn

Ubuntu 16には、デフォルトでファイアウォールUFWが付属しています。 UFWが有効になっている場合は、次のコマンドを使用してポート番号389を開きます。

# sudo ufw allow 389/tcp
# sudo ufw reload

OpenLDAPパッケージがインストールされたので、ubuntuに付属しているすべてのデフォルトを再構成します。 次のコマンドを実行して、パッケージ構成ツールを起動します。

# sudo dpkg-reconfigure slapd

パッケージ設定ツールは、OpenLDAPを再設定するための一連の質問をします

→OpenLDAPサーバー設定を省略しますか? <いいえ>

→DNSドメイン名:linoxide.com

→組織名:リノキシド

→Enter パスワードと確認:パスワード

→使用するデータベースバックエンド:HDB

→slapdがパージされたときにデータベースを削除しますか? <いいえ>

→古いデータベースを移動しますか? <はい>

→LDAPv2プロトコルを許可しますか? <いいえ>

OpenLDAPを再起動します

# systemctl restart slapd

あなたは変更することができます admin 次のコマンドを使用して、後の段階でOpenLDAPのパスワードを設定します。

# ldappassword

この段階で、OpenLDAPサーバーをインストールして再構成しました。 のエントリを見つけるには admin OpenLDAPデータベースでは、ldapsearchコマンドを使用します。 ldapsearchは admin OpenLDAPの再構成中に提供したパスワード。

# ldapsearch -x -W -D cn=admin,dc=linoxide,dc=com -b dc=linoxide,dc=com -LLL

Enter LDAP Password:
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9MkdIK2p1enlxQ3hFNmtMSE56TUE5NzZzOFQxVGdxSUE=

組織単位(OU)を追加する

OUを追加するには、LDAPサーバーから情報を交換するために設計された標準のテキスト形式であるLDIF(LDAPデータ交換形式)ファイルを作成します。 ‘groups’という名前で組織単位を追加します。

# vi ou_group.ldif

dn: ou=groups,dc=linoxide,dc=com
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: groups

ldapaddを使用して、上記の組織単位を追加します。

# ldapadd -W -D "cn=admin,dc=linoxide,dc=com" -f ou_group.ldif

組織単位(OU)を変更する

組織単位を変更するには、次の内容のldifファイルを作成します。 これで example、既存のOUに郵便番号のエントリを追加しています。

# vi modify_ou.ldif
dn: ou=groups,dc=linoxide,dc=com
changetype: modify
add: postalCode
postalCode: 788109
-

ldapmodifyを使用してOUを変更します

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_ou.ldif
Enter LDAP Password:
modifying entry "ou=groups,dc=linoxide,dc=com"

組織単位(OU)を削除する

組織単位を削除するには、LDAPdeleteを使用してOUの識別名を指定します

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

グループを追加する

posixグループを追加するために、そのためのLDIFファイルを作成します。

# vi irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

グループを追加するには、前と同じようにldapaddコマンドを使用します

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f irc_users.ldif
Enter LDAP Password:
adding new entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

グループを変更する

グループを変更するためのldifファイルを定義します。既存のircusersグループに「description」を追加します。

# vi modify_irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
changetype: modify
add: description
description: Groups under OU

ldapmodifyを使用して、グループを変更します

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_irc_users.ldif
Enter LDAP Password:
modifying entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

グループを削除する

グループを削除するには、グループの識別名を指定してldapdeleteを使用します。

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "cn=ircusers,ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

ユーザーを追加する

最初に、slappasswdを使用してユーザーのSSHAパスワードを生成します

# slappasswd -h {SSHA} -s mypass
{SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT

次に、ユーザーのldifファイルを作成します

# vi mike_user.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
userPassword: {SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT
loginShell: /bin/bash
homeDirectory: /home/mike

正しいグループID番号(gidNumber)を指定してください。この場合は4000です。 ldapaddコマンドを使用して上記のユーザーを追加します。

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f mike_user.ldif
Enter LDAP Password:
adding new entry "uid=mike,ou=users,dc=linoxide,dc=com"

ユーザーを削除する

ユーザーを削除するには、ldapdeleteコマンドを使用します

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "uid=mike,ou=groups,dc=linoxide,dc=com"

次のコマンドを使用して、エントリが削除されているかどうかを確認します。

# ldapsearch -x -b "dc=linoxide,dc=com"

ユーザーを変更する

ユーザーを変更するには、ldifファイルを作成してから、ldapmodifyを使用してそれを実現します。

# vi modify_mike.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
changetype: modify
replace: smith
sn: smt
-
add: title
title: Grand Poobah
-
add: jpegPhoto
jpegPhoto: /tmp/smith.png

次に、ldapmodifyコマンドを実行します

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_mike.ldif
Enter LDAP Password:
modifying entry "uid=mike,ou=users,dc=linoxide,dc=com"

OpenLDAPデータベースを検索する

サーバー自体から、データベースを読み取ることができるかどうかを確認できるようになりました。 以下のコマンドは、ディレクトリ全体をダンプします。

# ldapsearch -x -LLL -H ldap:/// -b dc=linoxide,dc=com
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

dn: ou=groups,dc=linoxide,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

dn: ou=users,dc=linoxide,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users

dn: cn=dbagrp,ou=groups,dc=linoxide,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 678
cn: dbagrp

dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

dn: uid=mike,ou=users,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
loginShell: /bin/bash
homeDirectory: /home/mike

phpMyAdminの使用

コマンドラインからOU、グループ、ユーザーを作成/編集/検索しました。 ただし、phpldapadminと呼ばれるWebインターフェイスを使用して同じことを行うことができます。 phpldapadminは、デフォルトでubuntuと一緒に出荷されます。 apt-getを使用してインストールします。

# sudo apt-get install phpldapadmin

phpldapadminの設定ファイルを編集して、前に作成したディレクトリ構造を反映させます。

# vi /etc/phpldapadmin/config.php
$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','LDAP-SERVER-IP');
$servers->setValue('server','base',array('dc=linoxide,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=linoxide,dc=com');

これで、http:// LDAP-SERVER-IP / phpldapadminからphpldapadminにアクセスできます。 デフォルトのディレクトリ構造としてユーザーを使用し、「パスワード」としてパスワードを使用してログインします。 phpldapadminの場所をパスワードで保護するには、apache utilshtpasswdを使用してユーザーを作成します。

# sudo htpasswd -c /etc/apache2/htpasswd ldapadminuser
New password:
Re-type new password:
Adding password for user ldapadminuser

次のセクションをapacheのメイン構成ファイル/etc/apache2/apache2.confに追加します

# vi /etc/apache2/apache2.conf

<Location /phpldapadmin>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>

再起動 Apache

# systemctl restart apache2

phpldapadminページを更新すると、htpasswdutilsを使用して設定したパスワードプロンプトが表示されます。

OpenLDAPクライアントをインストールします

OpenLDAPサーバーで認証機能を正しく行うために、クライアントマシンにいくつかのパッケージをインストールします。

# apt-get install ldap-auth-client nscd

サーバーの構成中に尋ねられたものと同様の一連の質問が尋ねられます。

→LDAPサーバーのURI(Uniform Resource Identifier):ldap://10.0.0.196

→検索ベースの識別名:dc = linoxide、dc = com

→LDAPバージョン:3

→ローカルルートデータベースを作成する admin:<はい>

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

→ルートのLDAPアカウント:cn =admin、dc = linoxide、dc = com

→LDAPルートアカウントのパスワード:パスワード

ターミナルで次のコマンドを実行することにより、いつでも構成を変更できます。

#  sudo dpkg-reconfigure ldap-auth-config

OpenLDAPクライアントを設定する

ファイル/etc/nsswitch.confを編集して、OpenLDAPサーバーの存在について認証ファイルに通知する必要があります。 /etc/nsswitch.confファイルを編集し、passwd、group、shadowで始まる行を次のように変更します。

# vi /etc/nsswitch.conf
passwd:         ldap compat
group:            ldap compat
shadow:         ldap compat

/etc/pam.d/common-sessionと、ファイルの最後にある次の行を編集します。

# vi /etc/pam.d/common-session
....................
....................

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

LDAPでauth-client-configを使用してnssをセットアップします

# auth-client-config -t nss -p lac_ldap
# cd /usr/share/pam-configs/
# vi mkhomedir

Name: Create home directory on login for Linoxide
Default: yes
Priority: 0
Session-Type: Additional
Session-Interactive-Only: yes
Session:
required                        pam_mkhomedir.so umask=0022 skel=/etc/skel

上記のファイルの最後の行は、LDAPユーザーがログインし、ホームディレクトリがない場合に、クライアントマシンにホームディレクトリを作成します。 次に、pam認証を更新します。

# pam-auth-update

「ログイン時にホームディレクトリを作成する……」という行を有効にして、[OK]を選択します。 nscdを再起動します。

# /etc/init.d/nscd restart
[ ok ] Restarting nscd (via systemctl): nscd.service.

getentを使用してパスワードファイルのエントリを一覧表示します。 このリストには、サーバーで以前に作成したLDAPユーザー「mike」が含まれます。

# getent passwd
mike:x:4000:4000:mike:/home/mike:/bin/bash

以前にSSHをインストールしていない場合は、SSHを使用してインストールしてください。

# apt-get install ssh

/ etc / ssh / sshd_configで以下をyesに設定していることを確認してください

PermitRootLogin yes
UsePAM yes

SSHを使用してLDAPサーバーに接続します

# ssh [email protected]

マイクのシェルを取得する別の方法は、 sudo クライアントマシンで。

# su - mike
mike@ip-10-0-0-33:~$

OpenLDAPサーバーの構成中に、識別名「cn =」でLDAP管理者を作成しました。admin、dc = linoxide、dc = com “この値 admin と一致 admin デフォルトでUbuntuにあるグループ。 に作成したLDAPユーザー admin グループはにアクセスできます sudo 以下のように/ etc / sudoersファイルにエントリがあるためコマンド-

%admin ALL=(ALL) ALL

アクセスを取り消すには sudo のために admin グループ、行の先頭にハッシュを配置して、上記の行をコメント化します。 付与することもできます sudo / etc / sudoersファイルに%user ALL =(ALL)ALLを追加して、特定のユーザーにアクセスします。

結論

OpenLDAPサーバーを使用する利点は、組織全体の情報を中央リポジトリに配置できることです。 LDAPは、各グループのユーザーを個別に管理するのではなく、ネットワーク上のどこからでもアクセスできる中央ディレクトリとして使用できます。 また、LDAPはSecure Sockets Layer(SSL)とTransport Layer Security(TLS)をサポートしているため、機密データを詮索好きな目から保護することができます。 ブラウズ OpenLDAPドキュメント OpenLDAP管理についてもっと知るために。