Red Hat Training

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

22.3. 1회용 암호

중요
OTP 인증에 대한 IdM 솔루션은 Red Hat Enterprise Linux 7.1 이상을 실행하는 클라이언트에만 지원됩니다.
일회성 암호(OTP)는 하나의 인증 세션에만 유효하며 사용 후 유효하지 않게 됩니다. 기존의 정적 암호와는 달리 인증 토큰에 의해 생성된 OTP는 계속 변경됩니다. OTP는 2 단계 인증의 일부로 사용됩니다.
  1. 사용자는 기존 암호를 사용하여 인증합니다.
  2. 사용자는 인식된 OTP 토큰으로 생성된 OTP 코드를 제공합니다.
이중 인증은 기존 암호만으로 인증하는 것보다 안전한 것으로 간주됩니다. 로그인 중에 잠재적인 침입자가 OTP를 가로채는 경우에도, 성공적으로 인증에만 사용할 수 있기 때문에 인터셉트된 OTP는 이미 유효하지 않습니다.
주의
다음 보안 및 기타 제한 사항은 현재 IdM의 OTP 지원과 관련이 있습니다.
  • 가장 중요한 보안 제한은 시스템에서 공격을 재개하는 잠재적 취약성입니다. 복제는 비동기식이므로 복제 기간에 OTP 코드를 재사용할 수 있습니다. 한 사용자가 동시에 두 개의 서버에 로그온할 수 있습니다. 그러나 이 취약점은 일반적으로 포괄적인 암호화로 인해 악용하기 어렵습니다.
  • OTP 인증을 지원하지 않는 클라이언트를 사용하여 TGT(권장 티켓)를 받을 수 없습니다. 이는 mod_auth_kerb 모듈 또는 GSSAPI(Generic Security Services API)를 사용한 인증과 같은 특정 사용 사례에 영향을 줄 수 있습니다.
  • FIPS 모드가 활성화된 경우 IdM 솔루션에서는 password + OTP를 사용할 수 없습니다.

22.3.1. IdM에서 OTP 인증이 작동하는 방식

22.3.1.1. IdM에서 지원되는 OTP 토큰

소프트웨어 및 하드웨어 토큰

IdM은 소프트웨어 및 하드웨어 토큰을 모두 지원합니다.

사용자 관리 및 관리자 관리 토큰

사용자는 자체 토큰을 관리하거나 관리자가 토큰을 관리할 수 있습니다.
사용자 관리 토큰
사용자는 Identity Management에서 사용자 관리 토큰을 완전히 제어할 수 있습니다. 토큰을 생성, 편집 또는 삭제할 수 있습니다.
관리자 관리 토큰
관리자는 관리자 관리 토큰을 사용자 계정에 추가합니다. 사용자는 이러한 토큰에 대한 읽기 전용 액세스 권한이 있습니다. 토큰을 관리하거나 수정할 수 있는 권한이 없으며 어떠한 방식으로든 구성할 필요가 없습니다.
현재 유일한 활성 토큰인 경우 사용자는 토큰을 삭제하거나 비활성화할 수 없습니다. 관리자는 마지막 활성 토큰을 삭제하거나 비활성화할 수 없지만 다른 사용자의 마지막 활성 토큰을 삭제하거나 비활성화할 수 있습니다.

지원되는 OTP 알고리즘

Identity Management는 다음과 같은 두 가지 표준 OTP 메커니즘을 지원합니다.
  • 대상 HOTP(one-Based One-Time Password) 알고리즘은 카운터를 기반으로 합니다. Hashed Message Authentication Code의 약어입니다.
  • TOTP(Time-Based One-Time Password) 알고리즘은 시간 기반 이동 요소를 지원하기 위한 HOTP의 확장입니다.

22.3.1.2. 사용 가능한 OTP 인증 방법

OTP 인증을 활성화하는 경우 다음 인증 방법 중에서 선택할 수 있습니다.
이중 인증 (암호 + OTP)
이 방법을 사용하면 사용자는 항상 표준 암호와 OTP 코드를 입력해야 합니다.
암호
이 방법을 사용하면 사용자에게 표준 암호만 사용하여 인증할 수 있는 옵션이 있습니다.
RADIUS 프록시 서버 인증
OTP 검증을 위한 RADIUS 서버 구성에 대한 자세한 내용은 22.3.7절. “독점형 OTP 솔루션에서 마이그레이션” 을 참조하십시오.

