Computer >> 컴퓨터 >  >> 체계 >> Linux

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

이 기사에서는 Kerberos를 사용하는 Active Directory의 Zabbix 4.0 이상에 대한 투명 SSO(Single Sign-On) 인증의 단계별 구성을 고려할 것입니다.

최종 결과는 사용자가 자격 증명을 입력하지 않고 Zabbix 프론트 페이지에서 자동으로 인증된다는 것입니다. 이렇게 하려면 사용자가 Zabbix에 지정된 Active Directory 도메인 계정으로 Windows에 로그인해야 합니다. 또한 사용자가 브라우저를 구성해야 합니다(Kerberos 지원이 활성화되어야 하고 IE에서 신뢰할 수 있는 인트라넷 사이트가 설정되어야 함).

쇼케이스:

  • 우분투 서버 18.04 LTS;
  • 기능 수준이 2008 이상인 Active Directory 도메인
  • Zabbix Server 4.0.11, 웹 서버로서의 Apache2(Zabbix 설치 가이드)
참고 . SSO를 구현하려면 libapache2-mod-auth-kerb를 사용하여 Apache2 이 기사에서는 모듈을 사용할 것입니다. Nginx는 여기에서 논의되지 않지만 spnego-http-auth-nginx-module이 있습니다. Nginx를 컴파일할 때 별도로 활성화해야 합니다.

Active Directory에서 Zabbix LDAP 인증

먼저 도메인 사용자를 Zabbix에 바인딩해야 합니다. 그렇게 하려면 AD 도메인에서와 동일한 로그인으로 Zabbix에서 사용자를 생성하는 것으로 충분합니다. 예를 들어 로그인(sAMAccountName 속성)이 user_5인 경우 Zabbix의 사용자는 동일한 로그인을 가지고 있어야 합니다.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

Zabbix를 사용할 각 사용자에 대해 수행하십시오.

그런 다음 Active Directory에 별도의 사용자 계정을 만들어 Zabbix를 도메인에 바인딩합니다. 실제로는 어떤 도메인 계정도 사용할 수 있지만 별도의 서비스 계정을 만드는 것이 좋습니다. 제 경우에는 zabbix_admin이 됩니다. . AD에서 사용자를 생성하기 위해 PowerShell cmdlet New-ADUser:

를 사용하겠습니다.

New-ADUser -Name "zabbix_admin" -GivenName "zabbix_admin" -Surname "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword (Read-Host -AsSecureString "Password:") -DisplayName "zabbix_admin" -Enabled $true

PowerShell 콘솔에서 위의 명령을 실행하고 사용자 암호를 설정합니다. 새 사용자는 도메인 루트의 사용자 컨테이너 아래에 있습니다.

Zabbix에서 LDAP 인증을 구성해 보겠습니다. Zabbix 프런트 엔드에서 관리 의 LDAP 설정 탭으로 이동합니다. -> 인증 . LDAP 인증 사용을 선택합니다. 다음 필드를 채우십시오:

  • LDAP 호스트:ldap://dc1.domain.local
  • 포트:389
  • 기본 DN:DC=domain, DC=local
  • 검색 속성:sAMAccountName
  • 바인드 DN:CN=zabbix_admin,OU=Users,DC=domain,DC=local

LDAP 인증에서 모든 매개변수에 대한 설명을 읽을 수 있습니다. Zabbix 문서 섹션:https://www.zabbix.com/documentation/current/manual/web_interface/frontend_sections/administration/authentication.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

구성을 완료하기 전에 테스트 로그인(테스트 단추). 사용자 이름(이전에 생성한 계정)과 AD 암호를 지정합니다.
Zabbix:Active Directory의 싱글 사인온(SSO) 인증

테스트에 성공하면 설정을 저장하고 Zabbix의 인증 유형을 내부에서 LDAP로 변경합니다. .

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

HTTP 인증 사용(HTTP 설정 -> HTTP 인증 사용 ).

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

LDAP 인증이 구성되었습니다.

도움말 . LDAP 서버를 사용할 수 없으면 Zabbix에 액세스할 수 없습니다. 내부 인증으로 돌아가려면 MySQL을 열고 다음 명령을 실행하십시오.

