en
지원하는 언어
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
AI 번역
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Kerberos 인증을 설정하는 방법

Kerberos
SSO

개요

2019년 2018.1.3월부터 Easy Redmine(버전 05.02, 플랫폼 XNUMX)은 Kerberos를 통한 사용자 인증을 지원합니다. Easy Software는 일회성 요금으로 청구될 수 있는 프리미엄 서비스로 Kerberos 인증을 제공합니다.

이 기능은 일반 SSO 인증 설정의 일부입니다(버전 10: 관리 >> 설정 >> 인증, 버전 11: 관리 >> Easy SSO ).

아래에 자세히 설명된 구성을 사용하여 다음을 입력합니다. 관리자/admin@EASYPROJECT.COM 여기서 EASYPROJECT.COM은 영역 이름입니다.

이 설정은 쉬운 부분입니다. 그러나 더 큰 부분은 서버 측에서 수행됩니다. Easy Redmine용 Kerberos에는 Apache 웹 서버가 필요합니다. 구성은 귀하의 필요에 따라 당사 서버 전문가가 수행합니다.

아래에서 구성에 대한 지침을 찾을 수 있습니다. 수행될 설정에 대한 참조 자료로만 사용됩니다. 이것은 보증된 매뉴얼이 아님을 유의하십시오. 서버에서 Kerberos 또는 기타 SSO 인증을 구성하려고 하면 응용 프로그램의 보안 및 전체 기능에 대한 모든 책임이 사용자에게 있습니다.

주저하지 말고 계정 관리자에게 문의하거나 SUPPORT 전문가와 구성을 계획합니다.

Linux 서버에 Kerberos 설치

내용

Kerberos 서버 설치 및 준비 방법
apache2 웹 서버에서 Kerberos 인증을 사용하는 방법
nginx 웹 서버에서 Kerberos 인증을 사용하는 방법(CentOS 기반 시스템에서만!)
출처 및 유용한 링크

Kerberos 설치

이 토론을 위해 다음 기능을 사용하여 NA MIT Kerberos 도메인을 만들 것입니다(필요에 맞게 편집).

영역: EASYPROJECT.COM
기본 KDC: kdc01.easyproject.com(192.168.0.1)
보조 KDC: kdc02.easyproject.com(192.168.0.2)
사용자 주체: 관리자
관리 주체: easy/easy666

네트워크 인증 사용자는 로컬 사용자와 다른 범위(예: 5000부터 시작)의 uid를 사용하는 것이 좋습니다.

Kerberos 서버를 설치하기 전에 도메인에 대해 올바르게 구성된 DNS 서버가 필요합니다. Kerberos 영역은 규칙에 따라 도메인 이름과 일치하므로 이 섹션에서는 DNS 설명서의 기본 마스터에 구성된 EASYPROJECT.COM 도메인을 사용합니다.

다음 부분이 매우 중요합니다!

!!!또한 Kerberos는 시간에 민감한 프로토콜입니다. 따라서 클라이언트 시스템과 서버 간의 로컬 시스템 시간이 XNUMX분 이상 차이가 나면(기본값) 워크스테이션은 인증할 수 없습니다. 문제를 해결하려면 모든 호스트가 동일한 NTP(Network Time Protocol) 서버를 사용하여 시간을 동기화해야 합니다. NTP 설정에 대한 자세한 내용은 시간 동기화를 참조하십시오.!!!

 

Kerberos 서버 설치

1) 먼저 krb5-kdc 및 krb5-admin-server 패키지를 설치해야 합니다.

sudo apt 설치 krb5-kdc krb5-admin-server

설치가 끝날 때 영역에 대해 동일한 서버일 수도 있고 아닐 수도 있는 Kerberos 및 관리 서버에 대한 호스트 이름을 제공하라는 메시지가 표시됩니다.

기본적으로 영역은 KDC의 도메인 이름에서 생성됩니다.

