1장. Red Hat Directory Server 보안


Red Hat Directory Server를 사용하여 LDAP 서비스의 보안을 개선합니다. 예를 들어 클라이언트와 디렉터리 서버 간의 연결을 암호화하고 Directory Server 데이터베이스에 암호화된 특성을 저장할 수 있습니다. 또한 복제 변경 로그를 암호화하고 인증을 구성하고 다른 보안 작업을 수행할 수도 있습니다.

1.1. Directory Server에 대한 TLS 암호화 연결 활성화

기본적으로 Red Hat Directory Server는 암호화 없이 LDAP 서비스를 제공합니다. 보안을 개선하기 위해 복제 환경에서 클라이언트 또는 기타 호스트가 암호화된 연결을 사용하도록 Directory Server에서 TLS를 구성할 수 있습니다. 그런 다음 포트 389에서 STARTTLS 명령 또는 포트 636에서 LDAPS 프로토콜을 사용하여 보안 연결을 수행할 수 있습니다.

bind Distinguished Name (DN) 및 password를 사용하거나 인증서 기반 인증을 사용하여 간단한 인증으로 TLS를 사용할 수 있습니다.

Directory Server의 암호화 서비스는 TLS 및 기본 암호화 기능 라이브러리인 Mozilla 네트워크 보안 서비스(NSS)에서 제공합니다. NSS에는 FIPS(Federal Information Processing Standard) 140-2 인증인 소프트웨어 기반 암호화 토큰이 포함되어 있습니다.

1.1.1. Directory Server에 대한 암호화된 연결에 대한 다양한 옵션

암호화된 연결을 사용하여 Directory Server에 연결하려면 다음 프로토콜 및 프레임워크를 사용할 수 있습니다.

LDAPS
LDAPS 프로토콜을 사용하면 연결이 암호화를 사용하여 시작되고 성공 또는 실패합니다. 그러나 암호화되지 않은 데이터는 네트워크를 통해 전송되지 않습니다. 이러한 이유로 암호화되지 않은 LDAP를 통해 STARTTLS 를 사용하는 대신 LDAPS를 선호합니다.
LDAP를 통한 STARTTLS

클라이언트는 LDAP 프로토콜을 통해 암호화되지 않은 연결을 설정한 다음 STARTTLS 명령을 보냅니다. 명령이 성공하면 추가 통신이 모두 암호화됩니다.

주의

STARTTLS 명령이 실패하고 클라이언트가 연결을 취소하지 않으면 인증 정보를 포함한 모든 추가 데이터가 네트워크를 통해 암호화되지 않은 상태로 전송됩니다.

SASL
SASL(Simple Authentication and Security Layer) 프레임워크를 사용하면 Kerberos와 같은 외부 인증 방법을 사용하여 사용자를 인증할 수 있습니다.

1.1.2. Directory Server가 NSS 데이터베이스 잠금 해제 방법

Directory Server는 CSR(인증서 서명 요청), 개인 키 및 NSS(네트워크 보안 서비스) 데이터베이스에 인증서를 저장합니다. 새 인스턴스를 설치하면 설치 프로그램이 NSS 데이터베이스를 자동으로 생성하고 임의의 암호로 보호합니다. 설치 프로그램은 다음 파일에 이 암호를 저장합니다.

  • /etc/dirsrv/slapd- <instance_name> /pwdfile.txt: dsconf tls 명령은 이 파일을 사용하여 NSS 데이터베이스에 액세스합니다.
  • /etc/dirsrv/slapd- <instance_name> /pin.txt:이 파일에는 Directory Server가 시작될 때 NSS 데이터베이스를 자동으로 잠금 해제하는 토큰과 암호가 포함되어 있습니다.

    • 인스턴스를 시작할 때마다 Directory Server에서 NSS 데이터베이스 암호를 입력하라는 메시지를 표시하려면 이 파일을 제거하십시오.
    • 암호를 입력하라는 메시지를 표시하지 않고 인스턴스를 자동으로 시작하려면 이 파일을 유지하고 NSS 데이터베이스 암호를 변경할 때 업데이트합니다.

