前書き

FreeIPAは、MicrosoftのActive Directoryと同様に、アカウント管理と集中認証を提供するLinux用のオープンソースセキュリティソリューションです。 FreeIPAは、389 Directory Server、MIT Kerberos、SSSDなどの複数のオープンソースプロジェクトの上に構築されています。

FreeIPAには、CentOS 7、Fedora、およびUbuntu 14.04 / 16.04のクライアントがあります。 これらのクライアントは、マシンをIPAドメインに追加するのをかなり簡単にします。 他のオペレーティングシステムは、SSSDまたはLDAPを使用してFreeIPAに対して認証できます。

このチュートリアルでは、CentOS 7サーバーにFreeIPAサーバーをインストールします。 次に、クライアントマシンを構成して、FreeIPAユーザーがIPA資格情報でログインできるようにします。

このチュートリアルに従うと、https://www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-ubuntu-16-04/ [Ubuntu 16.04でFreeIPAクライアントを設定できます]またはhttps://www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-centos-7[CentOS 7でFreeIPAクライアントを構成]。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • 1 GB以上のRAMを備えた1台のCentOS 7サーバー。 デフォルトでは、CentOS 7はrootユーザーのみを使用します。 FreeIPAを使用してユーザーを管理するため、別のユーザーを手動で追加する必要はありません。 rootユーザーとしてこのチュートリアルに従うだけです。

  • サーバーで有効になっているファイアウォール。https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-a-basic- firewall [CentOS 7チュートリアルの追加推奨手順のファイアウォールの手順]。 FreeIPAは機密性の高いユーザー資格情報を処理するため、これを強くお勧めします。

  • サーバーとクライアントに使用する完全に登録されたドメイン。 https://namecheap.com [Namecheap]で購入するか、http://www.freenom.com/en/index.html [Freenom]で無料で入手できます。

  • サーバー用に設定された次のDNSレコード。 追加方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [このホスト名チュートリアル]を参照してください。

  • サーバー名を含むAレコード(例: + ipa。+)サーバーのIPv4アドレスを指します。

  • サーバーがIPv6経由で到達できるようにする場合は、サーバー名がサーバーのIPv6アドレスを指しているAAAAレコード。

  • オプションで、 `+ yum install nano `でインストールされた ` nano `テキストエディター。 CentOSにはデフォルトで ` vi `テキストエディタが付属していますが、 ` nano +`はよりユーザーフレンドリーです。

ステップ1-IPAサーバーの準備

何かをインストールする前に、サーバーがFreeIPAを実行する準備ができていることを確認するためにいくつかのことをする必要があります。 具体的には、サーバーのホスト名を設定し、システムパッケージを更新し、前提条件からのDNSレコードが伝達されていることを確認し、ファイアウォールがFreeIPAへのトラフィックを許可することを確認します。

開始するには、FreeIPAが正しく機能するために、サーバーのホスト名が完全修飾ドメイン名(FQDN)と一致する必要があります。 このチュートリアルでは、 `+ ipa。+`をFQDNとして使用します。

サーバーを作成するときにホスト名を設定するか、サーバーの作成後にコマンドラインからホスト名を設定することができます。そのためには、 `+ hostname +`コマンドを使用します。

hostname ipa.example.org

次に、パッケージリポジトリを `+ yum +`で更新します。

yum update

次に、ファイアウォールでFreeIPAに必要なポートを開きます。

firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp}

ファイアウォールをリロードして、変更を有効にします。

firewall-cmd --reload

最後に、DNS名が適切に解決されることを確認する必要があります。 これには `+ dig `コマンドを使用できます。 ` dig `およびその他のDNSテストユーティリティを入手するには、 ` bind-utils +`パッケージをインストールします。

yum install bind-utils

次に、「+ dig +」を使用してAレコードを確認します。

dig +short ipa. A

これは `++`を返すはずです。

IPv6を有効にしている場合、AAAAレコードを同じ方法でテストできます。

dig +short ipa. AAAA

これは `++`を返すはずです。

逆ルックアップをテストすることもできます。 これは、IPアドレスからホスト名を解決できるかどうかをテストします。

dig +short -x
dig +short -x

これらは両方とも `+ ipa .. +`を返すはずです

FreeIPAはDNSを頻繁に使用するため、次のステップでは、サーバーがFreeIPAが適切に機能するために必要な特定のDNS要件を満たしていることを確認します。

ステップ2-DNSのセットアップ

FreeIPAを実行するすべてのマシンは、ホスト名として完全修飾ドメイン名(FQDN)を使用する必要があります。これは前のステップで設定しました。 さらに、各サーバーのホスト名は、「+ localhost +」ではなく、IPアドレスに解決する必要があります。

DigitalOceanでは、https://cloud.digitalocean.com/ [コントロールパネル]でサーバーのパブリックIPアドレスを確認できます。 `+ ip +`コマンドを使用してサーバーのIPアドレスを見つけることもできます。

ip addr show

これにより、次のような出力が生成されます。

Output. . .
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
   inet /18 brd 111.111.111.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 /64 scope global
      valid_lft forever preferred_lft forever