2) 이제 kdb5_newrealm 유틸리티를 사용하여 새 영역을 생성해야 합니다.

sudo krb5_newrealm

프로젝트 관리 업그레이드

귀하의 필요에 맞게 조정하고 완벽한 개요를 제공하는 차세대 Redmine 기능을 얻으십시오.

Kerberos 서버 구성

1) 설치 중 묻는 질문은 /etc/krb5.conf 파일을 구성하는 데 사용됩니다. KDC(키 배포 센터) 설정을 조정해야 하는 경우 파일을 편집하고 krb5-kdc 데몬을 다시 시작하기만 하면 됩니다. 영역 이름을 변경하기 위해 Kerberos를 처음부터 다시 구성해야 하는 경우 다음 명령을 실행할 수 있습니다.

sudo dpkg-krb5-kdc 재구성

2) KDC가 제대로 실행되면 admin 사용자(admin principal)가 필요합니다. 일상적인 사용자 이름과 다른 사용자 이름을 사용하는 것이 좋습니다. 운영

sudo kadmin.local 암호를 사용하여 root/admin@EASYPROJECT.COM 주체로 인증합니다. kadmin.local: addprinc manager/easy 경고: manager/admin@EASYPROJECT.COM에 대해 지정된 정책이 없습니다. 정책 없음으로 기본 설정 "manager/admin@EASYPROJECT.COM" 주체에 대한 암호 입력: "manager/admin@EASYPROJECT.COM" 주체에 대한 암호 다시 입력: "manager/admin@EASYPROJECT.COM" 주체가 생성되었습니다. kadmin.local: 종료

위의 예에서 manager는 Principal이고, /admin은 Instance이며, @EASYPROJECT.COM은 영역을 나타냅니다. 사용자 주체라고도 하는 "매일" 주체는 manager@EASYPROJECT.COM이 되며 일반 사용자 권한만 있어야 합니다.

EASYPROJECT.COM 및 관리자를 Realm 및 관리자 사용자 이름으로 바꿉니다.

3) 다음으로 새 관리자는 적절한 ACL(액세스 제어 목록) 권한이 있어야 합니다. 권한은 /etc/krb5kdc/kadm5.acl 파일에서 구성됩니다.

관리자/admin@EASYPROJECT.COM *

이 항목은 영역의 모든 보안 주체에 대해 작업을 수행할 수 있는 권한을 관리자/관리자에게 부여합니다. 더 제한적인 권한으로 보안 주체를 구성할 수 있습니다. 이는 하위 직원이 Kerberos 클라이언트에서 사용할 수 있는 관리자 보안 주체가 필요한 경우에 편리합니다. 자세한 내용은 kadm5.acl 매뉴얼 페이지를 참조하십시오.

4) 이제 새 ACL이 적용되도록 krb5-admin-server를 다시 시작합니다.

sudo systemctl 재시작 krb5-admin-server.service

5) 새로운 사용자 주체는 kinit 유틸리티를 사용하여 테스트할 수 있습니다.

kinit manager/admin manager/admin@EASYPROJECT.COM의 비밀번호:

암호를 입력한 후 klist 유틸리티를 사용하여 TGT(Ticket Granting Ticket)에 대한 정보를 봅니다.

klist 자격 증명 캐시: 파일:/tmp/krb5cc_1000 주체: manager/admin@EASYPROJECT.COM 발급 만료 주체 13월 17일 53:34:14 03월 53일 34:XNUMX:XNUMX krbtgt/EASYPROJECT.COM@EASYPROJECT.COM

여기서 캐시 파일 이름 krb5cc_1000은 접두사 krb5cc_와 사용자 ID(uid)로 구성되며, 이 경우에는 1000입니다. 클라이언트가 KDC를 찾을 수 있도록 KDC의 /etc/hosts에 항목을 추가해야 할 수도 있습니다. 예를 들어:

192.168.0.1 kdc01.example.com kdc01

