ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
FreeIPAサーバーをOracle Linuxにインストールします
イントロダクション
FreeIPAは、Linuxネットワーク環境用のオープンソースのアイデンティティおよび認証管理システムです。サーバーには中央データ・ストアとして389ディレクトリ・サーバーが含まれており、完全なマルチマスターLDAPv3機能を提供します。
このチュートリアルの範囲を超えて、FreeIPAは、ISCバインドサーバーを介したシングルサインオン認証のためのMIT Kerberos、Dogtag認証局、およびオプションのドメイン名管理も提供します。
このチュートリアルでは、FreeIPAをインストールし、含まれているLDAPディレクトリを構成する方法を示します。
目的
- FreeIPAサーバーのインストール
- 匿名バインドを無効にする
- ユーザーとグループの追加
必要事項
- 2つ以上のvCPUs、2GBのRAMおよびOracle Linuxがインストールされているシステム
- サーバーのIPアドレスを指すFQDN (完全修飾ドメイン名)
FreeIPAの要件の詳細は、アップストリームのクイック・スタート・ガイドを参照してください。
演習環境の設定
ノート: 無料のラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Lab Basicsを参照してください。
-
端末を開き、sshを介してfreeipa- serverインスタンスに接続します(まだ接続されていない場合)。
ssh oracle@<ip_address_of_instance>
サーバーHostNameの確認
FreeIPAサーバーでは、動作中のDNS構成が必要です。ipa
コマンドライン・ツールを使用して登録されたクライアントは、ファイル/etc/ipa/default.conf
で定義されたxmlrpc_url
およびdomain
パラメータでサーバーを検索します。
-
サーバーのホスト名を確認します。
sudo hostname
出力に
localhost
またはlocalhost6
は返されません。
完全修飾ドメイン名(FQDN)を確認します。
FreeIPAには、インストール時に検証されるFQDNの64文字の制限があります。FQDNが64文字を超える場合は、sudo hostnamectl set-hostname NAME
(NAME
はFQDN)を使用して短縮します。
-
FQDNとその長さを確認します。
hostname -f
echo $(hostname -f) | wc -m
ノート: FQDNは
freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com
で構成されます。<RND_SUBNET>
は、先頭に文字o
が付いた4文字のランダム文字列です。
名前解決を確認します。
-
サーバーの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
で始まる行に表示されます。 -
転送 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
を使用することです。host
とdig
はどちらもbind-utils
パッケージの一部であり、DNSネーム・サーバーを問い合せるための様々なユーティリティを提供します。 -
逆引き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
サービスを置き換えます。
-
firewalld
サービスを追加します。sudo firewall-cmd --permanent --add-service=freeipa-4
sudo firewall-cmd --reload
必要なパッケージのインストール
-
統合DNSサービスを使用せずに、FreeIPAサーバーのパッケージをインストールします。
sudo dnf install ipa-server -y
ノート: 統合DNSサービスは、このチュートリアルの一部として使用されません。必要に応じて、パッケージ
ipa-server-dns
をインストール・リストに追加します。
FreeIPAサーバーのインストールおよび構成
-
インストール・ユーティリティを実行します。
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
を押すとデフォルトの応答を受け入れます。 -
no
のデフォルトのレスポンスを受け入れて、統合DNSサービスを構成します。Do you want to configure integrated DNS (BIND)? [no]:
-
デフォルトのホスト名、ドメイン名、レルム名を受け入れます。
これらは、この演習の最初で検証された値です。レルム名は、すべて大文字のプライマリ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]:
-
ディレクトリ・サーバー・スーパーユーザーおよび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):
-
NETBIOSドメイン名のデフォルトを受け入れ、chronyを構成します。
NetBIOS domain name [O6FB5]: Do you want to configure chrony with NTP server or pool address? [no]:
-
このスクリプトは、サーバー構成のサマリーを表示します。
-
yes
と入力してサーバー構成を受け入れます。Continue to configure the system with these values? [no]: yes
-
スクリプトはサーバーの構成に進みます。
この操作が完了するまでには数分かかる場合があります。
... 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)へのアクセス
-
Kerberosレルムに対して
admin
ユーザーを認証します。kinit admin
プロンプトが表示されたら、インストールおよび構成のステップで作成した
admin
ユーザーのパスワードを入力します。次に、kinit
コマンドによってKerberosチケットが生成されます。 -
チケットの情報を表示
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
-
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
属性によって制御されます。有効な値は次のとおりです。
on
: すべての匿名バインドを許可します(デフォルト)rootdse
: ルートDSE情報に対してのみ匿名バインドを許可しますoff
: 匿名バインドを禁止します
off
を使用すると外部クライアントによるサーバー構成のチェックもブロックされるため、匿名バインドを禁止する場合は、off
ではなくrootdse
を使用することをお薦めします。LDAPやWebクライアントなどの非ドメイン・クライアントは、ルートDSEファイルを読み取って接続の詳細を取得することで匿名で接続します。
-
匿名バインドが有効になっているかどうかを確認します。
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ディレクトリのツリー全体を返します。
-
構成を変更し、匿名バインドを無効にします。
ldapmodify
コマンドは、変更内容を含むLDIFファイルを受け入れるか、標準入力から操作を読み取ります。-
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行でダッシュ
-
文字で区切ります。追加する各変更は、属性変更タイプから始まり、必要な属性を与えます。 -
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"
-
FreeIPAサーバーを再起動します。
sudo systemctl restart ipa.service
-
-
ディレクトリを匿名で問い合せて、変更を確認します。
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
-
認証を使用してディレクトリの問合せが機能することを確認します。
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)
のマニュアルページを参照してください。
-
現在のシステム全体の暗号化ポリシーを一覧表示します。
cat /etc/crypto-policies/config
-
暗号化ポリシーの詳細を一覧表示します。
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サーバー全体を起動、停止および再起動することもできます。個々のコンポーネントをstart
、stop
またはrestart
する必要がある場合は、systemctl COMMAND name.service
を使用します。
-
すべてのサービスのステータスを表示します。
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トークンを生成します。
-
ユーザー
admin
のトークンを生成します。kinit admin
-
既存のトークンのリストを取得します。
klist
Kerberosトークンは、デフォルトで24時間有効です。「コマンド行インタフェース(CLI)へのアクセス」という手順でこれらのコマンドを以前に実行していたため、新しいトークンを作成するのではなく、リストには元のトークンが表示されます。
-
新しいユーザー・グループを追加します。
FreeIPAは、標準パスワード・ポリシー、権限およびその他の特性を持つユーザーのセットとしてユーザー・グループを定義します。
ユーザー・グループには次のものを含めることができます。
- ユーザー
- その他のユーザー・グループ
- FreeIPAの外部に存在する外部ユーザー
ipa group-add foo
出力例:
[oracle@freeipa ~]$ ipa group-add foo ----------------- Added group "foo" ----------------- Group name: foo GID: 1326400003
FreeIPAサーバーは、次の3つのグループ・タイプをサポートしています。
- POSIX (デフォルト)
- 非POSIX
- 外部
グループfoo
はPOSIXユーザー・グループです。別のグループ・タイプを指定するには、次のいずれかのオプションを使用します。
--nonposix
: 非POSIXグループを作成します。--external
: 外部グループを作成します- 既存のすべてのユーザー・グループのリストを取得します。
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サーバーは、インストール中に次のユーザー・グループを作成します。
admins
ipausers
trust admins
警告: デフォルトの
admin
ユーザーが含まれているため、admin
グループを削除しないでください。FreeIPAサーバーが正しく動作するには、admin
グループが必要です。
-
新しいユーザーアカウントを追加します。
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
を実行します。 -
新しいユーザー・グループに新しいユーザーを追加します。
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を参照してください。
Install FreeIPA Server on Oracle Linux
F71514-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.