Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2장. ID 관리 서버 설치 및 제거

IdM( Identity Management ) 서버는 도메인 컨트롤러로, IdM 도메인을 정의하고 관리합니다. IdM 서버를 설정하려면 다음을 수행해야 합니다.
  1. 필요한 패키지 설치
  2. 설정 스크립트를 사용하여 시스템 구성
부하 분산 및 중복을 위해 도메인에 여러 도메인 컨트롤러를 설정하는 것이 좋습니다. 이러한 추가 서버는 초기 마스터 IdM 서버의 복제본 입니다.
이 장에서는 첫 번째 초기 IdM 서버 설치에 대해 설명합니다. 초기 서버에서 복제본 설치에 대한 자세한 내용은 4장. ID 관리 복제본 설치 및 제거 을 참조하십시오.

2.1. 서버 설치 사전 요구 사항

2.1.1. 최소 하드웨어 요구 사항

IdM(Identity Management)을 실행하려면 서버에 최소한 다음 하드웨어 구성이 필요합니다.
  • 1 (가상) CPU 코어
  • 2GB RAM
    RAM이 적은 IdM을 설치할 수 있지만 IdM 업데이트와 같은 특정 작업에는 4GB 이상의 RAM이 필요합니다.
  • 10GB 하드 디스크
중요
데이터베이스에 저장된 데이터의 양에 따라 IdM에는 더 많은 리소스, 특히 더 많은 RAM이 필요합니다. 자세한 내용은 2.1.2절. “하드웨어 권장 사항” 의 내용을 참조하십시오. 필요한 하드웨어 리소스는 서버의 프로덕션 워크로드 또는 Active Directory에 대한 신뢰와 같은 다른 요인에 따라 달라집니다.

2.1.2. 하드웨어 권장 사항

RAM은 적절하게 크기를 조정하는 가장 중요한 하드웨어 기능입니다. 필요한 RAM 양을 확인하려면 다음 권장 사항을 고려하십시오.
  • 10,000명의 사용자와 100개 그룹의 경우: 최소 3GB의 RAM 및 1GB 스왑 공간
  • 사용자 100,000명 및 50,000개 그룹의 경우: 최소 16GB의 RAM 및 4GB의 스왑 공간
참고
인증서가 있는 기본 사용자 항목 또는 간단한 호스트 항목은 크기가 약 5~10KiB입니다.
대규모 배포의 경우 대부분의 데이터가 캐시에 저장되므로 디스크 공간을 늘리는 것보다 RAM을 늘리는 것이 더 효과적입니다.
성능을 높이기 위해 기본 Directory Server를 조정하여 성능을 향상시킬 수 있습니다. 자세한 내용은 Red Hat Directory Server Performance Tuning Guide 를 참조하십시오.

2.1.3. 시스템 요구 사항

Identity Management는 Red Hat Enterprise Linux 7에서 지원됩니다. DNS, Kerberos 또는 디렉터리 서버와 같은 서비스에 대한 사용자 지정 구성 없이 클린 시스템에 IdM 서버를 설치합니다.
중요
성능 및 안정성을 위해 Red Hat은 IdM 서버에 다른 애플리케이션 또는 서비스를 설치하지 않는 것이 좋습니다. 예를 들어 IdM 서버는 특히 LDAP 오브젝트 수가 높은 경우 시스템에 전체적으로 지정할 수 있습니다. 또한 IdM은 시스템에 통합되어 타사 애플리케이션이 IdM에 따라 구성 파일을 변경하는 경우 IdM이 중단될 수 있습니다.
IdM 서버 설치는 시스템 파일을 덮어쓰므로 IdM 도메인을 설정합니다. IdM은 원본 시스템 파일을 /var/lib/ipa/sysrestore/에 백업합니다.
NSCD(Name Service Cache Daemon) 요구사항
Red Hat은 ID 관리 시스템에서 NSCD를 비활성화할 것을 권장합니다. 또는 NSCD를 비활성화할 수 없는 경우 SSSD에서 캐시하지 않는 맵에 대해 NSCD만 활성화합니다.
NSCD 및 SSSD 서비스는 둘 다 캐싱을 수행하며 두 서비스를 동시에 사용할 때 문제가 발생할 수 있습니다. NSCD와 SSSD 간 충돌을 방지하는 방법에 대한 자세한 내용은 시스템 수준 인증 가이드 를 참조하십시오.
시스템에서 IPv6를 활성화해야 합니다
IdM 서버에는 커널에서 IPv6 프로토콜이 활성화되어 있어야 합니다. IPv6는 Red Hat Enterprise Linux 7 시스템에서 기본적으로 활성화되어 있습니다.
이전에 IPv6를 비활성화한 경우 Red Hat Knowledgebase에서 어떻게 Red Hat Enterprise Linux에서 IPv6 프로토콜을 비활성화하거나 활성화합니까? 에 설명된 대로 다시 활성화하십시오.
참고
IdM은 클라이언트로 등록하려는 호스트의 커널에서 IPv6 프로토콜을 활성화할 필요가 없습니다. 예를 들어 내부 네트워크에서 IPv4 프로토콜만 사용하는 경우 IPv4만 사용하여 IdM 서버와 통신하도록 SSSD(System Security Services Daemon)를 구성할 수 있습니다. /etc/sssd/sssd.conf 파일의 [domain/_NAME_] 섹션에 다음 행을 삽입하면 됩니다.
lookup_family_order = ipv4_only
lookup_family_order 에 대한 자세한 내용은 sssd.conf(5) 매뉴얼 페이지를 참조하십시오.