192.168.0.1을 KDC의 IP 주소로 바꿉니다. 이것은 일반적으로 라우터로 분리된 서로 다른 네트워크를 포함하는 Kerberos 영역이 있을 때 발생합니다.

클라이언트가 영역에 대한 KDC를 자동으로 결정할 수 있도록 하는 가장 좋은 방법은 DNS SRV 레코드를 사용하는 것입니다. /etc/named/db.example.com에 다음을 추가합니다.

_kerberos._udp.EASYPROJECT.COM. IN SRV 1 0 88 kdc01.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. IN SRV 1 0 88 kdc01.easyproject.com. _kerberos._udp.EASYPROJECT.COM. IN SRV 10 0 88 kdc02.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. IN SRV 10 0 88 kdc02.easyproject.com. _kerberos-adm._tcp.EASYPROJECT.COM. IN SRV 1 0 749 kdc01.easyproject.com. _kpasswd._udp.EASYPROJECT.COM. IN SRV 1 0 464 kdc01.easyproject.com.

EASYPROJECT.COM, kdc01 및 kdc02를 도메인 이름, 기본 KDC 및 보조 KDC로 바꿉니다.

DNS 설정에 대한 자세한 지침은 DNS(Domain Name Service)를 참조하십시오.

이제 새 Kerberos 영역에서 클라이언트를 인증할 준비가 되었습니다.

보조 KDC 구성(선택 사항)

기본 KDC를 사용할 수 없는 경우에 대비하여 보조 KDC를 보유하는 것이 좋습니다. 또한 다른 네트워크에 있는 Kerberos 클라이언트가 있는 경우(NAT를 사용하는 라우터에 의해 분리될 수 있음) 이러한 각 네트워크에 보조 KDC를 배치하는 것이 좋습니다.

1) 패키지를 설치하고 Kerberos 및 관리 서버 이름을 묻는 메시지가 표시되면 기본 KDC의 이름을 입력합니다.

sudo apt 설치 krb5-kdc krb5-admin-server

2) 패키지를 설치했으면 보조 KDC의 호스트 주체를 만듭니다. 터미널 프롬프트에서 다음을 입력합니다.

kadmin -q "addprinc -randkey 호스트/kdc02.easyproject.com"

그런 다음 kadmin 명령을 실행하면 사용자 이름/admin@EASYPROJECT.COM 주 암호를 입력하라는 메시지가 표시됩니다.

3) keytab 파일의 압축을 풉니다.

kadmin -q "ktadd -norandkey -k keytab.kdc02 호스트/kdc02.easyproject.com"

4) 이제 현재 디렉토리에 keytab.kdc02가 있어야 합니다. 파일을 /etc/krb5.keytab으로 이동합니다.

sudo mv keytab.kdc02 /etc/krb5.keytab

keytab.kdc02 파일의 경로가 다른 경우 그에 따라 조정하십시오.

5) 또한 klist 유틸리티를 사용하여 문제를 해결할 때 유용할 수 있는 Keytab 파일에 보안 주체를 나열할 수 있습니다.

sudo klist -k /etc/krb5.keytab

-k 옵션은 파일이 keytab 파일임을 나타냅니다.

6) 다음으로 각 KDC에는 Realm에 대한 모든 KDC를 나열하는 kpropd.acl 파일이 있어야 합니다. 예를 들어, 기본 및 보조 KDC 모두에서 /etc/krb5kdc/kpropd.acl을 생성합니다.

host/kdc01.easyproject.com@EASYPROJECT.COM host/kdc02.easyproject.com@EASYPROJECT.COM

7) 보조 KDC에 빈 데이터베이스를 만듭니다.

sudo kdb5_util -s 생성

8) 이제 kprop 유틸리티에서 연결을 수신 대기하는 kpropd 데몬을 시작합니다. kprop은 덤프 파일을 전송하는 데 사용됩니다.

sudo kpropd -S

9) 기본 KDC에서 기본 데이터베이스의 덤프 파일을 만듭니다.

