ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で使用できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
Oracle LinuxへのFreeIPAサーバーのインストール
イントロダクション
FreeIPAは、Linuxネットワーク環境用のオープンソースのアイデンティティおよび認証管理システムです。サーバーには、389ディレクトリ・サーバーが中央データ・ストアとして含まれ、完全なマルチマスターLDAPv3機能が提供されます。
このチュートリアルの範囲を超えて、FreeIPAは、ISCバインド・サーバーを介したシングル・サインオン認証用のMIT Kerberos、ドッグタグ認証局およびオプションのドメイン名管理も提供します。
このチュートリアルでは、FreeIPAをインストールし、組込みLDAPディレクトリを構成する方法を示します。
目的
このチュートリアルでは、次の方法を学習します。
- FreeIPAサーバーのインストール
- 匿名バインドの無効化
- ユーザーとグループの追加
前提条件
-
単一のOracle Linuxシステムの最少数
-
各システムには、次を使用してOracle Linuxがインストールおよび構成されている必要があります。
- sudoアクセス権を持つroot以外のユーザー・アカウント
- インターネットへのアクセス
- サーバーのIPアドレスを指すFQDN (完全修飾ドメイン名)
FreeIPAの要件の詳細は、アップストリームのクイック・スタート・ガイドを参照してください。
Oracle Linuxのデプロイ
ノート:独自のテナンシで実行している場合は、演習環境をデプロイする前に、linux-virt-labs GitHubプロジェクトREADME.mdを読み、前提条件を完了してください。
-
Lunaデスクトップでターミナルを開きます。
-
linux-virt-labsGitHubプロジェクトをクローニングします。git clone https://github.com/oracle-devrel/linux-virt-labs.git -
作業ディレクトリに変更します。
cd linux-virt-labs/ol -
必要なコレクションをインストールします。
ansible-galaxy collection install -r requirements.yml -
Oracle Linuxインスタンス構成を更新します。
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "freeipa" type: "server" EOF -
演習環境をデプロイします。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"無料の演習環境には、ローカル・ホストで実行される再生の
ansible_python_interpreterを設定する追加の変数local_python_interpreterが必要です。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9を使用するには、デプロイメント・コマンドに
-e instance_shape="VM.Standard3.Flex"または-e os_version="9"を追加します。重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階では、Oracle Linuxのインストールが完了し、インスタンスの準備ができました。前回の再生をノートにとります。この再生では、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報が出力されます。
サーバーDNS構成の確認
FreeIPAサーバーには、動作中のDNS設定が必要です。ipaコマンドライン・ツールを使用して登録されたクライアントは、/etc/ipa/default.confファイルに定義されているxmlrpc_urlおよびdomainパラメータによってサーバーを検索します。
-
端末を開き、SSH経由でfreeipaインスタンスに接続します。
ssh oracle@<ip_address_of_instance> -
サーバーのホスト名を確認します。
sudo hostname出力は、
localhostまたはlocalhost6を返さないでください。
完全修飾ドメイン名(FQDN)を確認します。
FreeIPAには、インストール時に検証されるFQDNに対して64文字の制限があります。FQDNが64文字を超える場合は、sudo hostnamectl set-hostname NAME(NAMEはFQDN)を使用して短縮します。
-
FQDNとその長さを確認します。
hostname -f -
FQDNの長さの取得
echo $(hostname -f) | wc -m
名前解決を確認します。
-
サーバーのIPアドレスを取得します。
ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'ens3は、システム上のネットワーク・インタフェースの名前です。 -
転送 DNS構成を確認します。
host $(hostname -f)転送DNS構成を検証する別の方法は、
dig +short $(hostname -f) Aを使用することです。hostとdigはどちらもbind-utilsパッケージの一部であり、DNSネーム・サーバーに問い合せる様々なユーティリティを提供します。 -
逆引きDNS構成(PTRレコード)を確認します。
host $(hostname -i)別の方法として、
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 |
| NTP | 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 -
変更が有効になるようにfirewalldサービスをリロードします。
sudo firewall-cmd --reload
必須パッケージのインストール
-
FreeIPAモジュール・ストリームおよびプロファイルを有効にします。
Oracle Linux 8:
sudo dnf module enable -y idm:DL1Oracle Linux 9およびOracle Linux 10:
FreeIPAパッケージはAppStreamリポジトリの一部であるため、Oracle Linux 9では何もする必要はありません。
-
統合DNSサービスを使用せずに、FreeIPAサーバーのパッケージをインストールします。
sudo dnf install -y ipa-serverノート:このチュートリアルでは、統合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.lv.vcn.oraclevcn.com]: The domain name has been determined based on the host name. Please confirm the domain name [lv.vcn.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 [LV.VCN.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ドメイン名を設定し、
noを使用してクロニーを構成します。NetBIOS domain name [LV]: 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-4firewalldサービスを使用してすでに開いています。
FreeIPAサーバーのテスト
FreeIPAインストールには、コマンドライン・クライアントと、サーバーと対話するためのWebUIが含まれます。WebUIの使用は、このチュートリアルの範囲外です。
コマンドライン・インタフェース(CLI)にアクセスする
-
Kerberosレルムに対して
adminユーザーを認証します。kinit adminプロンプトが表示されたら、インストールおよび構成ステップで作成した
adminユーザーのパスワードを入力します。次に、kinitコマンドによってKerberosチケットが生成されます。 -
チケットの情報を一覧表示します
klist出力例:
[oracle@freeipa ~]$ sudo klist Ticket cache: KCM:0 Default principal: admin@LV.VCN.ORACLEVCN.COM Valid starting Expires Service principal 09/28/2022 14:05:46 09/29/2022 13:05:53 krbtgt/LV.VCN.ORACLEVCN.COM@LV.VCN.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@LV.VCN.ORACLEVCN.COM, root@LV.VCN.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ではなくrootdseを使用することをお薦めします。offを使用すると、外部クライアントによるサーバー構成のチェックもブロックされます。LDAPやWebクライアントなどの非ドメイン・クライアントは、ルートDSEファイルを読み取って接続の詳細を取得することで匿名で接続します。
-
匿名バインドが有効になっているかどうかを確認します。
ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com-xは、簡易認証または匿名認証を設定します。-hは、LDAPサーバー・ホストを設定します。-bは、検索のベースDNを設定します。
FreeIPAサーバーのベースDNを含むキー設定は、
/etc/ipa/default.confファイルに格納されます。出力例:
... # Default SMB Group, groups, accounts, lv.vcn.oraclevcn.com dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=lv,dc=vcn,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複数の属性を単独でダッシュ
-文字で区切ることによって、複数の属性を変更できます。各追加の変更は、属性変更タイプから始まり、必要な属性を提供します。 -
LDIF変更を適用します。
ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif-xは、簡易認証または匿名認証を設定します。-Dは、バインドDNを設定します。-Wは、LDAPadminパスワードの入力を求めます。-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=lv,dc=vcn,dc=oraclevcn,dc=comレスポンス
Anonymous access is not allowedに注意してください。出力例:
[oracle@freeipa ~]$ ldapsearch -x -h freeipa.lv.vcn.oraclevcn.com -b dc=lv,dc=vcn,dc=oraclevcn,dc=com # extended LDIF # # LDAPv3 # base <dc=lv,dc=vcn,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=lv,dc=vcn,dc=oraclevcn,dc=com -W -H ldap://出力例:
... # freeipa.lv.vcn.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, lv.vcn.oraclevcn.com dn: dnaHostname=freeipa.lv.vcn.oraclevcn.com+dnaPortNum=389,cn=subord inate-ids,cn=dna,cn=ipa,cn=etc,dc=lv,dc=vcn,dc=oraclevcn,dc=com objectClass: dnaSharedConfig objectClass: top dnaHostname: freeipa.lv.vcn.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 -
既存のトークンのリストを取得します。
klistKerberosトークンは、デフォルトで24時間有効です。「Access the Command-Line Interface (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サーバーでは、インストール時に次のユーザー・グループが作成されます。
adminsipauserstrust 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@LV.VCN.ORACLEVCN.COM Principal alias: oracle@LV.VCN.ORACLEVCN.COM Email address: oracle@lv.vcn.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を参照してください。