글로벌 및 사용자별 인증 방법

전역 또는 개별 사용자에 대해 이러한 인증 방법을 구성할 수 있습니다.
  • 기본적으로 사용자별 인증 방법 설정은 전역 설정보다 우선합니다. 사용자에 대해 인증 방법을 설정하지 않으면 전역적으로 정의된 메서드가 적용됩니다.
  • 사용자의 사용자별 인증 방법 설정을 비활성화할 수 있습니다. 이렇게 하면 IdM에서 사용자별 설정을 무시하고 항상 사용자의 전역 설정을 적용합니다.

다중 인증 방법 결합

한 번에 여러 개의 메서드를 설정하면 둘 중 하나로 인증에 충분합니다. 예를 들어 다음과 같습니다.
  • 이중 인증과 암호 인증을 모두 구성하는 경우 사용자는 암호(first factor)를 제공해야 하지만, 명령줄을 사용할 때 OTP(second factor)를 제공하는 것은 선택 사항입니다.
    First Factor:
    Second Factor (optional):
  • 웹 UI에서 사용자는 두 요소를 모두 제공해야 합니다.
참고
개별 호스트 또는 서비스는 특정 인증 방법(예: OTP)을 요구하도록 구성할 수 있습니다. 첫 번째 요소만 사용하여 이러한 호스트 또는 서비스에 대한 인증을 시도하는 경우 액세스가 거부됩니다. 22.4절. “사용자 인증 방법에 따라 서비스 및 호스트에 대한 액세스 제한” 참조하십시오.
그러나 RADIUS 및 다른 인증 방법이 구성된 경우 마이너 예외가 존재합니다.
  • Kerberos는 항상 RADIUS를 사용하지만 LDAP는 그렇지 않습니다. LDAP는 암호와 이중 인증 방법만 인식합니다.
  • 외부 이중 인증 공급자를 사용하는 경우 애플리케이션에서 Kerberos를 사용합니다. 사용자가 암호로만 인증할 수 있도록 하려면 LDAP를 사용합니다. 애플리케이션이 Kerberos 또는 LDAP를 구성할 수 있는 Apache 모듈과 SSSD를 활용하는 것이 좋습니다.

22.3.1.3. GNOME 키링 서비스 지원

IdM은 OTP 인증을 GNOME Keyring 서비스와 통합합니다. GNOME 키링 통합에는 사용자가 첫 번째 및 두 번째 요소를 별도로 입력해야 합니다.
First factor: static_password
Second factor: one-time_password

22.3.1.4. OTP를 통한 오프라인 인증

IdM은 오프라인 OTP 인증을 지원합니다. 그러나 오프라인으로 로그인할 수 있으려면 사용자가 정적 암호와 OTP를 별도로 입력하여 시스템이 온라인 상태일 때 먼저 인증해야 합니다.
First factor: static_password
Second factor: one-time_password
온라인으로 로그인할 때와 같이 두 암호를 별도로 입력하면 중앙 인증 서버를 사용할 수 없는 경우에도 사용자가 인증할 수 있습니다. IdM은 사용자가 오프라인에서 인증할 때 첫 번째 단계의 기존 정적 암호만 표시합니다.
또한 IdM은 첫 번째 인수 프롬프트에서 하나의 문자열에 정적 암호와 OTP를 함께 입력할 수 있도록 지원합니다. 그러나 이는 오프라인 OTP 인증과 호환되지 않습니다. 사용자가 단일 프롬프트에 두 요소를 모두 입력하면 시스템이 온라인 상태가 되어야 하는 인증 시 IdM은 항상 중앙 인증 서버에 연결해야 합니다.
중요
노트북과 같이 오프라인으로 작동하는 장치에서 OTP 인증을 사용하는 경우, 오프라인 인증을 사용할 수 있도록 Red Hat은 정적 암호와 OTP를 별도로 입력하는 것이 좋습니다. 그렇지 않으면 시스템이 오프라인된 후 IdM에서 로그인할 수 없습니다.
OTP 오프라인 인증의 혜택을 받으려면 정적 및 OTP 암호를 별도로 입력하는 것 외에도 다음 조건을 충족해야 합니다.
  • /etc/sssd/sssd.conf 파일의 cache_credentials 옵션이 True 로 설정되어 첫 번째 인수 암호를 캐싱할 수 있습니다.
  • 첫 번째 단계의 정적 암호는 /etc/sssd/sssd.conf 에 설정된 cache_credentials_minimal_first_factor_length 옵션에 정의된 암호 길이 요구 사항을 충족합니다. 기본 최소 길이는 8자입니다. 옵션에 대한 자세한 내용은 sssd.conf(5) 도움말 페이지를 참조하십시오.
