Red Hat Training

A Red Hat training course is available for Red Hat Linux

第2章 Identity Management サーバーのインストールとアンインストール

Identity Management (IdM) サーバー はドメインコントローラーで、IdM ドメインを定義して管理します。IdM サーバーを設定するには、以下を実行します。
  1. 必要なパッケージをインストールします。
  2. 設定スクリプトを使用してマシンを設定します。
Red Hat では、負荷分散と冗長性のためにドメイン内で複数のドメインコントローラーを設定することを強く推奨しています。これらの追加サーバーは、マスター IdM サーバーの レプリカ になります。
本章では、最初の IdM サーバーのインストールについて説明します。最初のサーバーからレプリカをインストールする方法については、4章Identity Management のレプリカのインストールとアンインストール を参照してください。

2.1. サーバーインストールの前提条件

2.1.1. ハードウェア推奨事項

RAM のサイズ設定はハードウェアで最重要事項になります。必要な RAM サイズを判断する際には、以下の推奨事項を考慮してください。
  • 10,000 ユーザーおよび 100 グループには、最低 2GB の RAM と 1GB のスワップスペースを割り当てます。
  • 100,000 ユーザーおよび 50,000 グループには、最低 16GB の RAM と 4GB のスワップスペースを割り当てます。

注記

基本的なユーザーエントリーまたは証明書のあるシンプルなホストエントリーのサイズは約 5 - 10 KiB になります。
大規模なデプロイメントでは、データのほとんどがキャッシュに保存されるため、ディスクスペースを増やすよりも RAM を増やす方が効果的です。
パフォーマンスを向上させるには、基礎となる Directory Server を調整することが可能です。詳細は、『Directory Server Performance Tuning Guide』のOptimizing System Performance を参照してください。

2.1.2. システム要件

Identity Management 4.4 は Red Hat Enterprise Linux 7 でサポートされています。DNS、Kerberos、または Directory Server などのサービスをカスタム設定していない、新規インストール直後のシステムに IdM サーバーをインストールします。
IdM サーバーをインストールすると、システムファイルを上書きして IdM ドメインを設定します。IdM は元のシステムファイルのバックアップを /var/lib/ipa/sysrestore/ に作成します。
連邦情報処理標準 (FIPS: Federal Information Processing Standard) のサポート
Red Hat Enterprise Linux 7.4 以降を使用して設定した環境の場合:
  • FIPS モードを有効化したシステムで、新規の IdM サーバー、レプリカまたはクライアントを設定できます。インストールスクリプトでは、管理者の介入なしに、自動的に FIPS が有効化されているシステムを検出し、IdM を設定します。
    オペレーティングシステムで FIPS を有効化するには、『セキュリティーガイド』の「FIPS モードの有効化」を参照してください。

    重要

    以下の点に注意してください。
    • FIPS モードを無効にしてインストールした既存の IdM サーバーで FIPS モードを有効にすることはできません。
    • FIPS モードが無効になっている既存の IdM サーバーに FIPS サポートを有効にした新規レプリカをインストールすることはできません。
Red Hat Enterprise Linux 7.3 以前を使用して設定した環境の場合:
  • IdM では、FIPS モードはサポートされません。システム上で FIPS を無効化してから、IdM サーバー、レプリカまたはクライアントをインストールし、インストール後も有効化しないでください。
FIPS モードに関する詳しい情報は『セキュリティーガイド』の「連邦情報処理標準 (FIPS: Federal Information Processing Standard)」を参照してください。
Name Service Cache Daemon (NSCD) の要件
Red Hat では、Identity Management マシン上で NSCD を無効にすることを推奨しています。NSCD を無効にできない場合は、代わりに SSSD がキャッシュを行わないマッピングに対して NSCD を有効化するようにしてください。
NSCD と SSSD の両サービスはキャッシングを実行するので、これら両方をシステムが同時に使用すると問題が発生します。NSCD と SSSD の競合を避ける方法については、「システムレベルの認証ガイド」を参照してください。
IPv6 がシステムで有効になっている必要がある
IdM サーバーをインストールして実行するには、IPv6 がネットワーク上で有効になっている必要があります。Red Hat Enterprise Linux 7 システムではデフォルトで IPv6 が有効になることに留意してください。
IPv6 を無効にしている場合は、Red Hat ナレッジベースの Red Hat Enterprise Linux で IPv6 プロトコルを無効または有効にする を参照して有効にします。

2.1.3. ホスト名および DNS の設定

警告

以下の点については、特に注意してください。
  • テスト済みの機能する DNS サービスが利用可能であること。
  • サービスが適切に設定されていること。
この要件は統合 DNS サービスのある IdM サーバーと、DNS なしでインストールされた IdM サーバーの両方に該当します。DNS レコードは、LDAP ディレクトリーサービス、Kerberos、および Active Directory 統合の実行を含むほとんどすべての IdM ドメイン機能において必須のものです。
プライマリー DNS ドメインと Kerberos レルムはインストール後には変更できないことに注意してください。
サーバーのホストは、DNS サーバーが IdM 内で統合されているか外部にホストされているかに関わらず、DNS を適切に設定している必要があります。
Identity Management は、サービスレコードに別の DNS ドメインを使用します。DNS レベルの競合を避けるために、IdM に使用するプライマリー DNS ドメイン は他のシステムと共有できません。
IdM クライアントのホスト名は、プライマリー DNS ドメインの一部となる必要はないことに注意してください。

