安装和配置FreeIPA服务器和客户端(RHEL/CentOS 7)

时间:2020-01-09 10:40:55  来源:igfitidea点击:

在本教程中,我们将学习如何在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-serveripa-server-dnsrpm来设置我们的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-clientrpm。

[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客户端。