14.5. TLS 암호화 원격 로깅 구성
기본적으로 Rsyslog는 일반 텍스트 형식으로 원격 블로그 통신을 보냅니다. 시나리오에서 이 통신 채널을 보호해야 하는 경우 TLS를 사용하여 암호화할 수 있습니다.
TLS를 통해 암호화된 전송을 사용하려면 서버와 클라이언트를 둘 다 구성합니다. 서버는 하나 이상의 클라이언트 시스템에서 보낸 로그를 수집하고 분석합니다.
ossl
네트워크 스트림 드라이버(OpenSSL) 또는 gtls
스트림 드라이버(GnuTLS)를 사용할 수 있습니다.
보안이 높은 별도의 시스템(예: 네트워크에 연결되지 않았거나 더 엄격한 권한 부여가 있는 시스템)이 있는 경우 별도의 시스템을 CA(인증 기관)로 사용합니다.
글로벌 ,모듈
및 입력
수준의 서버 측과
및 글로벌
작업
수준의 클라이언트 측의 스트림 드라이버를 사용하여 연결 설정을 사용자 지정할 수 있습니다. 보다 구체적인 구성은 보다 일반적인 구성을 덮어씁니다. 예를 들어 대부분의 연결에서 ossl
을 사용하고 특정 연결에 대해서만 gtls
를 사용할 수 있습니다.
사전 요구 사항
-
클라이언트 및 서버 시스템에 모두
root
액세스 권한이 있어야 합니다. 다음 패키지는 서버 및 클라이언트 시스템에 설치됩니다.
-
rsyslog
패키지입니다. -
ossl
네트워크 스트림 드라이버의 경우rsyslog-openssl
패키지입니다. -
gtls
네트워크 스트림 드라이버의 경우rsyslog-gnutls
패키지입니다. -
certtool
명령을 사용하여 인증서를 생성하는 경우gnutls-utils
패키지를 사용합니다.
-
로깅 서버에서 다음 인증서는
/etc/pki/ca-trust/source/anchors/
디렉터리에 있으며update-ca-trust
명령을 사용하여 시스템 구성을 업데이트합니다.-
ca-cert.pem
- 로깅 서버 및 클라이언트에서 키와 인증서를 확인할 수 있는 CA 인증서입니다. -
server-cert.pem
- 로깅 서버의 공개 키입니다. -
server-key.pem
- 로깅 서버의 개인 키입니다.
-
로깅 클라이언트에서 다음 인증서는
/etc/pki/ca-trust/source/anchors/
디렉터리에 있으며update-ca-trust
를 사용하여 시스템 구성을 업데이트합니다.-
ca-cert.pem
- 로깅 서버 및 클라이언트에서 키와 인증서를 확인할 수 있는 CA 인증서입니다. -
client-cert.pem
- 클라이언트의 공개 키 -
client-key.pem
- 클라이언트의 개인 키 - 서버가 RHEL 9.2 이상을 실행하고 FIPS 모드가 활성화된 경우 클라이언트는 확장 마스터 시크릿(Extended Master Secret) 확장을 지원하거나 TLS 1.3을 사용해야 합니다. TLS 1.2 연결이 없는 경우 실패합니다. 자세한 내용은 TLS 확장 "Extended Master Secret" enforced Knowledgebase 문서를 참조하십시오.
-
절차
클라이언트 시스템에서 암호화된 로그를 수신하도록 서버를 구성합니다.
-
/etc/ECDHE.d/ 디렉토리에
새 파일을 만듭니다(예:securelogser.conf
). 통신을 암호화하려면 구성 파일에 서버의 인증서 파일 경로, 선택한 인증 방법, TLS 암호화를 지원하는 스트림 드라이버가 포함되어야 합니다.
/etc/ECDHE.d/securelogser.conf 파일에 다음 행을 추가합니다.
# Set certificate files global( DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem" DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/server-cert.pem" DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/server-key.pem" ) # TCP listener module( load="imtcp" PermittedPeer=["client1.example.com", "client2.example.com"] StreamDriver.AuthMode="x509/name" StreamDriver.Mode="1" StreamDriver.Name="ossl" ) # Start up listener at port 514 input( type="imtcp" port="514" )
참고GnuTLS 드라이버를 선호하는 경우
StreamDriver.Name="gtls"
구성 옵션을 사용합니다.x509/name
보다 덜 엄격한 인증 모드에 대한 자세한 내용은rsyslog-doc
패키지로 설치된 문서를 참조하십시오.선택 사항: RHEL 9.4에서 제공되는 Rsyslog 버전 8.2310에서 연결 구성을 사용자 지정할 수 있습니다. 이렇게 하려면
입력
섹션을 다음으로 바꿉니다.input( type="imtcp" Port="50515" StreamDriver.Name="<driver>" streamdriver.CAFile="/etc/rsyslog.d/<ca1>.pem" streamdriver.CertFile="/etc/rsyslog.d/<server1-cert>.pem" streamdriver.KeyFile="/etc/rsyslog.d/<server1-key>.pem" )
-
사용하려는
드라이버에 따라 <driver
>를ossl
또는gtls
로 바꿉니다. -
<
ca1
>을 CA 인증서로, <server1-cert
>를 인증서로, <server1-key
>를 사용자 지정 연결 키로 바꿉니다.
-
사용하려는
-
/etc/ECDHE.d/securelogser.conf
파일에 변경 사항을 저장합니다. /etc/ECDHE.conf 파일 및 /etc/ECDHE.
d/ 디렉토리에 있는 모든 파일의 구문을 확인합니다.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.
로깅 서버에서
rsyslog
서비스가 실행 중이고 활성화되어 있는지 확인합니다.# systemctl status rsyslog
rsyslog
서비스를 다시 시작하십시오.# systemctl restart rsyslog
선택 사항: Rsyslog가 활성화되지 않은 경우 재부팅 후
rsyslog
서비스가 자동으로 시작되는지 확인하십시오.# systemctl enable rsyslog
-
암호화된 로그를 서버로 전송하도록 클라이언트를 구성합니다.
-
클라이언트 시스템에서
/etc/ECDHE.d/
디렉토리에 (예:securelogcli.conf
) 새 파일을 만듭니다. /etc/ECDHE.d/securelogcli.conf 파일에 다음 행을 추가합니다.
# Set certificate files global( DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem" DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/client-cert.pem" DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/client-key.pem" ) # Set up the action for all messages *.* action( type="omfwd" StreamDriver="ossl" StreamDriverMode="1" StreamDriverPermittedPeers="server.example.com" StreamDriverAuthMode="x509/name" target="server.example.com" port="514" protocol="tcp" )
참고GnuTLS 드라이버를 선호하는 경우
StreamDriver.Name="gtls"
구성 옵션을 사용합니다.선택 사항: RHEL 9.4에서 제공되는 Rsyslog 버전 8.2310에서 연결 구성을 사용자 지정할 수 있습니다. 이렇게 하려면
action
섹션을 다음으로 바꿉니다.local1.* action( type="omfwd" StreamDriver="<driver>" StreamDriverMode="1" StreamDriverAuthMode="x509/certvalid" streamDriver.CAFile="/etc/rsyslog.d/<ca1>.pem" streamDriver.CertFile="/etc/rsyslog.d/<client1-cert>.pem" streamDriver.KeyFile="/etc/rsyslog.d/<client1-key>.pem" target="server.example.com" port="514" protocol="tcp" )
-
사용하려는
드라이버에 따라 <driver
>를ossl
또는gtls
로 바꿉니다. -
<
ca1
>을 CA 인증서로, <client1-cert
>를 인증서로, <client1-key
>를 사용자 지정 연결의 키로 바꿉니다.
-
사용하려는
-
/etc/rsyslog.d/securelogcli.conf
파일에 변경 사항을 저장합니다. /etc/rsyslog.conf
파일 및 기타 파일의 구문을/etc/rsyslog.d/
디렉터리에 확인합니다.# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.
로깅 서버에서
rsyslog
서비스가 실행 중이고 활성화되어 있는지 확인합니다.# systemctl status rsyslog
rsyslog
서비스를 다시 시작하십시오.# systemctl restart rsyslog
선택 사항: Rsyslog가 활성화되지 않은 경우 재부팅 후
rsyslog
서비스가 자동으로 시작되는지 확인하십시오.# systemctl enable rsyslog
-
클라이언트 시스템에서
검증
클라이언트 시스템이 서버에 메시지를 전송하는지 확인하려면 다음 단계를 따르십시오.
클라이언트 시스템에서 테스트 메시지를 보냅니다.
# logger test
서버 시스템에서
/var/log/ECDHE
로그를 확인합니다. 예를 들면 다음과 같습니다.# cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: test
여기서
<hostname
>은 클라이언트 시스템의 호스트 이름입니다. 로그에 logger 명령을 입력한 사용자의 사용자 이름이 포함되어 있습니다(이 경우root
).
추가 리소스
-
certtool(1)
,openssl(1)
,update-ca-trust(8)
,rsyslogd(8)
,rsyslog.conf(5)
매뉴얼 페이지. -
/usr/share/doc/ECDHE/html/index.html에서
.rsyslog-doc
패키지로 설치된 문서입니다 - TLS에서 로깅 시스템 역할 사용.