웹사이트 검색

CentOS 7에서 FreeIPA로 중앙 집중식 Linux 인증을 설정하는 방법


소개

FreeIPA는 Microsoft의 Active Directory와 유사한 계정 관리 및 중앙 집중식 인증을 제공하는 Linux용 오픈 소스 보안 솔루션입니다. FreeIPA는 389 Directory Server, MIT Kerberos 및 SSSD를 비롯한 여러 오픈 소스 프로젝트 위에 구축되었습니다.

FreeIPA에는 CentOS 7, Fedora 및 Ubuntu 14.04/16.04용 클라이언트가 있습니다. 이러한 클라이언트를 사용하면 시스템을 IPA 도메인에 추가하는 것이 상당히 간단해집니다. 다른 운영 체제는 SSSD 또는 LDAP를 사용하여 FreeIPA에 대해 인증할 수 있습니다.

이 튜토리얼에서는 CentOS 7 서버에 FreeIPA 서버를 설치합니다. 그런 다음 FreeIPA 사용자가 IPA 자격 증명으로 로그인할 수 있도록 클라이언트 시스템을 구성할 수 있습니다.

이 자습서를 따른 후 CentOS 7에서 FreeIPA 클라이언트를 구성할 수 있습니다.

전제 조건

이 자습서를 따르려면 다음이 필요합니다.

  • RAM이 1GB 이상인 CentOS 7 서버 1대. 기본적으로 CentOS 7은 루트 사용자만 사용합니다. FreeIPA를 사용하여 사용자를 관리할 것이기 때문에 다른 사용자를 수동으로 추가할 필요가 없습니다. 루트 사용자로 이 자습서를 따르기만 하면 됩니다.\n
  • CentOS 7 자습서에 대한 추가 권장 단계의 방화벽 단계에 따라 설정할 수 있는 서버에서 활성화된 방화벽. FreeIPA는 중요한 사용자 자격 증명을 처리하므로 이 방법을 적극 권장합니다.\n
  • 서버 및 클라이언트에 사용할 완전히 등록된 도메인입니다. Freenom에서 구매하실 수 있습니다.\n
  • 다음 DNS 레코드는 서버에 대해 설정됩니다. 추가 방법에 대한 자세한 내용은 이 호스트 이름 자습서를 따를 수 있습니다.\n
    • 서버의 IPv4 주소를 가리키는 서버 이름(예: ipa.example.com)이 있는 A 레코드
    • IPv6를 통해 서버에 연결할 수 있도록 하려면 서버 이름이 서버의 IPv6 주소를 가리키는 AAAA 레코드.

    선택적으로 yum install nano와 함께 설치된 nano 텍스트 편집기. CentOS는 기본적으로 vi 텍스트 편집기와 함께 제공되지만 nano가 더 사용자 친화적일 수 있습니다.

    1단계 - IPA 서버 준비

    설치를 시작하기 전에 서버가 FreeIPA를 실행할 준비가 되었는지 확인하기 위해 몇 가지 작업을 수행해야 합니다. 특히 서버 호스트 이름을 설정하고, 시스템 패키지를 업데이트하고, 필수 구성 요소의 DNS 레코드가 전파되었는지 확인하고, 방화벽이 FreeIPA에 대한 트래픽을 허용하는지 확인합니다.

    시작하려면 FreeIPA가 제대로 작동하려면 서버의 호스트 이름이 정규화된 도메인 이름(FQDN)과 일치해야 합니다. 이 자습서 전체에서 ipa.example.com을 FQDN으로 사용합니다.

    서버를 만들 때 호스트 이름을 설정하거나 hostname 명령을 사용하여 서버를 만든 후 명령줄에서 설정할 수 있습니다.

    1. hostname ipa.example.org

    이제 yum으로 패키지 저장소를 업데이트합니다.

    1. yum update

    그런 다음 방화벽에서 FreeIPA에 필요한 포트를 엽니다.

    1. firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp}

    변경 사항이 적용되도록 방화벽을 다시 로드합니다.

    1. firewall-cmd --reload

    마지막으로 DNS 이름이 제대로 확인되는지 확인해야 합니다. 이를 위해 dig 명령을 사용할 수 있습니다. bind-utils 패키지를 설치하여 dig 및 기타 DNS 테스트 유틸리티를 가져옵니다.

    1. yum install bind-utils

    그런 다음 dig를 사용하여 A 레코드를 확인합니다.

    1. dig +short ipa.example.org A

    이것은 your_server_ipv4를 반환해야 합니다.

    IPv6을 활성화한 경우 동일한 방식으로 AAAA 레코드를 테스트할 수 있습니다.

    1. dig +short ipa.example.org AAAA

    이것은 your_server_ipv6를 반환해야 합니다.

    역방향 조회를 테스트할 수도 있습니다. IP 주소에서 호스트 이름을 확인할 수 있는지 여부를 테스트합니다.

    1. dig +short -x your_server_ipv4
    2. dig +short -x your_server_ipv6

    둘 다 ipa.example.com.을 반환해야 합니다.

    FreeIPA는 DNS를 많이 사용하므로 다음 단계에서는 서버가 FreeIPA가 제대로 작동하는 데 필요한 특정 DNS 요구 사항을 충족하는지 확인합니다.

    2단계 - DNS 설정

    FreeIPA를 실행하는 모든 시스템은 이전 단계에서 설정한 FQDN(정규화된 도메인 이름)을 호스트 이름으로 사용해야 합니다. 또한 각 서버의 호스트 이름은 localhost가 아닌 해당 IP 주소로 확인되어야 합니다.

    참고: LAN 내의 서버에서 FreeIPA를 설정하는 경우 사설 IP를 대신 사용하십시오.

    DigitalOcean에서는 제어판에서 서버의 공용 IP 주소를 볼 수 있습니다. ip 명령을 사용하여 서버 IP 주소를 찾을 수도 있습니다.

    1. ip addr show

    그러면 다음과 유사한 출력이 생성됩니다.

    Output
    . . . 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 111.111.111.111/18 brd 111.111.111.255 scope global eth0 valid_lft forever preferred_lft forever inet6 1111:1111:1111:1111::1111:1111/64 scope global valid_lft forever preferred_lft forever . . .

    IPv4 주소는 inet 바로 뒤에 나타나고 IPv6 주소는 활성화된 경우 inet6 뒤에 나타납니다. 사설 네트워킹이 활성화된 경우 추가 사설 IP 주소가 표시될 수도 있습니다. 이러한 주소는 무시해도 됩니다. 퍼블릭 IP 주소와 프라이빗 IP 주소를 구분하려면 프라이빗 IPv4 주소의 범위가 192.168.*.*, 10.*.*.* 또는 172.16.*.*에서 172.31.*.*로. 프라이빗 IPv6 주소는 항상 접두사 fe80::로 시작합니다.

    이제 서버의 호스트 이름이 외부 IP 주소를 가리키도록 호스트 파일을 변경해야 합니다. 호스트 파일 /etc/hosts는 도메인 이름을 시스템의 로컬 IP 주소에 매핑합니다. nano 또는 선호하는 텍스트 편집기로 이 파일을 엽니다.

    1. nano /etc/hosts

    127.0.0.1 뒤에 서버 호스트 이름이 있는 줄을 찾습니다.

    . . .
    # The following lines are desirable for IPv4 capable hosts
    127.0.0.1 ipa.example.com ipa.example.com
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    . . .
    

    127.0.01을 서버 IPv4 주소로 변경합니다.

    . . .
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ipa.example.com ipa.example.com
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    . . .
    

    IPv6를 활성화한 경우 호스트 이름으로 ::1 줄을 변경하여 IPv6 매핑도 편집해야 합니다.

    ...
    # The following lines are desirable for IPv6 capable hosts
    ::1 ipa.example.com ipa.example.com
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

    ::1을 서버 IPv6 주소로 변경합니다.

    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ipa.example.com ipa.example.com
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

    파일을 저장하고 종료합니다.

    기본적으로 시스템이 부팅될 때마다. CentOS는 /etc/cloud/templates/hosts.redhat.tmpl의 구성을 사용하여 /etc/hosts를 생성합니다. 이 구성 변경을 영구적으로 적용하려면 해당 파일에서도 유사한 변경을 수행해야 합니다.

    파일을 엽니다.

    1. nano /etc/cloud/templates/hosts.redhat.tmpl

    서버 IPv4 주소를 사용하도록 127.0.0.1 &#36 {fqdn} &#36 {hostname} 줄을 변경합니다.

    ...
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ${fqdn} ${hostname}
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    ...
    

    마찬가지로 IPv6 주소를 사용하는 경우 ::1 &#36 {fqdn} &#36 {hostname} 줄을 변경하여 IPv6 주소를 사용합니다.

    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ${fqdn} ${hostname}
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

    종료하고 파일을 저장합니다.

    다음으로 CentOS 내에서 난수 생성기를 구성합니다. 이를 통해 FreeIPA는 인증에 필요한 암호화 기능을 수행할 수 있습니다.

    3단계 - 난수 생성기 구성

    FreeIPA를 설정하려면 실행되는 암호화 작업에 대해 많은 임의 데이터가 필요합니다. 기본적으로 가상 머신은 임의의 데이터 또는 엔트로피가 매우 빠르게 부족합니다. 이 문제를 해결하기 위해 소프트웨어 난수 생성기인 rngd를 사용합니다. rngd는 서버에 연결된 하드웨어 장치에서 데이터를 가져와 커널의 난수 생성기에 공급하는 방식으로 작동합니다.

    먼저 rngd를 설치합니다.

    1. yum install rng-tools

    그런 다음 활성화하십시오.

    1. systemctl start rngd

    서비스가 부팅 시 자동으로 시작되는지 확인하십시오.

    1. systemctl enable rngd

    마지막으로 rngd가 실행 중인지 확인합니다.

    1. systemctl status rngd

    출력에는 녹색의 활성(실행 중)이 포함되어야 합니다.

    모든 종속성이 구성되고 작동하면 FreeIPA 서버 소프트웨어 자체 설치로 이동할 수 있습니다.

    4단계 - FreeIPA 서버 설치

    FreeIPA 서버 패키지 자체인 ipa-server 설치로 넘어갈 수 있습니다.

    1. yum install ipa-server

    그런 다음 FreeIPA 설치 명령을 실행합니다. 그러면 구성 옵션을 묻는 스크립트가 실행되고 FreeIPA가 설치됩니다.

    1. ipa-server-install

    인증 외에도 FreeIPA에는 호스트의 DNS 레코드를 관리하는 기능이 있습니다. 이렇게 하면 호스트를 더 쉽게 프로비저닝하고 관리할 수 있습니다. 이 튜토리얼에서는 FreeIPA의 통합 DNS를 사용하지 않을 것입니다. 기본 설정에는 필요하지 않습니다.

    Installation script prompt
    Do you want to configure integrated DNS (BIND)? [no]: no

    다음으로 서버의 호스트 이름, 도메인 이름 및 Kerberos 영역 이름을 입력해야 합니다. Kerberos는 FreeIPA가 호스트 시스템 인증을 위해 배후에서 사용하는 인증 프로토콜입니다. 도메인 이름을 Kerberos 영역으로 사용하는 것이 좋습니다. 다른 명명 체계를 사용하면 FreeIPA의 Active Directory 통합에 문제가 발생하고 다른 문제가 발생할 수 있습니다.

    경고: 루트 도메인(example.com)을 IPA 도메인 이름으로 사용하지 마십시오. 이로 인해 DNS 문제가 발생할 수 있습니다.

    Installation script prompt
    Server host name [ipa.example.org]: ipa.example.org Please confirm the domain name [example.org]: ipa.example.org Please provide a realm name [EXAMPLE.ORG]: IPA.EXAMPLE.ORG

    다음으로 LDAP 디렉터리 관리자의 비밀번호를 만듭니다. 이는 FreeIPA의 LDAP 기능에 필요합니다. 그런 다음 관리자 사용자로 FreeIPA에 로그인할 때 사용되는 IPA 관리자 비밀번호입니다. 전체 시스템의 보안이 암호에 달려 있으므로 여기에서 임의로 생성된 안전한 암호를 사용하는 것이 좋습니다.

    구성을 확인하십시오. 그런 다음 설치 프로그램이 실행됩니다.

    Installation script prompt
    Continue to configure the system with these values? [no]: yes

    설치 프로세스는 서버 속도에 따라 몇 분 정도 걸릴 수 있습니다.

    이제 서버 설치가 완료되었으므로 테스트해야 합니다.

    5단계 - FreeIPA 서버 기능 확인

    먼저 관리 사용자에 대한 Kerberos 토큰 초기화를 시도하여 Kerberos 영역이 올바르게 설치되었는지 확인합니다.

    1. kinit admin

    올바르게 작동하는 경우 설치 프로세스 중에 입력한 IPA 관리자 암호를 입력하라는 메시지가 표시됩니다. 입력한 다음 ENTER를 누르십시오.

    다음으로 IPA 서버가 제대로 작동하는지 확인하십시오.

    1. ipa user-find admin

    이것은 다음을 출력해야 합니다:

    Output
    -------------- 1 user matched -------------- User login: admin Last name: Administrator Home directory: /home/admin Login shell: /bin/bash Principal alias: admin@IPA.EXAMPLE.COM UID: 494800000 GID: 494800000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------

    또한 https://ipa.example.com에서 웹 UI에 액세스할 수 있어야 합니다.

    참고: TLS 인증서는 신뢰할 수 없습니다. 지금은 경고를 무시하겠습니다. 앞으로는 원하는 인증 기관을 사용하여 유효한 TLS 인증서를 얻을 수 있습니다. 받은 후에는 CA 인증서(일반적으로 ca.crt), 인증서 파일(your_domain.crt), 및 키 파일( your_domain.key)을 서버에 업로드합니다.

    파일이 있으면 이전에 설정한 디렉터리 관리자 암호를 사용하여 CA를 설치합니다. 쉘 히스토리에 저장되지 않도록 명령 앞에 공백을 둘 수 있습니다.

    1. ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt

    그런 다음 사이트 인증서와 키를 설치합니다.

    1. ipa-server-certinstall -w -d your_domain.key your_domain.crt

    이러한 변경 사항을 적용하려면 서버를 다시 시작해야 합니다.

    웹 UI에서 관리 사용자로 로그인합니다. 사용자 이름은 admin이고 비밀번호는 이전에 설정한 IPA 관리자 비밀번호입니다. 페이지 상단에 Authenticating...이라고 표시된 다음 다음과 같은 기본 IPA 페이지로 이동합니다.

    마지막으로 새 사용자를 추가하여 FreeIPA의 일부 기능을 살펴보겠습니다.

    6단계 - IPA 사용자 구성

    FreeIPA에는 매우 광범위한 사용자 관리 및 정책 기능이 있습니다. 표준 Unix 사용자와 유사하게 FreeIPA 사용자는 그룹에 속할 수 있습니다. 그룹 또는 개별 사용자는 정책에 따라 호스트(클라이언트 시스템) 또는 호스트 그룹(호스트 그룹)에 대한 액세스를 허용하거나 거부할 수 있습니다. FreeIPA는 sudo 액세스도 관리할 수 있습니다. 그룹 또는 사용자는 호스트 또는 호스트 그룹에 대한 sudo 액세스 권한을 부여받을 수 있습니다.

    이 자습서에서는 시작하기 위해 새 사용자를 추가하는 방법에 대해 설명합니다.

    사용자를 추가하려면 ID 탭을 클릭하고 사용자를 클릭합니다. 그러면 사용자 테이블이 표시됩니다. 테이블 위의 + 추가 버튼을 클릭하여 새 사용자를 추가합니다. 열리는 양식에서 필수 필드(예: 이름 및 성)를 입력한 다음 추가를 클릭하여 사용자를 그대로 추가하거나 추가 및 편집을 클릭하여 고급 세부 정보를 구성합니다.

    원본 테이블에서 사용자를 클릭하여 고급 세부 정보에 액세스할 수도 있습니다. 이것은 관리자가 사용자의 세부 정보를 볼 때 보는 것입니다.

    일반 사용자도 IPA GUI에 로그인할 수 있습니다. 그들은 자신의 권한을 보고 개인 정보를 편집할 수 있습니다.

    새 사용자는 IPA 머신에 처음 로그인할 때 비밀번호를 변경하라는 메시지가 표시됩니다. 이것은 IPA GUI와 SSH를 통해 작동합니다. 유용한 기능 중 하나는 SSH 키를 추가하는 기능입니다. 사용자는 자신의 공개 SSH 키를 업로드하고 이를 IPA 시스템으로 전파하여 암호 없는 로그인을 허용할 수 있습니다. 그런 다음 사용자는 SSH 키가 개별 서버에 여전히 존재하는지 걱정할 필요 없이 언제든지 SSH 키를 제거할 수 있습니다.

    결론

    이제 작동하는 FreeIPA 서버가 있으므로 이를 수행하려면 이 CentOS 7 FreeIPA 클라이언트 튜토리얼이 필요합니다. 또한 FreeIPA는 LDAP 서버입니다. LDAP 인증을 지원하는 모든 서비스는 FreeIPA 서버에 대해 인증하도록 설정할 수 있습니다.

    FreeIPA GUI 또는 해당 CLI를 통해 사용자, 그룹 및 액세스 정책을 구성할 수 있습니다. Sudo 규칙은 루트 액세스를 관리하는 비교적 간단한 방법을 제공할 수 있습니다. 대규모 배포의 경우 복제를 통해 여러 IPA 서버를 설정하는 것이 좋습니다. 마지막으로 Windows 환경에 연결하려는 경우 Active Directory 서버에 대한 트러스트를 설정할 수 있습니다.

    FreeIPA는 매우 다재다능한 인증 도구이며 다음에 수행해야 할 작업은 사용 방법에 따라 크게 달라집니다. 자세한 내용은 FreeIPA 웹 사이트에 문서 리소스 목록이 있습니다.