2 사전 공유 키 사용

원본 보기

2 사전 공유 키 사용

개요

Zabbix의 각 사전 공유 키(PSK)는 실제로 다음 두 가지로 구성된 쌍입니다:

  • 비밀이 아닌 PSK ID 문자열,
  • 비밀 PSK 문자열 값.

PSK ID 문자열은 비어있지 않은 UTF-8 문자열입니다. 예를 들어, "PSK ID 001 Zabbix agentd". 이는 이 특정 PSK가 Zabbix 구성 요소에서 참조되는 고유한 이름입니다. PSK ID 문자열에는 민감한 정보를 넣지 마십시오 - 네트워크를 통해 암호화되지 않은 상태로 전송됩니다.

PSK 값은 추측하기 어려운 16진수로 구성된 문자열입니다. 예를 들어, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

크기 제한

Zabbix에는 PSK ID와 값에 대한 크기 제한이 있으며, 일부 경우에는 암호화 라이브러리에서 더 낮은 제한을 가질 수 있습니다:

구성 요소 PSK ID 최대 크기 PSK 값 최소 크기 PSK 값 최대 크기
Zabbix 128 UTF-8 문자 128-bit (16-byte PSK, 32개 16진수로 입력) 2048-bit (256-byte PSK, 512개 16진수로 입력)
GnuTLS 128 바이트 (UTF-8 문자 포함 가능) - 2048-bit (256-byte PSK, 512개 16진수로 입력)
OpenSSL 1.0.x, 1.1.0 127 바이트 (UTF-8 문자 포함 가능) - 2048-bit (256-byte PSK, 512개 16진수로 입력)
OpenSSL 1.1.1 127 바이트 (UTF-8 문자 포함 가능) - 512-bit (64-byte PSK, 128개 16진수로 입력)
OpenSSL 1.1.1a 이후 127 바이트 (UTF-8 문자 포함 가능) - 2048-bit (256-byte PSK, 512개 16진수로 입력)

Zabbix 프론트엔드는 사용된 암호화 라이브러리와 관계없이 최대 128자 길이의 PSK ID 문자열과 2048-bit 길이의 PSK를 구성할 수 있습니다.
일부 Zabbix 구성 요소가 더 낮은 제한을 지원하는 경우, 해당 구성 요소에 허용된 길이로 PSK ID와 값을 구성하는 것은 사용자의 책임입니다.
길이 제한을 초과하면 Zabbix 구성 요소 간의 통신 실패가 발생합니다.

Zabbix 서버가 PSK를 사용하여 에이전트에 연결하기 전에, 서버는 데이터베이스(실제로는 구성 캐시)에서 해당 에이전트에 구성된 PSK ID와 PSK 값을 찾습니다. 연결을 수신하면 에이전트는 구성 파일의 PSK ID와 PSK 값을 사용합니다. 양쪽 모두 같은 PSK ID 문자열과 PSK 값을 가지고 있으면 연결이 성공할 수 있습니다.

각 PSK ID는 하나의 값과만 쌍을 이루어야 합니다. 같은 ID 문자열을 가지지만 다른 값을 가진 두 개의 PSK가 없도록 보장하는 것은 사용자의 책임입니다. 이를 지키지 않으면 이 PSK ID 문자열을 사용하는 PSK를 사용하는 Zabbix 구성 요소 간의 통신에서 예측할 수 없는 오류나 중단이 발생할 수 있습니다.

PSK 생성

예를 들어, 256-bit (32바이트) PSK는 다음 명령어를 사용하여 생성할 수 있습니다:

  • OpenSSL 사용:
<!-- -->
  $ openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • GnuTLS 사용:
<!-- -->
  $ psktool -u psk_identity -p database.psk -s 32
  Generating a random key for user 'psk_identity'
  Key stored to database.psk

  $ cat database.psk 
  psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

위의 "psktool"은 PSK ID와 관련된 PSK가 포함된 데이터베이스 파일을 생성합니다. Zabbix는 PSK 파일에 PSK만 있기를 기대하므로 파일에서 ID 문자열과 콜론(':')을 제거해야 합니다.

서버-에이전트 통신을 위한 PSK 구성 (예제)

에이전트 호스트에서 PSK 값을 파일에 작성합니다. 예를 들어, /home/zabbix/zabbix_agentd.psk. 파일은 첫 번째 텍스트 문자열에 PSK를 포함해야 합니다. 예를 들어:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

PSK 파일에 접근 권한을 설정합니다 - Zabbix 사용자만 읽을 수 있어야 합니다.

에이전트 구성 파일 zabbix_agentd.conf에서 TLS 매개변수를 편집합니다. 예를 들어, 다음과 같이 설정합니다:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001

에이전트는 서버에 연결(액티브 체크)하고 PSK를 사용하는 서버와 zabbix_get의 연결만 받아들입니다. PSK ID는 "PSK 001"이 됩니다.

에이전트를 다시 시작합니다. 이제 zabbix_get을 사용하여 연결을 테스트할 수 있습니다. 예를 들어:

zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk

(다운타임을 최소화하려면 연결 암호화 관리에서 연결 유형을 변경하는 방법을 참조하세요).

Zabbix 프론트엔드에서 이 에이전트에 대한 PSK 암호화를 구성합니다:

  • 이동: 데이터 수집 → 호스트
  • 호스트를 선택하고 암호화 탭을 클릭합니다

예제:

psk\_config.png

모든 필수 입력 필드는 빨간 별표로 표시됩니다.

구성 캐시가 데이터베이스와 동기화되면 새로운 연결에서 PSK를 사용합니다. 오류 메시지가 있는지 서버와 에이전트 로그 파일을 확인하세요.

서버 - 액티브 프록시 통신을 위한 PSK 구성 (예제)

프록시에서 PSK 값을 파일에 작성합니다. 예를 들어, /home/zabbix/zabbix_proxy.psk. 파일은 첫 번째 텍스트 문자열에 PSK를 포함해야 합니다. 예를 들어:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

PSK 파일에 접근 권한을 설정합니다 - Zabbix 사용자만 읽을 수 있어야 합니다.

프록시 구성 파일 zabbix_proxy.conf에서 TLS 매개변수를 편집합니다. 예를 들어, 다음과 같이 설정합니다:

TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002

프록시는 PSK를 사용하여 서버에 연결합니다. PSK ID는 "PSK 002"가 됩니다.

(다운타임을 최소화하려면 연결 암호화 관리에서 연결 유형을 변경하는 방법을 참조하세요).

Zabbix 프론트엔드에서 이 프록시에 대한 PSK를 구성합니다. 관리→프록시로 이동하여 프록시를 선택하고 "암호화" 탭으로 이동합니다. "프록시에서 연결"에서 PSK를 체크합니다. "PSK ID" 필드에 "PSK 002"를 붙여넣고 "PSK" 필드에 "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"를 붙여넣습니다. "업데이트"를 클릭합니다.

프록시를 다시 시작합니다. 서버에 PSK 기반 암호화 연결을 사용하기 시작합니다. 오류 메시지가 있는지 서버와 프록시 로그 파일을 확인하세요.

패시브 프록시의 경우 절차가 매우 유사합니다. 유일한 차이점은 프록시 구성 파일에서 TLSAccept=psk를 설정하고 Zabbix 프론트엔드에서 "프록시에 연결"을 PSK로 설정하는 것입니다.