• 検索結果がありません。

皆様の手元の PC について デスクトップ左上に Chrome ブラウザのアイコンがあります これを起動すると本資料のブックマーク ( RHEL の LDAP ) があります よろしければ講義に合わせて参照ください また, 後半のハンズオンではコマンドを入力する際のコピーペースト元として利用できます

N/A
N/A
Protected

Academic year: 2021

シェア "皆様の手元の PC について デスクトップ左上に Chrome ブラウザのアイコンがあります これを起動すると本資料のブックマーク ( RHEL の LDAP ) があります よろしければ講義に合わせて参照ください また, 後半のハンズオンではコマンドを入力する際のコピーペースト元として利用できます"

Copied!
63
0
0

読み込み中.... (全文を見る)

全文

(1)

RHEL (clone 含む) の LDAP

389 DS, RHDS, FreeIPA について

(2)

皆様の手元の

PC について

デスクトップ左上に Chrome ブラウザのアイコンがあります。これを起動すると本資

料のブックマーク(「RHEL の LDAP」) があります。よろしければ講義に合わせて参照く

ださい。また,後半のハンズオンではコマンドを入力する際のコピーペースト元として

利用できます。

[Chrome Secret] と [TeraTerm]のアイコンは後半のハンズオンで利用します。

(3)

念の為

今更 LDAP の説明 (基本)

LDAP とは

Lightweight Directory Access Protocol の略

X.500(ディレクトリサービスの標準規格 ) の DAP を軽量化

LDAP の用途

○ アカウント認証 ○ アカウント属性管理 , グループ属性管理 ○ automount マップ, netgroup マップ, その他....

実装

商用: Oracle Directory Server Enterprise Edition, NetIQ eDirectory,

Red Hat Directory Server, etc…

OSS: OpenLDAP, 389 Directory Server, Apache Directory Server, OpenDJ

(4)

念の為

今更 LDAP の説明 (エントリ例)

dn: uid=John,ou=people,dc=example,dc=com uid: john cn: john objectClass: top objectClass: posixAccount objectClass: account userPassword: {MD5}rU9r/C1izZZyn5s09g2ypD== uidNumber: 2947 gidNumber: 300 homeDirectory: /home/john gecos: 2nd Grade Student loginShell: /bin/bash 4 dn: cn=sales,ou=group,dc=examples,dc=com objectclass: posixGroup cn: sales gidNumber: 1012 memberUid: tom memberUid: john memberUid: mary ユーザエントリの例 グループエントリの例

LDAP における各データをエントリと呼びます

(5)

念の為

今更 LDAP の説明 (ツリー構造)

5 c=JP o=Example ou=Sales ou=tech cn=Div1 cn=Div2 cn=John cn=Ken cn=Mary cn=Paul dc=com dc=example cn=Users cn=Groups cn=John

cn=Ken cn=Mary cn=Sales cn=Tech

(6)

Red Hat said in the RHEL 7.4 Release Notes :

(7)

サイオステクノロジー社内エンジニアの反応

7 せっかく OLC 覚えたのに LDAPなんて微妙なミドルだし問 題ないよ まだ先の話じゃん ビジネスチャンス なんじゃないの? お客様から問合せ が増えそう

(8)

それでも

OpenLDAP を使いたい(使うしかない)場合は...

RHEL8 (CentOS8, Scientific Linux 8, etc...) にバージョンアップしない

→ RHEL7 なら 2024 年まで安泰... 未来の管理者にエール

OS 乗り換え

→ SUSE Linux, Debian GNU/Linux, etc… → SIOS はあまりうれしくない

OpenLDAP 本家のソースをビルドする

→ 管理コスト増

Docker 使う

→ Official イメージ無し→ 管理コスト増

(9)

Red Hat は LDAP をどうするのか

今後,純粋な Red Hat で LDAP したいなら以下の 3 つの手段が考えられます。

389 Directory Server (389DS)

オープンソースの LDAP Server。2009 年 Fedora Directory Server から改

名。RHEL6, RHEL7 に同梱

Red Hat Directory Server (RHDS

NOT Red Hat Developer Studio

)

有償の LDAP Server 製品。Netscape Directory Server の後継。upstream

は 389 Directory Server。

FreeIPA / Red Hat Identity Management (IdM)

オープンソースの多機能 ID 管理システム。RHEL6, RHEL7 に同梱。

389 Directory Server, Kerberos, Bind, sssd 他の組み合わせ。

(10)

何を選べば幸せになれるか

?

サポートは必須だ LDAPツリーを 自由に組みたい Directory Server RHEL なら サポート有 NO/どちらでもいい YES NO YES 単体サポート なし 10

(11)

RHEL におけるサポート状況 (1)

389 Directory Server

https://access.redhat.com/solutions/2440481 に以下の記述↓

The package is not supported as a stand-alone solution to provide LDAP services.  IdM(FreeIPA) または RHDS とセットならサポートするとのこと。

単体利用はサポート無し (非Coreパッケージの扱い )

FreeIPA / Red Hat Identity Management (IdM)

ipa-server, ipa-client パッケージは RHEL の Core パッケージとしてパッケージマニフェストに定義 されている。

→ RHEL サブスクリプションでサポート可能。

(12)

RHEL におけるサポート状況 (2)

Red Hat Directory Server

サポート期間: 5年 (GA から)

RHDS 10 (on RHEL7) → 2020/6

RHDS 11 ??

サブスクリプション価格 (/台/年)

Master:

¥1,950,000-■