/etc/dirsrv/slapd- <instance_name> /pin.txt 파일이 없는 경우 암호화가 활성화된 Directory Server를 시작하고 NSS 데이터베이스에서 암호를 설정하는 작업은 다음과 같습니다.

  • systemctl 또는 dsctl 유틸리티가 ns-slapd Directory Server 프로세스를 시작하는 경우 systemd 서비스에서 암호를 묻는 메시지를 표시하고 입력을 systemd-tty-ask-password-agent 유틸리티에 자동으로 전달합니다.

    # dsctl <instance_name> start
    Enter PIN for Internal (Software) Token: (press TAB for no echo)
    Copy to Clipboard Toggle word wrap
  • 드문 경우지만 ns-slapd Directory Server 프로세스가 systemctl 또는 dsctl 유틸리티에 의해 시작되지 않고 터미널에서 프로세스가 분리되면 ns-slapdwall 명령을 사용하여 모든 터미널에 메시지를 보냅니다.

    Broadcast message from root@server (Fri 2021-01-01 06:00:00 CET):
    
    Password entry required for 'Enter PIN for Internal (Software) Token:' (PID 1234).
    Please enter password with the systemd-tty-ask-password-agent tool!
    Copy to Clipboard Toggle word wrap

    암호를 입력하려면 다음을 수행합니다.

    # systemd-tty-ask-password-agent
    Enter PIN for Internal (Software) Token:
    Copy to Clipboard Toggle word wrap

1.1.3. 명령줄을 사용하여 Directory Server에 TLS 암호화 연결 활성화

TLS 암호화 또는 인증서 기반 인증을 사용하려면 NSS(네트워크 보안 서비스) 데이터베이스에서 인증서를 관리해야 합니다. 인스턴스를 만들 때 dscreate 유틸리티는 /etc/dirsrv/slapd- <instance_name> / 디렉터리에 이 데이터베이스를 자동으로 생성하고 강력한 암호로 보호합니다.

절차

  1. 개인 키 및 CSR(인증서 서명 요청)을 만듭니다. 외부 유틸리티를 사용하여 생성하려면 이 단계를 건너뜁니다.

    • 호스트에 하나의 이름으로만 연결할 수 있는 경우 다음을 입력합니다.

      # dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization"
      Copy to Clipboard Toggle word wrap
    • 여러 이름으로 호스트에 연결할 수 있는 경우:

      # dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization" server.example.com server.example.net
      Copy to Clipboard Toggle word wrap

      호스트 이름을 마지막 매개 변수로 지정하면 명령에서 DNS:server.example.com, DNS:server.example.net 항목을 CSR에 사용하여 SAN(Subject Alternative Name) 확장을 추가합니다.

    -s subject 매개변수에 지정된 문자열은 RFC 1485에 따라 유효한 제목 이름이어야 합니다. 제목의 CN 필드가 필요하며 서버의 FQDN(정규화된 도메인 이름) 중 하나로 설정해야 합니다. 명령은 CSR을 /etc/dirsrv/slapd- <instance_name> /Server-Cert.csr 파일에 저장합니다.

  2. 인증서 발급을 받으려면 CSR을 CA(인증 기관)에 제출합니다. 자세한 내용은 CA 설명서를 참조하십시오.
  3. CA에서 발급한 서버 인증서를 NSS 데이터베이스로 가져옵니다.

    • dsctl tls generate-server-cert-csr 명령을 사용하여 개인 키를 생성한 경우 다음을 입력합니다.

      # dsconf <instance_name> security certificate add --file /root/instance_name.crt --name "server-cert" --primary-cert
      Copy to Clipboard Toggle word wrap

      --name _certificate_nickname매개변수에 설정한 인증서의 이름을 기억합니다. 이는 이후 단계에서 필요합니다.

    • 외부 유틸리티를 사용하여 개인 키를 생성한 경우 서버 인증서와 개인 키를 가져옵니다.

      # dsctl <instance_name> tls import-server-key-cert /root/server.crt /root/server.key
      Copy to Clipboard Toggle word wrap

      이 명령을 사용하려면 먼저 서버 인증서의 경로를 지정한 다음 개인 키의 경로를 지정해야 합니다. 이 방법은 항상 인증서의 닉네임을 Server-Cert 로 설정합니다.

  4. CA 인증서를 NSS 데이터베이스로 가져옵니다.

    # dsconf <instance_name> security ca-certificate add --file /root/ca.crt --name "Example CA"
    Copy to Clipboard Toggle word wrap
  5. CA 인증서의 신뢰 플래그를 설정합니다.

    # dsconf <instance_name> security ca-certificate set-trust-flags "Example CA" --flags "CT,,"
    Copy to Clipboard Toggle word wrap

    이렇게 하면 TLS 암호화 및 인증서 기반 인증을 위한 CA를 신뢰하도록 Directory Server가 구성됩니다.

  6. TLS를 활성화하고 LDAPS 포트를 설정합니다.

    # dsconf <instance_name> config replace nsslapd-securePort=636 nsslapd-security=on
    Copy to Clipboard Toggle word wrap
  7. firewalld 서비스에서 LDAPS 포트를 엽니다.

    # firewall-cmd --permanent --add-port=636/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  8. RSA 암호화 제품군을 활성화하고 NSS 데이터베이스 보안 장치 및 서버 인증서 이름을 설정합니다.

    # dsconf <instance_name> security rsa set --tls-allow-rsa-certificates on --nss-token "internal (software)" --nss-cert-name Server-Cert
    Copy to Clipboard Toggle word wrap

    기본적으로 NSS 데이터베이스의 보안 장치 이름은 내부(소프트웨어) 입니다.

  9. 선택 사항: 일반 텍스트 LDAP 포트를 비활성화합니다.

    # dsconf <instance_name> security disable_plain_port
    Copy to Clipboard Toggle word wrap
  10. 인스턴스 재시작

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