注記

クライアント自体が IdM 参加する一方で、Active Directory DNS ドメインからのホスト名を使用してユーザーが IdM クライアントにアクセスできるようにする設定については、『Windows 統合ガイド』 の Active Directory を SSSD のアイデンティティープロバイダーとして使用する を参照してください。

サーバーのホスト名の検証

ホスト名は server.example.com のように完全修飾ドメイン名である必要があります。使用中のマシンのホスト名を確認するには、hostname ユーティリティーを使用します。
[root@server ~]# hostname
server.example.com
hostname の出力は、localhost または localhost6 になってはいけません。

重要

完全修飾ドメイン名は有効な DNS 名である必要があります。つまり、許可されるのは数字、アルファベット、ハイフン (-) のみです。ホスト名にアンダースコアのような他の文字があると、DNS エラーが発生します。また、ホスト名はすべて小文字を使用する必要があり、大文字は使用できません。
命名プラクティスに関する他の推奨事項については、Red Hat Enterprise Linux セキュリティーガイド を参照してください。
完全修飾ドメイン名は、ループバックアドレスに解決してはいけません。マシンの公開 IP アドレスに解決する必要があり、127.0.0.1 に解決してはいけません。

正引きおよび逆引き DNS 設定の確認

  1. サーバーの IP アドレスを取得します。ip addr show コマンドは、IPv4 と IPv6 の両方のアドレスを表示します。
    • IPv4 アドレスは、inet で始まる行に表示されます。以下の例では、設定済み IPv4 アドレスは 192.0.2.1 になります。
    • IPv6 アドレスは inet6 で始まる行に表示されます。scope global のある IPv6 のみがこの手順では関連してきます。以下の例では、返される IPv6 アドレスは 2001:DB8::1111 になります。
    [root@server ~]# ip addr show
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    	link/ether 00:1a:4a:10:4e:33 brd ff:ff:ff:ff:ff:ff
    	inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic eth0
    		valid_lft 106694sec preferred_lft 106694sec
    	inet6 2001:DB8::1111/32 scope global dynamic 
     		valid_lft 2591521sec preferred_lft 604321sec
    	inet6 fe80::56ee:75ff:fe2b:def6/64 scope link 
    	       valid_lft forever preferred_lft forever
  2. dig ユーティリティーにホスト名を加えて、正引き DNS 設定を確認します。
    1. dig +short server.example.com A コマンドを実行します。返される IPv4 アドレスは、ip addr show が返す IP アドレスと一致する必要があります。
      [root@server ~]# dig +short server.example.com A
      192.0.2.1
    2. dig +short server.example.com AAAA コマンドを実行します。コマンドがアドレスを返す場合は、ip addr show が返す IPv6 アドレスと一致する必要があります。
      [root@server ~]# dig +short server.example.com AAAA
      2001:DB8::1111

      注記

      AAAA レコードの出力が返されない場合でも、設定が間違っているわけではありません。出力がないということは、DNS 内でサーバーマシン向けに IPv6 アドレスが設定されていないというだけのことです。ネットワークで IPv6 プロトコルを使用する予定がない場合は、この状況でもインストールを続行できます。
  3. dig ユーティリティーに IP アドレスを加えて、逆引き DNS 設定 (PTR レコード) を確認します。
    1. dig +short -x IPv4 address コマンドを実行します。サーバーのホスト名が出力に表示される必要があります。例を示します。
      [root@server ~]# dig +short -x 192.0.2.1
      server.example.com
    2. 前のステップで dig +short -x server.example.com AAAA コマンドが IPv6 アドレスを返した場合は、dig を使って IPv6 アドレスもクエリします。ここでも、サーバーのホスト名が出力に表示される必要があります。例を示します。
      [root@server ~]# dig +short -x 2001:DB8::1111
      server.example.com

      注記

      前のステップで dig +short -x server.example.com AAAA コマンドが IPv6 アドレスを返さなかった場合は、AAAA レコードのクエリは何も出力しません。これは正常な動作で、設定が間違っていることを示すものではありません。
    前のステップで dig +short server.example.com が IP アドレスを返した場合でも、別のホスト名が表示されたりホスト名が表示されない場合は、逆引き DNS 設定が間違っていることになります。

DNS フォワーダーの標準準拠の確認

統合 DNS の IdM を設定する際には、IdM DNS サーバーで使用するすべての DNS フォワーダーが Extension Mechanisms for DNS (EDNS0) と DNS Security Extensions (DNSSEC) の標準に準拠していることを確認してください。これを実行するには、各フォワーダーごとに個別に以下のコマンドの出力をチェックします。
$ dig +dnssec @IP_address_of_the_DNS_forwarder . SOA
コマンドの出力には、以下の情報が含まれているはずです。
  • status: NOERROR
  • flags: ra
  • EDNS flags: do
  • ANSWER セクションには RRSIG レコードがある必要があります。
