想把賬戶統(tǒng)一管理起來,jenkins,gitlab,jumpserver甚至kibana,kubernetes等等。本來搭建過openldap。昨天小伙伴強(qiáng)烈推薦我用一下freeipa......又進(jìn)入了盲區(qū),沒有聽過的東西都比較好奇,淺淺的體驗一下!freeipa服務(wù)就不想部署在kubernetes中了 也準(zhǔn)備docker方式啟動部署。畢竟這樣方便升級還原。kubernetes中部署了還要額外映射端口啥的麻煩......偷懶一下!
(資料圖)
注: 操作系統(tǒng)rockylinux9.0,以docker-compose方式啟動freeipa!。主機(jī)內(nèi)網(wǎng)ip 10.0.4.52.
添加docker-ce國內(nèi)源,這里使用了阿**的源,安裝docker-ce:
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repodnf -y install docker-ce docker-ce-cli containerd.io
訪問github倉庫:https://github.com/docker/compose/releases/,選擇對應(yīng)版本針對系統(tǒng)的版本進(jìn)行下載(會很慢,可以科學(xué)上網(wǎng),或者跟我一樣,提前下載了放在對象存儲上面?。?/p>
curl "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version
可以跟據(jù)自己的阿里亞賬戶的容器鏡像服務(wù)-鏡像攻擊-鏡像加速器,配置鏡像加速:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-"EOF"{ "registry-mirrors": ["https://7zk8hbh7.mirror.aliyuncs.com"], "features": { "buildkit": true }, "experimental": true, "cgroup-parent": "docker.slice", "exec-opts": ["native.cgroupdriver=systemd"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
注:registry-mirrors下面的忘了那里復(fù)制來的了 就直接帶著了!
docker infodocker -v
偷懶了docker-compose.yaml存放在了/data/freeipa目錄。freeipa數(shù)據(jù)目錄/data/free-ipa/data /data/free-ipa/data/logs:
mkdir -p /data/free-ipa/data mkdir -p /data/free-ipa/logs
docker-compose.yaml如下(小伙伴的文件直接拿來用的):
version: "3.3"services: freeipa: image: freeipa/freeipa-server:almalinux-8-4.9.8 container_name: xxxx.xxxx.com domainname: xxxx.xxxx.com container_name: freeipa_idc ports: - "80:80/tcp" - "443:443/tcp" # DNS - "53:53/tcp" - "53:53/udp" # LDAP(S) - "389:389/tcp" - "636:636/tcp" # Kerberos - "88:88/tcp" - "88:88/udp" - "464:464/tcp" - "464:464/udp" # NTP - "123:123/udp" dns: - 127.0.0.1 - 183.60.82.98 - 183.60.83.19 - 114.114.114.114 tty: true stdin_open: true environment: IPA_SERVER_HOSTNAME: xxxx.xxxx.com IPA_SERVER_IP: 10.0.4.52 TZ: "Asia/Shanghai" command: - --domain=xxxx.com - --realm=xxx.com - --admin-password=xxxx #freeapi的admin管理員賬號 - --http-pin=xxxx - --dirsrv-pin=xxxx - --ds-password=xxxx - --no-dnssec-validation - --no-host-dns - --setup-dns - --auto-forwarders - --allow-zone-overlap - --unattended # 自動無人工干預(yù)安裝 cap_add: - SYS_TIME - NET_ADMIN restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro - /data/free-ipa/data:/data - /data/free-ipa/logs:/var/logs sysctls: - net.ipv6.conf.all.disable_ipv6=0 - net.ipv6.conf.lo.disable_ipv6=0 security_opt: - "seccomp:unconfined" labels: - idc-freeipa extra_hosts: - "xxxx.xxxx.com:10.0.4.52 "
就默認(rèn)修改了一下 域名 ip dns 密碼 domain realm 等xxx部分!
docker-compose up -d docker logs -f freeipa_idc
網(wǎng)上看了很多文章基本是cgroup的問題:https://serverfault.com/questions/1053187/systemd-fails-to-run-in-a-docker-container-when-using-cgroupv2-cgroupns-priva.https://github.com/freeipa/freeipa-container/issues/520
服務(wù)器查看了一眼確實系統(tǒng)默認(rèn)cgroup v2版本:
mount |grep cgroup
修改systemd.unified_cgroup_hierarchy=0 并重啟服務(wù)器:
grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"reboot
查看cgroup可以支持V1了 繼續(xù)啟動服務(wù)
mount |grep cgroup
docker-compose down docker-compose up -d
等待服務(wù)啟動........
第一次訪問很坑爹:右上角會彈出一個登陸框讓輸入用戶名密碼,連著輸入都是錯誤的,都懷疑人生準(zhǔn)備重新部署了,看到一篇文章說要點兩次取消就可以出現(xiàn)下面的頁面登陸框:搭建freeIPA服務(wù)器實現(xiàn)用戶管理
不出意外輸入可能會顯示密碼錯誤.....日志也不打出新的...怎么破?
docker-compose.yaml中admin-password 變量盡量別加特殊符號貌似(登陸了后臺可以控制臺修改密碼!)
登陸控制臺基本是如下頁面:
用戶 用戶組個人關(guān)注的就這兩個關(guān)鍵詞。繼續(xù)強(qiáng)迫癥修改https證書:
參照:https://computingforgeeks.com/secure-freeipa-server-with-lets-encrypt-ssl-certificate/文中是宿主機(jī)安裝的方式,當(dāng)然了docker中也是適用!
進(jìn)入freeipa容器
docker exec -it freeipa_idc bash
進(jìn)入容器后,通過管理員用戶身份獲取 Kerberos 票據(jù)來確認(rèn)它正在運行:
sudo kinit adminsudo klist
安裝epel repo與certbot:
sudo yum install epel-releasesudo yum install certbot python3-certbot-apachecertbot --version
首先備份當(dāng)前的 FreeIPA 服務(wù)器私鑰和證書,安裝 git、vim 或 nano 文件編輯器(可選主要是git vim )
sudo cp -r /var/lib/ipa/certs{,.bak}sudo cp -r /var/lib/ipa/private{,.bak}sudo yum -y install vim nano git
使用手動方法使用 Let"s Encrypt 保護(hù) FreeIPA 服務(wù)器:
創(chuàng)建證書目錄:
sudo su -mkdir freeipa-certscd freeipa-certs
下載 Let"s Encrypt CA 證書:
CERTS=("isrgrootx1.pem" "isrg-root-x2.pem" "lets-encrypt-r3.pem" "lets-encrypt-e1.pem" "lets-encrypt-r4.pem" "lets-encrypt-e2.pem")for CERT in "${CERTS[@]}"do curl -o $CERT "https://letsencrypt.org/certs/$CERT"done
將 Let"s Encrypt CA 證書安裝到 FreeIPA 證書存儲中:
CERTS=("isrgrootx1.pem" "isrg-root-x2.pem" "lets-encrypt-r3.pem" "lets-encrypt-e1.pem" "lets-encrypt-r4.pem" "lets-encrypt-e2.pem")for CERT in "${CERTS[@]}"do ipa-cacert-manage install $CERTdone
預(yù)期會出現(xiàn)一下輸出:
使用來自服務(wù)器的證書更新本地 IPA 證書數(shù)據(jù)庫:
sudo ipa-certupdate
獲取 Let"s Encrypt 證書
停止 httpd 服務(wù)以釋放獲取證書所需的端口 80:
sudo systemctl stop httpd
然后運行 Certbot 獲取 Let"s Encrypt 證書:
EMAIL="820042728@qq.com"DOMAIN="xxx.xxxx.com"sudo certbot certonly --standalone --preferred-challenges http --agree-tos -n -d $DOMAIN -m $EMAIL
您的證書應(yīng)存儲在 /etc/letsencrypt/live/xxx.xxx.com 目錄中
[root@86ca990dc234 freeipa-certs]# ls /etc/letsencrypt/live/xxx.xxxx.com/READMEcert.pem chain.pem fullchain.pem privkey.pem
確認(rèn)生成所需的證書后啟動 httpd 服務(wù)器:
sudo systemctl restart httpd
添加 Let"s Encrypt SSL 證書以在 FreeIPA Web UI 中使用:
DOMAIN="xxx.xxx.com" # Set correct IdM hostnamesudo ipa-server-certinstall -w -d /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/letsencrypt/live/$DOMAIN/cert.pem --pin=""
重啟 FreeIPA 服務(wù):
[root@86ca990dc234 freeipa-certs]# sudo ipactl restartRestarting Directory ServiceRestarting krb5kdc ServiceRestarting kadmin ServiceRestarting named ServiceRestarting httpd ServiceRestarting ipa-custodia ServiceRestarting pki-tomcatd ServiceRestarting ipa-otpd ServiceRestarting ipa-dnskeysyncd Serviceipa: INFO: The ipactl command was successfu
可以從終端或網(wǎng)絡(luò)瀏覽器確認(rèn)當(dāng)前使用的 SSL 證書。 使用 OpenSSL:
openssl s_client -showcerts -verify 5 -connect $(hostname -f):443
瀏覽器訪問:
github 克隆官方 FreeIPA Let"s Encrypt 管理腳本代碼:
git clone https://github.com/freeipa/freeipa-letsencrypt.git
切換到freeipa-letsencrypt目錄,編輯 renew-le.sh 腳本并設(shè)置 EMAIL 變量::
cd freeipa-letsencrypt$ vim renew-le.shEMAIL="820042728@qq.com"
在 setup-le.sh 腳本中,F(xiàn)reeIPA 服務(wù)器 FQDN 設(shè)置為服務(wù)器的主機(jī)名(確保hostname -f命令將主機(jī)名作為 FQDN 返回:):
FQDN=$(hostname -f)hostname -f
運行 setup-le.sh 腳本:
sudo bash setup-le.sh
該腳本將執(zhí)行以下操作:
將 Let"s Encrypt CA 證書安裝到 FreeIPA 證書存儲中為 FreeIPA Web 界面申請新證書會出現(xiàn)一下提示讓輸入pass:
Enter pass phrase for /var/lib/ipa/private/httpd.key:
嘗試了好多次沒有找到這個pass,最后參照:https://github.com/freeipa/freeipa-letsencrypt/issues/18。找到此pass:
cat /var/lib/ipa/passwds/xxx.xxxx.com-443-RSA
重啟httpd服務(wù),確認(rèn) ipa-certupdate 命令執(zhí)行成功:
sudo systemctl restart httpdsudo ipa-certupdate
如果只對在瀏覽器頁面上使用 Let"s Encrypt SSL 感興趣,您可以手動修改 ssl.conf 文件并設(shè)置以下指令(但是文章中說不推薦?):
$ sudo vim /etc/httpd/conf.d/ssl.confSSLCertificateFile /etc/letsencrypt/live/xxxx.xxxx.com/fullchain.pemSSLCertificateKeyFile /etc/letsencrypt/live/xxxx.xxxx.com/privkey.pem
重啟httpd服務(wù):
systemctl restart httpd
每當(dāng)續(xù)訂 SSL 證書時,運行以下命令以在 FreeIPA 端更新:
DOMAIN="xxxx.xxxx.com" # Set correct IdM hostnamesudo ipa-server-certinstall -w -d /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/letsencrypt/live/$DOMAIN/cert.pem --pin=""
根據(jù)需要輸入目錄管理員密碼:
然后在安裝證書后繼續(xù)重啟 FreeIPA 服務(wù):
sudo ipactl restart
騰訊云下載了nginx證書:
修改/etc/httpd/conf.d/ssl.conf對應(yīng)位置:
SSLCertificateFile 對應(yīng)上圖pem文件,SSLCertificateKeyFile對應(yīng)上面key文件(可以直接修改后綴!)
重啟apache服務(wù):
systemctl restart httpd
成功修改成自己的泛域名證書:
關(guān)于證書還是自動生成使用 Let"s Encrypt SSL 不要自己上傳自己的證書,會出現(xiàn)無法登陸的問題:
[remote xxx.xxx.xxx.xxxx:3045] ipa: INFO: 401 Unauthorized: HTTPSConnectionPool(host="xxx.xxx.com", port=443): Max retries exceeded with url: /ipa/session/cookie (Caused by SSLError(SSLError(1, "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)"),))
我當(dāng)時出現(xiàn)了web ui登陸的錯誤:記一次FreeIPA WEBUI 登陸錯誤 Login failed due to an unkno,基本也是這樣的樣子,后面將證書重新使用 Let"s Encrypt SSL 生成后解決問題!
Copyright @ 2001-2013 www.nuoxin-cn.com All Rights Reserved 中國時尚網(wǎng) 版權(quán)所有
聯(lián)系方式:954 29 18 82 @qq.com
粵ICP備18025786號 營業(yè)執(zhí)照公示信息 未經(jīng)吉中國時尚網(wǎng)書面授權(quán),請勿建立鏡像,轉(zhuǎn)載請注明來源,違者依法必究
關(guān)于我們 | 聯(lián)系方式 | 版權(quán)聲明 | 招聘信息 | 友情鏈接 | 合作伙伴 |