사전 공유 키 사용

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

Zabbix의 각 사전 공유 키(PSK)는 실제로 다음 한 쌍으로 구성됩니다:

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

PSK 식별 문자열은 비어 있지 않은 UTF-8 문자열입니다. 예를 들어 "PSK ID 001 Zabbix agentd"와 같습니다. 이는 Zabbix 구성 요소가 특정 PSK를 참조할 때 사용하는 고유한 이름입니다. PSK 식별 문자열에는 민감한 정보를 넣지 마세요 - 네트워크를 통해 암호화되지 않은 상태로 전송됩니다.

PSK 값은 추측하기 어려운 16진수 문자열입니다. 예를 들어 "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"와 같습니다.

크기 제한

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

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

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

Zabbix server가 PSK를 사용해 agent에 연결하기 전, server는 데이터베이스에서 (실제로는 구성 캐시에서) 해당 agent에 구성된 PSK 식별자와 PSK 값을 조회합니다. 연결을 수신하면 agent는 자신의 구성 파일에 있는 PSK 식별자와 PSK 값을 사용합니다. 양쪽이 동일한 PSK 식별 문자열과 PSK 값을 가지고 있으면 연결이 성공할 수 있습니다.

각 PSK 식별자는 오직 하나의 값과만 짝을 이루어야 합니다. 동일한 식별 문자열을 가지지만 값이 다른 두 개의 PSK가 존재하지 않도록 하는 것은 사용자의 책임입니다. 그렇지 않으면 이 PSK 식별 문자열을 사용하는 Zabbix 구성 요소 간 통신에서 예측할 수 없는 오류나 중단이 발생할 수 있습니다.

PSK 생성

예를 들어, 256비트(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 식별자와 그에 연관된 PSK가 담긴 데이터베이스 파일을 생성한다는 점에 유의하세요. Zabbix는 PSK 파일에 PSK만 있기를 기대하므로, 파일에서 식별 문자열과 콜론(':')을 제거해야 합니다.

server-agent 통신을 위한 PSK 구성(예시)

agent 호스트에서 PSK 값을 파일에 기록합니다. 예를 들어 /home/zabbix/zabbix_agentd.psk와 같습니다. 파일의 첫 번째 텍스트 문자열에 PSK가 포함되어야 합니다. 예를 들어:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

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

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

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

agent는 server에 연결하며(능동 점검), server와 zabbix_get으로부터는 PSK를 사용하는 연결만 수락합니다. PSK 식별자는 "PSK 001"이 됩니다.

agent를 재시작합니다. 이제 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 프론트엔드에서 이 agent에 대한 PSK 암호화를 구성합니다:

  • 이동: Data collection → Hosts
  • 호스트를 선택하고 Encryption 탭을 클릭

예시:

psk_config.png

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

구성 캐시가 데이터베이스와 동기화되면 새로운 연결은 PSK를 사용하게 됩니다. server와 agent의 로그 파일에서 오류 메시지를 확인하세요.

server - active proxy 통신을 위한 PSK 구성(예시)

proxy에서 PSK 값을 파일에 기록합니다. 예를 들어 /home/zabbix/zabbix_proxy.psk와 같습니다. 파일의 첫 번째 텍스트 문자열에 PSK가 포함되어야 합니다. 예를 들어:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

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

Zabbix proxy 구성 파일(zabbix_proxy.conf)에서 TLS 매개변수를 편집합니다. 예를 들어 다음과 같이 설정합니다:

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

proxy는 PSK를 사용해 server에 연결합니다. PSK 식별자는 "PSK 002"가 됩니다.

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

Zabbix 프론트엔드에서 이 proxy에 대한 PSK를 구성합니다. Administration→Proxies로 이동해 proxy를 선택하고 "Encryption" 탭으로 이동합니다. "Connections from proxy"에서 PSK를 표시합니다. "PSK identity" 필드에 "PSK 002"를 붙여넣고 "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"를 "PSK" 필드에 붙여넣습니다. "Update"를 클릭합니다.

proxy를 재시작합니다. server에 대해 PSK 기반 암호화 연결을 사용하기 시작합니다. server와 proxy의 로그 파일에서 오류 메시지를 확인하세요.

passive proxy의 경우 절차가 매우 유사합니다. 유일한 차이점은 Zabbix proxy 구성 파일에서 TLSAccept=psk를 설정하고 Zabbix 프론트엔드에서 Connections to proxy를 PSK로 설정하는 것뿐입니다.