update zabbix.config set authentication_type='0' where configid='1';

Zabbix(Apache2, krb5-user)에서 투명(싱글 사인온) 인증 구성

우선 도메인의 DNS 레코드와 일치해야 하는 /etc/hostname에 서버의 FQDN 이름을 지정합니다. 제 경우에는 zabbix.domain.local입니다. .

또한 로컬 IP 주소에 대한 서버의 FQDN과 /etc/hosts에 있는 서버의 IP 주소를 작성하십시오.

127.0.0.1 로컬 호스트 zabbix.domain.local10.1.1.10 zabbix.domain.local

Kerberos 인증이 올바르게 작동하려면 도메인 컨트롤러와 시간을 동기화하십시오. ntpdate 설치 패키지를 만들고 도메인 컨트롤러에 바인딩합니다.

apt-get install ntp ntpdate
ntpdate dc.domain.local

Chrony는 CentOS 8에서 시간을 동기화하는 데 사용됩니다. ntpntpdate 패키지는 공식 리포지토리에서 사용할 수 없습니다.

이제 도메인 컨트롤러에서 keytab 파일을 생성해야 합니다. 키탭 SPN 및 암호화된 키가 포함된 파일입니다. Keytab은 Kerberos 기반 인증에 사용됩니다.

  • 도메인 컨트롤러에 로그인하고 명령 프롬프트를 관리자로 실행합니다. C:\로 이동합니다.
  • 다음을 입력하십시오.
    ktpass -princ HTTP/zabbix.domain.local@DOMAIN.LOCAL -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn –setpass
  • C:\zabbix.keytab 파일을 Zabbix 서버의 /etc/apache2/ 디렉토리에 복사합니다.

Kerberos 패키지 및 apache2용 모듈 설치:

#apt install krb5-user libapache2-mod-auth-kerb

krb5-user를 구성합니다. /etc/krb5.cnf 수정 :

[로깅]기본값 =파일:/var/log/krb5libs.logkdc =파일:/var/log/krb5kdc.logadmin_server =파일:/var/log/kadmind.log[libdefaults]default_realm =DOMAIN.LOCALdefault_keytab_name =/ etc/apache2/zabbix.keytabdns_lookup_kdc =falsedns_lookup_realm =falseforwardable =trueticket_lifetime =24h[realms]DOMAIN.LOCAL ={kdc =dc.domain.localdefault_domain =DOMAIN.LOCALadmin_server =dc.domain.local}[domain_realm].domain. .LOCALdomain.local =DOMAIN.LOCAL

도메인을 지정합니다. 일부 지역에서는 도메인 이름이 대문자로 작성되므로 이 규칙을 따르십시오.

참고 . keytab 파일 경로 "default_keytab_name =/etc/apache2/zabbix.keytab"이 포함된 행을 보고 파일을 사용할 수 있는지 확인합니다. www-data에 대한 읽기 권한을 부여하고 다음을 실행합니다. chown www-data:www-data /etc/apache2/zabbix.keytab

Linux에서 Kerberos 인증이 작동하는지 확인하십시오.

kinit -kV -p HTTP/zabbix.domain.local –t /etc/apache2/zabbix.keytab

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

다음 오류가 표시될 수 있습니다.

kinit:초기 자격 증명을 가져오는 동안 Kerberos 데이터베이스에서 클라이언트 'HTTP/zabbix.domain.local@DOMAIN.LOCAL'을 찾을 수 없습니다.

이 경우 다른 사용자의 자격 증명을 사용하여 인증을 시도하십시오.

kinit -pV LOGIN

인증에 성공하면 keytab 파일에 문제가 있는 것입니다. 올바르게 생성했는지 확인하십시오. keytab 파일을 생성하기 위해 올바른 명령을 입력했는지 확인하십시오.

Zabbix 서비스 계정의 SPN 레코드가 AD에 있는지 확인하십시오. 도메인 컨트롤러에서 다음 명령을 입력합니다.

setspn -l zabbix_admin

이런 메시지를 보게 됩니다. HTTP/zabbix.domain.local 형식이어야 합니다. 기록이 없으면 추가합니다.

setspn -a HTTP/zabbix.domain.local zabbix_admin

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

