UBUNTU18安装FREEIPA服务端

官网网址

安装步骤:

  1. 前提条件:

注意:FREEIPA对主机有配置要求,内存太低会导致安装失败,至少4G内存(亲身经历!!!)

主机名必须是可解析的,如果不是DNS服务器可解析,则可以在HOSTS文件中定义主机名。而且主机名需要是FQDN格式。

  1. 配置主机名
$ sudo hostnamectl set-hostname ipa.xxx.com

$ hostname -f
ipa.xxx.com

$ echo "10.10.10.75 ipa.xxx.com ipa" | sudo tee -a /etc/hosts

xxx: 为您自定义的域名,若不是对外网可见的,建议最好确保该域名未被注册过。可以通过如下命令来检测:

$ dig xxx.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> xxx.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38195
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xxx.com.           IN  A

;; ANSWER SECTION:
xxx.com.        600 IN  A   184.168.131.241

;; AUTHORITY SECTION:
xxx.com.        3600    IN  NS  ns12.domaincontrol.com.
xxx.com.        3600    IN  NS  ns11.domaincontrol.com.

;; ADDITIONAL SECTION:
ns11.domaincontrol.com. 167464  IN  A   97.74.105.6
ns12.domaincontrol.com. 96402   IN  A   173.201.73.6

;; Query time: 439 msec
;; SERVER: 192.168.0.3#53(192.168.0.3)
;; WHEN: Mon Jul 08 18:50:11 CST 2019
;; MSG SIZE  rcvd: 137
  1. 更新软件包并安装RNG-TOOLS
$ sudo apt update -y

FREEIPA服务器在运行时需要执行大量加密操作。因此你的VM必须具有足够可以确保FREEIPA加密操作不会停止的性能。可以安装和配置RNG-TOOLS:

$ sudo apt install rng-tools

安装完成后编辑配置文件并通过添加如下一行配置来重定向随机数据的输入源。如下所示:

$ sudo vim /etc/default/rng-tools
HRNGDEVICE=/dev/urandom

启用并启动RNG-TOOLS:

$ sudo /lib/systemd/systemd-sysv-install enable rng-tools
$ sudo systemctl start rng-tools
  1. 安装FREEIPA-SERVER软件包
$ sudo apt install freeipa-server

在安装过程中系统将提示您输入KERBEROS、KERBEROS服务器的主机名以及KERBEROS的管理服务器的主机名。分别输入:XXX.COM、ipa.xxx.com、ipa.xxx.com


image

image

image

image

image

image

安装过程中您还将遇到与KERBEROS和TOMACAT相关的错误(不过可以放心地忽略它们)

微信截图_20190708171258.png
微信截图_20190708171316.png
  1. 运行FREEIPA安装命令

会提示您提供许多配置选项并安装FREEIPA:

$ sudo ipa-server-install

第一个提示是是否需要FREEIPA集成DNS,此处不需要。过程中还需要输入两个密码(此密码作为后续认证用)。

$ 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 FreeIPA Server.

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 the KDC to enable PKINIT

To accept the default shown in brackets, press the Enter key.

WARNING: conflicting time&date synchronization service 'ntp' will be disabled
in favor of chronyd