2.1.4. FIPS 환경에서 서버 설치 사전 요구 사항

Red Hat Enterprise Linux 7.4 이상을 사용하여 설정된 환경에서 다음을 수행합니다.
  • FIPS(Federal Information Processing Standard) 모드를 활성화한 시스템에서 새 IdM 서버 또는 복제본을 구성할 수 있습니다. 설치 스크립트는 FIPS가 활성화된 시스템을 자동으로 감지하고 관리자의 개입없이 IdM을 구성합니다.
    운영 체제에서 FIPS를 활성화하려면 보안 가이드에서 FIPS 모드 활성화 를 참조하십시오.
    중요
    다음을 수행할 수 없습니다.
    • FIPS 모드가 비활성화된 상태로 이전에 설치된 기존 IdM 서버에서 FIPS 모드를 활성화합니다.
    • FIPS 모드가 비활성화된 기존 IdM 서버를 사용하는 경우 FIPS 모드에서 복제본을 설치합니다.
Red Hat Enterprise Linux 7.3 또는 이전 버전을 사용하여 설정된 환경에서 다음을 수행합니다.
  • IdM은 FIPS 모드를 지원하지 않습니다. IdM 서버 또는 복제본을 설치하기 전에 시스템에서 FIPS를 비활성화하고 설치 후 활성화하지 마십시오.
FIPS 모드에 대한 자세한 내용은 보안 가이드의 연방 정보 처리 표준(FIPS) 을 참조하십시오.

2.1.5. 호스트 이름 및 DNS 구성

주의
매우 주의해서 다음 사항을 확인하십시오:
  • 테스트되고 기능적인 DNS 서비스를 사용할 수 있습니다.
  • 서비스가 올바르게 구성되어 있습니다.
이 요구 사항은 통합된 DNS 서비스가 있는 IdM 서버와 DNS 없이 설치된 IdM 서버에 적용됩니다. LDAP 디렉토리 서비스, Kerberos 및 Active Directory 통합 실행을 비롯한 거의 모든 IdM 도메인 기능에 DNS 레코드가 필수적입니다.
기본 DNS 도메인과 Kerberos 영역은 설치 후 변경할 수 없습니다.
단일 레이블 도메인 이름(예: .company ): IdM 도메인은 하나 이상의 하위 도메인과 최상위 도메인(예: example.com 또는 company.example.com )으로 구성되어야 합니다.
서버 호스트에는 DNS 서버가 IdM 내에 통합되었는지 아니면 외부적으로 호스팅되었는지에 관계없이 DNS를 올바르게 구성해야 합니다.
ID 관리를 위해서는 서비스 레코드에 사용할 하나의 개별 DNS 도메인이 필요합니다. DNS 수준에서 충돌을 피하기 위해 이름이 IdM Kerberos 이름의 소문자 버전인 DNS 도메인인 기본 IdM DNS 도메인은 다른 IdM 또는 AD 도메인과 같은 다른 시스템과 공유할 수 없습니다.
기본 IdM DNS 도메인에는 표준 IdM 서비스에 대한 자체 SRV 레코드가 포함되어야 합니다. 필수 레코드는 다음과 같습니다.
  • _kerberos._tcp의 SRV 레코드.domain_name 및 _kerberos._udp.domain_name
  • _ldap._tcp.domain_name의 SRV 레코드
  • _kerberos의 TXT 레코드.domain_name
