본문 바로가기

DATABASE/MYSQL

[MariaDB] ActiveDirectory 와 연동하기 [1] - SSSD를 이용하여 AD 조인하기

반응형

시작하기 전에..


mariadb 사용자 인증을 SSSD(System Security Services Daemon) + PAM을 이용하여 ActiveDirectory(이하 AD)와 연동하고자 한다.

2편으로 나누어 작성할 예정이며 먼저 SSSD를 이용하여 AD에 조인하고 ssh로 로그인해보는 설정을 할 것이다.

 

 

환경


OS(ad-client) : CentOS Stream release 8

MariaDB ver : 10.3.28

sssd ver : 2.9.4

AD Domain : test.com

AD DC : dc01.test.com(172.16.10.100), dc02.test.com(172.16.10.101)

 

 

필요 패키지 설치


yum install sssd realmd oddjob oddjob-mkhomedir sssd-tools

 

 

 

SSSD 설정


SSSD는 AD, LDAP 등의 인증을 사용할 수 있게 도와 준다.

 

DNS 설정

AD의 도메인을 알고 있는 DNS를 설정한다.

경로 : /etc/resolv.conf

search test.com
nameserver 172.16.10.100
nameserver 172.16.10.101

 

 

AD discover

realm discover을 통해 같은 네트워크에 있는 AD DC(Domain Controller)를 검색한다.

realm discover TEST.COM

결과

test.com
  type: kerberos
  realm-name: TEST.COM
  domain-name: test.com
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools

 

 

AD 조인

바인드 도메인 사용자로 AD에 조인한다.

realm join test.com -U Administrator

 

 

AD 조인 확인

sssd-tools의 sssctl을 이용하여 도메인 상태정보를 조회 할 수 있다.

sssctl domain-status test.com

결과

Online status: Online

Active servers:
AD Global Catalog: dc02.test.com
AD Domain Controller: dc02.test.com

Discovered AD Global Catalog servers:
- dc02.test.com
- dc01.test.com

Discovered AD Domain Controller servers:
- dc02.test.com
- dc01.test.com

 

 

sssd.conf 확인

AD 조인이 완료되면 sssd.conf 라는 설정파일이 자동 생성 된다.

discover가 되지 않는다면 수동으로 설정파일을 업데이트 할 수 있다.

경로 : /etc/sssd/sssd.conf

[sssd]
domains = test.com
config_file_version = 2
services = nss, pam

[domain/test.com]
ad_domain = test.com
krb5_realm = TEST.COM
realmd_tags = manages-system joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad

 

옵션 수정하기

경로 : /etc/sssd/sssd.conf

use_fully_qualified_names = [True|False]

  • True : user@test.com 처럼 도메인을 붙이는 완전한 형태의 계정을 요구한다.
  • False : 도메인 없이 user 로만 계정을 사용할 수 있다.

False로 수정 후 sssd를 재시작해준다.

use_fully_qualified_names = False
systemctl restart sssd

 

AD 특정 그룹만 허용하기

경로 : /etc/sssd/sssd.conf

test-group 이라는 AD 그룹내 user만 허용 하고 싶다면 아래와 같이 설정 한 후 sssd를 재시작한다.

#access_provider = ad
access_provider = simple
simple_allow_groups = test-group

id로 user를 조회해본다.

id test2
uid=986601580(test2) gid=986600513(domain users) groups=986600513(domain users),986601546(test-group)

혹은 user 정보를 조회할 수도 있다.

getent passwd test2
test2:*:986601379:986600513:test2:/home/test2@test.com:/bin/bash

 

 

cache

AD의 사용자 정보를 sssd 내에서 cache를 한다.

cache_credentials = True

 

cache에 대한 설정은 아래 링크를 참조한다.

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/deployment_guide/sssd-cache-cred#sssd-cache-cred

 

특정 사용자의 사용자 cache를 삭제 하고자 한다면 아래와 같이 명령한다.

sss_cache -u test2

그외 옵션을 참고한다.

sss_cache -u (사용자)
sss_cache -U (모든 사용자)
sss_cache -E (모든 레코드)
sss_cache -g (그룹)
sss_cache -G (모든그룹)

 

 

그밖에 참고

sssctl

sssctl domain-status 외 다른 명령을 알아 보고자 한다.

sssd.conf 의 config 체크

sssctl config-check

 

가입되어 있는 도메인 리스트

sssctl domain-list

 

 

ssh에 로그인 해보기


지금까지의 설정으로 AD의 test-group내 사용자가 ssh로 로그인 할 수 있다.

$ ssh test2@ad-client
test2@ad-client's password: [패스워드]

[test2@ad-client ~]$

 

또한 sudo 권한을 설정된  그롭(test-group)에 줄수도 있다.

경로 : /etc/sudoers

%test-group	ALL=(ALL)	NOPASSWD: ALL

 

 

다음편으로..

 

반응형