검증

  • LDAPS 프로토콜을 사용하여 Directory Server에 대한 연결을 설정합니다. 예를 들어 쿼리를 실행합니다.

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base
    Copy to Clipboard Toggle word wrap

    ldap_sasl_bind(SIMPLE)를 사용하여 명령이 실패하면 LDAP 서버(-1) 오류에 연결할 수 없으며 디버그 수준 1로 명령을 다시 실행합니다.

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base -d 1
    Copy to Clipboard Toggle word wrap

1.1.4. 웹 콘솔을 사용하여 Directory Server에 TLS 암호화 연결 활성화

웹 콘솔을 사용하여 TLS 암호화를 구성할 수 있습니다.

사전 요구 사항

  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. Server Security Certificate Management Certificate Signing Request 로 이동하여 Create Certificate Signing Request 를 클릭합니다.
  2. CSR(인증서 서명 요청), CN(일반 이름) 및 조직(O)의 이름을 설정합니다.

    여러 이름으로 호스트에 연결할 수 있는 경우 주체 대체 이름으로 대체 이름을 설정합니다.

  3. 인증서 서명 요청 생성 을 클릭합니다.
  4. CSR 텍스트를 보고 복사합니다.

    1. 확인할 CSR의 노드 옵션 아이콘을 클릭하고 CSR 보기를 선택합니다.
    2. CSR 콘텐츠를 복사합니다.
  5. CSR 파일을 CA(인증 기관)에 제출하여 인증서 발급을 받습니다. 자세한 내용은 CA 설명서를 참조하십시오.
  6. CA에서 인증서를 받으면 Server Security Certificate Management TLS 인증서로 이동하여 서버 인증서 추가 를 클릭합니다.
  7. 서버 인증서에 고유한 닉네임을 설정하고 발급된 인증서를 업로드하고 인증서 추가 를 클릭합니다.

    이후 단계에서 필요하므로 인증서 닉네임을 기억합니다.

  8. 서버 보안 인증서 관리 신뢰할 수 있는 인증서 기관으로 이동하여 CA 인증서 추가 를 클릭합니다.
  9. CA 인증서의 고유한 닉네임을 설정하고 CA 인증서 파일을 업로드하고 인증서 추가 를 클릭합니다.
  10. 선택 사항: Directory Server 인스턴스 설치 중에 TLS 암호화를 활성화하지 않은 경우 활성화합니다.

    1. Server Security Settings 로 이동하여 보안 스위치를 활성화합니다.
    2. 팝업 창에서 보안 사용을 클릭합니다.
    3. 보안 설정 페이지에서 Save Configuration 을 클릭합니다.
  11. 보안 구성 페이지에서 서버 인증서 이름을 구성합니다.

    1. Server Security Configuration 으로 이동합니다.
    2. 서버 인증서 이름 드롭다운 목록에서 서버 인증서 닉네임을 선택하고 Save Configuration 을 클릭합니다.
    3. 선택 사항: 드롭다운 목록에 인증서 닉네임이 표시되지 않으면 보안 설정 페이지를 새로 고치고 이전 단계를 다시 수행합니다.
  12. 선택 사항: 636 이외의 LDAPS 포트를 사용하려면 서버 서버 설정으로 이동하여 LDAPS 포트를 설정한 다음 저장을 클릭합니다.
  13. firewalld 서비스에서 LDAPS 포트를 엽니다.

    # firewall-cmd --permanent --add-port=636/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  14. 선택 사항: 서버 보안 구성으로 이동하여 Secure Connections 필요 확인란을 선택한 다음 Save Configuration 을 클릭합니다.

    Directory Server는 일반 텍스트 LDAP 포트를 비활성화합니다.

  15. 오른쪽 상단에 있는 작업을 클릭하고 인스턴스 재시작 을 선택합니다.

