ノート:

FreeIPAサーバーをOracle Linuxにインストールします

イントロダクション

FreeIPAは、Linuxネットワーク環境用のオープンソースのアイデンティティおよび認証管理システムです。サーバーには中央データ・ストアとして389ディレクトリ・サーバーが含まれており、完全なマルチマスターLDAPv3機能を提供します。

このチュートリアルの範囲を超えて、FreeIPAは、ISCバインドサーバーを介したシングルサインオン認証のためのMIT Kerberos、Dogtag認証局、およびオプションのドメイン名管理も提供します。

このチュートリアルでは、FreeIPAをインストールし、含まれているLDAPディレクトリを構成する方法を示します。

目的

必要事項

FreeIPAの要件の詳細は、アップストリームのクイック・スタート・ガイドを参照してください。

演習環境の設定

ノート: 無料のラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Lab Basicsを参照してください。

  1. 端末を開き、sshを介してfreeipa- serverインスタンスに接続します(まだ接続されていない場合)。

    ssh oracle@<ip_address_of_instance>
    

サーバーHostNameの確認

FreeIPAサーバーでは、動作中のDNS構成が必要です。ipaコマンドライン・ツールを使用して登録されたクライアントは、ファイル/etc/ipa/default.confで定義されたxmlrpc_urlおよびdomainパラメータでサーバーを検索します。

  1. サーバーのホスト名を確認します。

    sudo hostname
    

    出力にlocalhostまたはlocalhost6は返されません。

完全修飾ドメイン名(FQDN)を確認します。

FreeIPAには、インストール時に検証されるFQDNの64文字の制限があります。FQDNが64文字を超える場合は、sudo hostnamectl set-hostname NAME (NAMEはFQDN)を使用して短縮します。

  1. FQDNとその長さを確認します。

    hostname -f
    
    echo $(hostname -f) | wc -m
    

    ノート: FQDNはfreeipa.<RND_SUBNET>.linuxvirt.oraclevcn.comで構成されます。<RND_SUBNET>は、先頭に文字oが付いた4文字のランダム文字列です。

名前解決を確認します。

  1. サーバーのIPアドレスを取得します。

    sudo ip addr show
    

    出力例:

    [oracle@freeipa ~]$ sudo ip addr show
    ...
    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:00:17:02:b3:9e brd ff:ff:ff:ff:ff:ff
        altname enp0s3
        inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3
           valid_lft 85923sec preferred_lft 85923sec
        inet6 fe80::200:17ff:fe02:b39e/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    IPv4アドレスは、inetで始まる行に表示されます。

  2. 転送 DNS構成を確認します。

    host $(hostname -f)
    

    出力例:

    [oracle@freeipa ~]$ host $(hostname -f)
    freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
    

    フォワードDNS構成を確認する別の方法は、dig +short $(hostname -f) Aを使用することです。hostdigはどちらもbind-utilsパッケージの一部であり、DNSネーム・サーバーを問い合せるための様々なユーティリティを提供します。

  3. 逆引きDNS構成(PTRレコード)を確認します。

    host $(hostname -i)
    

    出力例:

    [oracle@freeipa ~]$ host $(hostname -i)
    150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
    

    かわりに、dig +short -x $(hostname -i)を使用します。

必要なファイアウォール・ポートを開く

FreeIPAでは、複数のポートを開いて、そのサービスと通信できるようにする必要があります。

サービス ポート プロトコル
HTTP/HTTPS 80,443 TCP
LDAP/LDAP 389,636 TCP
Kerberos 88,464 TCPとUDP
DNS 53 TCPとUDP
プロトコル 123 UDP

Oracle Linuxは、これらの必要なポートを開くためのfreeipa-4サービスを提供します。詳細は、/usr/lib/firewalld/services/freeipa-4.xmlを参照してください。freeipa-4サービスは、非推奨のfreeipa-ldapおよびfreeipa-ldapsサービスを置き換えます。

  1. firewalldサービスを追加します。

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
    sudo firewall-cmd --reload
    

必要なパッケージのインストール

  1. 統合DNSサービスを使用せずに、FreeIPAサーバーのパッケージをインストールします。

    sudo dnf install ipa-server -y
    

    ノート: 統合DNSサービスは、このチュートリアルの一部として使用されません。必要に応じて、パッケージipa-server-dnsをインストール・リストに追加します。