. . .
IPv4アドレスは* inet の直後に表示され、IPv6アドレスが有効になっている場合は inet6 の後に表示されます。 プライベートネットワーキングを有効にしている場合、追加のプライベートIPアドレスが表示されることもあります。これらのアドレスは無視できます。 パブリックIPアドレスとプライベートIPアドレスを区別するには、プライベートIPv4アドレスが次の範囲にあることに注意してください: +192.168。。* ++ 10。。* +、または + 172.16。*。 * + `から 172.31。*。* + `へ。 プライベートIPv6アドレスは、常にプレフィックス「 fe80

+」で始まります。

次に、ホストファイルを変更して、サーバーのホスト名が外部IPアドレスを指すようにする必要があります。 ホストファイル `+ / etc / hosts `は、ドメイン名をマシン上のローカルのIPアドレスにマッピングします。 このファイルを「 nano +」またはお好みのテキストエディターで開きます。

nano /etc/hosts

`+ 127.0.0.1 +`の後にサーバーのホスト名がある行を探します:

/ etc / hosts

. . .
# The following lines are desirable for IPv4 capable hosts

127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .

`+ 127.0.01 +`をサーバーのIPv4アドレスに変更します。

変更された/ etc / hosts

. . .
# The following lines are desirable for IPv4 capable hosts

127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
IPv6を有効にしている場合、IPv6マッピングも編集して、ホスト名で `+

1 +`の行を変更する必要があります。

/ etc / hosts

...
# The following lines are desirable for IPv6 capable hosts

::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
サーバーのIPv6アドレスに「+

1+」を変更します。

変更された/ etc / hosts

...
# The following lines are desirable for IPv6 capable hosts

::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...

ファイルを保存して終了します。

デフォルトでは、システムが起動するたびに。 CentOSは、「+ / etc / cloud / templates / hosts.redhat.tmpl 」の設定を使用して「 / etc / hosts +」を生成します。 この構成の変更を永続的にするには、そのファイルでも同様の変更を行う必要があります。

ファイルを開きます。

nano /etc/cloud/templates/hosts.redhat.tmpl

サーバーのIPv4アドレスを使用するには、 `+ 127.0.0.1 $ {fqdn} $ {hostname} +`行を変更します。

変更された/etc/cloud/templates/hosts.redhat.tmpl

...
# The following lines are desirable for IPv4 capable hosts
${fqdn} ${hostname}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
...
同様に、IPv6アドレスを使用している場合は、 `+

1 $ {fqdn} $ {hostname} +`行を変更してIPv6アドレスを使用します。

変更された/etc/cloud/templates/hosts.redhat.tmpl

...
# The following lines are desirable for IPv6 capable hosts
${fqdn} ${hostname}
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...

ファイルを終了して保存します。

次に、CentOS内で乱数ジェネレーターを構成します。 これにより、FreeIPAは認証に必要な暗号化機能を実行できます。

手順3-乱数ジェネレーターの構成

FreeIPAをセットアップするには、実行する暗号化操作に大量のランダムデータが必要です。 デフォルトでは、仮想マシンはランダムデータまたはエントロピーを非常に迅速に使い果たします。 これを回避するために、ソフトウェアの乱数ジェネレーターである `+ rngd `を使用します。 ` rngd +`は、サーバーに接続されているハードウェアデバイスからデータを取得し、それをカーネルの乱数ジェネレーターに渡すことで機能します。

まず、 `+ rngd +`をインストールします。

yum install rng-tools

その後、有効にします。

systemctl start rngd

サービスが起動時に自動的に開始されることを確認してください。

systemctl enable rngd

最後に、 `+ rngd +`が実行されていることを確認します。

systemctl status rngd

出力には、緑色の「+ active(running)+」が含まれている必要があります。

すべての依存関係が構成され機能しているので、FreeIPAサーバーソフトウェア自体のインストールに進むことができます。

ステップ4-FreeIPAサーバーのインストール

FreeIPAサーバーパッケージ自体である `+ ipa-server +`のインストールに進むことができます。

yum install ipa-server

次に、FreeIPAインストールコマンドを実行します。 これにより、構成オプションの入力を求めるスクリプトが実行され、FreeIPAがインストールされます。

ipa-server-install

認証に加えて、FreeIPAにはホストのDNSレコードを管理する機能があります。 これにより、ホストのプロビジョニングと管理が簡単になります。 このチュートリアルでは、FreeIPAの統合DNSを使用しません。 基本的なセットアップには必要ありません。

Installation script promptDo you want to configure integrated DNS (BIND)? [no]:

次に、サーバーのホスト名、ドメイン名、Kerberosレルム名を入力する必要があります。 Kerberosは、FreeIPAが舞台裏でホストマシンの認証に使用する認証プロトコルです。 ドメイン名をKerberosレルムとして使用することを強くお勧めします。 別の命名スキームを使用すると、FreeIPAのActive Directory統合で問題が発生し、他の問題が発生する可能性があります。