sudo kdb5_util 덤프 /var/lib/krb5kdc/dump

10) Primary KDC의 keytab 파일을 추출하여 /etc/krb5.keytab에 복사합니다.

kadmin -q "ktadd -k keytab.kdc01 호스트/kdc01.easyproject.com" sudo mv keytab.kdc01 /etc/krb5.keytab

Keytab을 추출하기 전에 kdc01.easyproject.com에 대한 호스트가 있는지 확인하십시오.

11) kprop 유틸리티를 사용하여 데이터베이스를 보조 KDC로 푸시합니다.

sudo kprop -r EASYPROJECT.COM -f /var/lib/krb5kdc/dump kdc02.easyproject.com

전파가 작동했다면 SUCCEEDED 메시지가 있어야 합니다. 오류 메시지가 있는 경우 자세한 내용은 보조 KDC의 /var/log/syslog를 확인하십시오.

12) 보조 KDC에서 데이터베이스를 주기적으로 업데이트하기 위해 cron 작업을 생성할 수도 있습니다. 예를 들어, 다음은 매시간 데이터베이스를 푸시합니다(긴 줄이 이 문서의 형식에 맞게 분할되었음을 참고하십시오).

# mh dom mon dow 명령 0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump && /usr/sbin/kprop -r EASYPROJECT.COM -f /var/lib/krb5kdc/dump kdc02. easyproject.com

13) 보조 KDC로 돌아가서 Kerberos 마스터 키를 보관할 숨김 파일을 만듭니다.

sudo kdb5_util 숨김

14) 마지막으로 보조 KDC에서 krb5-kdc 데몬을 시작합니다.

sudo systemctl 시작 krb5-kdc.service

Secondary KDC는 이제 Realm에 대한 티켓을 발행할 수 있습니다. 기본 KDC에서 krb5-kdc 데몬을 중지한 다음 kinit를 사용하여 티켓을 요청하여 이를 테스트할 수 있습니다. 모든 것이 잘되면 Secondary KDC에서 티켓을 받아야 합니다. 그렇지 않으면 보조 KDC에서 /var/log/syslog 및 /var/log/auth.log를 확인하십시오.

Kerberos 서버로서의 Active Directory

로그인할 수 있어야 하는 모든 사용자는 웹 서버(예: Apache)를 통해 ER에 도달하기 위해 AD에 있어야 합니다. SSO가 작동하려면 사용자는 AD 사용자로 로그인한 도메인 PC에서 로그인해야 합니다. SSO가 작동하지 않더라도 사용자는 웹 서버에 AD에 대한 로그인 자격 증명을 제공해야 합니다(이 경우 HTTP 기본 인증만 사용되며 https가 강력히 권장됨).

1) 암호가 만료되지 않음 옵션이 켜져 있는 웹 서버용 AD 사용자를 생성합니다. 예를 들어 사용자 easysso는 비밀번호가 SECRET이고 도메인은 SSO에 사용됩니다(예: EASYPROJECT.COM).

2) AD Windows 서버에서 Kerberos keytab 파일 생성:
ktpass -princ HTTP/www.easyproject.com@EASYPROJECT.COM -mapuser easysso@EASYPROJECT.COM -pass SECRET -crypto ALL -ptype KRB5_NT_PRINCIPAL -out C:\Temp\http.keytab

3) SPN(서비스 주체 이름)을 Windows 서버에서 위에서 생성한 AD 계정으로 설정합니다. 예:
setspn -s HTTP/www.easyproject.com easyso

Kerberos Linux 클라이언트

이제 Linux 시스템을 Kerberos 클라이언트로 구성해야 합니다. 이렇게 하면 사용자가 시스템에 성공적으로 로그인하면 모든 Kerberos화된 서비스에 액세스할 수 있습니다.