/etc/sssd/sssd.conf 에서 iPXE 5_store_password_if_offline 옵션이 true 로 설정되어 있더라도, OTP가 이미 유효하지 않을 수 있기 때문에 SSSD는 Kerberos 티켓-granting 티켓(TGT)을 새로 고치지 않습니다. 이 상황에서 TGT를 얻으려면 사용자는 두 요소를 모두 사용하여 다시 인증해야 합니다.

22.3.2. FIPS 모드에서 실행되는 IdM 서버에서 RADIUS 프록시를 구성하는 데 필요한 설정

FIPS(Federal Information Processing Standard) 모드에서 OpenSSL은 기본적으로 MD5 다이제스트 알고리즘 사용을 비활성화합니다. 결과적으로 RADIUS 프로토콜에는 RADIUS 클라이언트와 RADIUS 서버 간의 비밀을 암호화하기 위해 MD5가 필요하므로 FIPS 모드에서 MD5를 사용할 수 없으므로 IdM RADIUS 프록시 서버가 실패합니다.
RADIUS 서버가 IdM 마스터와 동일한 호스트에서 실행 중인 경우 다음 단계를 수행하여 문제를 해결하고 보안 경계 내에서 MD5를 활성화할 수 있습니다.
  1. 다음 콘텐츠를 사용하여 /etc/systemd/system/radiusd.service.d/ipa-otp.conf 파일을 만듭니다.
    [Service] 
    Environment=OPENSSL_FIPS_NON_APPROVED_MD5_ALLOW=1
  2. systemd 구성을 다시 로드합니다.
    # systemctl daemon-reload
  3. radio usd 서비스를 시작합니다.
    # systemctl start radiusd

22.3.3. Two Factor Authentication 활성화

OTP와 관련된 사용 가능한 인증 방법에 대한 자세한 내용은 22.3.1.2절. “사용 가능한 OTP 인증 방법” 을 참조하십시오.
다음을 사용하여 두 개의 요소 인증을 활성화하려면 다음을 수행합니다.

웹 UI: Two Factor Authentication 활성화

모든 사용자에 대해 인증 방법을 전역적으로 설정하려면 다음을 수행합니다.
  1. IPA 서버 구성을선택합니다.
  2. 사용자 옵션 영역에서 필요한 기본 사용자 인증 유형을 선택합니다.

    그림 22.4. 사용자 인증 방법

    사용자 인증 방법
사용자별 설정으로 글로벌 설정이 재정의되지 않도록 하려면 Disable per-user override 를 선택합니다. 사용자별 재정의 비활성화를 선택하지 않으면 사용자 별로 구성된 인증 메서드가 전역 설정보다 우선합니다.
사용자별로 인증 방법을 개별적으로 설정하려면 다음을 수행합니다.
  1. IdentityUsers 를 선택하고 편집할 사용자 이름을 클릭합니다.
  2. 계정 설정 영역에서 필요한 사용자 인증 유형을 선택합니다.

    그림 22.5. 사용자 인증 방법

    사용자 인증 방법

명령줄: Two Factor Authentication 활성화

