美文网首页
LDAP/AD认证

LDAP/AD认证

作者: shuhanghang | 来源:发表于2020-07-01 12:21 被阅读0次

    一. 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认证界面的标签
      'host' =>  '192.168.10.10',                     # DC 服务器地址
      'port' => 389,                                   
      'uid' => 'sAMAccountName',                      # Gitlab使用登录域用户属性
      'encryption' => 'plain',                        # AD DC 认证传输的加密方法     
      '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,                   # 此设置指定LDAP服务器是否为AD服务器
      '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
    

    检查测试ldap配置

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

    如果从LDAP服务器中删除了用户,则该用户也会在GitLab中被阻止。用户将立即被阻止登录。但是,LDAP检查缓存时间为一小时(请参阅注释),这意味着已经登录或通过SSH使用Git的用户仍然可以访问GitLab最多一个小时。在GitLab管理区域中手动阻止用户以立即阻止所有访问。

    1.2 Gitlab EE

    1. GitLab每天运行一次,默认情况下,GitLab将在服务器时间上午01:30每天运行一次worker,以根据LDAP检查和更新GitLab用户。
    [root@localhost ~]# vim /etc/gitlab/gitlab.rb
    gitlab_rails['ldap_sync_worker_cron'] = "30 1 * * *"
    
    1. 运行群组同步
    [root@localhost ~]# gitlab-rake gitlab:ldap:group_sync
    

    1.3 Gitlab账号与AD账号

    在集成AD后,为了兼容前期Gitlab创建的用户账号,在创建AD用户账号时只需保证sAMAccountName,email属性与Gitlab用户的Username、电子邮箱的值一致即可(密码可以不同),使用这种方式创建的AD账户登录Gitlab时Gitlab不会创建新用户。

    二. JumpServer LDAP

    1. 后台LDAP设置

      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"}

      启动LDAP认证

    2. 修改配置文件

    [root@localhost ~]# vim /opt/jumpserver/config.yml 
    
    # LDAP/AD settings
    # LDAP 搜索分页数量
    #AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
    #
    # 定时同步用户
    # 启用 / 禁用
    AUTH_LDAP_SYNC_IS_PERIODIC: True
    # 同步间隔 (单位: 时) (优先)
    #AUTH_LDAP_SYNC_INTERVAL: 12
    # Crontab 表达式,每隔半个小时同步一次
    AUTH_LDAP_SYNC_CRONTAB: "*/30 * * * *"
    #
    # LDAP 用户登录时仅允许在用户列表中的用户执行 LDAP Server 认证
    AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: True
    #
    # LDAP 认证时如果日志中出现以下信息将参数设置为 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=权限组,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是一个基于MIT协议的开源项目,这个项目实现了通过web界面管理控制一些Nignx常用的功能,比如重定向、反向代理、404、甚至提供了免费的SSL,Nginx-proxy-ldap-manager在Nginx Proxy Manager的基础上添加了nginx-auth-ldap认证模块。

    4.1 安装

    docker-compose

    管理界面端口: 81
    默认管理员密码:

    Email:    admin@example.com
    Password: changeme
    

    4.2 配置AD认证

    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认证时才配置Advanced,auth_ldap_servers值与nginx.conf文件中的ldap_server值对应

    五. Rancher LDAP

    六. Openvpn LDAP

    六. 参考

    【1】How to configure LDAP with GitLab CE
    【2】General LDAP Setup
    【3】nginx-auth-ldap
    【4】LDAP 认证
    【5】nginx-proxy-ldap-manager

    相关文章

      网友评论

          本文标题:LDAP/AD认证

          本文链接:https://www.haomeiwen.com/subject/saycqktx.html