ipa 명령줄 툴을 통해 등록된 클라이언트가 IdM에서 제공하거나 중재된 서비스를 찾고 있는 경우 /etc/ipa/default.conf 파일에서 xmlrpc_uri 매개변수로 지정한 서버를 찾습니다. 필요한 경우 동일한 파일의 domain 매개 변수에 지정된 IdM DNS 도메인 이름을 조회하고 해당 도메인에 대해 _ldap._tcp.domain_name SRV 레코드를 참조하여 찾고 있는 서버를 확인합니다. /etc/ipa/default.conf 파일에 지정된 도메인이 없는 경우 클라이언트는 파일의 xmlrpc_uri 매개변수에 설정된 서버에만 연결합니다.
IdM 클라이언트 및 서버의 호스트 이름은 기본 DNS 도메인의 일부일 필요는 없습니다. 그러나 AD(Active Directory)를 사용하는 신뢰 환경에서는 IdM 서버의 호스트 이름이 IdM 소유 도메인, IdM 영역과 연결된 도메인, 신뢰할 수 있는 AD 영역과 연결된 도메인이 아닌 IdM 소유 도메인의 일부여야 합니다. 신뢰의 관점에서, 이 연관은 Realm 도메인을 사용하여 관리됩니다.
Active Directory DNS 도메인의 호스트 이름을 사용하여 IdM 클라이언트에 액세스하도록 사용자를 구성하는 데 대한 자세한 내용은 클라이언트 자체가 IdM에 가입되는 동안 Windows 통합 가이드의 Active Directory DNS 도메인에서 IdM 클라이언트를 참조하십시오.

서버 호스트 이름 확인

호스트 이름은 server.example.com 과 같은 정규화된 도메인 이름이어야 합니다.
중요
단일 레이블 도메인 이름(예: .company)을 사용하지 마십시오. IdM 도메인은 하나 이상의 하위 도메인과 최상위 도메인(예: example.com 또는 company.example.com)으로 구성되어야 합니다.
정규화된 도메인 이름은 다음 조건을 충족해야 합니다.
  • 유효한 DNS 이름이므로 숫자, 영문자 및 하이픈(-)만 사용할 수 있습니다. 밑줄(_)과 같은 기타 문자는 호스트 이름에서 DNS 오류가 발생합니다.
  • 이 모든 것이 더 낮은 사례입니다. 대문자는 허용되지 않습니다.
  • 정규화된 도메인 이름은 루프백 주소로 해석해서는 안 됩니다. 127.0.0.1 이 아닌 머신의 공용 IP 주소로 확인되어야 합니다.
다른 권장 이름 지정 사례는 Red Hat Enterprise Linux 보안 가이드의 권장 이름 지정 사례를 참조하십시오.
시스템의 호스트 이름을 확인하려면 hostname 유틸리티를 사용합니다.
[root@server ~]# hostname
server.example.com
hostname의 출력은 localhost 또는 localhost6이 아니어야 합니다.