모든 사용자에 대해 인증 방법을 전역적으로 설정하려면 다음을 수행합니다.
  1. ipa config-mod --user-auth-type 명령을 실행합니다. 예를 들어 글로벌 인증 방법을 이중 인증으로 설정하려면 다음을 수행합니다.
    $ ipa config-mod --user-auth-type=otp
    --user-auth-type 에서 허용하는 값 목록을 보려면 ipa config-mod --help 명령을 실행합니다.
  2. 사용자별 재정의를 비활성화하려면 글로벌 설정이 사용자별 설정으로 재정의되지 않도록 하려면 --user-auth-type=disabled 옵션도 추가합니다. 예를 들어 글로벌 인증 방법을 이중 인증으로 설정하고 사용자별 재정의를 비활성화하려면 다음을 수행합니다.
    $ ipa config-mod --user-auth-type=otp --user-auth-type=disabled
    --user-auth-type=disabled 를 설정하지 않으면 사용자별로 구성된 인증 방법이 글로벌 설정보다 우선합니다.
지정된 사용자에 대해 인증 방법을 개별적으로 설정하려면 다음을 수행합니다.
  • ipa user-mod --user-auth-type 명령을 실행합니다. 예를 들어, 2 단계 인증을 사용하려면 해당 사용자를 설정해야 합니다.
    $ ipa user-mod user --user-auth-type=otp
여러 인증 방법을 설정하려면 --user-auth-type 을 여러 번 추가합니다. 예를 들어 모든 사용자에 대해 암호 및 이중 인증을 전역적으로 구성하려면 다음을 수행합니다.
$ ipa config-mod --user-auth-type=otp --user-auth-type=password

22.3.4. 사용자 관리 소프트웨어 토큰 추가

  1. 표준 암호로 로그인합니다.
  2. FreeOTP Authenticator 애플리케이션이 모바일 장치에 설치되어 있는지 확인합니다. FreeOTP Authenticator 를 다운로드하려면 FreeOTP 소스 페이지를 참조하십시오.
  3. IdM 웹 UI 또는 명령줄에서 소프트웨어 토큰을 생성합니다.
    • 웹 UI에 토큰을 생성하려면 OTP 토큰 탭에서 Add 를 클릭합니다. 관리자로 로그인한 경우 인증 탭을 통해 OTP 토큰 탭에 액세스할 수 있습니다.

      그림 22.6. 사용자의 OTP 토큰 추가

      사용자의 OTP 토큰 추가
    • 명령줄에서 토큰을 생성하려면 ipa otptoken-add 명령을 실행합니다.
      $ ipa otptoken-add
      ------------------
      Added OTP token ""
      ------------------
        Unique ID: 7060091b-4e40-47fd-8354-cb32fecd548a
        Type: TOTP
      ...
      
      ipa otptoken-add 에 대한 자세한 내용은 --help 옵션이 추가된 명령을 실행합니다.
  4. website 코드는 웹 UI 또는 명령줄에 표시됩니다. FreeOTP Authenticator 로 QR 코드를 스캔하여 모바일 장치에 토큰을 프로비저닝합니다.

22.3.5. 사용자 관리 YubiKey 하드웨어 토큰 추가

YubiKey 토큰과 같은 프로그래밍 가능한 하드웨어 토큰은 명령줄에서만 추가할 수 있습니다. YubiKey 하드웨어 토큰을 토큰을 소유하는 사용자로 추가하려면 다음을 수행합니다.
  1. 표준 암호로 로그인합니다.
  2. YubiKey 토큰을 삽입합니다.
  3. ipa otptoken-add-yubikey 명령을 실행합니다.
    • YubiKey에 사용 가능한 빈 슬롯이 있으면 명령에서 빈 슬롯을 자동으로 선택합니다.
    • 빈 슬롯을 사용할 수 없는 경우 --slot 옵션을 사용하여 슬롯을 수동으로 선택해야 합니다. 예를 들면 다음과 같습니다.
      $ ipa otptoken-add-yubikey --slot=2
      이렇게 하면 선택한 슬롯을 덮어씁니다.

22.3.6. 관리자로 사용자의 토큰 추가