Installation script promptServer host name [ipa.example.org]:
Please confirm the domain name [example.org]:
Please provide a realm name [EXAMPLE.ORG]:

次に、LDAPディレクトリマネージャーのパスワードを作成します。 これは、FreeIPAのLDAP機能に必要です。 次に、IPA adminパスワード。これは、adminユーザーとしてFreeIPAにログインするときに使用されます。 システム全体のセキュリティはそれらに依存するため、ここで安全にランダムに生成されたパスワードを使用することを強くお勧めします。

構成を確認します。 この後、インストーラーが実行されます。

Installation script promptContinue to configure the system with these values? [no]:

サーバーの速度によっては、インストールプロセスに数分かかる場合があります。

サーバーのインストールが完了したので、テストする必要があります。

ステップ5-FreeIPAサーバー機能の検証

まず、管理ユーザーのKerberosトークンを初期化して、Kerberosレルムが正しくインストールされたことを確認します。

kinit admin

正常に動作している場合、インストールプロセス中に入力されたIPA管理者パスワードの入力を求められます。 入力してから、「+ ENTER」を押します。

次に、IPAサーバーが適切に機能していることを確認します。

ipa user-find admin

これにより、次が出力されます。

Output--------------
1 user matched
--------------
 User login: admin
 Last name: Administrator
 Home directory: /home/admin
 Login shell: /bin/bash
 Principal alias: [email protected]
 UID: 494800000
 GID: 494800000
 Account disabled: False
----------------------------
Number of entries returned 1
----------------------------

また、 `+ https:// ipa。+`でWeb UIにアクセスできる必要があります。

Web UIで、管理ユーザーとしてログインします。 ユーザー名*は admin で、*パスワード*は以前に設定したIPA管理者パスワードです。 ページの上部に Authenticating…*と表示され、次のようなメインIPAページが表示されます。

image:https://assets.digitalocean.com/articles/freeipa/sYI5paO.jpg [FreeIPA UIメインページ]

最後に、新しいユーザーを追加して、FreeIPAの機能をいくつか見てみましょう。

ステップ6-IPAユーザーの構成

FreeIPAには、ユーザー管理およびポリシー機能の非常に広範なセットがあります。 標準のUnixユーザーと同様に、FreeIPAユーザーはグループに所属できます。 グループまたは個々のユーザーは、ポリシーに基づいてホスト(クライアントマシン)またはホストのグループ(ホストグループ)へのアクセスを許可または拒否できます。 FreeIPAはsudoアクセスも管理できます。グループまたはユーザーには、ホストまたはホストグループに対するsudoアクセスを許可できます。

このチュートリアルでは、新しいユーザーを追加して開始する方法について説明します。

ユーザーを追加するには、* ID タブをクリックして、 Users をクリックします。 これにより、ユーザーの表が表示されます。 表の上にある[ +追加]ボタンをクリックして、新しいユーザーを追加します。 開いたフォームの必須フィールド(姓や名など)に入力し、* Add をクリックしてユーザーをそのまま追加するか、 Add and edit *をクリックして詳細を設定します。

また、元の表のユーザーをクリックして、詳細を表示することもできます。 これは、ユーザーの詳細を見るときに管理者に表示されるものです。

image:https://assets.digitalocean.com/articles/freeipa/TcJR35O.jpg [FreeIPA UIユーザー編集]

一般ユーザーもIPA GUIにログインできます。 自分の権限を表示し、個人の詳細を編集できます。

新規ユーザーは、IPAマシンに初めてログインするときにパスワードを変更するよう求められます。 これは、IPA GUIおよびSSHで機能します。 1つの便利な機能は、SSHキーを追加する機能です。 ユーザーは自分の公開SSHキーをアップロードし、それらをIPAマシンに伝達して、パスワードなしのログインを許可できます。 ユーザーは、SSHキーを個々のサーバーに存在することを心配することなく、いつでも削除できます。

結論

FreeIPAサーバーが動作するようになったので、http://www.freeipa.org/page/Client [configure clients]で認証する必要があります。 https://www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-ubuntu-16-04/ [このUbuntu 16.04 FreeIPAクライアントチュートリアル]またはhttps://をフォローできます。 www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-centos-7 [このCentOS 7 FreeIPAクライアントチュートリアル]を実行してください。 さらに、FreeIPAはLDAPサーバーです。 LDAP認証をサポートするサービスは、FreeIPAサーバーに対して認証するようにセットアップできます。

FreeIPA GUIまたはそのCLIを介して、ユーザー、グループ、およびアクセスポリシーを構成できます。 Sudoルールは、ルートアクセスを管理する比較的簡単な方法を提供できます。 大規模な展開では、レプリケーションを使用して複数のIPAサーバーをセットアップすることをお勧めします。 最後に、Windows環境にブリッジしたい場合は、Active Directoryサーバーへの信頼を設定できます。

FreeIPAは非常に用途の広い認証ツールであり、次に何をする必要があるかは、その使用方法に大きく依存します。 詳細については、FreeIPA Webサイトにhttps://www.freeipa.org/page/Documentation [ドキュメントリソースのリスト]があります。