정방향 및 역방향 DNS 구성 확인

  1. 서버의 IP 주소를 가져옵니다. ip addr show 명령은 IPv4 및 IPv6 주소를 모두 표시합니다.
    • IPv4 주소는 inet 로 시작하는 행에 표시됩니다. 다음 예에서 구성된 IPv4 주소는 192.0.2.1 입니다.
    • IPv6 주소는 inet6 으로 시작하는 행에 표시됩니다. 전역 범위가 있는 IPv6 주소만 이 절차와 관련이 있습니다. 다음 예에서 반환된 IPv6 주소는 2001:DB8::1111 입니다.
    [root@server ~]# ip addr show
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    	link/ether 00:1a:4a:10:4e:33 brd ff:ff:ff:ff:ff:ff
    	inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic eth0
    		valid_lft 106694sec preferred_lft 106694sec
    	inet6 2001:DB8::1111/32 scope global dynamic
     		valid_lft 2591521sec preferred_lft 604321sec
    	inet6 fe80::56ee:75ff:fe2b:def6/64 scope link
    	       valid_lft forever preferred_lft forever
    
  2. dig 유틸리티를 사용하고 호스트 이름을 추가하여 정방향 DNS 구성을 확인합니다.
    1. dig +short server.example.com A 명령을 실행합니다. 반환된 IPv4 주소는 ip addr show 에서 반환된 IP 주소와 일치해야 합니다.
      [root@server ~]# dig +short server.example.com A
      192.0.2.1
      
    2. dig +short server.example.com AAAA 명령을 실행합니다. 명령에서 주소를 반환하는 경우 ip addr show 에서 반환하는 IPv6 주소와 일치해야 합니다.
      [root@server ~]# dig +short server.example.com AAAA
      2001:DB8::1111
      
      참고
      AAAA 레코드에 대한 출력이 반환되지 않으면 잘못된 구성이 아닙니다. 출력은 서버 시스템의 DNS에 IPv6 주소가 구성되지 않음을 의미합니다. 네트워크에서 IPv6 프로토콜을 사용하지 않으려면 이 상황에서 설치를 진행할 수 있습니다.
  3. dig 유틸리티를 사용하고 IP 주소를 추가하여 역방향 DNS 구성(PTR 레코드)을 확인합니다.
    1. dig +short -x IPv4 address 명령을 실행합니다. 서버 호스트 이름이 명령 출력에 표시되어야 합니다. 예를 들어 다음과 같습니다.
      [root@server ~]# dig +short -x 192.0.2.1
      server.example.com
      
    2. 이전 단계의 dig +short -x server.example.com AAAA 명령에서 IPv6 주소를 반환한 경우 dig를 사용하여 IPv6 주소를 쿼리합니다. 다시 서버 호스트 이름이 명령 출력에 표시되어야 합니다. 예를 들어 다음과 같습니다.
      [root@server ~]# dig +short -x 2001:DB8::1111
      server.example.com
      
      참고
      이전 단계에서 dig +short server.example.com AAAA 가 IPv6 주소를 표시하지 않은 경우 AAAA 레코드를 쿼리해도 아무 것도 출력하지 않습니다. 이 경우 이는 정상적인 동작이며 잘못된 구성이 아닙니다.
    이전 단계에서 dig +short server.example.com 이 IP 주소를 반환하더라도 다른 호스트 이름 또는 호스트 이름이 표시되지 않으면 역방향 DNS 구성이 올바르지 않음을 나타냅니다.

DNS 전달자의 Standards-comliance 확인

통합된 DNS를 사용하여 IdM을 구성할 때 DNSSEC(DNS 보안 확장 ) 레코드 유효성 검사를 사용하는 것이 좋습니다. 다른 서버에서 서명된 DNS 레코드를 검증하면 스푸핑된 주소로부터 IdM 설치를 보호합니다. 그러나 DNSSEC 검증은 성공적인 IdM 설치를 위한 어려운 요구 사항이 아닙니다.
IdM 설치 프로그램은 기본적으로 DNSSEC 레코드 검증을 활성화합니다. DNSSEC 검증을 성공적으로 수행하려면 DNSSEC가 올바르게 구성된 전달자가 있어야 합니다. 설치하는 동안 IdM은 글로벌 전달자를 확인하고 전달자가 DNSSEC를 지원하지 않으면 전달자에서 DNSSEC 검증이 비활성화됩니다.
IdM DNS 서버와 함께 사용하려는 모든 DNS 전달자가 DNS (EDNS0) 및 DNSSEC 표준에 대한 확장 메커니즘 을 준수하는지 확인하려면 다음을 수행하십시오.
$ dig +dnssec @IP_address_of_the_DNS_forwarder . SOA
명령에 의해 표시되는 예상 출력에는 다음 정보가 포함됩니다.
  • 상태: NOERROR
  • 플래그: ra
  • EDNS 플래그: do
  • RRSIG 레코드가 ANSWER 섹션에 있어야 합니다.
출력에서 이러한 항목이 없는 경우 DNS 전달자의 문서를 검사하고 EDNS0 및 DNSSEC가 지원되고 활성화되었는지 확인합니다. 최신 버전의 BIND 서버에서 dnssec-enable yes; 옵션을 /etc/named.conf 파일에 설정해야 합니다.
예를 들어 예상되는 출력은 다음과 같을 수 있습니다.
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48655
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096

;; ANSWER SECTION:
. 31679 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015100701 1800 900 604800 86400
. 31679 IN RRSIG SOA 8 0 86400 20151017170000 20151007160000 62530 . GNVz7SQs [...]

/etc/hosts 파일

중요
/etc/hosts 파일을 수동으로 수정하지 마십시오. /etc/hosts 가 수정된 경우 해당 내용이 다음 규칙을 준수하는지 확인합니다.
다음은 올바르게 구성된 /etc/hosts 파일의 예입니다. 호스트의 IPv4 및 IPv6 localhost 항목과 함께 IdM 서버 IP 주소와 호스트 이름이 첫 번째 항목으로 올바르게 나열됩니다. IdM 서버 호스트 이름은 localhost 항목의 일부가 될 수 없습니다.
127.0.0.1	localhost.localdomain	localhost
::1		localhost6.localdomain6	localhost6
192.0.2.1	server.example.com	server
2001:DB8::1111	server.example.com	server