관리자로 소프트웨어 토큰을 추가하려면 다음을 수행합니다.
  1. 관리자로 로그인했는지 확인합니다.
  2. FreeOTP Authenticator 애플리케이션이 모바일 장치에 설치되어 있는지 확인합니다. FreeOTP Authenticator 를 다운로드하려면 FreeOTP 소스 페이지를 참조하십시오.
  3. IdM 웹 UI 또는 명령줄에서 소프트웨어 토큰을 생성합니다.
    • 웹 UI에 토큰을 생성하려면 인증OTP 토큰 을 선택하고 OTP 토큰 목록 상단에 있는 추가 를 클릭합니다. OTP 토큰 추가 양식에서 토큰 의 소유자를 선택합니다.

      그림 22.7. 관리자 관리 소프트웨어 토큰 추가

      관리자 관리 소프트웨어 토큰 추가
    • 명령줄에서 토큰을 생성하려면 --owner 옵션으로 ipa otptoken-add 명령을 실행합니다. 예를 들어 다음과 같습니다.
      $ ipa otptoken-add --owner=user
      ------------------
      Added OTP token ""
      ------------------
        Unique ID: 5303baa8-08f9-464e-a74d-3b38de1c041d
        Type: TOTP
      ...
      
  4. website 코드는 웹 UI 또는 명령줄에 표시됩니다. FreeOTP Authenticator 로 QR 코드를 스캔하여 모바일 장치에 토큰을 프로비저닝합니다.
관리자로서 YubiKey 토큰과 같이 프로그래밍 가능한 하드웨어 토큰을 추가하려면 다음을 수행합니다.
  1. 관리자로 로그인했는지 확인합니다.
  2. YubiKey 토큰을 삽입합니다.
  3. --owner 옵션을 사용하여 ipa otptoken-add-yubikey 명령을 실행합니다. 예를 들어 다음과 같습니다.
    $ ipa otptoken-add-yubikey --owner=user

22.3.7. 독점형 OTP 솔루션에서 마이그레이션

전용 OTP 솔루션에서 IdM 네이티브 OTP 솔루션으로 대규모 배포를 마이그레이션할 수 있도록 IdM은 OTP 검증을 사용자의 하위 집합에 대한 타사 RADIUS 서버로 오프로드할 수 있는 방법을 제공합니다. 관리자는 각 프록시가 단일 RADIUS 서버만 참조할 수 있는 RADIUS 프록시 세트를 생성합니다. 둘 이상의 서버를 처리해야 하는 경우 여러 RADIUS 서버를 가리키는 가상 IP 솔루션을 생성하는 것이 좋습니다. 이러한 솔루션은 keepalived 데몬을 사용하여 RHEL IdM 외부에서 빌드해야 합니다. 그런 다음 관리자는 이러한 프록시 세트 중 하나를 사용자에게 할당합니다. 사용자에게 RADIUS 프록시 세트가 할당된 한 IdM은 다른 모든 인증 메커니즘을 무시합니다.
참고
IdM은 타사 시스템에서 토큰 관리 또는 동기화를 지원하지 않습니다.
OTP 검증을 위해 RADIUS 서버를 구성하고 프록시 서버에 사용자를 추가하려면 다음을 수행합니다.
  1. radious 사용자 인증 방법이 활성화되어 있는지 확인합니다. 자세한 내용은 22.3.3절. “Two Factor Authentication 활성화” 을 참조하십시오.
  2. ipabl usproxy-add proxy_name --secret secret 명령을 실행하여 RADIUS 프록시를 추가합니다. 명령을 실행하면 필요한 정보를 삽입하라는 메시지가 표시됩니다.
    RADIUS 프록시를 구성하려면 클라이언트와 서버 간의 공통 시크릿을 사용하여 자격 증명을 종료해야 합니다. --secret 매개변수에 이 보안을 지정합니다.
  3. ipa user-modradususer --radius=proxy_name 명령을 실행하여 사용자를 추가된 프록시에 할당합니다.
  4. 필요한 경우 ipa user-mod rerunususer --radius-username=ubius_user 명령을 실행하여 사용자 이름을 RADIUS로 전송합니다.
