15.3. TLS에서 로깅 RHEL 시스템 역할 사용
TLS(Transport Layer Security)는 컴퓨터 네트워크를 통해 보안 통신을 허용하도록 설계된 암호화 프로토콜입니다.
로깅
RHEL 시스템 역할을 사용하여 하나 이상의 클라이언트가 systemd-journal
서비스에서 로그를 가져와서 TLS를 사용하는 동안 원격 서버로 전송하는 로그 메시지의 보안 전송을 구성할 수 있습니다.
일반적으로 원격 로깅 솔루션에서 로그를 전송하기 위한 TLS는 신뢰할 수 없는 또는 인터넷과 같은 공용 네트워크를 통해 중요한 데이터를 전송할 때 사용됩니다. 또한 TLS에서 인증서를 사용하여 클라이언트가 로그를 정확하고 신뢰할 수 있는 서버로 전달하도록 할 수 있습니다. 이렇게 하면 "man-in-the-middle"와 같은 공격을 방지할 수 있습니다.
15.3.1. TLS를 사용하여 클라이언트 로깅 구성
로깅
RHEL 시스템 역할을 사용하여 RHEL 클라이언트에 대한 로깅을 구성하고 TLS 암호화를 사용하여 원격 로깅 시스템으로 로그를 전송할 수 있습니다.
이 절차에서는 개인 키와 인증서를 생성합니다. 다음으로 Ansible 인벤토리의 clients 그룹에 있는 모든 호스트에 TLS를 구성합니다. TLS 프로토콜은 네트워크를 통해 로그의 보안 전송을 위해 메시지 전송을 암호화합니다.
인증서를 생성하기 위해 플레이북에서 인증서
RHEL 시스템 역할을 호출할 필요가 없습니다. 로깅
RHEL 시스템 역할은 logging_certificates
변수가 설정된 경우 자동으로 호출합니다.
CA에서 생성된 인증서에 서명하려면 관리형 노드를 IdM 도메인에 등록해야 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 관리형 노드는 IdM 도메인에 등록됩니다.
- 관리 노드에서 로깅 서버를 구성하려는 로깅 서버가 RHEL 9.2 이상을 실행하고 FIPS 모드가 활성화된 경우 클라이언트는 확장 마스터 시크릿(Extended Master Secret) 확장을 지원하거나 TLS 1.3을 사용해야 합니다. TLS 1.2 연결이 없는 경우 실패합니다. 자세한 내용은 TLS 확장 "Extended Master Secret" enforced Knowledgebase 문서를 참조하십시오.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying files input and forwards output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: files input_log_path: /var/log/containers/*.log logging_outputs: - name: output_name type: forwards target: your_target_host tcp_port: 514 tls: true pki_authmode: x509/name permitted_server: 'server.example.com' logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
예제 플레이북에 지정된 설정은 다음과 같습니다.
logging_certificates
-
이 매개변수의 값은 인증서 RHEL 시스템 역할의
certificate
_requests logging_pki_files
이 매개변수를 사용하여 로깅에서 사용하는 경로 및 기타 설정을 구성하여 로깅에서 사용하는 CA, 인증서 및 TLS에 사용되는 키 파일을 찾습니다.
ca_cert_src
,ca_cert
_src ,cert
,cert_src
, private_key ,
,private_key
_srctls
.참고logging_certificates
를 사용하여 관리 노드에서 파일을 생성하는 경우logging_certificates
에서 생성되지 않은 파일을 복사하는 데 사용되는ca_cert_src
,cert_src
및private_key_src
를 사용하지 마십시오.ca_cert
-
관리 노드의 CA 인증서 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/certs/ca.pem
이며 파일 이름은 사용자가 설정합니다. cert
-
관리 노드의 인증서 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/certs/server-cert.pem
이며 파일 이름은 사용자가 설정합니다. private_key
-
관리 노드의 개인 키 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/private/server-key.pem
이며 파일 이름은 사용자가 설정합니다. ca_cert_src
-
ca_cert
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 CA 인증서 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. cert_src
-
인증서에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 인증서 파일의 경로를
나타냅니다
.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. private_key_src
-
private_key
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드에서 개인 키 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. tls
-
이 매개변수를
true
로 설정하면 네트워크를 통한 로그 전송이 안전합니다. 보안 래퍼가 필요하지 않은 경우tls: false
를 설정할 수 있습니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 -
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
file -
/usr/share/doc/rhel-system-roles/certificate/
directory - RHEL 시스템 역할을 사용하여 인증서 요청
-
rsyslog.conf(5)
및syslog Cryostat
매뉴얼 페이지
15.3.2. TLS를 사용하여 서버 로깅 구성
로깅
RHEL 시스템 역할을 사용하여 RHEL 서버에서 로깅을 구성하고 TLS 암호화를 사용하여 원격 로깅 시스템에서 로그를 수신하도록 설정할 수 있습니다.
이 절차에서는 개인 키와 인증서를 생성합니다. 다음으로 Ansible 인벤토리의 서버 그룹에 있는 모든 호스트에 TLS를 구성합니다.
인증서를 생성하기 위해 플레이북에서 인증서
RHEL 시스템 역할을 호출할 필요가 없습니다. 로깅
RHEL 시스템 역할은 자동으로 호출합니다.
CA에서 생성된 인증서에 서명하려면 관리형 노드를 IdM 도메인에 등록해야 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 관리형 노드는 IdM 도메인에 등록됩니다.
- 관리 노드에서 로깅 서버를 구성하려는 로깅 서버가 RHEL 9.2 이상을 실행하고 FIPS 모드가 활성화된 경우 클라이언트는 확장 마스터 시크릿(Extended Master Secret) 확장을 지원하거나 TLS 1.3을 사용해야 합니다. TLS 1.2 연결이 없는 경우 실패합니다. 자세한 내용은 TLS 확장 "Extended Master Secret" enforced Knowledgebase 문서를 참조하십시오.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: remote tcp_ports: 514 tls: true permitted_clients: ['clients.example.com'] logging_outputs: - name: output_name type: remote_files remote_log_path: /var/log/remote/%FROMHOST%/%PROGRAMNAME:::secpath-replace%.log async_writing: true client_count: 20 io_buffer_size: 8192 logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
예제 플레이북에 지정된 설정은 다음과 같습니다.
logging_certificates
-
이 매개변수의 값은 인증서 RHEL 시스템 역할의
certificate
_requests logging_pki_files
이 매개변수를 사용하여 로깅에서 사용하는 경로 및 기타 설정을 구성하여 로깅에서 사용하는 CA, 인증서 및 TLS에 사용되는 키 파일을 찾습니다.
ca_cert_src
,ca_cert
_src ,cert
,cert_src
, private_key ,
,private_key
_srctls
.참고logging_certificates
를 사용하여 관리 노드에서 파일을 생성하는 경우logging_certificates
에서 생성되지 않은 파일을 복사하는 데 사용되는ca_cert_src
,cert_src
및private_key_src
를 사용하지 마십시오.ca_cert
-
관리 노드의 CA 인증서 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/certs/ca.pem
이며 파일 이름은 사용자가 설정합니다. cert
-
관리 노드의 인증서 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/certs/server-cert.pem
이며 파일 이름은 사용자가 설정합니다. private_key
-
관리 노드의 개인 키 파일의 경로를 나타냅니다. 기본 경로는
/etc/pki/tls/private/server-key.pem
이며 파일 이름은 사용자가 설정합니다. ca_cert_src
-
ca_cert
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 CA 인증서 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. cert_src
-
인증서에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 인증서 파일의 경로를
나타냅니다
.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. private_key_src
-
private_key
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드에서 개인 키 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. tls
-
이 매개변수를
true
로 설정하면 네트워크를 통한 로그 전송이 안전합니다. 보안 래퍼가 필요하지 않은 경우tls: false
를 설정할 수 있습니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 - RHEL 시스템 역할을 사용하여 인증서 요청
-
rsyslog.conf(5)
및syslog Cryostat
매뉴얼 페이지