레코딩 세션
Red Hat Enterprise Linux 8의 세션 기록 솔루션 사용
초록
Red Hat 문서에 관한 피드백 제공
문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (등록 필요)
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 모음에서 생성 을 클릭합니다.
- Summary (요약) 필드에 설명 제목을 입력합니다.
- Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
1장. RHEL에서 세션 레코드 시작하기
1.1. RHEL의 세션 기록
Red Hat Enterprise Linux 8의 세션 기록 솔루션은 tlog
패키지를 기반으로 합니다. tlog
패키지와 관련 웹 콘솔 세션 플레이어를 사용하여 사용자 터미널 세션을 기록하고 재생할 수 있습니다. SSSD 서비스를 통해 사용자 또는 사용자 그룹별로 실행되도록 레코딩을 구성할 수 있습니다. 모든 터미널 입력 및 출력은 캡처되어 시스템 저널에 텍스트 기반 형식으로 저장됩니다.
원시 암호 및 기타 민감한 정보를 가로채지 않으려면 터미널 입력 기록은 기본적으로 비활성화되어 있습니다. 터미널 입력을 기록하면 입력한 모든 암호가 일반 텍스트로 캡처됩니다.
이 솔루션을 사용하여 보안에 민감한 시스템에서 사용자 세션을 감사하거나 보안 위반 시 중요한 분석의 일부로 기록된 세션을 검토할 수 있습니다. 관리자는 RHEL 8 시스템에서 로컬로 세션 레코딩을 구성할 수 있습니다. 웹 콘솔 인터페이스 또는 tlog-play
명령을 사용하여 터미널에서 기록된 세션을 검토할 수 있습니다.
1.2. 세션 레코딩의 구성 요소
세션 기록 솔루션에는 tlog
유틸리티, SSSD 서비스 및 웹 콘솔 내장 사용자 인터페이스의 세 가지 주요 구성 요소가 있습니다.
- tlog
-
tlog
유틸리티는 터미널 입력/출력(I/O) 기록 및 재생 프로그램입니다. 사용자 터미널과 사용자 쉘 사이에tlog-rec-session
툴을 삽입하고 JSON 메시지로 전달하는 모든 항목을 기록합니다. - SSSD
- SSSD(System Security Services Daemon) 서비스는 원격 디렉터리 및 인증 메커니즘에 대한 액세스를 관리하는 데몬 세트를 제공합니다. 세션 레코딩을 구성할 때 SSSD를 사용하여 레코드할 사용자 또는 사용자 그룹을 지정할 수 있습니다. 명령줄 인터페이스(CLI) 또는 RHEL 8 웹 콘솔 인터페이스에서 이러한 설정을 구성할 수 있습니다.
- RHEL 8 웹 콘솔 내장 인터페이스
- 세션 레코딩 페이지는 RHEL 8 웹 콘솔 인터페이스의 일부이며 이를 사용하여 기록된 세션을 관리할 수 있습니다.
기록된 세션에 액세스하려면 관리자 권한이 필요합니다.
1.3. 세션 기록의 제한 사항
이는 세션 기록 솔루션의 가장 주목할 만한 제한 사항입니다.
- 루트 사용자는 레코딩 프로세스를 우회할 수 있기 때문에 루트 사용자의 기록은 신뢰할 수 없습니다.
-
세션 레코딩은
GNOME 3
그래픽 세션에 터미널을 기록하지 않습니다. 그래픽 세션에 모든 터미널에 대한 단일 감사 세션 ID가 있고tlog
가 터미널을 구분할 수 없어 그래픽 세션에 터미널을 기록하는 것은 지원되지 않습니다. 세션 레코딩이 저널에 기록하도록 구성된 경우 기록된 사용자는 시스템
저널
또는/var/log/message 를 보는 결과를 기록하는 작업을 볼 수 있습니다
. 보기로 인해 화면에 출력되는 로그가 생성되므로 세션 레코드가 이 작업을 기록하므로 더 많은 레코드를 생성하여 플러드 출력 루프가 발생합니다.다음 명령을 사용하여 이 문제를 해결할 수 있습니다.
# journalctl -f | grep -v 'tlog-rec-session'
출력을 제한하도록 tlog를 구성할 수도 있습니다. 자세한 내용은
tlog-rec
또는tlog-rec-session
매뉴얼 페이지를 참조하십시오.원격 액세스 명령을 실행하는 사용자를 기록하려면 대상 호스트에서 해당 사용자에 대한 세션 레코딩을 구성해야 합니다. 예를 들어 다음 원격 액세스 명령을 기록하려면
클라이언트
호스트에서admin
사용자에 대한 세션 레코딩을 구성해야 합니다.ssh admin@client rm -f /some/file
-
저널이
기본적으로 RHEL 8에 저장되므로 모든 기록은 재부팅 시 손실됩니다. 레코딩을 내보내려면 기록된 세션을 파일로 내보내기를 참조하십시오.
2장. RHEL 웹 콘솔에 세션 레코드 배포
이 섹션에서는 Red Hat Enterprise Linux 웹 콘솔에 세션 레코드 솔루션을 배포하는 방법을 설명합니다.
세션 레코드 솔루션을 배포할 수 있으려면 다음 패키지가 설치되어 있어야 합니다.
-
tlog
- SSSD
-
cockpit-session-recording
2.1. tlog 설치
tlog
패키지를 설치합니다.
절차
다음 명령을 사용합니다.
# yum install tlog
2.2. cockpit-session- recording 설치
기본 웹 콘솔 패키지는 기본적으로 Red Hat Enterprise Linux 8의 일부입니다. 세션 기록 솔루션을 사용하려면 cockpit-session-
recording 패키지를 설치하고 시스템에서 웹 콘솔을 시작하거나 활성화해야 합니다.
절차
cockpit-session- recording을
설치합니다.# yum install cockpit-session-recording
시스템에서 웹 콘솔을 시작하거나 활성화합니다.
# systemctl start cockpit.socket # systemctl enable cockpit.socket
또는
# systemctl enable cockpit.socket --now
2.3. CLI에서 SSSD를 사용하여 사용자 및 그룹의 세션 레코딩 활성화
인증에 SSSD를 사용하는 경우 명령줄에서 사용자 및 그룹에 대한 세션 레코딩을 구성할 수 있습니다.
절차
sssd-session- recording.conf
구성 파일을 엽니다.# vi /etc/sssd/conf.d/sssd-session-recording.conf
참고웹 콘솔 인터페이스에서 구성 페이지를 열면
sssd-session- recordsing.conf
파일이 자동으로 생성됩니다.세션 레코딩 범위를 지정하려면 scope 옵션에 대해 다음 값 중 하나를 입력합니다.
-
세션
을 기록하지 않습니다. -
일부는
지정된 세션만 기록합니다. -
모든
세션을 기록합니다.
-
-
선택 사항: 범위를
일부
설정으로 설정하면 사용자 및 그룹 이름이 쉼표로 구분된 목록에 추가됩니다. SSSD 프로필을 활성화하려면 다음 명령을 실행합니다.
# authselect select sssd with-files-domain
예 2.1. SSSD 구성
다음 예제 사용자 example1
및 example2
및 그룹 예제
에는 세션 레코딩이 활성화되어 있습니다.
[session_recording] scope = some users = example1, example2 groups = examples
2.4. 웹 UI에서 SSSD를 사용하여 사용자 및 그룹의 세션 레코딩 활성화
인증에 SSSD를 사용하는 경우 RHEL 8 웹 콘솔의 사용자 및 그룹에 대해 세션 레코딩을 구성할 수 있습니다.
절차
-
localhost:9090
을 입력하거나 IP 주소 <IP_ADDRESS
>:9090을 브라우저에 입력하여 RHEL 8 웹 콘솔에 로컬로 연결합니다. RHEL 8 웹 콘솔에 로그인합니다.
중요사용자는 기록된 세션을 볼 수 있는 관리자 권한이 있어야 합니다.
- 왼쪽 메뉴에 있는 세션 레코드 페이지로 이동합니다.
오른쪽 상단 모서리에서 톱니바를 클릭합니다.
SSSD 구성 테이블에 매개 변수를 설정합니다. 사용자 및 그룹 목록을 쉼표로 구분합니다.
예 2.2. SSSD를 사용하여 기록된 사용자 설정
2.5. SSSD가 없는 사용자의 세션 레코딩 활성화
Red Hat은 명령줄 인터페이스 또는 RHEL 8 웹 콘솔에서 직접 SSSD를 사용하여 기록된 사용자를 구성하는 것이 좋습니다.
SSSD가 없으면 정책에 대한 중앙 집중식 관리가 없습니다. 관리자는 모든 시스템에서 각 사용자의 쉘을 개별적으로 설정해야 하므로 여러 시스템에서 확장하기가 어렵습니다. exclude_users
및 exclude_groups
와 같은 그룹 기반 구성 또는 제외도 사용할 수 없습니다. 또한 Cockpit 세션 레코딩과 같은 툴은 SSSD에서 작동하도록 설계되었으며 작동하지 않을 수 있습니다.
SSSD 없이 세션 레코딩을 활성화하려면 기록하려는 사용자의 쉘을
/usr/bin/tlog-rec-session
으로 변경합니다.# sudo usermod -s /usr/bin/tlog-rec-session <user_name>
시스템은
tlog-rec-session.conf
파일의 구성을 사용하여 사용자의 작업 쉘을 결정합니다.
2.6. 기록된 세션을 파일로 내보내기
기록된 세션과 해당 로그를 내보내고 복사할 수 있습니다.
다음 절차에서는 로컬 시스템에서 기록된 세션을 내보내는 방법을 보여줍니다.
사전 요구 사항
systemd-journal-remote
패키지를 설치합니다.# yum install systemd-journal-remote
절차
'/tmp/dir과 같이 내보낸 레코딩 세션을 저장할 디렉토리를 만듭니다.
# mkdir /tmp/dir
journalctl -o export
명령을 실행하여 tlog 기록과 관련된 시스템 저널 항목을 내보냅니다.# journalctl _COMM=tlog-rec _COMM=tlog-rec-sessio -o export | /usr/lib/systemd/systemd-journal-remote -o /tmp/dir/example.journal -
참고comM
=tlog-rec-sessio
COMM 이름은 15 문자 제한으로 인해 단축됩니다.
3장. 기록된 세션 다시 플레이
기록된 세션을 재생하는 방법에는 두 가지가 있습니다.
-
tlog-play
툴 - RHEL 8 웹 콘솔도 Cockpit 라고도 합니다.
3.1. tlog-play
로 재생
tlog-play
도구를 사용하여 터미널에서 세션 레코딩을 재생할 수 있습니다. tlog-play
도구는 tlog-rec
도구로 기록 된 터미널 입력 및 출력을 위한 재생 프로그램입니다. 이 명령은 사용 중인 터미널의 기록을 재현하지만 크기를 변경할 수는 없습니다. 이러한 이유로 재생 터미널은 적절한 재생을 위해 기록된 터미널 크기와 일치해야 합니다. tlog-play
툴은 /etc/tlog/tlog-play.conf
구성 파일에서 해당 매개변수를 로드합니다. tlog-play
도움말 페이지에 설명된 명령행 옵션을 사용하여 이러한 매개변수를 재정의할 수 있습니다.
3.2. 웹 콘솔로 재생
RHEL 8 웹 콘솔에는 기록된 세션을 관리하기 위한 전체 인터페이스가 있습니다. 세션 레코드 페이지에서 직접 검토할 세션을 선택할 수 있습니다.
예 3.1. 기록된 세션 목록 예