결과적으로 사용자 OTP 인증은 RADIUS 프록시 서버를 통해 처리되기 시작합니다.
참고
FIPS 모드가 활성화된 IdM 마스터에서 RADIUS 서버를 실행하려면 22.3.2절. “FIPS 모드에서 실행되는 IdM 서버에서 RADIUS 프록시를 구성하는 데 필요한 설정” 에 설명된 단계를 수행하십시오.
사용자가 IdM 기본 OTP 시스템으로 마이그레이션할 준비가 되면 사용자의 RADIUS 프록시 할당을 간단히 제거할 수 있습니다.

22.3.7.1. 더 낮은 네트워크에서 RADIUS 서버를 실행할 때 KDC의 시간 제한 값 변경

느린 네트워크에서 RADIUS 프록시를 실행하는 것과 같은 특정 상황에서는 IdM이 RADIUS 서버가 응답하기 전에 연결을 닫습니다. 사용자가 토큰 입력을 기다리는 동안 시간이 초과되어 있기 때문입니다.
KDC의 시간 제한 설정을 변경하려면 다음을 수행합니다.
  1. /var/kerberos/krb5kdc/kdc.conf 파일의 [otp] 섹션에서 timeout 매개변수 값을 변경합니다. 예를 들어 시간 제한을 120 초로 설정하려면 다음을 수행합니다.
    [otp]
    DEFAULT = {
      timeout = 120
      ...
    }
  2. ScanSetting 5kdc 서비스를 다시 시작합니다.
    # systemctl restart krb5kdc

22.3.8. 현재 인증 정보를 Two-Factor Authentication으로 승격

암호와 이중 인증이 모두 구성되어 있지만 암호를 사용하여 인증받은 경우 특정 서비스 또는 호스트에 대한 액세스가 거부될 수 있습니다( 22.4절. “사용자 인증 방법에 따라 서비스 및 호스트에 대한 액세스 제한”참조). 이 경우 인증을 다시 인증하여 자격 증명을 1 단계 인증에서 2 단계 인증으로 승격합니다.
  1. 화면을 잠급니다. 화면을 잠그는 기본 키보드 바로 가기는 Super 키+L 입니다.
  2. 화면 잠금 해제. 자격 증명을 요청하는 경우 암호와 OTP를 둘 다 사용합니다.

22.3.9. OTP 토큰 재동기화

22.3.10. 손실된 OTP 토큰 교체

다음 절차에서는 OTP 토큰을 분실한 사용자가 토큰을 교체하는 방법을 설명합니다.
  1. 관리자로 사용자에 대해 암호 및 OTP 인증을 활성화합니다.
    [admin@server]# ipa user-mod --user-auth-type=password --user-auth-type=otp user_name
  2. 이제 사용자가 새 토큰을 추가할 수 있습니다. 예를 들어 설명에 새 토큰이 설정된 새 토큰 을 추가하려면 다음을 수행합니다.
    [user@server]# ipa otptoken-add --desc="New Token"
    자세한 내용은 ipa otptoken-add --help 매개변수 추가 명령을 입력합니다.
  3. 사용자는 이제 이전 토큰을 삭제할 수 있습니다.
    1. 선택적으로 계정과 연결된 토큰을 나열합니다.
      [user@server]# ipa otptoken-find
      --------------------
      2 OTP tokens matched
      --------------------
        Unique ID: 4ce8ec29-0bf7-4100-ab6d-5d26697f0d8f
        Type: TOTP
        Description: New Token
        Owner: user
      
        Unique ID: e1e9e1ef-172c-4fa9-b637-6b017ce79315
        Type: TOTP
        Description: Old Token
        Owner: user
      ----------------------------
      Number of entries returned 2
      ----------------------------
    2. 이전 토큰을 삭제합니다. 예를 들어, e1e9e1ef-172c-4fa9-b637-6b017ce79315 ID를 사용하여 토큰을 삭제하려면 다음을 수행합니다.
      [user@server]# # ipa otptoken-del e1e9e1ef-172c-4fa9-b637-6b017ce79315
      --------------------------------------------------------
      Deleted OTP token "e1e9e1ef-172c-4fa9-b637-6b017ce79315"
      --------------------------------------------------------
  4. 관리자는 사용자에 대해 OTP 인증만 활성화합니다.
    [admin@server]# ipa user-mod --user-auth-type=otp user_name