FreeIPAサーバーのインストールおよび構成

  1. インストール・ユーティリティを実行します。

    sudo ipa-server-install
    

    スクリプトは、インストール・ログ・ファイルの場所と、FreeIPAサーバーに含まれる内容のサマリーを指定して開始します。

    出力例:

    [oracle@freeipa ~]$ sudo ipa-server-install
       
    The log file for this installation can be found in /var/log/ipaserver-install.log
    ==============================================================================
    This program will set up the IPA Server.
    Version 4.9.8
       
    This includes:
      * Configure a stand-alone CA (dogtag) for certificate management
      * Configure the NTP client (chronyd)
      * Create and configure an instance of Directory Server
      * Create and configure a Kerberos Key Distribution Center (KDC)
      * Configure Apache (httpd)
      * Configure SID generation
      * Configure the KDC to enable PKINIT
    ...
    

    その後、スクリプトはいくつかのプロンプトを使用してサーバーの構成を設定します。端末はプロンプトに対するデフォルトの応答を大カッコ内に表示し、Enterを押すとデフォルトの応答を受け入れます。

  2. noのデフォルトのレスポンスを受け入れて、統合DNSサービスを構成します。

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. デフォルトのホスト名、ドメイン名、レルム名を受け入れます。

    これらは、この演習の最初で検証された値です。レルム名は、すべて大文字のプライマリDNSドメイン名と一致することをお薦めします。

    Enter the fully qualified domain name of the computer
    on which you're setting up server software. Using the form
    <hostname>.<domainname>
    Example: master.example.com.
    
    
    Server host name [freeipa.o6fb5.linuxvirt.oraclevcn.com]: 
    
    The domain name has been determined based on the host name.
    
    Please confirm the domain name [o6fb5.linuxvirt.oraclevcn.com]: 
    
    The kerberos protocol requires a Realm name to be defined.
    This is typically the domain name converted to uppercase.
    
    Please provide a realm name [O6FB5.linuxvirt.ORACLEVCN.COM]:
    
  4. ディレクトリ・サーバー・スーパーユーザーおよびFreeIPA adminユーザーのパスワードを入力して確認します。

    ディレクトリ・サーバー・スーパーユーザーは、ディレクトリ内のcn=Directory Managerにマップされます。

    Certain directory server operations require an administrative user.
    This user is referred to as the Directory Manager and has full access
    to the Directory for system management tasks and will be added to the
    instance of directory server created for IPA.
    The password must be at least 8 characters long.
    
    Directory Manager password: 
    Password (confirm): 
    
    The IPA server requires an administrative user, named 'admin'.
    This user is a regular system account used for IPA server administration.
    
    IPA admin password: 
    Password (confirm): 
    
  5. NETBIOSドメイン名のデフォルトを受け入れ、chronyを構成します。

    NetBIOS domain name [O6FB5]: 
    
    Do you want to configure chrony with NTP server or pool address? [no]:
    
  6. このスクリプトは、サーバー構成のサマリーを表示します。

  7. yesと入力してサーバー構成を受け入れます。

    Continue to configure the system with these values? [no]: yes
    
  8. スクリプトはサーバーの構成に進みます。

    この操作が完了するまでには数分かかる場合があります。

    ...
    Client configuration complete.
    The ipa-client-install command was successful
    
    Please add records in this file to your DNS system: /tmp/ipa.system.records.mv9i0ec2.db
    ==============================================================================
    Setup complete
    
    Next steps:
    	1. You must make sure these network ports are open:
    		TCP Ports:
    		  * 80, 443: HTTP/HTTPS
    		  * 389, 636: LDAP/LDAPS
    		  * 88, 464: kerberos
    		UDP Ports:
    		  * 88, 464: kerberos
    		  * 123: ntp
    
    	2. You can now obtain a kerberos ticket using the command: 'kinit admin'
    	   This ticket will allow you to use the IPA tools (e.g., ipa user-add)
    	   and the web user interface.
    
    Be sure to back up the CA certificates stored in /root/cacert.p12
    These files are required to create replicas. The password for these
    files is the Directory Manager password
    The ipa-server-install command was successful
    

    完了すると、スクリプトによって次のものが提供されます。

    • サマリー。
    • DNSシステムに追加するレコードのリスト。
    • 生成されたCA証明書をバックアップするための推奨事項。

    必要なネットワーク・ポートは、freeipa-4 firewalldサービスを使用してすでにオープンしています。