これらのいずれかがない場合は、使用している DNS フォワーダーのドキュメントをチェックして、EDNS0 と DNSSEC がサポートされかつ有効になっていることを確認してください。BIND サーバーの最新バージョンでは、/etc/named.conf ファイルで dnssec-enable yes; オプションが設定されている必要があります。
出力例は以下のようになります。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48655
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096

;; ANSWER SECTION:
. 31679 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015100701 1800 900 604800 86400
. 31679 IN RRSIG SOA 8 0 86400 20151017170000 20151007160000 62530 . GNVz7SQs [...]

/etc/hosts ファイル

重要

/etc/hosts ファイルは手動で変更しないでください。/etc/hosts を変更した場合は、コンテンツが以下のルールに準拠していることを確認してください。
以下は、/etc/hosts ファイルが正しく設定されている例です。ホストの IPv4 および IPv6 localhost エントリーが適切に表示され、最初のエントリーで IdM サーバーの IP アドレスとホスト名がその後に続いています。IdM サーバーのホスト名は localhost エントリーに含めることができない点に注意してください。
127.0.0.1	localhost.localdomain	localhost
::1		localhost6.localdomain6	localhost6
192.0.2.1	server.example.com	server
2001:DB8::1111	server.example.com	server

2.1.4. ポート要件

IdM はサービスとの通信に多くのポートを使用します。IdM が機能するには、これらのポートが開いていて利用可能になっている必要があります。別のサービスが使用していたり、ファイアウォールがブロックしていてはいけません。

必須ポート一覧

表2.1 Identity Management のポート

サービスポートプロトコル
HTTP/HTTPS80、443TCP
LDAP/LDAPS389、636TCP
Kerberos88、464TCP および UDP
DNS53TCP および UDP
NTP123UDP

注記

IdM がポート 80 および 389 を使用していることについて心配は要りません。
  • ポート 80 (HTTP) は、オンライン証明書ステータスプロトコル (OCSP) の応答と証明取り消し一覧 (CRL) を提供するために使用されます。これらは両方ともデジタル署名されているので、中間者攻撃に対して安全になっています。
  • ポート 389 (LDAP) は暗号化に STARTTLS と GSSAPI を使用します。
これらに加えて、IdM はポート 8080 でリッスンすることができ、インストールによってはポート 8443 および 749 でリッスンできるものもあります。しかし、これら 3 つのポートは内部使用のみです。IdM はこれらをオープンにしておきますが、外部からアクセス可能である必要はありません。ポート 8080、8443、および 749 をオープンにすることは推奨されません。代わりにファイアウォールでこれらをブロックしてください。

firewalld サービスの一覧

表2.2 firewalld サービス

サービス名詳細参照先
freeipa-ldap/usr/lib/firewalld/services/freeipa-ldap.xml
freeipa-ldaps/usr/lib/firewalld/services/freeipa-ldaps.xml
dns/usr/lib/firewalld/services/dns.xml

必須ポートの開放

  1. firewalld サービスが稼働していることを確認します。
    • firewalld が実行中かどうかを確認するには、以下を実行します。
      # systemctl status firewalld.service
    • firewalld を起動し、システム起動時に自動的に起動するように設定するには、以下を実行します。
      # systemctl start firewalld.service
      # systemctl enable firewalld.service
  2. firewall-cmd ユーティリティーを使って必須ポートを開きます。以下のいずれかのオプションを選択します。
    1. firewall-cmd --add-port コマンドを使用して個別ポートをファイアウォールに追加します。たとえば、デフォルトゾーンのポートを開くには、以下を実行します。
      # firewall-cmd --permanent --add-port={80/tcp,443/tcp,list_of_ports}
    2. firewall-cmd --add-service コマンドを使用して firewalld サービスをファイアウォールに追加します。たとえば、デフォルトゾーンのポートを開くには、以下を実行します。
      # firewall-cmd --permanent --add-service={freeipa-ldap,list_of_services}
    firewall-cmd を使用してシステム上でポートを開く方法についての詳細は、『セキュリティーガイド』または firewall-cmd(1) man ページを参照してください。
  3. firewall-cmd 設定をリロードして、変更が直ちに反映されるようにします。
    # firewall-cmd --reload
    実稼働環境のシステムで firewalld を再読み込みすると、DNS 接続がタイムアウトされてしまう可能性があります。『Security Guide』の「コマンドラインインターフェース (CLI) を使ったファイアウォール設定のリロード」も参照してください。必要であれば、タイムアウトのリスクを回避するため、--permanent オプションなしでこのコマンドを再度実行して、実行中のシステムに変更を適用します。
  4. これはオプションです。 ポートが現在使用可能であることを確認するには、nctelnet、または nmap のユーティリティーを使用してポートに接続するか、ポートスキャンを実行します。