安装和配置FreeIPA服务器和客户端(RHEL/CentOS 7)
在本教程中,我们将学习如何在CentOS 7 Linux节点上安装和安装FreeIPA服务器。
FreeIPA概述
像Microsoft的Active Directory一样,FreeIPA是一个由Red Hat赞助的开源项目,它使管理基于Linux的服务器的身份,策略和审核变得容易。
IPA代表" I"身份," P"政策和" A"认证。
IPA是非常有用的服务的集合,这些服务使IPA成为Microsoft环境中的Linux(与Active Directory等效)。
它包括LDAP(轻量级目录访问协议),该协议允许用户存储在分层数据库或者复制数据库中。
它包含" Kerberos",它允许使用高级身份验证票证,以确保不需要将任何密码以纯文本格式发送到LDAP服务器。
它还包括" DNS",这有助于将Kerberos所需的所有信息存储在DNS数据库中。
它包括一个"证书颁发机构"。
证书颁发机构,可以生成用于例如AODV邮件服务器或者Apache Web服务器的PKI证书。总的来说,它具有
Tomcat
。
Tomcat,以一种有效的方式提供Web访问来管理所有这些。
如果我们看的是没有IPA的Linux,那么管理LDAP和Kerberos以及DNS和CA可能会非常困难。
如果我们在Linux上运行IPA,那么我们将获得易于使用的Web界面。
客户端-服务器架构
IPA遵循基于客户端-服务器的模型。
这意味着在每个服务器中,都有一个IPA客户端已安装并连接到IPA服务器。
每当用户想要访问服务器时,IPA客户端都会连接到IPA服务器,以检查用户是否具有访问权限。
如果存在适当的权限,则授予访问权限;否则,将被拒绝。
"我的设置"为了演示本文,我使用的是CentOS 7.4. 以下是我将用来演示本文的节点详细信息
另请阅读:
分步教程:在CentOS/RHEL 8 Linux中安装和配置FreeIPA服务器
安装FreeIPA服务器CentOS 7
首先,让我们搜索配置FreeIPA服务器所需的软件包名称。
[root@node1 ~]# yum search ipa-server Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iitm.ac.in * extras: centos.mirrors.estointernet.in * updates: centos.mirrors.estointernet.in ================================================= N/S matched: ipa-server ================================================= ipa-server.x86_64 : The IPA authentication server ipa-server-common.noarch : Common files used by IPA server ipa-server-dns.noarch : IPA integrated DNS server with support for automatic DNSSEC signing ipa-server-trust-ad.x86_64 : Virtual package to install packages required for Active Directory trusts Name and summary matches only, use "search all" for everything.
所以现在我们知道我们需要ipa-server
和ipa-server-dns
rpm来设置我们的FreeIPA服务器。
[root@node1 ~]# yum install ipa-server.x86_64 ipa-server-dns.noarch -y
安装后,使用设置中所有节点的FQDN名称更新主机文件。
否则,FreeIPA服务器配置将无法工作。
[root@node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.2.31 node2.example.com node2 10.0.2.30 node1.example.com node1 10.0.2.32 node3.example.com node3
配置FreeIPA服务器
执行以下命令以启动FreeIPA中央身份服务器配置。
此命令还将与IPA服务器一起设置DNS服务器。
[root@node1 ~]# ipa-server-install --setup-dns --allow-zone-overlap The log file for this installation can be found in /var/log/ipaserver-install.log ============================================================================== This program will set up the IPA Server. This includes: * Configure a stand-alone CA (dogtag) for certificate management * Configure the Network Time Daemon (ntpd) * Create and configure an instance of Directory Server * Create and configure a Kerberos Key Distribution Center (KDC) * Configure Apache (httpd) * Configure DNS (bind) * Configure the KDC to enable PKINIT To accept the default shown in brackets, press the Enter key. WARNING: conflicting time&date synchronization service 'chronyd' will be disabled in favor of ntpd Enter the fully qualified domain name of the computer on which you're setting up server software. Using the form . Example: master.example.com. Server host name [node1.example.com]: Warning: skipping DNS resolution of host node1.example.com The domain name has been determined based on the host name. Please confirm the domain name [example.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 [EXAMPLE.COM]: 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): Checking DNS domain example.com., please wait ... Do you want to configure DNS forwarders? [yes]: yes Following DNS servers are configured in /etc/resolv.conf: 192.168.0.1, 8.8.8.8 Do you want to configure these servers as DNS forwarders? [yes]: yes All DNS servers from /etc/resolv.conf were added. You can enter additional addresses now: Enter an IP address for a DNS forwarder, or press Enter to skip: Checking DNS forwarders, please wait ... Do you want to search for missing reverse zones? [yes]: Do you want to create reverse zone for IP 10.0.2.30 [yes]: Please specify the reverse zone name [2.0.10.in-addr.arpa.]: Using reverse zone(s) 2.0.10.in-addr.arpa. The IPA Master Server will be configured with: Hostname: node1.example.com IP address(es): 10.0.2.30 Domain name: example.com Realm name: EXAMPLE.COM BIND DNS server will be configured to serve IPA domain with: Forwarders: 192.168.0.1, 8.8.8.8 Forward policy: only Reverse zone(s): 2.0.10.in-addr.arpa. Continue to configure the system with these values? [no]: yes The following operations Jan take some minutes to complete. Please wait until the prompt is returned. Configuring NTP daemon (ntpd) [1/4]: stopping ntpd [2/4]: writing configuration [3/4]: configuring ntpd to start on boot [4/4]: starting ntpd Done configuring NTP daemon (ntpd). <Output trimmed> The ipa-client-install command was successful ============================================================================== 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 * 53: bind UDP Ports: * 88, 464: kerberos * 53: bind * 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
说明:
该命令的执行可能需要5到10分钟,具体取决于系统速度和资源。
因此,看来我们的FreeIPA中央Identity Server配置已成功完成。
如我们所见,该服务希望打开一些必需的防火墙端口,我们将在后续步骤中打开这些端口。
生成Kerberos票证
现在,使用命令kinit admin获得一个kerberos票。
该票证将使我们能够使用IPA工具。
因此,获得kerberos票证意味着我们将以管理员身份进行身份验证。
[root@node1 ~]# kinit admin Password for [email protected]:
在为管理员用户提供密码后,没有任何变化,但是至少我们可以使用某些IPA实用程序。
在FreeIPA中管理用户和组
配置FreeIPA服务器后,IPA服务器将处理身份,策略和身份验证。
IPA服务器的重要组成部分是用户和组。
这是开始使用IPA的主要原因之一,因为它们不想在单个Linux服务器上管理用户。
他们想创建一个LDAP服务器(即IPA服务器)来集中管理用户和组帐户。
在" node1"上打开浏览器,然后导航到" node1.example.com"以打开FreeIPA门户。
接下来,这提供了登录界面,我们可以其中以用户admin的身份使用安装IPA服务器时提供的密码来登录。
这是IPA服务器的主要管理界面。
首先,我想创建一些用户。
为了添加用户,我们有此类别的用户。
单击"添加",如下所示。
提供以下片段中所示的用户详细信息,然后单击"添加"
接下来,验证是否正确创建了用户hynman
。
我们也可以使用命令行ipa工具创建用户。
执行以下命令,并按照提示创建用户。
[root@node1 ~]# ipa user-add First name: rahul Last name: raj User login [rraj]: rahul ----------------- Added user "rahul" ----------------- User login: rahul First name: rahul Last name: raj Full name: rahul raj Display name: rahul raj Initials: rr Home directory: /home/rahul GECOS: rahul raj Login shell: /bin/sh Principal name: [email protected] Principal alias: [email protected] Email address: [email protected] UID: 700200003 GID: 700200003 Password: False Member of groups: ipausers Kerberos keys available: False
其中我们创建了两个用户," hynman"是使用FreeIPA GUI创建的,而" rahul"是使用ipa cli工具创建的。
打开防火墙以进行IPA通信
在防火墙D中,我们具有这种服务概念。
如果我们使用firewall-cmd--get-services,则将获得所有可用服务的列表。
有一些涉及IPA的服务,即freeipa-ldap和freeipa-ldaps。
这些服务都有一个后备XML文件,我们可以在/usr/lib/firewalld/services中找到它。
[root@node1 services]# cd /usr/lib/firewalld/services [root@node1 services]# ls freeipa-* freeipa-ldaps.xml freeipa-ldap.xml freeipa-replication.xml freeipa-trust.xml
因此,如果我们查看freeipa-ldap.xml
的内容,现在我们可以看到它正在打开此端口列表。
如果将其与在安装IPA服务器时被要求打开的端口列表进行比较,则可以看到大多数端口已经其中。
以下是必须为FreeIPA服务器打开的端口列表
TCP Ports: * 80, 443: HTTP/HTTPS * 389, 636: LDAP/LDAPS * 88, 464: kerberos * 53: bind UDP Ports: * 88, 464: kerberos * 53: bind * 123: ntp
让我们在firewalld中添加所有必需的服务,以打开FreeIPA所需的端口
[root@node1 services]# firewall-cmd --permanent --add-service freeipa-ldap success [root@node1 services]# firewall-cmd --permanent --add-service freeipa-ldaps success [root@node1 services]# firewall-cmd --permanent --add-service dns success
现在让我们持续进行更改
[root@node1 services]# firewall-cmd --reload success
验证我们刚刚添加的防火墙规则。
[root@node1 services]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client freeipa-ldap freeipa-ldaps dns ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
将客户端加入IPA域
接下来,我们将服务器(ipa客户端)加入IPA域。
将服务器加入IPA域之前,在ipa客户端上需要满足某些准备工作。
更新主机文件
确保/etc/hosts
具有IPA服务器和localhost的FQDN详细信息。
[root@node2 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.2.31 node2.example.com node2 10.0.2.30 node1.example.com node1 10.0.2.32 node3.example.com node3
在IPA客户端上更新DNS
接下来,在ipa客户端上更新DNS记录,以将IPA服务器用作DNS。
因为ipa客户端必须能够访问IPA服务器进行身份验证和通信。
因此,我们在ipa客户端的主界面配置文件中添加了DNS条目,如下所示
[root@node2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1 HWADDR=08:00:27:DF:87:41 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=10.0.2.31 PREFIX=8 GATEWAY=10.0.2.2 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no NAME="Wired connection 1" UUID=415ba198-453b-38f2-99cd-3281f4aec264 ONBOOT=yes AUTOCONNECT_PRIORITY=-999 DNS1=10.0.2.30
接下来重新启动网络服务
[root@node2 ~]# systemctl restart network [root@node2 ~]# systemctl restart NetworkManager
接下来验证resolv.conf
,它应该指向IPA服务器IP作为名称服务器。
[root@node2 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 10.0.2.30
下一步检查并确保我们仍然可以连接到互联网。
[root@node2 ~]# ping google.com PING google.com (172.217.160.142) 56(84) bytes of data. 64 bytes from 172.217.160.142 (172.217.160.142): icmp_seq=1 ttl=53 time=55.4 ms ^C --- google.com ping statistics -- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 55.414/55.414/55.414/0.000 ms
这样看起来一切正常,我们现在可以配置客户端以连接到IPA服务器。
配置IPA客户端
要设置ipa客户端并使ipa客户端能够加入IPA服务器域,请如下所示安装ipa-client
rpm。
[root@node2 ~]# yum install ipa-client -y
接下来,运行以下命令来设置" ipa客户端"。
这将提示我们一系列问题,请按照下面的代码片段进行相应的设置。
[root@node2 ~]# ipa-client-install WARNING: ntpd time&date synchronization service will not be configured as conflicting service (chronyd) is enabled Use --force-ntpd option to disable it and force configuration of ntpd Discovery was successful! Client hostname: node2.example.com Realm: EXAMPLE.COM DNS Domain: example.com IPA Server: node1.example.com BaseDN: dc=example,dc=com Continue to configure the system with these values? [no]: yes Skipping synchronizing time with NTP server. User authorized to enroll computers: admin Password for [email protected]: Successfully retrieved CA cert Subject: CN=Certificate Authority,O=EXAMPLE.COM Issuer: CN=Certificate Authority,O=EXAMPLE.COM Valid From: 2019-04-09 12:26:00 Valid Until: 2039-04-09 12:26:00 Enrolled in IPA realm EXAMPLE.COM Created /etc/ipa/default.conf New SSSD config will be created Configured sudoers in /etc/nsswitch.conf Configured /etc/sssd/sssd.conf Configured /etc/krb5.conf for IPA realm EXAMPLE.COM trying https://node1.example.com/ipa/json [try 1]: Forwarding 'schema' to json server 'https://node1.example.com/ipa/json' trying https://node1.example.com/ipa/session/json [try 1]: Forwarding 'ping' to json server 'https://node1.example.com/ipa/session/json' [try 1]: Forwarding 'ca_is_enabled' to json server 'https://node1.example.com/ipa/session/json' Systemwide CA database updated. Hostname (node2.example.com) does not have A/AAAA record. Missing reverse record(s) for address(es): 10.0.2.31. Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub [try 1]: Forwarding 'host_mod' to json server 'https://node1.example.com/ipa/session/json' SSSD enabled Configured /etc/openldap/ldap.conf Configured /etc/ssh/ssh_config Configured /etc/ssh/sshd_config Configuring example.com as NIS domain. Client configuration complete. The ipa-client-install command was successful
如果一切正确无误,则客户端将成功加入IPA服务器域。
接下来使用以下命令为ipa客户端生成一张kerberos票证
[root@node2 ~]# kinit admin Password for [email protected]:
如果屏幕上没有错误消息,则表明我们已在ipa客户端上成功生成了kerberos令牌,我们可以使用以下命令进行验证。
[root@node2 ~]# klist Ticket cache: KEYRING:persistent:0:0 Default principal: [email protected] Valid starting Expires Service principal 04/09/2019 18:35:23 04/10/2019 18:35:20 krbtgt/[email protected]
这样,我们就成功设置了IPA客户端。
我们可以通过登录" node1.example.com"上的IPA服务器GUI来验证ipa客户端。