FreeIPAサーバーのテスト

FreeIPAインストールには、サーバーと対話するためのコマンドライン・クライアントおよびWebUIが含まれています。WebUIの使用は、このチュートリアルの範囲外です。

コマンドライン・インタフェース(CLI)へのアクセス

  1. Kerberosレルムに対してadminユーザーを認証します。

    kinit admin
    

    プロンプトが表示されたら、インストールおよび構成のステップで作成したadminユーザーのパスワードを入力します。次に、kinitコマンドによってKerberosチケットが生成されます。

  2. チケットの情報を表示

    klist
    

    出力例:

    [oracle@freeipa ~]$ sudo klist
    Ticket cache: KCM:0
    Default principal: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM
    
    Valid starting       Expires              Service principal
    09/28/2022 14:05:46  09/29/2022 13:05:53  krbtgt/O6FB5.LINUXVIRT.ORACLEVCN.COM@O6FB5.LINUXVIRT.ORACLEVCN.COM
    
  3. FreeIPAサーバー上のすべての既存ユーザーのリストを取得します。

    ipa user-find
    

    結果には、現在存在している唯一のユーザーであるadminユーザーが返されます。

    出力例:

    [oracle@freeipa ~]$ sudo ipa user-find
    --------------
    1 user matched
    --------------
      User login: admin
      Last name: Administrator
      Home directory: /home/admin
      Login shell: /bin/bash
      Principal alias: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM
      UID: 872200000
      GID: 872200000
      Account disabled: False
    ----------------------------
    Number of entries returned 1
    ----------------------------
    

セキュリティ設定とハードニング

FreeIPAサーバーをセキュアに使用する方法をいくつか示します。

匿名バインドを無効にする

FreeIPA LDAPサーバーでは、匿名バインドをデフォルトとして使用できるため、特定の構成設定およびディレクトリ値が公開されます。

この動作は、nsslapd-allow-anonymous-access属性によって制御されます。有効な値は次のとおりです。