Do you want to configure integrated DNS (BIND)? [no]: 

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 [ipa.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: 12345678
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: 12345678
Password (confirm): 


The IPA Master Server will be configured with:
Hostname:       ipa.example.com
IP address(es): 10.10.10.74
Domain name:    example.com
Realm name:     EXAMPLE.COM

The CA will be configured with:
Subject DN:   CN=Certificate Authority,O=EXAMPLE.COM
Subject base: O=EXAMPLE.COM
Chaining:     self-signed

Continue to configure the system with these values? [no]: yes

The following operations may take some minutes to complete.
Please wait until the prompt is returned.

Synchronizing time
Using default chrony configuration.
Time synchronization was successful.
Configuring directory server (dirsrv). Estimated time: 30 seconds
  [1/44]: creating directory server instance
  [2/44]: enabling ldapi
  [3/44]: configure autobind for root
  [4/44]: stopping directory server
  [5/44]: updating configuration in dse.ldif
  [6/44]: starting directory server
  [7/44]: adding default schema
  [8/44]: enabling memberof plugin
  [9/44]: enabling winsync plugin
  [10/44]: configuring replication version plugin
  [11/44]: enabling IPA enrollment plugin
  [12/44]: configuring uniqueness plugin
  [13/44]: configuring uuid plugin
  [14/44]: configuring modrdn plugin
  [15/44]: configuring DNS plugin
  [16/44]: enabling entryUSN plugin
  [17/44]: configuring lockout plugin
  [18/44]: configuring topology plugin
  [19/44]: creating indices
  [20/44]: enabling referential integrity plugin
  [21/44]: configuring certmap.conf
  [22/44]: configure new location for managed entries
  [23/44]: configure dirsrv ccache
  [24/44]: enabling SASL mapping fallback
  [25/44]: restarting directory server
  [26/44]: adding sasl mappings to the directory
  [27/44]: adding default layout
  [28/44]: adding delegation layout
  [29/44]: creating container for managed entries
  [30/44]: configuring user private groups
  [31/44]: configuring netgroups from hostgroups
  [32/44]: creating default Sudo bind user
  [33/44]: creating default Auto Member layout
  [34/44]: adding range check plugin
  [35/44]: creating default HBAC rule allow_all
  [36/44]: adding entries for topology management
  [37/44]: initializing group membership
  [38/44]: adding master entry
  [39/44]: initializing domain level
  [40/44]: configuring Posix uid/gid generation
  [41/44]: adding replication acis
  [42/44]: activating sidgen plugin
  [43/44]: activating extdom plugin
  [44/44]: configuring directory to start on boot
Done configuring directory server (dirsrv).
Configuring Kerberos KDC (krb5kdc)
  [1/10]: adding kerberos container to the directory
  [2/10]: configuring KDC
  [3/10]: initialize kerberos container
  [4/10]: adding default ACIs
  [5/10]: creating a keytab for the directory
  [6/10]: creating a keytab for the machine
  [7/10]: adding the password extension to the directory
  [8/10]: creating anonymous principal
  [9/10]: starting the KDC
  [10/10]: configuring KDC to start on boot
Done configuring Kerberos KDC (krb5kdc).
Configuring kadmin
  [1/2]: starting kadmin 
  [2/2]: configuring kadmin to start on boot
Done configuring kadmin.
Configuring certificate server (pki-tomcatd). Estimated time: 3 minutes
  [1/28]: configuring certificate server instance
  [2/28]: exporting Dogtag certificate store pin
  [3/28]: stopping certificate server instance to update CS.cfg
  [4/28]: backing up CS.cfg
  [5/28]: disabling nonces
  [6/28]: set up CRL publishing
  [7/28]: enable PKIX certificate path discovery and validation
  [8/28]: starting certificate server instance
  [9/28]: configure certmonger for renewals
  [10/28]: requesting RA certificate from CA
  [11/28]: setting audit signing renewal to 2 years
  [12/28]: restarting certificate server
  [13/28]: publishing the CA certificate
  [14/28]: adding RA agent as a trusted user
  [15/28]: authorizing RA to modify profiles
  [16/28]: authorizing RA to manage lightweight CAs
  [17/28]: Ensure lightweight CAs container exists
  [18/28]: configure certificate renewals
  [19/28]: configure Server-Cert certificate renewal
  [20/28]: Configure HTTP to proxy connections
  [21/28]: restarting certificate server
  [22/28]: updating IPA configuration
  [23/28]: enabling CA instance
  [24/28]: migrating certificate profiles to LDAP
  [25/28]: importing IPA certificate profiles
  [26/28]: adding default CA ACL
  [27/28]: adding 'ipa' CA entry
  [28/28]: configuring certmonger renewal for lightweight CAs
Done configuring certificate server (pki-tomcatd).
Configuring directory server (dirsrv)
  [1/3]: configuring TLS for DS instance
  [2/3]: adding CA certificate entry
  [3/3]: restarting directory server
Done configuring directory server (dirsrv).
Configuring ipa-otpd
  [1/2]: starting ipa-otpd 
  [2/2]: configuring ipa-otpd to start on boot
Done configuring ipa-otpd.
Configuring ipa-custodia
  [1/5]: Generating ipa-custodia config file
  [2/5]: Making sure custodia container exists
  [3/5]: Generating ipa-custodia keys
  [4/5]: starting ipa-custodia 
  [5/5]: configuring ipa-custodia to start on boot
Done configuring ipa-custodia.
Configuring the web interface (httpd)
  [1/21]: stopping httpd
  [2/21]: backing up ssl.conf
  [3/21]: disabling nss.conf
  [4/21]: configuring mod_ssl certificate paths
  [5/21]: setting mod_ssl protocol list to TLSv1.0 - TLSv1.2
  [6/21]: configuring mod_ssl log directory
  [7/21]: disabling mod_ssl OCSP
  [8/21]: adding URL rewriting rules
  [9/21]: configuring httpd
  [10/21]: setting up httpd keytab
  [11/21]: configuring Gssproxy
  [12/21]: setting up ssl
  [13/21]: configure certmonger for renewals
  [14/21]: publish CA cert
  [15/21]: clean up any existing httpd ccaches
  [16/21]: configuring SELinux for httpd
  [17/21]: create KDC proxy config
  [18/21]: enable KDC proxy
  [19/21]: starting httpd
  [20/21]: configuring httpd to start on boot
  [21/21]: enabling oddjobd
Done configuring the web interface (httpd).
Configuring Kerberos KDC (krb5kdc)
  [1/1]: installing X509 Certificate for PKINIT
Done configuring Kerberos KDC (krb5kdc).
Applying LDAP updates
Upgrading IPA:. Estimated time: 1 minute 30 seconds
  [1/9]: stopping directory server
  [2/9]: saving configuration
  [3/9]: disabling listeners
  [4/9]: enabling DS global lock
  [5/9]: starting directory server
  [6/9]: upgrading server
  [7/9]: stopping directory server
  [8/9]: restoring configuration
  [9/9]: starting directory server
Done.
Restarting the KDC
Please add records in this file to your DNS system: /tmp/ipa.system.records.W7ncn7.db
Configuring client side components
Using existing certificate '/etc/ipa/ca.crt'.
Client hostname: ipa.xxx.com
Realm: XXX.COM
DNS Domain: xxx.com
IPA Server: ipa.xxx.com
BaseDN: dc=xxx,dc=com

Skipping attempt to configure and synchronize time with chrony server as it has been already done on master.
New SSSD config will be created
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
trying https://ipa.xxx.com/ipa/json
[try 1]: Forwarding 'schema' to json server 'https://ipa.xxx.com/ipa/json'
trying https://ipa.xxx.com/ipa/session/json
[try 1]: Forwarding 'ping' to json server 'https://ipa.xxx.com/ipa/session/json'
[try 1]: Forwarding 'ca_is_enabled' to json server 'https://ipa.xxx.com/ipa/session/json'
Systemwide CA database updated.
Adding SSH public key from /etc/ssh/ssh_host_dsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
[try 1]: Forwarding 'host_mod' to json server 'https://ipa.xxx.com/ipa/session/json'
Could not update DNS SSHFP records.
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring xxx.com as NIS domain.
Client configuration complete.
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
        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

  1. 登陆FREEIPA

打开防火墙之后,让我们通过为管理员用户初始化KERBEROS令牌来验证我们的FREEIPA服务器。对于正常的管理活动已创建管理帐户管理员。提示输入密码时请使用你在配置步骤中为ADMIN用户指定的密码:

# kinit admin
Password for admin@COMPUTINGFORGEEKS.COM:

检查KERBEROS:

root@ipa:~# klist 

Ticket cache: KEYRING:persistent:0:0

Default principal: admin@COMPUTINGFORGEEKS.COM

如果成功请尝试查找FREEIPA服务器上是否存在用户ADMIN:

# ipa user-find admin

--------------

1 user matched

--------------

User login: admin

Last name: Administrator

Home directory: /home/admin

Login shell: /bin/bash

Principal alias: admin@COMPUTINGFORGEEKS.COM

UID: 1506000000

GID: 1506000000

Account disabled: False

----------------------------

Number of entries returned 1

----------------------------

您现在可以从WEB仪表板以及命令行执行任何IPA任务了。要登录WEB仪表板请使用地址(WEB登录用户名为ADMIN。密码是ADMIN用户配置步骤中提供的密码):https://ipa.xxx.com

image

当您通过账户密码登陆过程中会提示您无法登陆:

Login failed due to an unknown reason

通过服务器端日志定位找到如下错误:/var/log/apache2/error.log

[Mon Jul 08 10:04:36.099127 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303] mod_wsgi (pid=24503): Exception occurred processing WSGI script '/usr/share/ipa/wsgi.py'.
[Mon Jul 08 10:04:36.099285 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303] Traceback (most recent call last):
[Mon Jul 08 10:04:36.099372 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/share/ipa/wsgi.py", line 57, in application
[Mon Jul 08 10:04:36.099507 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     return api.Backend.wsgi_dispatch(environ, start_response)
[Mon Jul 08 10:04:36.099568 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipaserver/rpcserver.py", line 265, in __call__
[Mon Jul 08 10:04:36.099643 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     return self.route(environ, start_response)
[Mon Jul 08 10:04:36.099688 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipaserver/rpcserver.py", line 277, in route
[Mon Jul 08 10:04:36.099743 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     return app(environ, start_response)
[Mon Jul 08 10:04:36.099796 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipaserver/rpcserver.py", line 935, in __call__
[Mon Jul 08 10:04:36.099860 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     self.kinit(user_principal, password, ipa_ccache_name)
[Mon Jul 08 10:04:36.099938 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipaserver/rpcserver.py", line 971, in kinit
[Mon Jul 08 10:04:36.100009 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     pkinit_anchors=[paths.KDC_CERT, paths.KDC_CA_BUNDLE_PEM],
[Mon Jul 08 10:04:36.100062 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipalib/install/kinit.py", line 125, in kinit_armor
[Mon Jul 08 10:04:36.100121 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     run(args, env=env, raiseonerr=True, capture_error=True)
[Mon Jul 08 10:04:36.100169 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]   File "/usr/lib/python2.7/dist-packages/ipapython/ipautil.py", line 572, in run
[Mon Jul 08 10:04:36.100233 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303]     p.returncode, arg_string, output_log, error_log
[Mon Jul 08 10:04:36.100398 2019] [wsgi:error] [pid 24503:tid 140146728326912] [remote 10.10.10.253:54303] CalledProcessError: CalledProcessError(Command ['/usr/bin/kinit', '-n', '-c', '/var/run/ipa/ccaches/armor_24503', '-X', 'X509_anchors=FILE:/var/lib/krb5kdc/kdc.crt', '-X', 'X509_anchors=FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem'] returned non-zero exit status 1: "kinit: Pre-authentication failed: Cannot open file '/var/lib/krb5kdc/kdc.crt': Permission denied while getting initial credentials\\n")

最终发现问题是由于目录没有访问权限,导致WSGI无法读取其中的文件。解决办法:

sudo chmod a+x /var/lib/krb5kdc

然后您应该可以进入FREEIPA管理界面了,如下图:


image

image

FREEIPA重启

启动停止检查:

ipactl [-f] start/stop/status

-f: 强制执行(可忽略由于某一服务启动失败导致整体启动失败的问题)

root@ipa:/home/xieming# ipactl restart
Starting Directory Service          LDAP???        
Stopping pki-tomcatd Service            
Restarting krb5kdc Service          KERBEROS服务器
Restarting kadmin Service           
Restarting httpd Service            
Restarting ipa-custodia Service     
Restarting pki-tomcatd Service      
Restarting ipa-otpd Service     

字体问题:

在登陆到IPA界面之后发现复选框等样式不正常:

解决办法:

  1. 下载字体文件
  2. 创建这个目录
mkdir -p /usr/share/fonts/truetype/fontawesome
  1. 复制下载文件
fontawesome-webfont.ttf

参考文档:https://ywnz.com/linuxyffq/3963.html
参考文档:https://lists.fedorahosted.org/archives/list/freeipa-users@lists.fedorahosted.org/thread/PEAN25LXV5BLWOBTU3XJD2SA3NXS6LZZ/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,002评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,777评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,341评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,085评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,110评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,868评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,528评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,422评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,938评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,067评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,199评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,877评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,540评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,079评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,192评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,514评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,190评论 2 357

推荐阅读更多精彩内容