1.1.5. 인증서가 만료된 경우 Directory Server 작동 방식 관리

기본적으로 암호화가 활성화되어 있고 인증서가 만료된 경우 Directory Server는 경고를 기록하고 서비스가 시작됩니다. 이 동작을 변경하려면 nsslapd-validate-cert 매개변수를 설정합니다. 이 값을 다음 값으로 설정할 수 있습니다.

  • warn: Directory Server가 시작되고 만료된 인증서에 대한 경고를 /var/log/dirsrv/slapd- <instance_name> /error 로그 파일에 기록합니다. 이 설정은 기본 설정입니다.
  • Directory Server 에서 인증서의 유효성을 검사합니다. 인증서가 만료된 경우 인스턴스가 시작되지 않습니다.
  • off: Directory Server가 인증서 만료 날짜를 확인하지 않습니다. 인스턴스가 시작되고 경고가 기록되지 않습니다.

사전 요구 사항

  • TLS 암호화를 구성했습니다.

절차

  • 다음 명령을 사용하여 nsslapd-validate-cert 매개변수를 변경합니다.

    # dsconf <instance_name> config replace nsslapd-validate-cert=<value>
    Copy to Clipboard Toggle word wrap

1.1.6. NSS 데이터베이스의 암호 변경

NSS(네트워크 보안 서비스) 데이터베이스의 암호를 변경할 수 있습니다. 예를 들어, 암호가 권한이 없는 사람에게 알려지면 이를 변경합니다.

사전 요구 사항

  • 현재 NSS 데이터베이스 암호를 알고 있습니다.

    암호 파일을 사용하여 Directory Server가 시작될 때 데이터베이스 잠금을 자동으로 해제하는 경우 암호는 /etc/dirsrv/slapd- <instance_name> /pin.txt 파일의 일반 텍스트로 암호화되지 않습니다.

절차

  1. 다음 명령을 사용하여 NSS 데이터베이스 암호를 변경합니다.

    # certutil -d /etc/dirsrv/slapd-<instance_name>/ -W
    
    Enter Password or Pin for "NSS Certificate DB":
    Enter a password which will be used to encrypt your keys.
    The password should be at least 8 characters long,
    and should contain at least one non-alphabetic character.
    
    Enter new password:
    Re-enter password:
    Password changed successfully.
    Copy to Clipboard Toggle word wrap
  2. NSS 데이터베이스 암호를 입력하라는 메시지가 표시되지 않고 암호 파일을 사용하여 Directory Server를 자동으로 시작하는 경우 /etc/dirsrv/slapd-<instance_name>/pin.txt : 이전 암호를 새 암호로 교체합니다.

    • NSS 소프트웨어 암호화 모듈을 사용하는 경우 기본값입니다.

      Internal (Software) Token:password
      Copy to Clipboard Toggle word wrap
    • HSM(Hardware Security Module)을 사용하는 경우:

      name_of_the_token:password
      Copy to Clipboard Toggle word wrap

검증

  • 암호를 입력해야 하는 NSS 데이터베이스에서 작업을 수행합니다. 예를 들어 인스턴스의 개인 키를 나열합니다.

    # certutil -d /etc/dirsrv/slapd-<instance_name>/ -K
    certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services"
    Enter Password or Pin for "NSS Certificate DB":
    < 0> rsa      72cb03f87381abfbb6b9e78234e2e4502ad1bfc0   NSS Certificate DB:Server-Cert
    Copy to Clipboard Toggle word wrap

    새 암호를 입력한 후 명령이 예상 출력을 표시하는 경우 암호가 성공적으로 변경되었습니다.

새 인스턴스를 생성하면 설치 프로그램이 자동으로 /etc/dirsrv/slapd-instance_name/pin.txt 파일을 생성하여 NSS(네트워크 보안 서비스) 암호를 입력하라는 메시지를 표시하지 않고 Directory Server를 시작할 수 있습니다. 그러나 이 파일을 제거하면 해당 파일을 다시 생성할 수 있습니다.