웹 콘솔 플레이어는 창 크기 조정을 지원합니다.
3.3. tlog-play
로 기록된 세션 재생
내보낸 로그 파일 또는 Systemd journal에서 세션 레코딩을 재생할 수 있습니다.
파일에서 다시 실행
기록 중 및 기록 후 파일에서 세션을 다시 재생할 수 있습니다.
# tlog-play --reader=file --file-path=tlog.log
journal에서 돌아가기
일반적으로 -M
또는 --journal-match
,-S
또는 --journal-since
, -U
또는 --journal-until
옵션과 함께 journal 일치 및 타임 스탬프 제한을 사용하여 재생을 위해 저널 로그 항목을 선택할 수 있습니다.
그러나 실제로는 journal에서의 재생은 일반적으로 TLOG_REC
journal 필드와 일치하는 단일 일치로 수행됩니다. TLOG_REC
필드에는 기록된 JSON 데이터의 rec
필드 사본이 포함되어 있으며, 이는 기록의 호스트 고유 ID입니다.
TLOG_REC
필드 값에서 직접 또는 JSON rec
필드의 MESSAGE
필드에서 ID를 가져올 수 있습니다. 두 필드 모두 tlog-rec-session
툴에서 발생하는 로그 메시지의 일부입니다.
절차
- 다음과 같이 전체 녹화를 재생할 수 있습니다:
# tlog-play -r journal -M TLOG_REC=<your-unique-host-id>
tlog-play
매뉴얼 페이지에서 추가 지침 및 문서를 찾을 수 있습니다.
4장. RHEL 시스템 역할을 사용하여 세션 레코딩 시스템 구성
tlog
RHEL 시스템 역할을 사용하여 관리 노드의 터미널 세션 활동을 자동으로 기록하고 모니터링합니다. SSSD
서비스를 통해 사용자 또는 사용자 그룹별로 레코딩을 구성할 수 있습니다.
tlog RHEL 시스템 역할의 세션 레코딩 솔루션은 다음 구성 요소로 구성됩니다.
-
tlog
유틸리티 - SSSD(System Security Services Daemon)
- 선택 사항: 웹 콘솔 인터페이스
4.1. tlog
RHEL 시스템 역할을 사용하여 개별 사용자의 세션 레코딩 구성
세션 레코딩 데이터를 systemd
저널에 기록하도록 RHEL 시스템을 구성하기 위해 Ansible 플레이북을 준비하고 적용합니다.
이를 통해 세션 중에 터미널 출력 및 특정 사용자의 입력을, 사용자가 콘솔에 로그인하거나 SSH를 통해 입력할 수 있습니다.
이 플레이북은 사용자의 로그인 쉘 역할을 하는 터미널 세션 I/O 로깅 프로그램인 tlog-rec-session
을 설치합니다. 이 역할은 SSSD 구성 드롭 파일을 생성하고 이 파일은 로그인 쉘을 사용해야 하는 사용자와 그룹을 정의합니다. 또한 cockpit
패키지가 시스템에 설치된 경우 플레이북은 웹 콘솔 인터페이스에서 레코딩을 보고 재생할 수 있는 Cockpit
모듈인 cockpit-session-recording
패키지도 설치합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploy session recording hosts: managed-node-01.example.com tasks: - name: Enable session recording for specific users ansible.builtin.include_role: name: rhel-system-roles.tlog vars: tlog_scope_sssd: some tlog_users_sssd: - <recorded_user>
tlog_scope_sssd: <value>
-
some
값은 일부 또는none
이 아닌 특정 사용자 및 그룹만 기록하려는 값을 지정합니다. tlog_users_sssd:: <list_of_users>
- 세션을 기록할 사용자의 YAML 목록입니다. 역할이 없는 경우 사용자를 추가하지 않습니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
SSSD 드롭인 파일의 콘텐츠를 확인합니다.
# cd /etc/sssd/conf.d/sssd-session-recording.conf
파일에 플레이북에서 설정한 매개변수가 포함되어 있음을 확인할 수 있습니다.
- 세션이 기록될 사용자로 로그인하여 일부 작업을 수행하고 로그아웃합니다.
root
사용자로 다음을 수행합니다.기록된 세션 목록을 표시합니다.
# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...
다음 단계에서
rec
(기록 ID) 필드 값이 필요합니다._COMM
필드의 값은 15자 제한으로 단축됩니다.세션을 다시 재생합니다.
# tlog-play -r journal -M TLOG_REC=<recording_id>
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.tlog/README.md
파일 -
/usr/share/doc/rhel-system-roles/tlog/
directory
4.2. tlog
RHEL 시스템 역할을 사용하여 세션 기록에서 특정 사용자 및 그룹 제외
tlog
RHEL 시스템 역할의 tlog_exclude_users_sssd
및 tlog_exclude_groups_sssd
역할 변수를 사용하여 사용자 또는 그룹이 systemd
저널에 기록되고 로그인되는 것을 제외할 수 있습니다.
이 플레이북은 사용자의 로그인 쉘 역할을 하는 터미널 세션 I/O 로깅 프로그램인 tlog-rec-session
을 설치합니다. 이 역할은 SSSD 구성 드롭 파일을 생성하고 이 파일은 로그인 쉘을 사용해야 하는 사용자와 그룹을 정의합니다. 또한 cockpit
패키지가 시스템에 설치된 경우 플레이북은 웹 콘솔 인터페이스에서 레코딩을 보고 재생할 수 있는 Cockpit
모듈인 cockpit-session-recording
패키지도 설치합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploy session recording excluding users and groups hosts: managed-node-01.example.com tasks: - name: Exclude users and groups ansible.builtin.include_role: name: rhel-system-roles.tlog vars: tlog_scope_sssd: all tlog_exclude_users_sssd: - jeff - james tlog_exclude_groups_sssd: - admins
tlog_scope_sssd: <value>
-
all 값은
all
사용자가 모든 사용자와 그룹을 기록할 것을 지정합니다. tlog_exclude_users_sssd: <user_list>
- 세션 기록에서 제외하려는 사용자 이름 YAML 목록입니다.
tlog_exclude_groups_sssd: <group_list>
- 세션 기록에서 제외할 그룹의 YAML 목록입니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
SSSD 드롭인 파일의 콘텐츠를 확인합니다.
# cat /etc/sssd/conf.d/sssd-session-recording.conf
파일에 플레이북에서 설정한 매개변수가 포함되어 있음을 확인할 수 있습니다.
- 세션이 기록될 사용자로 로그인하여 일부 작업을 수행하고 로그아웃합니다.
root
사용자로 다음을 수행합니다.기록된 세션 목록을 표시합니다.
# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...
다음 단계에서
rec
(기록 ID) 필드 값이 필요합니다._COMM
필드의 값은 15자 제한으로 단축됩니다.세션을 다시 재생합니다.
# tlog-play -r journal -M TLOG_REC=<recording_id>
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.tlog/README.md
파일 -
/usr/share/doc/rhel-system-roles/tlog/
directory