序章
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に対して認証できます。
このチュートリアルでは、CentOS7サーバーにFreeIPAサーバーをインストールします。 次に、クライアントマシンを構成して、FreeIPAユーザーがIPA資格情報を使用してログインできるようにします。
このチュートリアルに従った後、Ubuntu16.04でFreeIPAクライアントを構成するかCentOS7でFreeIPAクライアントを構成できます。
前提条件
このチュートリアルに従うには、次のものが必要です。
-
少なくとも1GBのRAMを搭載した1台のCentOS7サーバー。 デフォルトでは、CentOS7はrootユーザーのみを使用します。 FreeIPAを使用してユーザーを管理するため、別のユーザーを手動で追加する必要はありません。 rootユーザーとしてこのチュートリアルに従うだけです。
-
サーバーでファイアウォールが有効になっています。これは、CentOS7チュートリアルの追加の推奨手順のファイアウォール手順に従って設定できます。 FreeIPAは機密性の高いユーザー資格情報を処理するため、これを強くお勧めします。
-
サーバーとクライアントに使用する完全に登録されたドメイン。 Namecheap で購入するか、Freenomで無料で入手できます。
-
サーバー用に設定された次のDNSレコード。 それらを追加する方法の詳細については、このホスト名チュートリアルに従うことができます。
- サーバー名を含むAレコード(例:
ipa.example.com
)サーバーのIPv4アドレスを指します。 - サーバーをIPv6経由で到達可能にする場合は、サーバー名がサーバーのIPv6アドレスを指すAAAAレコード。
- サーバー名を含むAレコード(例:
-
オプションで、
yum install nano
とともにインストールされたnano
テキストエディタ。 CentOSにはデフォルトでvi
テキストエディタが付属していますが、nano
の方がユーザーフレンドリーです。
ステップ1—IPAサーバーの準備
何かをインストールする前に、サーバーがFreeIPAを実行する準備ができていることを確認するためにいくつかのことを行う必要があります。 具体的には、サーバーのホスト名を設定し、システムパッケージを更新し、前提条件からのDNSレコードが伝播されていることを確認し、ファイアウォールがFreeIPAへのトラフィックを許可することを確認します。
まず、FreeIPAが正しく機能するためには、サーバーのホスト名が完全修飾ドメイン名(FQDN)と一致している必要があります。 このチュートリアルでは、FQDNとしてipa.example.com
を使用します。
サーバーの作成時にホスト名を設定するか、サーバーの作成後にコマンドラインから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
コマンドを使用できます。 bind-utils
パッケージをインストールして、dig
およびその他のDNSテストユーティリティを入手します。
- yum install bind-utils
次に、dig
を使用してAレコードを確認します。
- dig +short ipa.example.org A
これにより、your_server_ipv4
が返されます。
IPv6を有効にしている場合は、AAAAレコードを同じ方法でテストできます。
- dig +short ipa.example.org AAAA
これにより、your_server_ipv6
が返されます。
逆引き参照をテストすることもできます。 これは、IPアドレスからホスト名を解決できるかどうかをテストします。
- dig +short -x your_server_ipv4
- dig +short -x your_server_ipv6
これらは両方ともipa.example.com.
を返すはずです
FreeIPAはDNSを多用するため、次のステップでは、サーバーがFreeIPAが正しく機能するために必要な特定のDNS要件を満たしていることを確認します。
ステップ2—DNSの設定
FreeIPAを実行しているすべてのマシンは、ホスト名として完全修飾ドメイン名(FQDN)を使用する必要があります。これは前の手順で設定したものです。 さらに、各サーバーのホスト名は、localhost
ではなく、そのIPアドレスに解決される必要があります。
注:LAN内のサーバーにFreeIPAを設定する場合は、代わりにプライベートIPを使用してください。
DigitalOceanでは、コントロールパネルでサーバーのパブリック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 111.111.111.111/18 brd 111.111.111.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 1111:1111:1111:1111::1111:1111/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
の後にサーバーのホスト名がある行を探します。
. . .
# The following lines are desirable for IPv4 capable hosts
127.0.0.1 ipa.example.com ipa.example.com
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
127.0.01
をサーバーのIPv4アドレスに変更します。
. . .
# The following lines are desirable for IPv4 capable hosts
your_server_ipv4 ipa.example.com ipa.example.com
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
IPv6を有効にしている場合は、IPv6マッピングも編集して、::1
行をホスト名に変更する必要があります。
...
# The following lines are desirable for IPv6 capable hosts
::1 ipa.example.com ipa.example.com
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
::1
をサーバーのIPv6アドレスに変更します。
...
# The following lines are desirable for IPv6 capable hosts
your_server_ipv6 ipa.example.com ipa.example.com
::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}
行を変更します。
...
# The following lines are desirable for IPv4 capable hosts
your_server_ipv4 ${fqdn} ${hostname}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
...
同様に、IPv6アドレスを使用している場合は、IPv6アドレスを使用するように::1 ${fqdn} ${hostname}
行を変更します。
...
# The following lines are desirable for IPv6 capable hosts
your_server_ipv6 ${fqdn} ${hostname}
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
終了してファイルを保存します。
次に、CentOS内で乱数ジェネレーターを構成します。 これにより、FreeIPAは認証に必要な暗号化機能を実行できるようになります。
ステップ3—乱数ジェネレーターの構成
FreeIPAを設定するには、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]: no
次に、サーバーのホスト名、ドメイン名、およびKerberosレルム名を入力する必要があります。 Kerberosは、FreeIPAがホストマシンを認証するために舞台裏で利用する認証プロトコルです。 ドメイン名をKerberosレルムとして使用することを強くお勧めします。 別の命名スキームを使用すると、FreeIPAのActive Directory統合で問題が発生し、他の問題が発生する可能性があります。
警告:ルートドメイン(example.com
)をIPAドメイン名として使用しないでください。 これにより、DNSの問題が発生する可能性があります。
Installation script promptServer host name [ipa.example.org]: ipa.example.org
Please confirm the domain name [example.org]: ipa.example.org
Please provide a realm name [EXAMPLE.ORG]: IPA.EXAMPLE.ORG
次に、LDAPディレクトリマネージャのパスワードを作成します。 これは、FreeIPAのLDAP機能に必要です。 次に、IPA管理者パスワード。これは、管理者ユーザーとしてFreeIPAにログインするときに使用されます。 システム全体のセキュリティはパスワードに依存しているため、ここでランダムに生成された安全なパスワードを使用することを強くお勧めします。
構成を確認します。 この後、インストーラーが実行されます。
Installation script promptContinue to configure the system with these values? [no]: yes
サーバーの速度によっては、インストールプロセスに数分かかる場合があります。
サーバーのインストールが完了したので、テストする必要があります。
ステップ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: admin@IPA.EXAMPLE.COM
UID: 494800000
GID: 494800000
Account disabled: False
----------------------------
Number of entries returned 1
----------------------------
また、https://ipa.example.com
でWebUIにアクセスできるはずです。
注:TLS証明書は信頼されません。 今のところ、警告をバイパスします。 将来的には、お気に入りの認証局を使用して、有効なTLS証明書を取得できます。 取得したら、CA証明書(通常はca.crt
)、証明書ファイル(your_domain.crt
)、およびキーファイル(your_domain.key
)をサーバーにアップロードする必要があります。
ファイルを入手したら、前に設定したディレクトリマネージャのパスワードを使用してCAをインストールします。 コマンドの前にスペースを入れて、コマンドがシェル履歴に保存されないようにすることができます。
- ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt
次に、サイトの証明書とキーをインストールします。
- ipa-server-certinstall -w -d your_domain.key your_domain.crt
これらの変更を有効にするには、サーバーを再起動する必要があります。
Web UIで、管理者ユーザーとしてログインします。 ユーザー名はadminになり、Passwordは前に設定したIPA管理者パスワードになります。 ページの上部にAuthenticating…と表示されたら、次のようなメインのIPAページが表示されます。
最後に、新しいユーザーを追加して、FreeIPAの機能のいくつかを調べてみましょう。
ステップ6—IPAユーザーの構成
FreeIPAには、非常に広範なユーザー管理およびポリシー機能のセットがあります。 標準のUnixユーザーと同様に、FreeIPAユーザーはグループに属することができます。 ポリシーに基づいて、グループまたは個々のユーザーのいずれかが、ホスト(クライアントマシン)またはホストのグループ(ホストグループ)へのアクセスを許可または拒否できます。 FreeIPAはsudoアクセスを管理することもできます。 グループまたはユーザーには、ホストまたはホストグループへのsudoアクセスを許可できます。
このチュートリアルでは、新しいユーザーを追加して開始する方法について説明します。
ユーザーを追加するには、 Identity タブをクリックし、Usersをクリックします。 これにより、ユーザーのテーブルが表示されます。 表の上にある+Add ボタンをクリックして、新しいユーザーを追加します。 開いたフォームに必須フィールド(名前や名前など)を入力し、追加をクリックしてユーザーをそのまま追加するか、追加して編集をクリックして詳細を構成します。
元のテーブルのユーザーをクリックして、詳細にアクセスすることもできます。 これは、管理者がユーザーの詳細を見るときに表示されるものです。
通常のユーザーは、IPAGUIにログインすることもできます。 自分の権限を表示したり、個人情報を編集したりできるようになります。
新規ユーザーは、IPAマシンに初めてログインするときにパスワードを変更するように求められます。 これは、IPAGUIおよびSSH経由で機能します。 便利な機能の1つは、SSHキーを追加する機能です。 ユーザーは公開SSHキーをアップロードし、それらをIPAマシンに伝播させて、パスワードなしのログインを可能にすることができます。 ユーザーは、SSHキーがまだ個々のサーバーに存在することを心配することなく、いつでもSSHキーを削除できます。
結論
これでFreeIPAサーバーが機能するようになったので、それに対して認証するためにクライアントを構成する必要があります。 このUbuntu16.04FreeIPAクライアントチュートリアルまたはこのCentOS7FreeIPAクライアントチュートリアルに従ってください。 さらに、FreeIPAはLDAPサーバーです。 LDAP認証をサポートするサービスは、FreeIPAサーバーに対して認証するように設定できます。
ユーザー、グループ、およびアクセスポリシーは、FreeIPAGUIまたはそのCLIを介して構成できます。 Sudoルールは、rootアクセスを管理するための比較的簡単な方法を提供できます。 大規模な展開では、レプリケーションを使用して複数のIPAサーバーをセットアップすることをお勧めします。 最後に、Windows環境にブリッジする場合は、ActiveDirectoryサーバーへの信頼を設定できます。
FreeIPAは非常に用途の広い認証ツールであり、次に何をする必要があるかは、それをどのように使用するかによって大きく異なります。 詳細については、FreeIPAWebサイトにドキュメントリソースのリストがあります。