주의

암호는 일반 텍스트로 저장됩니다. 서버가 안전하지 않은 환경에서 실행 중인 경우 암호 파일을 사용하지 마십시오.

사전 요구 사항

  • NSS 데이터베이스 암호를 알고 있습니다.

절차

  1. 다음 콘텐츠를 사용하여 /etc/dirsrv/slapd-<instance_name>/pin.txt 파일을 만듭니다.

    • NSS 소프트웨어 암호화 모듈을 사용하는 경우 기본값입니다.

      Internal (Software) Token:password
      Copy to Clipboard Toggle word wrap
    • HSM(Hardware Security Module)을 사용하는 경우:

      name_of_the_token:password
      Copy to Clipboard Toggle word wrap
  2. 파일 권한을 설정합니다.

    # chown dirsrv:root /etc/dirsrv/slapd-<instance_name>/pin.txt
    # chmod 400 /etc/dirsrv/slapd-<instance_name>/pin.txt
    Copy to Clipboard Toggle word wrap

검증

  • 인스턴스를 다시 시작합니다.

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

    시스템이 NSS 데이터베이스 암호를 입력하라는 메시지를 표시하지 않으면 Directory Server는 암호 파일을 사용합니다.

Directory Server에서 TLS 암호화를 활성화하면 CA에서 발급한 인증서를 사용하도록 인스턴스를 구성합니다. 클라이언트가 LDAPS 프로토콜 또는 LDAP를 통한 STARTTLS 명령을 사용하여 서버에 대한 연결을 설정하는 경우 Directory Server는 이 인증서를 사용하여 연결을 암호화합니다. 클라이언트 유틸리티는 CA 인증서를 사용하여 서버의 인증서가 유효한지 확인합니다. 기본적으로 이러한 유틸리티는 서버의 인증서를 신뢰하지 않는 경우 연결을 취소합니다.

예 1.1. 클라이언트 유틸리티에서 CA 인증서를 사용하지 않는 경우 연결 오류 발생

  • dsconf

    # dsconf -D "cn=Directory Manager" ldaps://server.example.com:636 config get
    Error: {'desc': "Can't contact LDAP server", 'info': 'error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate in certificate chain)'}
    Copy to Clipboard Toggle word wrap
  • ldapsearch

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x
    Enter LDAP Password:
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
    Copy to Clipboard Toggle word wrap

Red Hat Enterprise Linux에서 클라이언트 유틸리티를 활성화하여 인증서 디렉터리 서버가 사용하는지 확인하려면 운영 체제의 신뢰 저장소에 CA 인증서를 추가합니다.

사전 요구 사항

  • NSS(네트워크 보안 서비스) 데이터베이스의 암호를 알고 있습니다.

    Directory Server 인스턴스를 설치하는 동안 생성된 암호를 계속 사용하는 경우 /etc/dirsrv/slapd-<instance_name>/pwdfile.txt 파일의 일반 텍스트로 이 암호를 찾습니다.

절차

  1. Directory Server에서 사용하는 CA 인증서의 로컬 사본이 없는 경우:

    1. 서버의 네트워크 보안 서비스(NSS) 데이터베이스의 인증서를 나열합니다.

      # certutil -d /etc/dirsrv/slapd-<instance_name>/ -L
      
      Certificate Nickname                       Trust Attributes
                                                 SSL,S/MIME,JAR/XPI
      
      Example CA                                 C,,
      Server-Cert                                u,u,u
      Copy to Clipboard Toggle word wrap
    2. NSS 데이터베이스에서 CA 인증서의 닉네임을 사용하여 CA 인증서를 내보냅니다.

      # certutil -d /etc/dirsrv/slapd-<instance_name>/ -L -n "Example CA" -a > /tmp/ds-ca.crt
      Copy to Clipboard Toggle word wrap
  2. CA 인증서를 /etc/pki/ca-trust/source/anchors/ 디렉터리에 복사합니다.

    # cp /tmp/ds-ca.crt /etc/pki/ca-trust/source/anchors/
    Copy to Clipboard Toggle word wrap
  3. CA 신뢰 데이터베이스를 다시 빌드합니다.

    # update-ca-trust
    Copy to Clipboard Toggle word wrap

검증

  • LDAPS 프로토콜을 사용하여 Directory Server에 대한 연결을 설정합니다. 예를 들어 쿼리를 실행합니다.

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat