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 }