LDAP/AD認(rèn)證

一. Gitlab LDAP

1.1 Gitlab配置

[root@localhost ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = {
'main' => {
  'label' => 'AD',                                # Gitlab AD認(rèn)證界面的標(biāo)簽
  'host' =>  '192.168.10.10',                     # DC 服務(wù)器地址
  'port' => 389,                                   
  'uid' => 'sAMAccountName',                      # Gitlab使用登錄域用戶屬性
  'encryption' => 'plain',                        # AD DC 認(rèn)證傳輸?shù)募用芊椒?    
  'bind_dn' => 'CN=admin,CN=Users,DC=test,DC=io',   #綁定管理員的dn
  'password' => '12345678',                     # 管理員密碼
  'allow_username_or_email_login': true,        # 允許用戶使用@的方式登錄
  'block_auto_created_users': true,             # 新建用戶首次登錄Gitlab是否被鎖定
  'active_directory' => true,                   # 此設(shè)置指定LDAP服務(wù)器是否為AD服務(wù)器
  'base' => 'OU=test,DC=test,DC=io',            # 搜索指定組織下的用戶
  'user_filter' =>'memberOf=CN=GITLAB_USERS,CN=Users,DC=test,DC=io' # 過濾LDAP用戶
  }
}
[root@localhost ~]# gitlab-ctl reconfigure

檢查測(cè)試ldap配置

[root@localhost ~]# gitlab-rake gitlab:ldap:check

如果從LDAP服務(wù)器中刪除了用戶蛋褥,則該用戶也會(huì)在GitLab中被阻止桨菜。用戶將立即被阻止登錄源哩。但是厘线,LDAP檢查緩存時(shí)間為一小時(shí)(請(qǐng)參閱注釋)鸳惯,這意味著已經(jīng)登錄或通過SSH使用Git的用戶仍然可以訪問GitLab最多一個(gè)小時(shí)商蕴。在GitLab管理區(qū)域中手動(dòng)阻止用戶以立即阻止所有訪問。

1.2 Gitlab EE

  1. GitLab每天運(yùn)行一次芝发,默認(rèn)情況下绪商,GitLab將在服務(wù)器時(shí)間上午01:30每天運(yùn)行一次worker,以根據(jù)LDAP檢查和更新GitLab用戶辅鲸。
[root@localhost ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails['ldap_sync_worker_cron'] = "30 1 * * *"
  1. 運(yùn)行群組同步
[root@localhost ~]# gitlab-rake gitlab:ldap:group_sync

1.3 Gitlab賬號(hào)與AD賬號(hào)

在集成AD后格郁,為了兼容前期Gitlab創(chuàng)建的用戶賬號(hào),在創(chuàng)建AD用戶賬號(hào)時(shí)只需保證sAMAccountName独悴,email屬性與Gitlab用戶的Username例书、電子郵箱的值一致即可(密碼可以不同),使用這種方式創(chuàng)建的AD賬戶登錄Gitlab時(shí)Gitlab不會(huì)創(chuàng)建新用戶刻炒。

二. JumpServer LDAP

  1. 后臺(tái)LDAP設(shè)置

    LDAP地址 ldap://192.168.10.10:389

    綁定DN cn=admin,cn=Users,dc=test,dc=com

    用戶OU ou=jumpserver,dc=test,dc=com

    用戶過濾器 (sAMAccountName=%(user)s)

    LADP屬性映射 {"username": "sAMAccountName", "name": "sn", "email": "mail"}

    啟動(dòng)LDAP認(rèn)證 ?

  2. 修改配置文件

[root@localhost ~]# vim /opt/jumpserver/config.yml 
# LDAP/AD settings
# LDAP 搜索分頁數(shù)量
#AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
#
# 定時(shí)同步用戶
# 啟用 / 禁用
AUTH_LDAP_SYNC_IS_PERIODIC: True
# 同步間隔 (單位: 時(shí)) (優(yōu)先)
#AUTH_LDAP_SYNC_INTERVAL: 12
# Crontab 表達(dá)式决采,每隔半個(gè)小時(shí)同步一次
AUTH_LDAP_SYNC_CRONTAB: "*/30 * * * *"
#
# LDAP 用戶登錄時(shí)僅允許在用戶列表中的用戶執(zhí)行 LDAP Server 認(rèn)證
AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: True
#
# LDAP 認(rèn)證時(shí)如果日志中出現(xiàn)以下信息將參數(shù)設(shè)置為 0 (詳情參見:https://www.python-ldap.org/en/latest/faq.html)
# In order to perform this operation a successful bind must be completed on the connection
#AUTH_LDAP_OPTIONS_OPT_REFERRALS: -1

三. Nginx LDAP

3.1 編譯安裝Nginx

  1. 下載Nginx源碼包
[root@NGINX_LDAP home]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
  1. 安裝編譯nginx依賴包
[root@NGINX_LDAP home]# yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel openldap-devel
  1. 解壓nginx包
[root@NGINX_LDAP home]# tar zxvf nginx-1.18.0.tar.gz
  1. 克隆nginx第三方模塊
[root@NGINX_LDAP home]# git clone https://github.com/kvspb/nginx-auth-ldap.git
  1. 配置
[root@NGINX_LDAP nginx-1.18.0]# ./configure --prefix=/usr/local/nginx  --add-module=/home/nginx-auth-ldap
  1. 編譯安裝
[root@NGINX_LDAP nginx-1.18.0]# make && make install
  1. 修改nginx.conf
[root@NGINX_LDAP conf]# cat /usr/local/nginx/conf/nginx.conf
   worker_processes  1;
   
   events {
       worker_connections  1024;
   }
   
   http {
       include       mime.types;
       default_type  application/octet-stream;
   
       sendfile        on;
       keepalive_timeout  65;
   
       # define ldap server
       ldap_server ad_1 {
         # user search base.
         url "ldap://192.168.10.10:3268/DC=test,DC=com?sAMAccountName?sub?(objectClass=person)";
         # bind as
         binddn "test\\admin";
         # bind pw
         binddn_passwd "12345678";
         # group attribute name which contains member object
         group_attribute member;
         # search for full DN in member object
         group_attribute_is_dn on;
         # matching algorithm (any / all)
         satisfy any;
         # list of allowed groups
         require group "CN=Nginx登錄,OU=權(quán)限組,DC=test,DC=com";
         # list of allowed users
         # require 'valid_user' cannot be used together with 'user' as valid user is a superset
         # require valid_user;
         #require user "CN=Batman,OU=Users,OU=New York Office,OU=Offices,DC=company,DC=com";
         #require user "CN=Robocop,OU=Users,OU=New York Office,OU=Offices,DC=company,DC=com";
       }
   
   server {
     listen       80;
     server_name  localhost;
   
     location / {
       # adding ldap authentication
       auth_ldap "Closed content";
       auth_ldap_servers ad_1;
   
       root html;
       index index.html index.htm;
     }
   
     error_page   500 502 503 504  /50x.html;
   
     location = /50x.html {
       root html;
     }
   }
}

四.Nginx-proxy-ldap-manager

Nginx Proxy Manager是一個(gè)基于MIT協(xié)議的開源項(xiàng)目,這個(gè)項(xiàng)目實(shí)現(xiàn)了通過web界面管理控制一些Nignx常用的功能坟奥,比如重定向树瞭、反向代理、404爱谁、甚至提供了免費(fèi)的SSL晒喷,Nginx-proxy-ldap-manager在Nginx Proxy Manager的基礎(chǔ)上添加了nginx-auth-ldap認(rèn)證模塊。

4.1 安裝

docker-compose

管理界面端口: 81
默認(rèn)管理員密碼:

Email:    admin@example.com
Password: changeme

4.2 配置AD認(rèn)證

  1. 配置nginx.conf
####################################################
# Ldap group:Nginx1
ldap_server ad_1 {                                                                                        
  url "ldap://172.16.10.10:3268/DC=test,DC=com?sAMAccountName?sub?(objectClass=person)";     
  binddn "test\\admin";                                                                   
  binddn_passwd "password";                                                                 
  group_attribute member;                                                                      
  group_attribute_is_dn on;                                                                    
  satisfy any;                                                                                 
    require group "CN=Nginx1,OU=Nginx-proxy,DC=test,DC=com";                                      
  }   
# Ldap group:Nginx2
ldap_server ad_2 {                                                                            
  url "ldap://172.16.10.10:3268/DC=test,DC=io?sAMAccountName?sub?(objectClass=person)";     
  binddn "test\\admin";                                                                   
  binddn_passwd "password";                                                                 
  group_attribute member;                                                                      
  group_attribute_is_dn on;                                                                    
  satisfy any;                                                                                 
  require group "CN=Nginx2,OU=Nginx-proxy,DC=test,DC=com";                                     
}  
#####################################################
  1. 配置反向代理

使用AD認(rèn)證時(shí)才配置Advanced管行,auth_ldap_servers值與nginx.conf文件中的ldap_server值對(duì)應(yīng)

五. Rancher LDAP

六. Openvpn LDAP

六. 參考

【1】How to configure LDAP with GitLab CE
【2】General LDAP Setup
【3】nginx-auth-ldap
【4】LDAP 認(rèn)證
【5】nginx-proxy-ldap-manager

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厨埋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捐顷,更是在濱河造成了極大的恐慌荡陷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迅涮,死亡現(xiàn)場(chǎng)離奇詭異废赞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叮姑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門唉地,熙熙樓的掌柜王于貴愁眉苦臉地迎上來据悔,“玉大人,你說我怎么就攤上這事耘沼〖牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵群嗤,是天一觀的道長菠隆。 經(jīng)常有香客問我,道長狂秘,這世上最難降的妖魔是什么骇径? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮者春,結(jié)果婚禮上破衔,老公的妹妹穿的比我還像新娘。我一直安慰自己钱烟,他們只是感情好晰筛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忠售,像睡著了一般传惠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稻扬,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天罪郊,我揣著相機(jī)與錄音好乐,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糊探,可吹牛的內(nèi)容都是我干的忘古。 我是一名探鬼主播技竟,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窿凤,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了黔宛?” 一聲冷哼從身側(cè)響起近刘,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臀晃,沒想到半個(gè)月后觉渴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡徽惋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年案淋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片险绘。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踢京,死狀恐怖誉碴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓣距,我是刑警寧澤黔帕,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站旨涝,受9級(jí)特大地震影響蹬屹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜白华,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贩耐。 院中可真熱鬧弧腥,春花似錦、人聲如沸潮太。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铡买。三九已至更鲁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奇钞,已是汗流浹背澡为。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留景埃,地道東北人媒至。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像谷徙,于是被迫代替她去往敵國和親拒啰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355