사용자 로그인 이름이 HTTP/zabbix.domain.local로 변경되었는지 확인하십시오.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

그렇지 않은 경우 수동으로 변경하십시오.

그런 다음 apache2 구성 파일을 편집하십시오 — /etc/apache2/sites-available/000-default.conf.

ServerName zabbix.domain.local 행 아래에 다음을 추가하십시오.

<위치 />AuthType KerberosAuthName "Kerberos 인증됨"KrbAuthRealms DOMAIN.LOCAL#KrbServiceName HTTP/zabbix.domain.localKrbServiceName AnyKrb5Keytab /etc/apache2/zabbix.keytabKrbMethodNegotiate OnKrbSaveCredentials-onKrb 

KrbServiceName이 keytab 파일에 지정된 이름과 일치하지 않으면 오류가 발생합니다. 따라서 모두를 설정할 수 있습니다. 테스트하는 동안 값. 시스템이 작동하는지 확인한 후 유효한 서비스 이름을 지정하십시오. 다음을 사용하여 확인할 수 있습니다.
klist -le /etc/apache2/zabbix.keytab

Kerberos 인증을 위해 브라우저를 구성하는 방법

Internet Explorer가 Zabbix에서 Kerberos 인증을 사용하려면 해당 URL을 로컬 인트라넷에 추가해야 합니다. 사이트. Chrome은 Internet Explorer 설정을 사용하므로 별도로 구성할 필요가 없습니다.

참고 . Zabbix 사이트의 URL은 신뢰할 수 있는 사이트 목록에 속하지 않아야 합니다. 그렇지 않으면 Kerberos가 작동하지 않습니다. 사이트는 인트라넷 사이트에서만 지정해야 합니다.

IE에서 옵션 -> 보안을 엽니다.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

사이트를 클릭합니다. 로컬 인트라넷에서 아래 스크린샷에 표시된 옵션을 확인하고 고급을 클릭합니다.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

Zabbix 서버 URL을 입력하십시오.

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

고급으로 이동 탭을 누르고 Windows 통합 인증 사용을 선택합니다. .

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

또한 그룹 정책(컴퓨터 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Internet Explorer -> 인터넷 제어판 -> 보안 페이지 -> 사이트 대 영역 할당을 사용하여 Zabbix URL을 로컬 인트라넷 영역에 넣을 수도 있습니다. 목록 . 인트라넷 사이트의 경우 영역 코드 1 사용).

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

Zabbix 서버의 URL을 about:config의 다음 매개변수에 추가합니다. Mozilla Firefox:

network.automatic-ntlm-auth.trusted-urisnetwork.negotiate-auth.delegation-urisnetwork.negotiate-auth.trusted-uris

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

문제가 발생하면 브라우저의 Kerberos 구성에 대한 자세한 문서를 참조하십시오.

그 후 구성이 끝났습니다. Zabbix 서버 URL에 액세스하려고 하면 자동으로 인증되며 비밀번호를 입력하라는 메시지가 표시되지 않습니다.

Apache에서 Kerberos 인증 디버깅 및 문제 해결

문제가 있는 경우 apache2에서 디버그 모드를 활성화하십시오.

/etc/apache2/sites-available/000-defaults.conf에서 닫는 태그 앞에 다음을 입력합니다.

LogLevel 추적 8

Zabbix:Active Directory의 싱글 사인온(SSO) 인증

아파치를 다시 시작하고 error.log 파일에서 Kerberos 모듈 오류를 확인하십시오.

더 편리하게 하려면 이 명령을 사용하여 IP 주소로 항목을 필터링하십시오.

tail -f /var/log/apache2/error.log | grep ‘Your IP address’

Kerberos로 작업하고 진단하려면 kinit를 사용할 수 있습니다. 및 klist 명령.

kinit은 Kerberos 티켓을 가져오고 캐시하는 도구입니다. 예를 들면 다음과 같습니다.

kinit –V -k -t /etc/apache2/zabbix.keytab –p HTTP/zabbix.domain.local@DOMAIN.LOCAL

keytab 파일을 올바르게 생성했다면 명령이 실행되고 인증에 성공했다는 메시지가 표시됩니다.

klist 사용 , 캐시된 Kerberos 티켓을 볼 수 있습니다.

klist -a