1) Kerberos Realm에 인증하려면 krb5-user 및 libpam-krb5 패키지가 필요하며 엄격하게 필요하지는 않지만 삶을 더 쉽게 만드는 몇 가지 다른 패키지가 필요합니다. 데비안 기반 시스템에 패키지를 설치하려면 터미널 프롬프트에 다음을 입력하십시오:

sudo apt 설치 krb5-user libpam-krb5 libpam-ccreds 인증 클라이언트 구성

Redhat 기반 시스템에 패키지를 설치하려면 다음을 사용하십시오.

yum 설치 krb5-워크스테이션 pam_krb5

auth-client-config 패키지를 사용하면 여러 소스의 인증을 위해 PAM을 간단하게 구성할 수 있으며 libpam-ccreds는 KDC(키 배포 센터)를 사용할 수 없는 경우 로그인할 수 있도록 인증 자격 증명을 캐시합니다. 이 패키지는 회사 네트워크에 있는 동안 Kerberos를 사용하여 인증할 수 있지만 네트워크 밖에서도 액세스해야 하는 랩톱에도 유용합니다.

2) 터미널(Debian 기반 시스템)에서 클라이언트를 구성하려면 다음을 입력합니다.

sudo dpkg-재구성 krb5-config

Redhat 기반 시스템에서는 /etc/krb5.conf를 편집하는 것으로 충분합니다(아래 참조).

그런 다음 Kerberos 영역의 이름을 입력하라는 메시지가 표시됩니다. 또한 Kerberos SRV 레코드로 DNS를 구성하지 않은 경우 메뉴에서 KDC(키 배포 센터) 및 Realm 관리 서버의 호스트 이름을 입력하라는 메시지가 표시됩니다.

dpkg-reconfigure는 Realm의 /etc/krb5.conf 파일에 항목을 추가합니다. 다음과 유사한 항목이 있어야 합니다.

[libdefaults] default_realm = EASYPROJECT.COM ... [영역] EXAMPLE.COM = { kdc = 192.168.0.1 admin_server = 192.168.0.1 }

설치에서 제안한 대로 각 네트워크 인증 사용자의 uid를 5000에서 시작하도록 설정하면 uid > 5000인 Kerberos 사용자만 사용하여 인증을 시도하도록 pam에 지시할 수 있습니다.

# Kerberos는 로컬 사용자가 아닌 ldap/kerberos 사용자에게만 적용되어야 합니다. for i in common-auth common-session common-account common-password; sudo sed -i -r \ -e 's/pam_krb5.so minimum_uid=1000/pam_krb5.so minimum_uid=5000/' \ /etc/pam.d/$i 완료

이렇게 하면 passwd를 사용하여 암호를 변경할 때 로컬로 인증된 사용자의 (존재하지 않는) Kerberos 암호를 묻는 메시지가 표시되지 않습니다.

 

3) kinit 유틸리티를 사용하여 티켓을 요청하여 구성을 테스트할 수 있습니다. 예를 들어:

kinit manager@EASYPROJECT.COM manager@EASYPROJECT.COM의 비밀번호:

티켓이 승인되면 klist를 사용하여 세부 정보를 볼 수 있습니다.

klist 티켓 캐시: 파일:/tmp/krb5cc_1000 기본 주체: manager@EASYPORJECT.COM 유효 시작 만료 서비스 주체 07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/EASYPROJECT.COM@EASYPROJECT .COM 갱신 07/25/08 05:18:57까지
Kerberos 4 티켓 캐시: /tmp/tkt1000 klist: 캐시된 티켓이 없습니다.

4) 다음으로 auth-client-config를 사용하여 로그인하는 동안 티켓을 요청하도록 libpam-krb5 모듈을 구성합니다.

sudo 인증 클라이언트 구성 -a -p kerberos_example

이제 로그인 인증에 성공하면 티켓을 받게 됩니다.

 

아파치 2 구성

1) mod_auth_kerb 인증 모듈 설치

