9.2. 들어오는 클라이언트 연결 보안


SSL/TLS 및 SASL을 사용하여 라우터 네트워크에 클라이언트 트래픽에 대한 적절한 보안 수준을 제공할 수 있습니다. 다음 방법을 사용하여 AMQP 클라이언트, 외부 컨테이너 또는 에지 라우터에서 라우터에 대한 수신 연결을 보호할 수 있습니다.

9.2.1. SSL/TLS 암호화 활성화

SSL/TLS를 사용하여 클라이언트에서 들어오는 연결을 암호화할 수 있습니다.

사전 요구 사항

  • 클라이언트 연결에 필요한 X.509 인증 기관(CA)이 있어야 합니다.
  • 보안 인증서는 CA에서 생성하고 서명해야 합니다.

절차

  1. /etc/qpid-dispatch/qdrouterd.conf 구성 파일을 엽니다.
  2. 라우터에 클라이언트 연결에 대한 개인 키와 인증서를 정의하는 sslProfile 이 포함되어 있지 않은 경우 이를 추가합니다.

    sslProfile 에는 개인 키의 위치와 라우터에서 클라이언트의 연결을 암호화하는 데 사용해야 하는 인증서가 포함되어 있습니다.

    sslProfile {
        name: service-tls
        certFile: /etc/pki/tls/certs/tls.crt
        caCertFile: /etc/pki/tls/certs/ca.crt
        privateKeyFile: /etc/pki/tls/private/tls.key
        password: file:/etc/pki/tls/private/password.txt
        ...
    }
    name
    sslProfile 을 참조하는 데 사용할 수 있는 고유한 이름입니다.
    certFile
    이 라우터의 공용 인증서가 포함된 파일의 절대 경로입니다.
    caCertFile
    라우터가 들어오는 클라이언트를 인증하는 데 사용하는 CA 인증서의 절대 경로입니다.
    privateKeyFile

    이 라우터의 공용 인증서에 대한 개인 키가 포함된 파일의 절대 경로입니다.

    참고

    qdrouterd 또는 root 사용자가 개인 키에 액세스할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.

    chmod 0600 /etc/pki/tls/private/tls.key
    chown qdrouterd /etc/pki/tls/private/tls.key
    암호

    인증서 키의 잠금을 해제하는 암호입니다. 인증서 키에 암호가 없는 경우 이를 지정할 필요가 없습니다. 다른 접두사를 사용하여 보안 요구 사항에 따라 암호를 여러 가지 방법으로 지정할 수 있습니다.

    • 암호가 포함된 파일의 절대 경로를 지정합니다. 암호가 포함된 파일에 대한 권한을 설정할 수 있으므로 가장 안전한 옵션입니다. 예를 들면 다음과 같습니다.

      password: file:/etc/qpid-dispatch-certs/inter-router/password.txt
    • 암호를 저장하는 환경 변수를 지정합니다. 다른 프로세스의 환경이 특정 플랫폼에 표시되므로 이 옵션을 신중하게 사용합니다. 예를 들면 다음과 같습니다.

      password: env:CERT_PASSWORD
    • 암호를 일반 텍스트로 지정합니다. 이 옵션은 안전하지 않으므로 보안이 우려되지 않은 경우에만 사용해야 합니다. 예를 들면 다음과 같습니다.

      password: pass:mycertpassword
  3. SSL/TLS를 사용하여 연결을 암호화하도록 이 연결에 대한 리스너 를 구성합니다.

    이 예제에서는 클라이언트의 연결을 암호화하도록 일반 리스너를 구성합니다.

    listener {
        host: 0.0.0.0
        port: 5672
        role: normal
        sslProfile: inter_router_tls
        requireSsl: yes
        ...
    }
    sslProfile
    클라이언트 연결에 대한 SSL/TLS 개인 키 및 인증서를 정의하는 sslProfile 의 이름입니다.
    requireSsl
    SSL/TLS를 통한 연결을 암호화하려면 true 를 지정합니다.

9.2.2. SSL/TLS 클라이언트 인증 활성화

SSL/TLS 암호화 외에도 SSL/TLS를 사용하여 클라이언트에서 들어오는 연결을 인증할 수도 있습니다. 이 방법을 사용하면 클라이언트는 라우터에서 클라이언트의 ID를 확인하는 데 사용하는 자체 X.509 인증서를 라우터에 제공해야 합니다.

사전 요구 사항

  • SSL/TLS 암호화를 구성해야 합니다.

    자세한 내용은 9.2.1절. “SSL/TLS 암호화 활성화”의 내용을 참조하십시오.

  • 클라이언트에는 라우터에 인증하는 데 사용할 수 있는 X.509 인증서가 있어야 합니다.

절차

  1. /etc/qpid-dispatch/qdrouterd.conf 구성 파일을 엽니다.
  2. SSL/TLS를 사용하여 클라이언트를 인증하도록 이 연결에 대한 리스너 를 구성합니다.

    이 예제에서는 일반 리스너에 SSL/TLS 인증을 추가하여 클라이언트에서 들어오는 연결을 인증합니다. 클라이언트는 고유 X.509 인증서를 라우터에 제공하면 라우터에만 연결할 수 있습니다. 이 인증서를 라우터에서 클라이언트의 ID를 확인하는 데 사용할 수 있습니다.

    listener {
        host: 0.0.0.0
        port: 5672
        role: normal
        sslProfile: service-tls
        requireSsl: yes
        authenticatePeer: yes
        saslMechanisms: EXTERNAL
        ...
    }
    authenticatePeer
    클라이언트 ID를 인증하려면 yes 를 지정합니다.
    saslMechanisms
    X.509 클라이언트 인증서 인증을 활성화하려면 EXTERNAL 을 지정합니다.

