日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

12-openldap使用AD密码

發(fā)布時間:2024/1/17 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 12-openldap使用AD密码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

閱讀視圖

本文嚴(yán)重參考

Openldap 整合windows AD認(rèn)證

本文其他參考

OpenLDAP使用AD密碼

Configuring OpenLDAP pass-through authentication to Active Directory

一、需求概述及解決方案

1. 需求概述

Openldap是開源的目錄服務(wù)實現(xiàn),windows AD是微軟的目錄服務(wù)現(xiàn)實?,F(xiàn)狀是有的場景(應(yīng)用、客戶端)跟openldap結(jié)合比較容易,有的場景又是必須要用AD,所以幾乎不可能棄用其中的任意一種。但同時維護(hù)兩套系統(tǒng)意味著維護(hù)工作大量增加(不僅僅只是增加一倍,要考慮信息分別維護(hù)、同步etc等)、出錯幾率增加。

其中的一種較成熟、使用比較多的解決方案是:openldap使用windows AD的認(rèn)證,這樣只需要在AD上維護(hù)一套用戶密碼即可。

比較常用的場景,如圖

2. 流程圖

如上圖,相關(guān)組件分四大部分:

  • LDAP client:這個是實際調(diào)用ldap服務(wù)的系統(tǒng),也可以是類似ldapsearch之類的client程序;
  • Openldap:開源服務(wù)端,實際進(jìn)程為slapd;
  • Saslauthd:簡單認(rèn)證服務(wù)層的守護(hù)進(jìn)程,該進(jìn)程要安裝在openldap服務(wù)器上;
  • Active directory:即windows AD,這個不用解釋;

  • 二、AD域設(shè)置

    AD域設(shè)置設(shè)置很簡單,如下:

  • 在AD域的Users目錄下新建一個用戶saslauthd。
  • 新建一個技術(shù)運營部,新建一個用戶user10。
  • 在Users新建一個用戶test1

  • 三、Saslauthd安裝配置

    1. 安裝Saslauthd

    在openldap-server服務(wù)器上安裝Saslauthd

    [root@0 ~]# yum install cyrus-sasl[root@0 ~]# rpm -ql cyrus-sasl /etc/sysconfig/saslauthd # 配置文件 /run/saslauthd /usr/lib/systemd/system/saslauthd.service # 啟動腳本 /usr/sbin/pluginviewer /usr/sbin/saslauthd # 守護(hù)進(jìn)程 /usr/sbin/testsaslauthd # 測試程序 /usr/share/doc/cyrus-sasl-2.1.26 /usr/share/doc/cyrus-sasl-2.1.26/LDAP_SASLAUTHD /usr/share/man/man8/pluginviewer.8.gz /usr/share/man/man8/saslauthd.8.gz /usr/share/man/man8/sasldblistusers2.8.gz /usr/share/man/man8/saslpasswd2.8.gz /usr/share/man/man8/testsaslauthd.8.gz

    2.【可選】測試sasl本身

    1. 創(chuàng)建1個帳號及密碼[root@0 ~]# useradd test [root@0 ~]# passwd test Changing password for user test. New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: all authentication tokens updated successfully.2. 配置saslauthd使用shadow認(rèn)證并啟動saslauthd進(jìn)程 [root@0 ~]# grep -Ev "^$|^#" /etc/sysconfig/saslauthd SOCKETDIR=/run/saslauthd MECH=shadow FLAGS= [root@0 ~]# systemctl restart saslauthd3. 使用testsaslauthd進(jìn)行驗證 [root@0 ~]# testsaslauthd -u test -p password 0: OK "Success."

    這里如密碼正確應(yīng)該出現(xiàn)認(rèn)證成功,密碼錯誤則失敗,到這里可理解sasl本身OK的。后續(xù)配置還會用 testsaslauthd 程序測試、調(diào)試。驗證OK后可刪除用戶。

    3. 配置sasl關(guān)聯(lián)到ad域

  • 【可選】先用ldap客戶端測一下windowad域是否可用,用戶密碼是否正確。如果驗證失敗,就需要排查openldap的問題了。
  • [root@0 ~]# ldapsearch -x -H ldap://192.168.244.31 -D "CN=administrator,CN=Users,DC=windows,dc=com" -w Aa123456 -b "DC=windows,DC=COM" | less # extended LDIF # # LDAPv3 # base <DC=windows,DC=COM> with scope subtree # filter: (objectclass=*) # requesting: ALL ## windows.com dn: DC=windows,DC=com objectClass: top objectClass: domain objectClass: domainDNS distinguishedName: DC=windows,DC=com ...省略
  • 配置sasl訪問ad
  • 1. 修改/etc/sysconfig/saslauthd, 如下 [root@0 ~]# grep -Ev "^$|^#" /etc/sysconfig/saslauthd SOCKETDIR=/run/saslauthd MECH=shadow FLAGS="-O /etc/saslauthd2ad.conf"[root@0 ~]# cat /etc/saslauthd2ad.conf # 該文件需要新建立 ldap_servers: ldap://192.168.244.31 ldap_search_base: DC=windows,DC=com ldap_timeout: 10 ldap_filter: sAMAccountName=%U ldap_bind_dn: CN=saslauthd,CN=Users,DC=windows,DC=com # 第二步驟建立的用戶 ldap_password: Aa123456 ldap_deref: never ldap_restart: yes ldap_scope: sub ldap_use_sasl: no ldap_start_tls: no ldap_version: 3 ldap_auth_method: bind3. 重啟saslauthd服務(wù)

    該文件的主要參數(shù):

    ldap_servers: LDAP URI, windowsAD地址

    ldap_bind_dn: DN for connection ,一個windows AD用戶的DN,實際不需要admin的

    ldap_password: Password for connection,密碼

    ldap_search_base: Search base

    ldap_filter: Search filter ,%U 表示user, %u 表示user@domain

    測試testsaslauthd -u administrator -p 密碼 ,這里就是使用AD域的用戶-密碼認(rèn)證了,并不只是寫到配置文件里面的administrator,而是所有AD用戶都已經(jīng)可以用testsaslauthd程序測試驗證。可進(jìn)一步AD里面加用戶、或改密碼測試。需注意AD修改密碼,老密碼依然可用5分鐘。如驗證不通過檢查 sasl的配置。重啟sasl即可清楚密碼緩存。

    四、openldap-server配置

    1. 檢查Openldap

    如果是編譯的必須要有編譯參數(shù) ./configure --enable-spasswd;如沒有需要重新編譯,否則不支持之后形如 userPassword: {SASL}user@domain的語法配置。

    本文采用yum安裝,默認(rèn)是支持的。

    2. 配置openldap使用Saslauthd

    在openldap的配置文件/etc/openldap/slapd.conf加入如下兩行 sasl-host localhost sasl-secprops none 這兩行配置是告訴openldap使用本機的sasl再修改/新建sasl的配置文件 [root@0 ~]# cat /etc/sasl2/slapd.conf mech_list: plain pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux這個配置文件相當(dāng)于sasl的前端,意思是來自于slapd的請求,讓saslauthd接手處理。注意這兩個配置文件文件名是相同的,但卻是不同軟件包的配置文件。如果slapd是用非root的OS用戶啟動的,那還要將用戶加到組里。(本次實驗是用root啟動saslauthd) usermod -a -G sasl ldap

    3. openldap新建測試用戶

    cat << EOF | ldapadd -x -D "cn=Manager,dc=windows,dc=com" -W dn: uid=user10,ou=people,dc=windows,dc=com uid: user10 cn: user10 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 30010 gidNumber: 30005 homeDirectory: /home/user10 userPassword: {SASL}user10如上userPassword配置, openldap就會將用戶user10轉(zhuǎn)發(fā)給sasl程序認(rèn)證, 而sasl又會進(jìn)一步轉(zhuǎn)發(fā)給windows AD。也可同樣原理參照, 新建test1用戶測試如下 [root@0 ~]# testsaslauthd -u user10 -p Acc123456 0: OK "Success." [root@0 ~]# ldapsearch -w Acc123456 -H ldap://xyz.com -D "uid=user10,ou=people,dc=xyz,dc=com" -b "uid=user10,ou=people,dc=xyz,dc=com" # extended LDIF # # LDAPv3 # base <uid=user10,ou=people,dc=xyz,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL ## user10, people, xyz.com dn: uid=user10,ou=people,dc=xyz,dc=com uid: user10 cn: user10 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 30010 gidNumber: 30005 homeDirectory: /home/user10 userPassword:: e1NBU0x9dXNlcjEw# search result search: 2 result: 0 Success# numResponses: 2 # numEntries: 1

    五、配置TLS加密

    本人并沒有配置, 所以忽略。

    解決方案有這么幾種:

    ?外層網(wǎng)絡(luò)層加密,比如×××隧道

    ?使用windows安全認(rèn)證如NTLM 、Kerberos

    ?啟用SSL/TLS鑲套協(xié)議

    本文采用TLS方案

    D.Windowsad啟用TLS

    Windows AD啟用TLS支持需要先安裝證書服務(wù),即 AD CS,建議在功能里面安裝相關(guān)管理工具。安裝完成后執(zhí)行 certutil -dcinfo verify ,再用ldp.exe程序本地驗證。


    通過后在用ldapsearch遠(yuǎn)程驗證。這個有幾個注意點,過程如下:

    4.導(dǎo)出windows證書,并配置給ldapsearch

    windows的證書導(dǎo)出如圖:

    講導(dǎo)出的文件傳到ldapsearch所在服務(wù)器

    修改配置文件(ldap客戶端配置文件和openldap客戶端配置文件是不同的)

    /usr/local/openldap2.4/etc/openldap/ldap.conf

    加入 TLS_CACERT /etc/openldap/certs/ca2.crt

    5.可能需要修改/etc/hosts

    192.168.0.101 WIN-QLMQQENMPLO.test.com

    因為會驗證主機名是否與證書里的字段匹配,所以不能用ip地址訪問

    測試命令:

    ldapsearch -x -H ldaps://WIN-QLMQQENMPLO.test.com -D "CN=blake,CN=Users,DC=test,DC=com" -w 密碼 -b "CN=administrator,CN=Users,DC=test,DC=com"

    注意連接協(xié)議是ldaps,默認(rèn)636端口,不再是ldap

    這里OK了再繼續(xù)。否則后面也容易出問題

    E.Sasl配置TLS

    修改配置文件/etc/saslauthd2ad.conf

    [root@localhost log]# cat /etc/saslauthd2ad.conf

    ldap_servers: ldaps://WIN-QLMQQENMPLO.test.com/

    ldap_search_base: CN=Users,DC=test,DC=com

    ldap_filter: sAMAccountName=%U

    ldap_bind_dn: CN=administrator,CN=Users,DC=test,DC=com

    ldap_password: 密碼

    ldap_tls_cacert_file: /etc/openldap/certs/ca-test.cer

    這里和前面的配置有2點不同,一是協(xié)議變?yōu)閘daps,而是最后一行指定了證書。就是前面從windows導(dǎo)出的證書。這里的邏輯是:自簽名的ssl/tls證書,ldaps要求把自簽名用到的ca證書配置給客戶端。Ldapsearch程序修改ldap.conf文件,sasl則修改本文件。

    使用testsaslauthd -u administrator -p 密碼 命令驗證

    F.Openldap配置TLS

    Openldap服務(wù)端也可以配置TLS,配置文件是slapd.conf

    比如 /usr/local/openldap2.4/etc/openldap/slapd.conf

    增加3行

    TLSCACertificateFile /etc/openldap/certs/ca.crt

    TLSCertificateFile /etc/openldap/certs/ldap.crt

    TLSCertificateKeyFile /etc/openldap/certs/ldap.key.pem

    這里第一行是自簽名用到的ca證書(可以不是本機,可以用前面的windows服務(wù)器來簽證書),第二行是本機服務(wù)器證書,第三行是本機服務(wù)器證書密鑰。證書的概念這里不詳細(xì)講解。

    之后,用命令開啟TLSslapd -4 -h "ldap:/// ldaps:///"

    特別注意,這里要驗證openldapTLS的話又比較麻煩

    可以先openssl s_client -connect localhost:636看一下證書對不對

    然后配置ldapsearch 1.合并證書,即ldap.conf 配置文件里面,TLS_CACERT 參數(shù)指定的文件,直接用cat命令講兩個ca證書合并(一個是前面windows的,一個是簽發(fā)給openldap的) 2.修改/etc/hosts 192.168.0.107 ldap

    測試驗證命令:ldapsearch -w 密碼 -H ldaps://ldap -D "cn=blake,ou=users,dc=saybot,dc=com" -b "cn=blake,ou

    =users,dc=saybot,dc=com"

    G.概念總結(jié)

    TLS的配置整體比較麻煩,把握以下概念:

    ?Ldap協(xié)議是389端口,明文;TLS加密后協(xié)議是ldaps ,636端口

    ?Windowsad開啟ldaps(TLS)安裝活動目錄證書(AD CS)服務(wù)

    ?證書有2種,1是服務(wù)器證書,2是簽發(fā)服務(wù)器證書的ca證書

    ?自簽名的情況下,客戶端需要額外配置ca證書(第二種)

    轉(zhuǎn)載于:https://www.cnblogs.com/cishi/p/9398079.html

    總結(jié)

    以上是生活随笔為你收集整理的12-openldap使用AD密码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。