offを使用すると外部クライアントによるサーバー構成のチェックもブロックされるため、匿名バインドを禁止する場合は、offではなくrootdseを使用することをお薦めします。LDAPやWebクライアントなどの非ドメイン・クライアントは、ルートDSEファイルを読み取って接続の詳細を取得することで匿名で接続します。

  1. 匿名バインドが有効になっているかどうかを確認します。

    ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    
    • -xは、単純認証または匿名認証を設定します。
    • -hは、LDAPサーバー・ホストを設定します。
    • -bは、検索用のベースDNを設定します。

    FreeIPAサーバーのベースDNを含むキー設定は、/etc/ipa/default.confファイルに格納されます。

    $RND_SUBNETは、フリー・ラボ環境で設定される環境変数で、FQDN内の4文字のランダム化された文字列を表します。

    出力例:

    ...
    # Default SMB Group, groups, accounts, o6fb5.linuxvirt.oraclevcn.com
    dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=o6fb5,dc=linuxvirt,dc=oraclevc
     n,dc=com
    cn: Default SMB Group
    description: Fallback group for primary group RID, do not add users to this gr
     oup
    objectClass: top
    objectClass: ipaobject
    objectClass: posixgroup
    objectClass: ipantgroupattrs
    ipaUniqueID: 0c9cf178-4324-11ed-bf0b-02001704fe22
    gidNumber: 921600001
    ipaNTSecurityIdentifier: S-1-5-21-2697967063-3375457457-2974965896-1001
      
    # search result
    search: 2
    result: 0 Success
      
    # numResponses: 110
    # numEntries: 109
    

    検索結果は、LDAPディレクトリのツリー全体を返します。

  2. 構成を変更し、匿名バインドを無効にします。

    ldapmodifyコマンドは、変更内容を含むLDIFファイルを受け入れるか、標準入力から操作を読み取ります。

    1. LDIFファイルを作成します。

      cat << 'EOF' | tee ~/disable_anon_bind.ldif > /dev/null
      dn: cn=config
      changetype: modify
      replace: nsslapd-allow-anonymous-access
      nsslapd-allow-anonymous-access: rootdse
      EOF
      

      複数の属性を変更するには、1行でダッシュ-文字で区切ります。追加する各変更は、属性変更タイプから始まり、必要な属性を与えます。

    2. LDIFの変更を適用します。

      ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
      
      • -xは、単純認証または匿名認証を設定します。
      • -Dは、バインドDNを設定します。
      • -Wは、LDAPのadminパスワードの入力を求めます。
      • -Hは、LDAPサーバー・ホストではなく、LDAP Uniform Resource Identifier (URI)を使用して接続します。
      • -ZZは、TLSリクエストを開始し、正常なレスポンスを強制します。

      ノート: 自己署名証明書を使用するため、-ZZが必要です。

      出力例:

      [oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
      Enter LDAP Password: 
      modifying entry "cn=config"
      
    3. FreeIPAサーバーを再起動します。

      sudo systemctl restart ipa.service
      
  3. ディレクトリを匿名で問い合せて、変更を確認します。

    ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    

    レスポンスAnonymous access is not allowedに注意してください。

    出力例:

    [oracle@freeipa ~]$ ldapsearch -x -h freeipa.o6fb5.linuxvirt.oraclevcn.com -b dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com
    # extended LDIF
    #
    # LDAPv3
    # base <dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
      
    # search result
    search: 2
    result: 48 Inappropriate authentication
    text: Anonymous access is not allowed.
      
    # numResponses: 1
    
  4. 認証を使用してディレクトリの問合せが機能することを確認します。

    ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
    

    出力例:

    ...
    # freeipa.o6fb5.linuxvirt.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, 
     o6fb5.linuxvirt.oraclevcn.com
    dn: dnaHostname=freeipa.o6fb5.linuxvirt.oraclevcn.com+dnaPortNum=389,cn=subord
     inate-ids,cn=dna,cn=ipa,cn=etc,dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com
    objectClass: dnaSharedConfig
    objectClass: top
    dnaHostname: freeipa.o6fb5.linuxvirt.oraclevcn.com
    dnaPortNum: 389
    dnaSecurePortNum: 636
    dnaRemainingValues: 32766
      
    # search result
    search: 2
    result: 0 Success
      
    # numResponses: 475
    # numEntries: 474
    

TLSが有効であることの確認

Oracle Linux 8以降、FreeIPAはシステム全体の暗号化ポリシーを使用します。詳細は、crypto-policies(7)のマニュアルページを参照してください。

  1. 現在のシステム全体の暗号化ポリシーを一覧表示します。

    cat /etc/crypto-policies/config
    
  2. 暗号化ポリシーの詳細を一覧表示します。

    cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
    

    出力例:

    [oracle@freeipa ~]$ cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
    library=
    name=Policy
    NSS=flags=policyOnly,moduleDB
    config="disallow=ALL allow=HMAC-SHA256:HMAC-SHA1:HMAC-SHA384:HMAC-SHA512:CURVE25519:SECP256R1:SECP384R1:SECP521R1:aes256-gcm:chacha20-poly1305:aes256-cbc:aes128-gcm:aes128-cb   > c:SHA256:SHA384:SHA512:SHA224:ECDHE-RSA:ECDHE-ECDSA:RSA:DHE-RSA:ECDSA:RSA-PSS:RSA-PKCS:tls-version-min=tls1.2:dtls-version-min=dtls1.2:DH-MIN=2048:DSA-MIN=2048:RSA-MIN=2048"
    

    DEFAULTポリシーでは、少なくともTLS 1.2が使用されていることに注意してください。

FreeIPAサーバー・ステータスの確認

FreeIPAサーバーには、構成済サービスのステータスを表示するためのipactlユーティリティが含まれています。同じユーティリティで、FreeIPAサーバー全体を起動、停止および再起動することもできます。個々のコンポーネントをstartstopまたはrestartする必要がある場合は、systemctl COMMAND name.serviceを使用します。

  1. すべてのサービスのステータスを表示します。

    sudo ipactl status
    

    出力例:

    [oracle@freeipa ~]$ sudo ipactl status
    Directory Service: RUNNING
    krb5kdc Service: RUNNING
    kadmin Service: RUNNING
    httpd Service: RUNNING
    ipa-custodia Service: RUNNING
    pki-tomcatd Service: RUNNING
    ipa-otpd Service: RUNNING
    ipa: INFO: The ipactl command was successful
    

    追加のコマンド・オプションを表示するには、sudo ipactl --helpを使用します。

ユーザーおよびグループの作成

FreeIPAサーバーの基本的なインストールおよび構成が完了したら、次のステップでは、ユーザーおよびグループの作成で構成されるアイデンティティ管理を処理します。これを行う前に、Kerberosトークンを生成します。

  1. ユーザーadminのトークンを生成します。

    kinit admin
    
  2. 既存のトークンのリストを取得します。

    klist
    

    Kerberosトークンは、デフォルトで24時間有効です。「コマンド行インタフェース(CLI)へのアクセス」という手順でこれらのコマンドを以前に実行していたため、新しいトークンを作成するのではなく、リストには元のトークンが表示されます。

  3. 新しいユーザー・グループを追加します。

    FreeIPAは、標準パスワード・ポリシー、権限およびその他の特性を持つユーザーのセットとしてユーザー・グループを定義します。

    ユーザー・グループには次のものを含めることができます。

    • ユーザー
    • その他のユーザー・グループ
    • FreeIPAの外部に存在する外部ユーザー

   ipa group-add foo

出力例:

[oracle@freeipa ~]$ ipa group-add foo
-----------------
Added group "foo"
-----------------
  Group name: foo
  GID: 1326400003

FreeIPAサーバーは、次の3つのグループ・タイプをサポートしています。

グループfooはPOSIXユーザー・グループです。別のグループ・タイプを指定するには、次のいずれかのオプションを使用します。

   ipa group-find

出力例:

[oracle@freeipa ~]$ ipa group-find
----------------
5 groups matched
----------------
  Group name: admins
  Description: Account administrators group
  GID: 1326400000
   
  Group name: editors
  Description: Limited admins who can edit other users
  GID: 1326400002
   
  Group name: foo
  GID: 1326400003
   
  Group name: ipausers
  Description: Default group for all users
  
  Group name: trust admins
  Description: Trusts administrators group
----------------------------
Number of entries returned 5
----------------------------

FreeIPAサーバーは、インストール中に次のユーザー・グループを作成します。

警告: デフォルトのadminユーザーが含まれているため、adminグループを削除しないでください。FreeIPAサーバーが正しく動作するには、adminグループが必要です。

  1. 新しいユーザーアカウントを追加します。

    ipa user-add
    

    このコマンドは、FreeIPAがユーザー・アカウントを作成するために必要な最小限のデータ・セットを求める対話型スクリプトを実行します。

    出力例:

    [oracle@freeipa ~]$ ipa user-add
    First name: Oracle
    Last name: User
    User login [ouser]: oracle
    -------------------
    Added user "oracle"
    -------------------
      User login: oracle
      First name: Oracle
      Last name: User
      Full name: Oracle User
      Display name: Oracle User
      Initials: OU
      Home directory: /home/oracle
      GECOS: Oracle User
      Login shell: /bin/sh
      Principal name: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM
      Principal alias: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM
      Email address: oracle@od1f5.linuxvirt.oraclevcn.com
      UID: 1326400004
      GID: 1326400004
      Password: False
      Member of groups: ipausers
      Kerberos keys available: False
    

    または、複数のオプションを指定してコマンドを実行すると、非対話モードでユーザーアカウントを作成できます。使用可能なオプションのリストを取得するには、ipa user-add --helpを実行します。

  2. 新しいユーザー・グループに新しいユーザーを追加します。

    ipa group-add-member foo --users=oracle
    

    出力例:

    [oracle@freeipa ~]$ ipa group-add-member foo --users=oracle
      Group name: foo
      GID: 1326400003
      Member users: oracle
    -------------------------
    Number of members added 1
    -------------------------
    

ipaコマンドには、表示されている機能よりも多くの機能があります。追加のコマンドについては、ipa help commandsを実行して包括的なリストを表示します。

概要

この演習では、FreeIPAサーバーのインストールと使用の基本を説明します。FreeIPAには、ここで説明する以外にも多くの追加機能があるため、次のリンクを使用するか、製品マニュアル・ページを参照してください。

詳細情報

他の関連リソースを見る:

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。