2.1.6. 포트 요구 사항

IdM은 여러 포트를 사용하여 해당 서비스와 통신합니다. IdM이 작동하려면 이러한 포트가 열리고 사용할 수 있어야 합니다. 다른 서비스에서 사용하거나 방화벽에서 차단할 수 없습니다.

필요한 포트 목록

표 2.1. ID 관리 포트

Service 포트 프로토콜
HTTP/HTTPS 80, 443 TCP
LDAP/LDAPS 389, 636 TCP
Kerberos 88, 464 TCP 및 UDP
DNS 53 TCP 및 UDP
NTP 123 UDP
참고
IdM은 포트 80 및 389를 사용합니다.
  • 포트 80(HTTP)은 온라인 인증서 상태 프로토콜(OCSP) 응답 및 CRL(인증서 폐기 목록)을 제공하는 데 사용됩니다. 둘 다 디지털 서명되므로 중간자(man-in-the-middle) 공격으로부터 보호됩니다.
  • 포트 389(LDAP)는 암호화에 STARTTLS 및 GSSAPI를 사용합니다.
또한 IdM은 포트 8080에서 수신 대기하고 일부 설치에서도 포트 8443 및 749에 수신 대기할 수 있습니다. 그러나 이러한 세 포트는 내부적으로만 사용됩니다. IdM은 열린 상태로 유지해도 외부에서 액세스할 필요가 없습니다. 포트 8080, 8443 및 749를 열지 않고 방화벽에서 차단한 상태로 두는 것이 좋습니다.

firewalld 서비스 목록

표 2.2. firewalld 서비스

서비스 이름 자세한 내용은 다음을 참조하십시오.
freeipa-ldap /usr/lib/firewalld/services/freeipa-ldap.xml
freeipa-ldaps /usr/lib/firewalld/services/freeipa-ldaps.xml
dns /usr/lib/firewalld/services/dns.xml

필요한 포트 열기

  1. firewalld 서비스가 실행 중인지 확인합니다.
    • firewalld 가 현재 실행되고 있는지 확인하려면 다음을 수행합니다.
      # systemctl status firewalld.service
    • firewalld 를 시작하고 시스템이 부팅될 때 자동으로 시작하도록 구성하려면 다음을 수행합니다.
      # systemctl start firewalld.service
      # systemctl enable firewalld.service
  2. firewall-cmd 유틸리티를 사용하여 필요한 포트를 엽니다. 다음 옵션 중 하나를 선택하십시오.
    1. firewall-cmd --add-port 명령을 사용하여 방화벽에 개별 포트를 추가합니다. 예를 들어 기본 영역에서 포트를 열려면 다음을 수행합니다.
      # firewall-cmd --permanent --add-port={80/tcp,443/tcp,list_of_ports}
    2. firewall-cmd --add-service 명령을 사용하여 방화벽에 firewalld 서비스를 추가합니다. 예를 들어 기본 영역에서 포트를 열려면 다음을 수행합니다.
      # firewall-cmd --permanent --add-service={freeipa-ldap,list_of_services}
    firewall-cmd 를 사용하여 시스템의 포트를 여는 방법에 대한 자세한 내용은 보안 가이드 또는 firewall-cmd(1) 매뉴얼 페이지에서 CLI를 사용하여 런타임 및 영구 구성의 설정 수정을 참조하십시오.
  3. firewall-cmd 구성을 다시 로드하여 변경 사항이 즉시 수행되었는지 확인합니다.
    # firewall-cmd --reload
    프로덕션 환경에서 시스템에서 firewalld 를 다시 로드하면 DNS 연결이 시간 초과될 수 있습니다. 보안 가이드CLI를 사용하여 런타임의 설정 수정 및 영구 구성 도 참조하십시오. 필요한 경우 시간 초과를 방지하고 실행 중인 시스템에서 변경 사항을 영구적으로 만들려면 firewall-cmd 명령의 --runtime-to-permanent 옵션을 사용합니다. 예를 들면 다음과 같습니다.
    # firewall-cmd --runtime-to-permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,88/udp,464/tcp,464/udp,53/tcp,53/udp,123/udp}
  4. 선택 사항입니다. 포트를 사용할 수 있는지 확인하려면 nc,telnet 또는 nmap 유틸리티를 사용하여 포트에 연결하거나 포트 스캔을 실행합니다.
참고
또한 들어오고 나가는 트래픽 모두에 대해 네트워크 기반 방화벽을 열어야 합니다.