Replica: ¥

390,000-別途 RHEL Server 要購入 Directory Server 高い? 安い? 12

(13)

RHDS も FreeIPA も結局

389 Directory Server (389 DS) に関連

(14)

Directory Server

389 DS と RHDS のパッケージ構成

/usr/bin/ns-slapd /usr/bin/db2ldif /usr/bin/ldif2db /usr/bin/rsearch /usr/bin/ldclt : 389-ds-base /usr/lib/dirsrv/* 389-ds-base-libs

RHEL (or CentOS)

EPEL Reository 389-admin-util 389-admin-console 389-console 389-ds-console idm-console-framework RHDS Repository 389-admin-util 389-admin-console 389-console 389-ds-console redhat-ds redhat-ds-admin redhat-ds-console redhat-ds-base idm-console-framework redhat-idm-console redhat-admin-console GUI GUI daemon / utility

GUI 不要なら RHEL (or CentOS) だけで LDAP Server として動作する

(15)

FreeIPA (Red Hat IdM) の構成要素

RHEL (or CentOS)

389 Directory Server Kerberos 5 NSS Bind NTP SSSD

RHEL (or CentOS) だけで完結

FreeIPA ・389-ds-base

・389-ds-base-libs

(16)

389 Directory Server の歴史

University of Michigan Slapd

OpenLDAP Netscape Directory Server (NDS) 1993 1998 1996 Netscape社が開発者を雇用 iPlanet Directory Server 1998 AOL社が Netscape 社を買収 Sun Microsystems と共同開発 Sun One Directory Server 2002 AOL社は知的財産権 AOL社は所有権を保持 をSun に売却 開発 継続中 Netscape Directory Server (NDS) Oracle Directory Server Enterprise Edition 2010 Oracle が Sun を買収 製品提供中

Red Hat Directory Server

Red Hat 社が AOL 社の Netscape Scurity Solutions 事業を買収

製品提供中 2004

Fedora Directory Server

389 Directory Server OSS 化 2005 Kurt Zeilenga により cloning feedback 2009 改名 改名のねらい ・別OSで稼働 ・vender nutral 開発継続中 16

(17)

389 Directory Server のインストールデモ - GUI なし -1

(on CentOS7)

1. 389 Directory Server (本体のみ:GUIなし) RPM インストール

# yum install 389-ds-base

2. セットアップスクリプトの実行 (GUI なし, setup type: 2)

# setup-ds.pl

※ General.StrictHostCheck=false で DNS チェック回避可能

※ setup type 1: 評価用, 2: 一般的な設定/ACL/ツリー, 3: 完全カスタム用(ツリーなしACLなし)

3. 各種確認

1. サービス確認

# systemctl status dirsrv@<インスタンスID>.servce

2. 初期設定確認

# ldapsearch -x -b "cn=config" -H ldap://localhost -D "cn=Directory Manager" -W

3. デフォルトスキーマ確認

# ldapsearch -x -b "cn=schema" -H ldap://localhost -D "cn=Directory Manager" -W +

4. 初期データ確認

# ldapsearch -x -b "dc=soy,dc=local" -H ldap://localhost -D "cn=Directory Manager" -W

5. ACL等操作属性確認

(18)

389 Directory Server のインストールデモ - GUI なし -2

(on CentOS7)

4. OpenLDAP と比較してみる (search のベンチマーク)

4.0. OSS Tech 様が提供している「 lb」という LDAP ベンチマーツールを利用

https://github.com/hamano/lb (既にデモ用のサーバにはインストール済み ) 4.1. OpenLDAP サーバの用意 このデモに利用している 389 Directory Server と同性能のマシンを用意 vCPU 2 RAM 7.5GB エントリキャッシュサイズ ・ 389DS : 512MB (デフォルト) ・ OpenLDAP : 1,000,000 エントリ ※ どちらもデータ量に対して十分 DB キャッシュサイズ ・389DS : 146MB (デフォルト) ・OpenLDAP : 512MB Index 389, OpenLDAP 共に検索キー cn に設定 18

(19)

389 Directory Server のインストールデモ - GUI なし -3

(on CentOS7)

4.

4.2. データの仕込み (389 DS, OpenLDAP 共に 10000 ユーザエントリを登録する ) 4.2.1. OpenLDAP # cd /root/go/bin/ # export GODEBUG=cgocheck=0

# ./lb setup base -b 'dc=soy,dc=local' ldap://localhost/ -D 'cn=Manager,dc=soy,dc=local' -w password # ./lb setup person -b 'dc=soy,dc=local' --cn 'user%d' --last 10000 ldap://localhost/ \

-D 'cn=Manager,dc=soy,dc=local' -w password 4.2.2. 389 Directory Server

# cd /root/go/bin/

# export GODEBUG=cgocheck=0

# ./lb setup person -b 'dc=soy,dc=local' --cn 'user%d' --last 10000 ldap://localhost/ \ -D 'cn=Directory Manager' -w password

※登録されるユーザエントリは cn=user1,dc=soy,dc=local , cn=user2,dc=soy,dc=local …

4.3. OSS Tech 様の lb コマンド (LDAP ベンチマークツール ) を利用してベンチマークを実施

./lb search -b 'dc=soy,dc=local' -c 10 -n 10000 -a '(cn=user%d)' --last 10000 -s sub -D '' ldap://localhost

4.4.

(20)

389 Directory Server のインストールデモ - GUI なし -2

(on CentOS7)

4.

4.3. ベンチマークの実施

10000 ユーザを 10 スレッドでランダムに SEARCH

4.3.1. OpenLDAP

# ./lb search -b 'dc=soy,dc=local' -c 10 -n 10000 -a '(cn=user%d)' --last 10000 -s sub -D '' ldap://localhost 4.3.2. 389 Directory Server

# ./lb search -b 'dc=soy,dc=local' -c 10 -n 10000 -a '(cn=user%d)' --last 10000 -s sub -D '' ldap://localhost

`

4.4. OSS Tech 様の lb コマンド (LDAP ベンチマークツール ) を利用してベンチマークを実施

./lb search -b 'dc=soy,dc=local' -c 10 -n 10000 -a '(cn=user%d)' --last 10000 -s sub -D '' ldap://localhost

4.5.

(21)

389 Directory Server のインストールデモ - リセット

(on CentOS7)

5. セットアップのリセット (次のデモのため)

# remove-ds.pl -a -i slapd-<インスタンスID>

(22)

389 Directory Server のインストールデモ - GUIあり

(on CentOS7)

1. GUI 関連パッケージのインストール

# yum install xauth

# yum install 389-console 389-ds-console 389-admin

2. セットアップスクリプトの実行 (GUI あり, setup type: 2)

# setup-ds-admin.pl

※ setup type 1: 評価用, 2: 一般的な設定/ACL/ツリー, 3: 完全カスタム用(ツリーなしACLなし)

3. 各種確認

1. サービス確認 (LDAPサーバ及び GUI サービス)

# systemctl status dirsrv@<インスタンスID>.service

# systemctl status dirsrv-admin.service

2. 適当なクライアントから ssh の X Forwardingで接続し GUI 画面の表示 ssh -X -l <一般ユーザID> <サーバホスト名 >

# 389-console

(適当なユーザエントリを作成してみる )

(23)

389 Directory Server の機能 - レプリケーション(1)

用語

レプリカ

レプリケーションに参加している各サーバ

サプライヤ (Supplier)

レプリケーションのマスタサーバ (データを送信する側 : read-write)

コンシューマ (Consumer)

レプリケーションのスレーブサーバ (データを受信する側 : read-only)

ハブ (Hub)

サプライヤとコンシューマの中間に立つ (Cascade Replicatoin で使用: read-only)

レプリケーション合意 (Replication Agreement)

各レプリカ間のレプリケーション設定 (プッシュ型)

チェンジログ (changelog)

データ更新の記録。サプライヤもしくはハブが保持。 (like: RDB のトランザクションログ )

(24)

389 Directory Server の機能 - レプリケーション(2)

シングルマスタレプリケーション

● サプライヤサーバ 1 台 ● 読み取り専用のコンシューマサーバ 1 台以上 ● サプライヤプッシュ型レプリケーションでデータ同 期を行う。 ● レプリケーション合意をサプライヤに設定する ● レプリケーション用接続エントリ (Supplier Bind DN)をコンシューマ側に作成する。 レプリケーション合意定義 LDIF 例 dn: cn=Agmt1,cn=replica,cn=’dc=example,dc=com’cn=mapping tree,cn=config objectClass: top objectClass: nsds5ReplicationAgreement cn: Agmt1 nsds5ReplicaHost: 172.16.0.1 nsds5ReplicaPort: 389 nsds5ReplicaBindDN: cn=replicaUser,cn=config nsds5ReplicaBindMethod: SIMPLE nsds5ReplicaCredential: <password> nsds5ReplicaRoot: ou=people,dc=example,dc=com 24

(25)

389 Directory Server の機能 - レプリケーション(3)

マルチマスタレプリケーション

● 最大 4 台のサプライヤサーバ ● 読み取り専用のコンシューマは無制限 ● サプライヤ-サプライヤ間は双方にレプリケーション 合意が必要 ● レプリケーション用接続エントリ (Supplier Bind DN)をサプライヤに作成する (コンシューマがある 場合はもちろんそれらにも作成する )。 ● コンシューマは 1 台以上のサプライヤからデータ 受信が可能 (同じコンシューマのレプリケーション 合意を複数のサプライヤに定義可能 ) 2 台サプライヤ 2 台コンシューマ構成の例 25

(26)

389 Directory Server の機能 - レプリケーション(4)

マルチマスタレプリケーション

(27)

389 Directory Server の機能 - レプリケーション(5)

カスケードレプリケーション

● ハブサーバがサプライヤサーバとコンシューマ サーバの間に入り中継するイメージ。拠点が多数 ありネットワーク制限が厳しい環境や,アクセス量 が多い拠点等がある場合に有用。 ● ハブサーバはユーザからの接続に対しては読み 取り専用 ● サプライヤ - ハブ間のレプリケーション合意をサプ ライヤに設定。ハブ - コンシューマ間のレプリケー ション合意をハブに設定 ● マルチマスタとの組み合わせも可能 27

(28)

389 Directory Server の機能 - Active Directory 同期

Active Directory (以降 AD) との双方向同期が可能 (ユーザ, グループ)

→ レプリケーションの設定方法とほぼ同じ (レプリケーション合意を AD と組む) → サプライヤ側にのみレプリケーション合意を設定すれば双方向同期になる (ただし,Windows からのパスワード変更以外 )

AD 配下の Windows 上で変更したパスワードを 389 DS に同期可能

→ Windows Server 側にパスワードフックモジュール (PassSync) をインストールする

グループエントリ , ユーザエントリの双方向同期 (AD 側パスワード以外 )

PassSync で AD 側パスワードを同期

(29)

デモ

: 389 Directory Server と AD の同期

こんな環境を作ります。

■ 389 Directory Server ・ホスト名: demo-389.soy.local ・サフィックス: dc=soy,dc=local ・同期対象: ou=People 以下 ■ Active Directory ・ホスト名: ad-389.sios.local ・ADドメイン: sios.local ・同期対象: cn=Users 以下 双方向ユーザ同期 (但しAD でのパスワード変更の同期以外) AD でのパスワード変更の同期 29

※ 本デモでは,ADパスワード同期はモジュールインストールだけを行います。

(30)

389 Directory Server の AD 同期デモ (1)

0. 事前準備

1. LDAPS を喋る AD (Windows Server)を事前に用意 (自 己署名証明書 ) ※AD への接続は ldaps が必須

2. 先ほどのデモの環境を削除

# remove-ds-admin.pl -a -y

3. GUI なしで再セットアップ

# setup-ds.pl

setup type 2 (Typical)

Computer Name demo-389.soy.local Instance ID demo-389 Suffix dc=soy,dc=local ホスト名 ad-389.sios.local AD ドメイン名 sios.local

1. 【389】AD サーバ上の LDAPS 用 SSL 証明書を取得し 389 DS に登録

# cd /etc/dirsrv/slapd-demo-389

# echo | openssl s_client -connect ad-389:636 2>/dev/null | openssl x509 > ad-389.crt # certutil -d . -A -n "Windows Server CA Cert" -t CT,, -a -i ad-389.crt

AD サーバに接続し

(31)

389 Directory Server の AD 同期デモ (2)

2. 【AD】AD 上にレプリケーション接続用ユーザを作成する

下記の URL を参考に作成。ポイントはドメインの最上位エントリに対して [Read/Write/Create all child

objects/Delete all child objects/Add GUID]が許可されていること。 "Domain Admins" グループに所属させる こと。

http://directory.fedoraproject.org/docs/389ds/howto/howto-windowssync.html#creating-ad-user-with-replication-rights:

a. Select the top level domain node (e.g. example.com) under the Active Directory Users and Groups node in the tree in the left hand pane b. In the ‘View’ menu, select ‘Advanced Features’

c. Create a user account using the Windows AD GUI

d. you probably want to set the password to never expire, or at least have a very long expiration time

e. Select the top level domain node (e.g. example.com) under the Active Directory Users and Groups node in the tree in the left hand pane f. Open ‘Properties’

g. In the ‘Properties’ dialog box, select the Security tab h. Click on the Add… button

i. Search for your windows sync user - Check Names - then hit the OK button j. In the ‘Group or User Names:’ list, select your windows sync user

k. In the ‘Permissions for Windows Sync’ list, make sure Read is checked under the Allow column

l. If you will want to write changes from 389 to AD, make sure Write/Create all child objects/Delete all child objects/Add GUID are all checked under the Allow column

m. Scroll down to Replicating Directory Changes - check this on under the Allow column n. Press ‘Apply’ or ‘OK’

→デモ環境では replication (CN=replication,CN=Users,DC=sios,DC=local) というユーザ

ID

で作成済

(32)

389 Directory Server の AD 同期デモ (3)

3. 【389】389 DS で changelog を有効化

# ldapmodify -x -D "cn=Directory Manager" -H ldap://localhost -W -f changelog.ldif

4. 【389】389 DS でレプリケーション機能を有効化

# ldapmodify -x -D "cn=Directory Manager" -H ldap://localhost -W -f replication.ldif

dn: cn=changelog5,cn=config changetype: add objectclass: top objectclass: extensibleObject cn: changelog5 nsslapd-changelogdir: /var/lib/dirsrv/slapd-demo-389/changelogdb nsslapd-changelogmaxage: 7d dn: cn=syncreplica,cn=dc\=soy\,dc\=local,cn=mapping tree,cn=config changetype: add objectclass: top objectclass: nsds5replica objectclass: extensibleObject cn: syncreplica nsds5replicaroot: dc=soy,dc=local nsds5replicaid: 7 nsds5replicatype: 3 nsds5flags: 1 nsds5ReplicaPurgeDelay: 604800 32

(33)

389 Directory Server の AD 同期デモ (4)

5. 【389】389 DS で AD とのレプリケーション合意を設定

# ldapmodify -x -D "cn=Directory Manager" -H ldap://localhost -f agreement.ldif

dn: cn=adagreement1,cn=syncreplica,cn=dc\=soy\,dc\=local,cn=mapping tree,cn=config changetype: add objectclass: top objectclass: nsDSWindowsReplicationAgreement cn: adagreement1 nsds7WindowsReplicaSubtree: cn=Users,DC=sios,DC=local nsds7DirectoryReplicaSubtree: ou=people,dc=soy,dc=local nsds7NewWinUserSyncEnabled: on nsds7NewWinGroupSyncEnabled: on nsds7WindowsDomain: SIOS nsDS5ReplicaRoot: dc=soy,dc=local nsDS5ReplicaHost: ad-389.sios.local nsDS5ReplicaPort: 636 nsDS5ReplicaBindDN: CN=replication,CN=Users,DC=sios,DC=local nsDS5ReplicaCredentials: MySecret-123 nsDS5ReplicaTransportInfo: SSL nsds5replicabindmethod: SIMPLE winSyncInterval: 30 winSyncMoveAction: delete nsds5BeginReplicaRefresh: start 33

(34)

389 Directory Server の AD 同期デモ (5)

6. AD → 389 Directory ユーザ同期の確認

a. 【AD】AD 側でUsersコンテナの下に aduser1 というユーザを作る。

b. 【389】389 DS 側で ou=People,dc=soy,dc=lolcal 以下に aduser1 のエントリがあることを確認する。 # ldapsearch -x -b 'ou=People,dc=soy,dc=local' -H ldap://localhost -D "cn=Directory Manager" -W '(uid=aduser1)'

7. 389 Directory → AD ユーザ同期の確認

a. 【389】389 DS 側で以下の LDIF により dsuser1 ユーザを作成。

# ldapmodify -a -x -D "cn=Directory Manager" -W -H ldap://localhost -f dsuser1.ldif

b. 【AD】AD 側で Users コンテナの下に dsuser1 ユーザが存在することを確認する。

dn: uid=dsuser1,ou=people,dc=soy,dc=local objectClass: top objectClass: person objectClass: organizationalperson objectClass: inetOrgPerson objectClass: ntUser ntUserDomainId: dsuser1 ntUserCreateNewAccount: true ntUserDeleteAccount: true givenName: dsuser1 sn: dsuser1 uid: dsuser1 cn: dsuser1 userPassword: P@ssword1 34

(35)

389 Directory Server の AD 同期デモ (6)

8. 【AD】Password Sync のインストール (参考まで)

以下の URL から最新の PassSync (Windows Password Synchroniztion) のインストーラをダ

ウンロードします。

http://directory.fedoraproject.org/docs/389ds/download.html

インストーラを実行して設定を行います。

※ 本デモでは PassSync についてはここまでとします。

(36)

FreeIPA とは

FreeIPA は単なる LDAP サーバでなく、Windows の Active Directory (以降 AD)

のようなドメイン(Linux ドメイン)管理を行うソフトウェア。

I

dentity,

P

olicy,

A

udit (現状 Audit の機能無し)

RHEL 6 から同梱されており,その上では Identity Management (IdM)という名前で

ある。

FreeIPA は様々なソフトウェアの寄せ集め。AD 同様にその核は LDAP と Kerberos

である。

(37)

FreeIPA で出来ること

RHEL 系 Linux 上でのユーザ/ホスト/サービス(プリンシパル)の一元管理

上記プリンシパルに対する Kerberos 認証によるシングルサインオン

AD のセキュリティグループのようなグループ管理

ホストベースアクセス制御(HBAC)

AD とフォレスト信頼を結び,AD ユーザが FreeIPA 内のサービスにアクセスする際

にシングルサインオンを提供する。

二要素認証 (TOTP, HOTP)

証明書の発行

XMLRPC API の提供

マルチマスタレプリケーション

ロールベースアクセス制御 (RBAC)

その他...

37

(38)

FreeIPA サーバの構成要素

LDAP Server

→ 389 Directory Server

Kerberos

→ MIT の Kerberos 実装 (krb5-server, etc…)

DNS

→ Bind

PKI (証明書関連)

→ Dogtag Certification System

NTP

→ MIT の NTP 実装

上記をまとめる

→ FreeIPA (ipa-server)

(39)

FreeIPA クライアントの構成要素

SSSD

○ 当初は FreeIPA のクライアントとして開発が始まったが今は独立している。

○ SSSD を導入しない場合は Linux クライアントから LDAP, AD, Kerberos 他の認証をする際,それぞ れ個別に PAM 及び NSS (Name Service Switch) のモジュールを利用する必要があった

(pam_ldap, nss_ldap, pam_krb5, pam_winbind, etc….)[図1]。しかし SSSD はそれらを統合して扱 えるデーモンを実装し, pam_sss, nss_sss モジュールに統一 [図2]。 sssd_nss SSSD Applications Kerberos LDAP LDAP Applications Kerberos LDAP LDAP nss_ldap pam_ldap nss_ldap pam_krb5 nss_winbind pam_winbind 図1. 旧型の Linux 認証構成 図2. SSSD を用いた Linux 認証構成 pam_sss 39

(40)

FreeIPA の LDAP ツリー

FreeIPA サーバにおける LDAP ツリーは以下ような構造です(代表的なコンテナを抜粋)。

(suffix) cn=accounts,(suffix) ※現状ではAD のような OU による組織分けができない cn=hbac,(suffix) cn=ca,(suffix) cn=otp,(suffix) cn=users,cn=accounts,(suffix) cn=groups,cn=accounts,(suffix) cn=services,cn=accounts,(suffix) cn=computers,cn=accounts,(suffix) ←ユーザの格納 ←グループの格納 ← サービスプリンシパルの格納 ← ホストプリンシパルの格納 ← ホストベースアクセスコントロールの格納 ← 証明書情報の格納 ← ワンタイムパスワード情報の格納 40

(41)

FreeIPA 簡単なハンズオン : 流れ

1. ipa-server パッケージのインストール (1台)

2. ipa-client パッケージのインストール (3 台)

3. ipa-server コンソール(GUI) にログイン後ホスト等の登録状況を確認

4. ユーザ及びグループの作成 / ssh + Kerberos による SSO の確認

5. OTP ログインの確認

6. ホストグループの作成

7. HBAC (Host-Based Access Control) の作成及び動作の確認

(42)

FreeIPA 簡単なハンズオン : 環境の説明

libvirt

仮想ネットワーク 192.168.122.0/24 ipaserver

DNSドメイン: soy.local

math1 phys1 client1

.2 .101 .102 .201 GCE VM インスンタンス Global IP Address セミナールーム Socks Proxy (ssh) ProxyCap 使用 ● GCE VM インスタンス内 (一人1台)に libvirt(KVM)で仮想ネットワーク /サーバを構築

● GCE VM インスタンス内に SOCKS サーバ (1080 port) を起動 (ssh クライアント)

● セミナールーム Windows 端末からは ProxyCap (SOCKS)経由で直接仮想ネットワーク

に接続可能

● client1 を操作用のクライアントマシンと想定し,そこからそれ以外の 3 台のマシンに ssh

ログイン等を行う

仮想ブリッジ

(43)

FreeIPA 簡単なハンズオン : ipa-server インストール (準備)

ipaserver.soy.local(192.168.122.2) を IPA サーバにします。

1. TeraTerm から ipaserver.soy.local(192.168.122.2) に接続

ユーザ: root パスワード: password

2. ipa-server , ipa-server-dns パッケージをインストール

# yum install ipa-server ipa-server-dns

仮想ネットワーク 192.168.122.0/24

ipaserver math1 phys1 client1

.2 .101 .102 .201

(44)

FreeIPA 簡単なハンズオン : ipa-server インストール

(セットアップ1)

3. セットアップコマンドを実行

# ipa-server-install --mkhomedir

○ Do you want to configure integrated DNS (BIND)? [no]: yes↲ ← DNS のインストール

○ Server host name [ipaserver1.soy.local]: ↲

○ Please confirm the domain name [soy.local]: ↲ ← DNS ドメイン名

○ Please provide a realm name [SOY.LOCAL]: ← Kerberos Realm 名

○ Directory Manager password: password↲ ← LDAP管理者パスワード

○ Password (confirm): password↲

○ IPA admin password: password↲ ← 管理コンソールパスワード

○ Password (confirm): password↲

44

(45)

FreeIPA 簡単なハンズオン : ipa-server インストール

(セットアップ2)

...セットアップコマンドの実行続き ...

○ Do you want to configure DNS forwarders? [yes]: ← DNS Forwarder 設定する

○ Following DNS servers are configured in /etc/resolv.conf: 192.168.122.1 ← Forwarder を既存 DNS に

Do you want to configure these servers as DNS forwarders? [yes]: 設定する

○ Enter an IP address for a DNS forwarder, or press Enter to skip: ← skip

○ Do you want to search for missing reverse zones? [yes]: no↲ ← 逆引ゾーンは無いので no

○ Hostname: ipaserver1.soy.local IP address(es): 192.168.122.2 Domain name: soy.local Realm name: SOY.LOCAL

BIND DNS server will be configured to serve IPA domain with: Forwarders: 192.168.122.1

Forward policy: only

Reverse zone(s): No reverse zone

Continue to configure the system with these values? [no]: yes↲ ← インストールの開始

(46)

FreeIPA 簡単なハンズオン : ipa-server インストール

(ポート開放)

4. IPA サーバで利用するポートを開放

LDAP(389/tcp), LDAPS(636/tcp) HTTP(80tcp), HTTPS(443)

Kerberos,(88/tcp, 88/udp, 464/tcp, 464/udp) NTP(123/udp)

DNS(53/udp)

# firewall-cmd --permanent --add-service={freeipa-ldap,freeipa-ldaps,http,https,kerberos,ntp,dns} # firewall-cmd --complete-reload

※ハンズオン環境では http(80) は既に開いているので警告が出ますが無視して下さい。

(47)

FreeIPA 簡単なハンズオン : ipa-client インストール (概要)

以下のマシンを IPA クライアントにします。

math1.soy.local (192.168.122.101)

phys1.soy.local (192.168.122.102)

client1.soy.local (192.168.122.201)

仮想ネットワーク 192.168.122.0/24

ipaserver math1 phys1 client1

.2 .101 .102 .201

これら 3 台を IPA クライアントとする

(48)

FreeIPA 簡単なハンズオン : ipa-client インストール (準備)

math1.soy.local, phys1.soy.local, client1.soy.local それぞれに以下を実行します。

1. ssh で対象のマシンに接続

ユーザ: root

パスワード: password

2. ipa-client パッケージのインストール

# yum install ipa-client

3. 参照先 DNS サーバの設定

Auto Discovery 機能を利用するため,参照する DNS サーバを libvirt のデフォルト (192.168.122.1) から ipaserver(192.168.122.2) に変更します。

# nmcli con mod eth0 ipv4.ignore-auto-dns yes ipv4.dns 192.168.122.2 # nmcli con reload eth0

# nmcli con up eth0

(49)

FreeIPA 簡単なハンズオン : ipa-client インストール

(セットアップ)

4. セットアップコマンドの実行

# ipa-client-install --mkhomedir

○ Discovery was successful! ← DNS を ipaserver に向けたのでオートディスカバリが成功する

Client hostname: shared1.soy.local Realm: SOY.LOCAL

DNS Domain: soy.local

IPA Server: ipaserver1.soy.local BaseDN: dc=soy,dc=local

Continue to configure the system with these values? [no]: yes↲

○ User authorized to enroll computers:admin↲

○ Password for admin@SOY.LOCAL: password↲

※ --mkhomedir オプションで初回ログイン時に自動的にホームディレクトリが作成されるようになります。

(50)

FreeIPA 簡単なハンズオン : IPAサーバコンソールの確認

1. FreeIPA コンソールへのログイン

※ ハンズオン環境では数回ベーシック認証の画面が出ますがキャンセルしてください 手元の Windows マシンのブラウザから以下 URL にアクセスし,ログインします。

https://ipaserver.soy.local/

ユーザ: admin パスワード: password

2. [Identity] タグでユーザ([Users])やホスト([Hosts])を確認してみます

ホストを確認した例 50

(51)

FreeIPA 簡単なハンズオン : ユーザ / グループの作成 (概要)

これより以下の構成の3ユーザ, 3グループを作成します。

user1 user2 user3

・・・ ・・・

情報センターグループ (ug-center) 数学科グループ (ug-math) 物理学科グループ (ug-phys)

● ユーザグループ ○ 情報センターグループ (ug-center) → システム全体を管理する ○ 数学科グループ (ug-math) → 数学科サーバにアクセス可 ○ 物理学科グループ (ug-phys) → 物理学科サーバにアクセス可 ・・・ ● ユーザ ○ user1 : 情報センターに所属 ○ user2 : 数学科に所属 ○ user3 : 物理学科に所属 51

(52)

FreeIPA 簡単なハンズオン : ユーザ / グループの作成 (作成作業)

1. ユーザの作成

[Identity] タグで [Users] をクリック,[+Add]ボタンで以下のユーザを作成します。

2. グループの作成

[Identity] タグで[Groups]をクリック,画面左で [User Groups] が選択されていることを確認して [+Add]ボタ ンで以下のグループを作成します。作成時に [Add and Edit]ボタンで続けてメンバーを登録できます。

User login First name Last name Password

user1 user1 user1 password

user2 user2 user2 password

user3 user3 user3 password

Group name Description Group type メンバー

ug-center 情報センター POSIX user1

ug-math 数学科 POSIX user2

(53)

作成したユーザについて、LDAP のエントリと Kerberos のプリンシパルの登録状況を確認してみま

しょう。

TeraTerm から ipaserver.soy.local に root ユーザでログインします。

ユーザ: root

パスワード: password

LDAP エントリの確認

# ldapsearch -x -b "cn=users,cn=accounts,dc=soy,dc=local" -H ldap://localhost

# ldapsearch -x -b "cn=groups,cn=accounts,dc=soy,dc=local" -H ldap://localhost

Kerberos プリンシパルの確認

#

kadmin.local

kadmin.local:

listprincs

FreeIPA 簡単なハンズオン : ユーザ / グループの作成 (確認)

(54)

FreeIPA 簡単なハンズオン : シングルサインオンの確認

1.

TeraTerm から client1.soy.local (192.168.122.201)にログイン

  ユーザ: user3 パスワード: password

2.

client1.soy.local から ssh コマンドで math1.soy.local にログイン

$ ssh math1.soy.local

パスワード入力無しでログインできます。 hostname コマンド等でホスト名を確認します。 確認が終了したら exit を入力しログアウトします。

3.

client1.soy.local から ssh コマンドで phys1.soy.local にログイン

$ ssh phys1.soy.local

パスワード入力無しでログインできます。 hostname コマンド等でホスト名を確認します。 確認が終了したら exit を入力しログアウトします。 54

(55)

FreeIPA 簡単なハンズオン : HBAC をやってみる

user1 user2 user3

・・・ ・・・

情報センターグループ (ug-center) 数学科グループ (ug-math) 物理学科グループ (ug-phys)

・・・ ・・・ phys1 物理学科ホストグループ (hg-phys) ・・・ math1 数学科ホストグループ (hg-math) client1 ipaserver 保守用ホストグループ (hg-manage) ・・・ 55

(56)

FreeIPA 簡単なハンズオン : HBAC をやってみる

(ホストグループの作成 )

1. FreeIPA コンソールに戻る

https://ipaserver.soy.local/ に admin ユーザでログイン中 の Chrome ブラウザに戻ります。

2. ホストグループの作成

画面上部にある [ Groups ] をクリックした後,画面左側の [ Host Groups ] をクリックします。 [+Add] ボタンをク リックし,以下のホストグループを作成します。作成時に [Add and Edit]ボタンで続けて所属するホストまたはホ ストグループを登録できます。

ホストグループにホストを登録するときは青帯の「 Hosts」タブを選択して「 +Add」をクリックします。

ホストグループのホストグループを登録するときは青帯の「 Host Groups」タブを選択して「 +Add」をクリックしま す。

Host-Group Description 属させるホスト or ホストグループ

hg-math 数学科ホストグループ math1.soy.local

hg-phys 物理学科ホストグループ phys1.soy.local

hg-manage 保守用ホストグループ hg-math1, hg-phs1, ipaserver.soy.local

(57)

FreeIPA 簡単なハンズオン : HBAC をやってみる

(HBAC ルールの作成)

3. HBAC ルールの作成

画面上部にある [ Policy ] をクリックすると「 HBAC Rules」の画面が表示されます。 [+Add] ボタンをクリック し,以下の HBAC ルールを作成します。作成時に [Add and Edit]ボタンで続けてルールの詳細が設定でき ます。設定が完了したら画面ごとに [Save]ボタンをクリックします。

4. デフォルトの HBACルール(allow_all)を無効化

デフォルトの「 allow_all」という HBAC ルールは無効にしておきます。「 HBAC Rules」の画面で「allow_all」の 行を選択して [-Disable] ボタンをクリックします。

Rule name Description Who Accessing Via Service

hbac-math 数学科用HBAC ug-math hg-math Any Service

hbac-phys 物理学科用HBAC ug-phys hg-phys Any Service

hbac-manage 保守用ホストグループ ug-center hg-manage Any Service

hbac-client クライアント用 Anyone client1.soy.local Any Service

(58)

FreeIPA 簡単なハンズオン : HBAC をやってみる

(ssh ログイン確認)

5. user1 が全てのホストにログイン可能か確認

1. TeraTerm から client1.soy.local(192.168.122.201)に user1 でログイン 2. 5.1 の状態のまま client1.soy.local から各サーバにログイン出来ることを確認

$ ssh ipaserver.soy.local #→ 成功するはず: hostname コマンド等で確認後 exit でログアウト

$ ssh math1.soy.local #→ 成功するはず: hostname コマンド等で確認後 exit でログアウト

$ ssh phys1.soy.local #→ 成功するはず: hostname コマンド等で確認後 exit でログアウト

3. client1.soy.local(192.168.122.201)からログアウト $ exit

6. user2 が math1 にのみログイン可能か確認

1. TeraTerm から client1.soy.local(192.168.122.201)に user2 でログイン 2. 6.1 の状態のまま client1.soy.local から各サーバにログイン出来ることを確認

$ ssh ipaserver.soy.local #→ 失敗するはず

$ ssh math1.soy.local #→ 成功するはず: hostname コマンド等で確認後 exit でログアウト

$ ssh phys1.soy.local #→ 失敗するはず

3. client1.soy.local(192.168.122.201)からログアウト $ exit

(59)

FreeIPA 簡単なハンズオン : OTPの確認 (流れ)

59

I.

一般ユーザ(user1) で FreeIPA コンソールにログインして OTP シークレットを生成

II.

上記 1 で生成した OTP シークレットを 各自のスマートフォンの Google Authenticator に読み込

み、または弊社で用意した OTP 取得 JavaScript ページに設定。

III.

管理ユーザ(admin) で FreeIPA コンソールにログインして一般ユーザ(user1)に対する OTP ログ

インを許可

IV.

TeraTerm から一般ユーザ(user1) で client1.soy.local に ssh ログイン

→ ワンタイムパスワードを尋ねられるはず

V.

ID / パスワード / ワンタイムパスワード を入力してログインを確認

(上記 I, II は Chrome ブラウザのシークレットモードを使います。)

(60)

FreeIPA 簡単なハンズオン : OTPの確認 (1)

60

1. FreeIPA コンソールに user1 としてログイン

Chrome ブラウザの

シークレットモード

で以下 URL の FreeIPA コンソールにアクセスし user1 ユーザでログ インします。 ※ ハンズオン環境では数回ベーシック認証の画面が出ますがキャンセルしてください

https://ipaserver.soy.local/

ユーザ: user1 パスワード: password

2. OTP シークレットの取得

画面上の [OTP Tokens] をクリックします。表示された画面で右上にある [+ADD] をクリックします。ポップ アップした画面にて, [Type] として 「Time-based (TOTP)」が選択されていることを確認し [ADD] ボタンをク リックします。 OTP トークンが QR コードで表示されます。 ご自分のスマートフォン等で Google

Authenticator 等の OTP アプリケーションをお持ちの方はここで QR コードを読み取り次々ページの 6 の手 順へ。それ以外の方は次のページの 3 の手順へ。

(61)

FreeIPA 簡単なハンズオン : OTPの確認 (2)

3. OTP シークレットを URI で表示

QR コードの下にある [ Show configuration uri ] というリンクをクリックすると OTP シークレットが

URI で表示されます。このURI を OS のクリップボードにコピーします。

4. OTP トークン取得 JavaScript のページにアクセス

サイオスが簡易作成した OTP トークン取得 JavaScript のページに Chrome ブラウザの別タブで

アクセスします。これは以下の URL にあります(「OTP トークン取得」のブックマークをクリックしても

アクセスできます。

5. OTP シークレットの URI を登録

「Input your configuration URI in the following text box」の右横にあるテキストボックスに,3

でクリップボードにコピーした URI をペーストします。すると,その下にワンタイムパスワードが表示

されます。

(62)

FreeIPA 簡単なハンズオン : OTPの確認 (3)

6. admin ユーザでログインしていた FreeIPA コンソールに戻る

https://ipaserver.soy.local/ に admin ユーザでログイン中 の Web ブラウザに戻ります。

7. user1 に OTP のログインを許可する

[Users] タブの [Active users] の画面で「user1」をクリックし,画面右の真ん中くらいまでスクロールしたとこ ろにある[User authentication types] で「Two factor authentication (password + OTP)」をチェックしま す。画面上部に戻り [Save] をクリックし変更を保存します。

8. TeraTerm からワンタイムパスワードによるログインを試行

TeraTerm から math1.soy.local などの適当なサーバに対し user1 でログインします。なお,二要素認証を 利用するため, TeraTerm の「SSH 認証」の画面で「キーボードインタラクティブ認証を使う」を選択する必要 があります。

First Factor : パスワード (password) Second Factor : ワンタイムパスワード

(63)

(参考) Windows Trust のデモ from youtube

https://www.youtube.com/watch?v=dKfiq3KdF2A

参照

関連したドキュメント

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

アンチウイルスソフトウェアが動作している場合、LTO や RDX、HDD 等へのバックアップ性能が大幅に低下することがあります。Windows Server 2016,

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB

2)海を取り巻く国際社会の動向

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

荒天の際に係留する場合は、1つのビットに 2 本(可能であれば 3

ある架空のまちに見たてた地図があります。この地図には 10 ㎝角で区画があります。20

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から