Apache는 자체적으로 SPNEGO에 대한 지원을 제공하지 않지만 mod_auth_kerb 모듈을 사용하여 추가할 수 있습니다. 이것은 대부분의 주요 GNU/Linux 배포판에 포함되어 있지만 타사 모듈이기 때문에 일반적으로 Apache와 별도로 패키지됩니다. 데비안 기반 시스템에서는 libapache2-mod-auth-kerb 패키지에서 제공합니다.

apt-get 설치 libapache2-mod-auth-kerb

그리고 Red Hat 기반 시스템에서 mod_auth_kerb 패키지로:

yum 설치 mod_auth_kerb

2) Apache 모듈을 사용하려면 먼저 로드해야 하지만 위의 두 패키지 모두 이를 자동으로 수행하도록 정렬합니다. 어떤 이유로든 수동으로 수행해야 하는 경우 적절한 구성 지시문은 다음과 같습니다.

로드 모듈 auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so

(여기서 모듈의 경로 이름은 시스템에 적합한 것으로 대체되어야 함).

3) 웹 서버에 대한 서비스 주체 생성

SPNEGO를 사용하려면 웹 서버에 대해 Kerberos 서비스 주체를 만들어야 합니다. 서비스 이름은 HTTP로 정의되므로 www.easyproject.com 서버의 경우 필요한 서비스 주체 이름은 HTTP/www.easyproject.com@easyproject.COM입니다.

MIT Kerberos를 사용하는 경우 kadmin 명령을 사용하여 서비스 주체를 만들 수 있습니다.

kadmin -p manager/admin -q "addprinc -randkey HTTP/www.easyproject.com"

4) 서비스 주체에 대한 keytab 생성

keytab은 하나 이상의 Kerberos 주체에 해당하는 암호화 키를 저장하기 위한 파일입니다. mod_auth_kerb는 위에서 생성한 서비스 주체를 사용하기 위해 하나가 필요합니다. MIT Kerberos를 사용하는 경우 kadmin 명령을 사용하여 서비스 주체와 같은 keytab을 만들 수 있습니다. 그 소유권은 Apache 프로세스에서 읽을 수 있는 것이어야 합니다.

데비안 기반 시스템에서 keytab의 적절한 위치는 /etc/apache2/http.keytab이고 적절한 소유자는 www-data입니다.

kadmin -p manager/admin -q "ktadd -k /etc/apache2/http.keytab HTTP/www.easyproject.com" chown www-data /etc/apache2/http.keytab

Red Hat 기반 시스템에서 적절한 위치는 /etc/httpd/http.keytab이고 적절한 소유자는 apache입니다.

kadmin -p manager/admin -q "ktadd -k /etc/httpd/http.keytab HTTP/www.easyproject.com" chown 아파치 /etc/httpd/http.keytab

-k 옵션은 keytab에 대한 경로 이름을 지정하며, 아직 존재하지 않는 경우 생성됩니다.

Linux Kerberos 서버 대신 AD를 사용하는 경우 위의 설명에 따라 생성된 http.keytab 파일을 사용하십시오. 광고 섹션.

5) 키가 키 탭에 올바르게 추가되었는지 확인하려면 키를 사용하여 서비스 주체로 인증을 시도한 다음 klist를 사용하여 결과 티켓 부여 티켓을 볼 수 있습니다.

kinit -k -t /etc/apache2/http.keytab HTTP/www.easyproject.com klist

6) 사용할 인증 방법 지정

Apache는 mod_auth_kerb에서 제공하는 인증을 사용할 웹 사이트의 부분을 알려야 합니다. 이는 Kerberos 값과 함께 AuthType 지시문을 사용하여 수행됩니다. mod_auth_kerb가 작동하는 방식을 구성하려면 몇 가지 추가 지시문이 필요합니다.

의도가 주어진 웹 사이트 전체에 이 지시문을 적용하는 것이라면 그것들은 사이트 루트에 해당하는 경로가 있는 컨테이너:

