ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] LDAP Server 생성하기
    ETC/Docker 2022. 3. 8. 16:32
    SMALL

    사내 시스템을 구성하기 위해 Docker로 여러개의 컨테이너를 이용중인데 

    현재는 Git, MinIO, 메일서버, ERP, 관리자 등 여러 서비스에서 각각의 계정을 만들어주어야 하기 때문에

    인증정보 통합의 필요성을 느껴 LDAP서버를 사용하기로 했다.

     

    LDAP란 Lightweight Directory Access Protocol의 약자로, 분산 디렉터리 서비스에서 사용자, 시스템, 네트워크, 서비스, 앱 등의 정보를 공유하기 위한 프로토콜이다.

     

    자세한 내용은

     

     

    LDAP에 대해 알아보자

    가볍지만 무거운 프로토콜 😮

    medium.com

    참조

     

    쉽게말해 네트워크 기반 데이터베이스라고 볼 수 있는데, 생소한 개념이라 그런지 조금 어렵다 😅

     

    복잡하게 갈 필요 없이 openldap를 이용했다.

     

    해당 이미지를 올려서 LDAP 서버로 사용하면 시놀로지 SMB 서비스 이용이 불가합니다.

     

    (DB에 저장해놓고 OAuth와 같은 SSO를 구현하거나, 시놀로지에서 지원하는 LDAP 또는 SSO서버를 이용할 수도 있지만 직접 만들어보고 싶었다.)

     

    GitHub - osixia/docker-openldap: A docker image to run OpenLDAP 🐳

    A docker image to run OpenLDAP 🐳. Contribute to osixia/docker-openldap development by creating an account on GitHub.

    github.com

     

    Docker에 컨테이너 생성

    $ sudo docker pull osixia/openldap:latest
    
    $ sudo docker run -p 389:389 -p 636:636 \
    --env LDAP_ORGANISATION="Company Name" \
    --env LDAP_DOMAIN="testcompany.com" \
    --env LDAP_ADMIN_PASSWORD="<PASSWORD>" \
    --name ldap-server \
    --network web-server-network \
    --detach osixia/openldap:latest

     

    테스트

    $ sudo docker exec ldap-server ldapsearch -x -H ldap://testcompany.com -b dc=testcompany,dc=com -D "cn=admin,dc=testcompany,dc=com" -w "<PASSWORD>"

    출력결과

    # extended LDIF
    #
    # LDAPv3
    # base <dc=testcompany,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
    
    # testcompany.com
    dn: dc=testcompany,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: Company Name
    dc: testcompany
    
    # search result
    search: 2
    result: 0 Success
    
    # numResponses: 2
    # numEntries: 1

     

    LDAP 관리를 위한 관리자 컨테이너 생성

    $ sudo docker pull osixia/phpldapadmin:latest
    
    $ sudo docker run -p 8443:443 \
    --env PHPLDAPADMIN_LDAPHOSTS=testcompany.com \
    --name ldap-server-admin \
    --network web-server-network \
    --detach osixia/phpldapadmin:latest

     

    LDIF 작성

    # Distinguished Name
    dn: dc=testcompany,dc=com
    dc: testcompany
    o: testcompany
    objectclass: top
    objectclass: dcObject
    objectclass: organization
    
    # Entry - Groups
    cn=groups,dc=testcompany,dc=com
    cn: groups
    objectclass: organizationalRole
    objectclass: top
    
    # Entry - Groups: admin
    dn: cn=admin,cn=groups,dc=testcompany,dc=com
    cn: admin
    gidnumber: 1000
    objectclass: posixGroup
    objectclass: top
    
    # Entry - Groups: userlist
    dn: cn=userlist,cn=groups,dc=testcompany,dc=com
    cn: userlist
    gidnumber: 1001
    objectclass: posixGroup
    objectclass: top
    
    # Entry - User: superadmin
    dn: cn=superadmin,cn=admin,cn=groups,dc=testcompany,dc=com
    cn: superadmin
    gidnumber: 1000
    givenname: super
    homedirectory: /home/sadmin
    loginshell: /usr/sbin/nologin
    objectclass: inetOrgPerson
    objectclass: posixAccount
    objectclass: top
    sn: admin
    uid: sadmin
    uidnumber: 1000
    userpassword: {SSHA}IyThfNXL+vePA7xYD8mebKud6bhn0p2U
    
    # Entry - User: jade
    dn: cn=jade,cn=userlist,cn=groups,dc=testcompany,dc=com
    cn: jade
    gidnumber: 1001
    givenname: jade
    homedirectory: /home/jade
    loginshell: /usr/sbin/nologin
    objectclass: inetOrgPerson
    objectclass: posixAccount
    objectclass: top
    sn: jade
    uid: jade
    uidnumber: 1001
    userpassword: {SSHA}w8gyqYeTaOZerh/aI0UfKpHV5Bifmaz5

    userpassword는 slappasswd 명령어로 만들 수 있다.

     

    https://ip-addr:8443/으로 접속

     

    Login DN: cn=admin,dc=testcompany,dc=com

    Password: 컨테이너 생성 시 작성한 비밀번호

     

    좌측 메뉴 상단의 import 클릭 후 위에 작성한 LDIF 입력, Proceed >> 클릭

     

    최종 결과물

     

     

     

     

     

    시놀로지 연결 테스트

     

     

    중간에 Samba가 지원되지 않는다고 나온다.

    심각한 오류는 아니므로 자세히 보기를 눌러 체크박스 체크 후 적용하면 된다.

     

    메일플러스 서버 - 서비스 - 프로토콜 탭에서 "로컬 사용자"를 "LDAP 사용자"로 바꿔주고, 계정 탭에서 만들어둔 계정을 활성화하면 된다.

     

    메일플러스에 로그인 할 때는 LDAP URL을 @과 함께 뒤에 붙여주어야 한다.

     

    References

    BIG

    댓글 0

Designed by Tistory.