9.2. 들어오는 클라이언트 연결 보안
SSL/TLS 및 SASL을 사용하여 라우터 네트워크에 클라이언트 트래픽에 대한 적절한 보안 수준을 제공할 수 있습니다. 다음 방법을 사용하여 AMQP 클라이언트, 외부 컨테이너 또는 에지 라우터에서 라우터에 대한 수신 연결을 보호할 수 있습니다.
9.2.1. SSL/TLS 암호화 활성화 링크 복사링크가 클립보드에 복사되었습니다!
SSL/TLS를 사용하여 클라이언트에서 들어오는 연결을 암호화할 수 있습니다.
사전 요구 사항
- 클라이언트 연결에 필요한 X.509 인증 기관(CA)이 있어야 합니다.
- 보안 인증서는 CA에서 생성하고 서명해야 합니다.
절차
-
/etc/qpid-dispatch/qdrouterd.conf구성 파일을 엽니다. 라우터에 클라이언트 연결에 대한 개인 키와 인증서를 정의하는
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
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 인증서가 있어야 합니다.
절차
-
/etc/qpid-dispatch/qdrouterd.conf구성 파일을 엽니다. 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> 명령을사용합니다.
절차
필요한 경우 사용자 이름과 암호를 SASL 데이터베이스에 추가합니다.
이 예제에서는 SASL 데이터베이스(qdrouterd.sasldb)에 새 사용자(user1@example.com)를 추가합니다.
$ sudo saslpasswd2 -c -f qdrouterd.sasldb -u example.com user1참고전체 사용자 이름은 입력한 사용자 이름과 도메인 이름(<user-name> @ <
domain. 데이터베이스에 사용자를 추가할 때는 도메인 이름을 제공할 필요는 없지만 제공하지 않으면 기본 도메인이 자동으로 추가됩니다(도움말 시스템의 호스트 이름).-name> )입니다qdrouterd프로세스에서 SASL 데이터베이스를 읽을 수 있는지 확인합니다.qdrouterd프로세스가 권한이 없는 사용자로 실행되는 경우 라우터에서 읽을 수 있도록 SASL 데이터베이스의 권한 또는 소유권을 조정해야 할 수 있습니다.이 예제에서는 qdrouterd 사용자를 SASL 데이터베이스의 소유자로 만듭니다.
$ sudo chown qdrouterd /var/lib/qdrouterd/qdrouterd.sasldb/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-
mech_list속성에PLAIN메커니즘이 포함되어 있는지 확인합니다. -
/etc/qpid-dispatch/qdrouterd.conf구성 파일을 엽니다. router섹션에서 SASL 구성 파일의 경로를 지정합니다.router { mode: interior id: Router.A saslConfigDir: /etc/sasl2/ }saslConfigDir- 사용자 이름과 암호를 저장하는 SASL 데이터베이스의 경로가 포함된 SASL 구성 파일의 절대 경로입니다.
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패키지를 각 클라이언트 및 라우터 호스트 시스템에 설치해야 합니다.
절차
라우터의 호스트 시스템에서
/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다음을 확인합니다.
-
mech_list속성에는GSSAPI메커니즘이 포함되어 있습니다. -
keytab속성은 keytab 파일의 위치를 가리킵니다.
-
-
/etc/qpid-dispatch/qdrouterd.conf구성 파일을 엽니다. router섹션에서 SASL 구성 파일의 경로를 지정합니다.router { mode: interior id: Router.A saslConfigDir: /etc/sasl2/ }saslConfigDir- SASL 데이터베이스의 경로가 포함된 SASL 구성 파일의 절대 경로입니다.
인증에 Kerberos를 사용하여 들어오는 각 연결에 대해
GSSAPI메커니즘을 사용하도록리스너를 설정합니다.listener { host: 0.0.0.0 port: 5672 authenticatePeer: yes saslMechanisms: GSSAPI }