9.2.3. 사용자 이름 및 암호 인증 활성화

SASL PLAIN 메커니즘을 사용하여 사용자 이름과 암호 집합에 대해 들어오는 클라이언트 연결을 인증할 수 있습니다. 이 방법을 자체적으로 사용하거나 SSL/TLS 암호화와 결합할 수 있습니다.

사전 요구 사항

  • cyrus-sasl-plain 플러그인이 설치됩니다.

    Cyrus SASL은 플러그인을 사용하여 특정 SASL 메커니즘을 지원합니다. 특정 SASL 메커니즘을 사용하려면 먼저 관련 플러그인을 설치해야 합니다.

    Red Hat Enterprise Linux의 Cyrus SASL 플러그인 목록을 보려면 yum search cyrus-sasl 명령을 사용합니다. Cyrus SASL 플러그인을 설치하려면 yum install < plugin> 명령을 사용합니다.

절차

  1. 필요한 경우 사용자 이름과 암호를 SASL 데이터베이스에 추가합니다.

    이 예제에서는 SASL 데이터베이스(qdrouterd.sasldb)에 새 사용자(user1@example.com)를 추가합니다.

    $ sudo saslpasswd2 -c -f qdrouterd.sasldb -u example.com user1
    참고

    전체 사용자 이름은 입력한 사용자 이름과 도메인 이름(<user-name> @ <domain-name> )입니다. 데이터베이스에 사용자를 추가할 때는 도메인 이름을 제공할 필요는 없지만 제공하지 않으면 기본 도메인이 자동으로 추가됩니다(도움말 시스템의 호스트 이름).

  2. qdrouterd 프로세스에서 SASL 데이터베이스를 읽을 수 있는지 확인합니다.

    qdrouterd 프로세스가 권한이 없는 사용자로 실행되는 경우 라우터에서 읽을 수 있도록 SASL 데이터베이스의 권한 또는 소유권을 조정해야 할 수 있습니다.

    이 예제에서는 qdrouterd 사용자를 SASL 데이터베이스의 소유자로 만듭니다.

    $ sudo chown qdrouterd /var/lib/qdrouterd/qdrouterd.sasldb
  3. /etc/sasl2/qdrouterd.conf 구성 파일을 엽니다.

    이 예제에서는 /etc/sasl2/qdrouterd.conf 구성 파일을 보여줍니다.

    pwcheck_method: auxprop
    auxprop_plugin: sasldb
    sasldb_path: qdrouterd.sasldb
    mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI
  4. mech_list 속성에 PLAIN 메커니즘이 포함되어 있는지 확인합니다.
  5. /etc/qpid-dispatch/qdrouterd.conf 구성 파일을 엽니다.
  6. router 섹션에서 SASL 구성 파일의 경로를 지정합니다.

    router {
        mode: interior
        id: Router.A
        saslConfigDir: /etc/sasl2/
    }
    saslConfigDir
    사용자 이름과 암호를 저장하는 SASL 데이터베이스의 경로가 포함된 SASL 구성 파일의 절대 경로입니다.
  7. SASL PLAIN을 사용하여 클라이언트를 인증하도록 이 연결에 대한 리스너 를 구성합니다.

    이 예제에서는 리스너 에 대한 기본 사용자 이름 및 암호 인증을 구성합니다. 이 경우 SSL/TLS 암호화가 사용되지 않습니다.

    listener {
        host: 0.0.0.0
        port: 5672
        authenticatePeer: yes
        saslMechanisms: PLAIN
        }

9.2.4. Kerberos와 통합

사용자 환경에 Kerberos를 구현한 경우 GSSAPI SASL 메커니즘과 함께 사용하여 들어오는 연결을 인증할 수 있습니다.

사전 요구 사항

  • Kerberos 인프라를 사용자 환경에 배포해야 합니다.
  • Kerberos 환경에서 amqp/<hostname>@<realm >의 서비스 주체를 구성해야 합니다.

    AMQ Interconnect에서 사용하는 서비스 주체입니다.

  • cyrus-sasl-gssapi 패키지를 각 클라이언트 및 라우터 호스트 시스템에 설치해야 합니다.

절차

  1. 라우터의 호스트 시스템에서 /etc/sasl2/qdrouterd.conf 구성 파일을 엽니다.

    이 예제에서는 /etc/sasl2/qdrouterd.conf 구성 파일을 보여줍니다.

    pwcheck_method: auxprop
    auxprop_plugin: sasldb
    sasldb_path: qdrouterd.sasldb
    keytab: /etc/krb5.keytab
    mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI
  2. 다음을 확인합니다.

    • mech_list 속성에는 GSSAPI 메커니즘이 포함되어 있습니다.
    • keytab 속성은 keytab 파일의 위치를 가리킵니다.
  3. /etc/qpid-dispatch/qdrouterd.conf 구성 파일을 엽니다.
  4. router 섹션에서 SASL 구성 파일의 경로를 지정합니다.

    router {
        mode: interior
        id: Router.A
        saslConfigDir: /etc/sasl2/
    }
    saslConfigDir
    SASL 데이터베이스의 경로가 포함된 SASL 구성 파일의 절대 경로입니다.
  5. 인증에 Kerberos를 사용하여 들어오는 각 연결에 대해 GSSAPI 메커니즘을 사용하도록 리스너 를 설정합니다.

    listener {
        host: 0.0.0.0
        port: 5672
        authenticatePeer: yes
        saslMechanisms: GSSAPI
        }
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.