AuthType Kerberos AuthName "Acme Corporation" KrbMethodNegotiate on KrbMethodK5Passwd off Krb5Keytab /etc/apache2/http.keytab

AD Kerberos 서버의 경우 다음이 필요할 수도 있습니다.

... KrbAuthRealms EASYPROJECT.COM KrbServiceName HTTP/www.easyproject.com

AuthName 지시문은 HTTP 권한 부여 영역을 지정합니다. 그 목적은 사용자가 알고 있는 다양한 암호 중 특정 웹 사이트에 액세스하는 데 필요한 암호를 나타내는 것입니다. 진정한 Kerberos 인증을 사용하면 암호 프롬프트가 없어야 하며 mod_auth_kerb는 AuthName을 지정하지 않아도 완벽하게 작동하는 것으로 보입니다. 그러나 Apache 문서에는 필수 항목이라고 나와 있으므로 어쨌든 제공하는 것이 현명합니다. 적절한 값은 도메인 이름, Kerberos 영역의 이름 또는 웹 사이트가 속한 조직의 이름일 수 있습니다.

SPNEGO 프로토콜 외에도 mod_auth_kerb는 기본 인증을 사용하여 사용자에게 암호를 요청한 다음 KDC에 대한 인증을 시도하여 해당 암호의 유효성을 검사하는 기능이 있습니다. 이것은 Kerberos 영역의 일부가 아닌 시스템에서 승인된 사용자가 웹 사이트에 액세스할 필요가 있는 경우에 유용할 수 있지만 실제 Kerberos 인증보다 훨씬 덜 안전합니다. SPNEGO 및 비밀번호 인증은 기본적으로 모두 사용 가능합니다. 이 예에서는 SPNEGO를 사용하지 않는 웹 브라우저에서 사이트에 액세스할 수 있는 요구 사항이 없으므로 KrbMethodK5Passwd 지시문을 사용하여 암호 인증이 비활성화되었습니다. 완전성을 위해 SPNEGO는 KrbMethodNegotiate 지시문을 사용하여 명시적으로 활성화되었습니다.

Krb5Keytab 지시문은 HTTP 서비스 주체가 추가된 keytab의 경로 이름을 지정합니다. 이 절차의 앞부분에서 kadmin의 ktadd 명령에 전달된 것과 일치해야 합니다.

비록 이 예에서 컨테이너가 사용된 경우 위의 지시문을 , 또는 컨테이너 또는 .htaccess 파일 내에서.

7) 승인된 사용자 목록 지정

인증 방법을 설정한다고 해서 서버에 대한 액세스가 제한되는 것은 아닙니다. 이는 Apache가 기본적으로 익명 사용자의 액세스를 허용하도록 설정되어 있고 해당 동작이 재정의되지 않는 한 인증 방법(무엇이든 간에)이 호출되지 않기 때문입니다.

이 예에서는 액세스가 필요한 사용자가 XNUMX명뿐이며 이를 정렬하는 가장 간단한 방법은 Require 지시문을 사용하는 것입니다.

# ... 사용자 dougal@EASYPROJECT.COM brian@EASYPROJECT.COM ermintrude@EASYPROJECT.COM dylan@EASYPROJECT.COM 필요

그러나 Apache를 통해 모든 LDAP/AD 사용자에게 액세스를 허용하려면 다음을 지정할 수 있습니다.

# ... 유효한 사용자 필요

8) Apache 구성을 다시 로드합니다.

시스템 서비스가 구성을 다시 로드하도록 하기를 참조하십시오. 최근 데비안 기반 시스템에서 필요한 명령은 다음과 같습니다.

서비스 apache2 강제 다시 로드

 

Nginx 구성

이 섹션은 CentOS/RedHat 기반 OS에만 적용됩니다.

1) Nginx가 시스템에 설치되어 있는지 확인하십시오.
다음 모든 명령은 루트 사용자 또는 sudo를 사용하여 실행해야 합니다.

2) 다음 명령을 실행하여 nginx 설치에서 사용할 수 있는 모듈을 확인합니다.

엔진엑스 -V

(스팀 모듈을 사용할 수 있는지 확인하려면 명령 출력에서 ​​" with-stream=dynamic"을 찾으세요)

3) 루트로 이동하여 ngx_stream_module.so 파일을 검색합니다.

 cd / 찾기 / -이름 ngx_stream_module.so

Steam 모듈 파일의 정확한 경로를 확인하십시오.
예를 들어 " /usr/lib64/nginx/modules/ngx_stream_module.so "에 배치할 수 있습니다. nginx.conf에 설정하려면 이 경로가 필요합니다.

ngx_stream_module이 없으면 기본 nginx를 제거하고 소스 또는 특정 rpm 패키지에서 다시 설치해야 합니다. 이 페이지에서 ngx_stream_module - https://rpmfind.net/linux/rpm2html/search.php?query=ngx_stream_module.so()(64bit)를 포함하는 nginx 패키지의 정확한 버전을 찾을 수 있습니다.

4) 이제 Nginx 구성을 작성하도록 설정되었습니다.

정력 /etc/nginx/nginx.conf
############################################## 사용자 nginx; 작업자 프로세스 1; load_module /usr/lib64/nginx/modules/ngx_stream_module.so; error_log /var/log/nginx/error.log 경고; pid /var/run/nginx.pid; 이벤트 { 작업자_연결 1024; } 스트림 { #… error_log /var/log/nginx/stream_error.log 디버그; 서버 { 수신 88; proxy_pass kdc01.easyproject.com:88; } 서버 { 수신 749; proxy_pass kdc01.easyproject.com:749; } } ###############################################

5) nginx 서비스를 다시 시작합니다.

systemctl nginx 활성화 systemctl nginx 시작

6) 할당된 포트가 현재 열려 있는지 확인합니다.

netstat -tupnl |grep nginx

이제 Nginx는 요청을 커브 서버로 리디렉션할 준비가 되었습니다.

AD가 사용 중인 경우 웹 클라이언트 구성

클라이언트가 SSO를 사용할 수 있도록 클라이언트 브라우저에서 도메인 이름을 허용해야 합니다. 이것은 도메인 정책을 조정하여 사용하거나 다음과 같이 브라우저에서 직접 사용할 수 있습니다.

  • IE: 도구 -> 인터넷 옵션 -> 보안 -> 로컬 인트라넷 -> 사이트 -> 고급으로 이동하여 easyproject.com과 같은 도메인을 추가합니다.
  • Edge: IE에서 상속됨
  • Chrome: IE에서 상속됨
  • Firefox: URL about:config로 이동하여 다음 변수를 업데이트합니다. network.negotiate-auth.trusted-uris, network.automatic-ntlm-auth.trusted-uris – 도메인을 다시 추가합니다(예: easyproject.com).

디버깅

EasyRedmine 응용 프로그램이 웹 서버(예: Apache)에서 보낸 SSO 변수를 확인하는지 확인하려면 [url]/sso_variables(예: https://www.easyproject.com/sso_variables)로 이동합니다.

현재 값, 현재 로그인 및 DB 항목의 현재 사용 항목이 채워져야 하며 로그인을 시도하는 사용자와 일치해야 합니다.

 

출처 및 유용한 링크

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_smart_cards/configuring_a_kerberos_5_server

https://help.ubuntu.com/lts/serverguide/kerberos.html.en

http://www.microhowto.info/howto/configure_apache_to_use_kerberos_authentication.html

https://active-directory-wp.com/docs/Networking/Single_Sign_On/Kerberos_SSO_with_Apache_on_Linux.html

https://medium.com/@Santii/how-to-setup-kerberos-behind-a-reverse-proxy-nginx-d692f609191c

30일 무료 평가판으로 Easy Redmine을 사용해 보세요

지리적 위치에서 모든 기능, SSL 보호, 일일 백업