Freeipa的简单搭建配置
背景:
想把账户统一管理起来,jenkins,gitlab,jumpserver甚至kibana,kubernetes等等。本来搭建过openldap。昨天小伙伴强烈推荐我用一下freeipa......又进入了盲区,没有听过的东西都比较好奇,浅浅的体验一下!freeipa服务就不想部署在kubernetes中了 也准备docker方式启动部署。毕竟这样方便升级还原。kubernetes中部署了还要额外映射端口啥的麻烦......偷懒一下!
(资料图片仅供参考)
Freeipa安装
注: 操作系统rockylinux9.0,以docker-compose方式启动freeipa!。主机内网ip 10.0.4.52.
安装docker docker-compose
docker安装
添加docker-ce国内源,这里使用了阿**的源,安装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
安装docker-compose
访问github仓库:https://github.com/docker/compose/releases/,选择对应版本针对系统的版本进行下载(会很慢,可以科学上网,或者跟我一样,提前下载了放在对象存储上面!)
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
配置docker镜像加速,设置docker服务开机启动:
可以跟据自己的阿里亚账户的容器镜像服务-镜像攻击-镜像加速器,配置镜像加速:
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下面的忘了那里复制来的了 就直接带着了!
docker infodocker -v
docker-compose 搭建freeipa服务:
创建数据目录,编写docker-compose.yaml文件
偷懒了docker-compose.yaml存放在了/data/freeipa目录。freeipa数据目录/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 # 自动无人工干预安装 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 "
就默认修改了一下 域名 ip dns 密码 domain realm 等xxx部分!
cgroup v2带来的无法启动
docker-compose up -d docker logs -f freeipa_idc
网上看了很多文章基本是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
服务器查看了一眼确实系统默认cgroup v2版本:
mount |grep cgroup
修改systemd.unified_cgroup_hierarchy=0 并重启服务器:
grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"reboot
查看cgroup可以支持V1了 继续启动服务
mount |grep cgroup
docker-compose down docker-compose up -d
等待服务启动........
访问freeipa域名:
第一次访问点两次取消进入登陆页面
第一次访问很坑爹:右上角会弹出一个登陆框让输入用户名密码,连着输入都是错误的,都怀疑人生准备重新部署了,看到一篇文章说要点两次取消就可以出现下面的页面登陆框:搭建freeIPA服务器实现用户管理
不出意外输入可能会显示密码错误.....日志也不打出新的...怎么破?
docker-compose.yaml中admin-password 变量尽量别加特殊符号貌似(登陆了后台可以控制台修改密码!)
登陆控制台基本是如下页面:
用户 用户组个人关注的就这两个关键词。继续强迫症修改https证书:
修改freeipa https证书准备
参照:https://computingforgeeks.com/secure-freeipa-server-with-lets-encrypt-ssl-certificate/文中是宿主机安装的方式,当然了docker中也是适用!
进入freeipa容器
docker exec -it freeipa_idc bash
进入容器后,通过管理员用户身份获取 Kerberos 票据来确认它正在运行:
sudo kinit adminsudo klist
安装epel repo与certbot:
sudo yum install epel-releasesudo yum install certbot python3-certbot-apachecertbot --version
使用 Let"s Encrypt SSL 证书保护 FreeIPA 服务器
首先备份当前的 FreeIPA 服务器私钥和证书,安装 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 保护 FreeIPA 服务器:
创建证书目录:
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
预期会出现一下输出:
使用来自服务器的证书更新本地 IPA 证书数据库:
sudo ipa-certupdate
获取 Let"s Encrypt 证书
停止 httpd 服务以释放获取证书所需的端口 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
您的证书应存储在 /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
确认生成所需的证书后启动 httpd 服务器:
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 服务:
[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
可以从终端或网络浏览器确认当前使用的 SSL 证书。 使用 OpenSSL:
openssl s_client -showcerts -verify 5 -connect $(hostname -f):443
浏览器访问:
使用 bash 脚本使用 Let"s Encrypt 保护 FreeIPA 服务器:
github 克隆官方 FreeIPA Let"s Encrypt 管理脚本代码:
git clone https://github.com/freeipa/freeipa-letsencrypt.git
切换到freeipa-letsencrypt目录,编辑 renew-le.sh 脚本并设置 EMAIL 变量::
cd freeipa-letsencrypt$ vim renew-le.shEMAIL="820042728@qq.com"
在 setup-le.sh 脚本中,FreeIPA 服务器 FQDN 设置为服务器的主机名(确保hostname -f命令将主机名作为 FQDN 返回:):
FQDN=$(hostname -f)hostname -f
运行 setup-le.sh 脚本:
sudo bash setup-le.sh
该脚本将执行以下操作:
将 Let"s Encrypt CA 证书安装到 FreeIPA 证书存储中为 FreeIPA Web 界面申请新证书会出现一下提示让输入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服务,确认 ipa-certupdate 命令执行成功:
sudo systemctl restart httpdsudo ipa-certupdate
修改 Apache Web 服务器配置文件以设置 SSL 证书和密钥:
如果只对在浏览器页面上使用 Let"s Encrypt SSL 感兴趣,您可以手动修改 ssl.conf 文件并设置以下指令(但是文章中说不推荐?):
$ 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服务:
systemctl restart httpd
更新 FreeIPA Let"s Encrypt 证书:
每当续订 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=""
根据需要输入目录管理员密码:
然后在安装证书后继续重启 FreeIPA 服务:
sudo ipactl restart
跑了一遍流程了知道怎么偷懒换成自己的证书了试一下:
腾讯云下载了nginx证书:
修改/etc/httpd/conf.d/ssl.conf对应位置:
SSLCertificateFile 对应上图pem文件,SSLCertificateKeyFile对应上面key文件(可以直接修改后缀!)
重启apache服务:
systemctl restart httpd
成功修改成自己的泛域名证书:
注意
关于证书还是自动生成使用 Let"s Encrypt SSL 不要自己上传自己的证书,会出现无法登陆的问题:
[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)"),))
我当时出现了web ui登陆的错误:记一次FreeIPA WEBUI 登陆错误 Login failed due to an unkno,基本也是这样的样子,后面将证书重新使用 Let"s Encrypt SSL 生成后解决问题!
关键词:
下一篇:最后一页
精心推荐
- 去年京津冀工信部门推进签约570多项高端高新项目
- 京津冀区域协同创新指数增长迅速
- 1至2月河北省工业生产平稳开局 规模以上工业增加值同比增长6.0%
- 浙江绍兴15日0-21时新增41例确诊病例
- 沈阳大气优良天数达近5年来最好水平
- 辽宁实行市级政府集中监管 首站定点冷库加强疫情防控
- 辽宁省25个博士后团队冲刺全国博士后创新创业大赛
- 安徽省宿州市埇桥区大营镇大营新村调整为中风险地区
- 云南哀牢山4名地质调查人员因公殉职原因查明
- 全国首部涉及“非现场执法”的法规施行 浦东新区打造引领区数字化城市治理样板
- 杭州一封控小区完成第三轮核酸检测 前两轮检测均为阴性
- 集采未中选药品现在怎么样了?这组数据告诉你
- “海归”博士后王暾:专注灾害预警科技创新 打通灾害预警“最后一公里”
- 福建宣判一起涉恶案件 10人犯罪团伙强迫交易、非法采矿获刑
-
中新网郑州12月15日电 (记者 韩章云)针对近日网友实名举报中国农业发展银行太康县支行员工夏某华吃空饷一事,中国农业发展银行河南省
-
中新网宿迁12月15日电 (记者 刘林)“房子干净又敞亮,社区漂亮又整洁。”15日,家住江苏宿迁牛角淹社区的袁有亮谈起新家,兴奋的心情
-
中新网通辽12月15日电 (记者 张林虎)15日,记者从内蒙古自治区通辽市科左后旗公安局获悉,该局打掉一个帮助网络犯罪转账的“跑分团队
-
中新网安徽阜阳12月15日电 ( 成展鹏)12月15日,规划占地面积2500亩、投资总额75亿元的安徽省阜阳市太和县保兴医药健康产业园内一片繁
-
中新网杭州12月15日电 (郭其钰 张益聪)从焦虑不安到互帮互助,浙江省杭州市上城区凯旋街道新城市广场B座里的257人经历了难忘的72小时
X 关闭
行业排行
- 1、深圳:积极推进旅游业恢复 扎实推动经济稳定增长
- 2、保定定州提出一系列发展措施 引领体品产业向智能化品牌化高端化迈进
- 3、河北省财政厅充分发挥财政职能作用 促进交通运输事业发展
- 4、太原阳曲人才公寓项目开启施工招标工作 共有1954套人才公寓满足人才居住需求
- 5、山西出口钢构件顺利发货 为企业加强科技创新开辟了更为广阔的发展空间
- 6、上半年泰州姜堰实现新签约亿元和1000万美元以上项目95个 计划总投资208.319亿元
- 7、清华博士非洲修电站 因为他,“内卷”成为网络热词
- 8、内蒙古新增本土确诊病例3例 均在呼伦贝尔满洲里市
- 9、31省份新增新冠肺炎确诊病例67例 其中本土50例
- 10、浙江新增本土确诊病例45例 其中宁波6例、绍兴39例
X 关闭
产业
-
不用跑北京 在家门口也能挂上顶...
日前,我省首个神经疾病会诊中心——首都医科大学宣武医院河北医院...
-
“十四五”期间 河北省将优化快...
从省邮政管理局获悉,十四五期间,我省将优化快递空间布局,着力构...
-
张家口市宣化区:光伏发电站赋能...
3月19日拍摄的张家口市宣化区春光乡曹庄子村光伏发电站。张家口市宣...
-
“张同学”商标被多方抢注 涉及...
“张同学”商标被多方抢注,官方曾点名批评恶意抢注“丁真” ...
-
山东济南“防诈奶奶团”花式反诈...
中新网济南12月15日电 (李明芮)“老有所为 无私奉献 志愿服...
-
广州新增1例境外输入关联无症状...
广州卫健委今日通报,2021年12月15日,在对入境转运专班工作人...
-
西安报告初筛阳性病例转为确诊病例
12月15日10:20,经陕西西安市级专家组会诊,西安市报告新冠病毒...
-
广东东莞新增本土确诊病例2例 ...
(抗击新冠肺炎)广东东莞新增本土确诊病例2例 全市全员核酸检测...
-
中缅边境临沧:民警深夜出击捣毁...
中新网临沧12月15日电 (胡波 邱珺珲)记者15日从云南临沧边境...
-
“土家鼓王”彭承金:致力传承土...
中新网恩施12月15日电 题:“土家鼓王”彭承金:致力传承土家...