루트 없이 Linux 로그 읽기 (권한 가이드)

루트 없이 Linux 로그 읽기 (권한 가이드)

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

대부분의 배포판에서는 두 개의 그룹 멤버십이 분석가가 필요한 거의 모든 것을 포함합니다: Debian 및 Ubuntu에서 /var/log의 텍스트 로그를 위한 adm, 전체 시스템 저널을 위한 systemd-journal입니다. sudo usermod -aG adm,systemd-journal <user> 명령으로 계정을 추가하고 새로운 로그인 세션을 시작하세요. 몇 가지 로그는 기본적으로 루트 전용으로 남아 있으며, 특히 Red Hat 계열 시스템의 /var/log/secure 및 /var/log/messages와 /var/log/audit 아래의 모든 것이 해당됩니다. 이러한 경우, 루트 셸이 아닌 좁은 범위의 sudo를 사용하세요.

로그를 읽기 위해 루트를 부여하는 것은 다음 감사 또는 다음 사건에서 드러나는 지름길 유형입니다. 이 가이드는 최소 권한 방식과 ‘그냥 그룹에 추가하면 된다’고 생각하기 쉽게 함정이 되는 부분을 다룹니다.

무료로 시작하기

누가 무엇을 읽을 수 있는가

LogDebian / UbuntuRHEL / Rocky / Alma
/var/log/auth.log / /var/log/secureroot 및 adm루트 전용
/var/log/syslog / /var/log/messagesroot 및 adm루트 전용
웹 서버 로그root 및 adm루트 전용 (httpd 로그 디렉터리가 잠겨 있습니다)
시스템 저널 (journalctl)root, systemd-journal, admroot, systemd-journal, wheel
/var/log/audit/audit.log루트 전용루트 전용

정확한 소유권은 배포판 및 버전에 따라 다르므로 실제로 확인하세요:

id
ls -l /var/log/auth.log /var/log/secure 2>/dev/null
getfacl /var/log/journal 2>/dev/null

옵션 1: 그룹 멤버십

sudo usermod -aG adm,systemd-journal analyst

두 가지 세부 사항이 중요합니다. -a는 선택 사항이 아닙니다: usermod -G를 사용하면 사용자의 그룹을 추가하는 대신 대체합니다. 그리고 그룹 변경은 새로운 세션에만 적용됩니다. 로그아웃하고 다시 로그인하거나 새 로그인 셸을 시작한 후 테스트하세요. ‘그룹을 추가했는데 여전히 권한이 거부됨’은 거의 항상 오래된 세션 때문입니다. replaces the user’s groups instead of adding to them. And group changes only apply to new sessions. Log out and back in, or start a fresh login shell, before testing. “I added the group and it still says permission denied” is almost always an old session.

Red Hat 계열 시스템에서는, adm은 /var/log/secure 또는 /var/log/messages를 해제하지 않습니다. 해당 파일들은 그곳에서 루트 전용입니다. 옵션 2 또는 3을 사용하세요.

옵션 2: 루트 전용 로그에 대한 좁은 sudo

쉘이 아닌 특정 명령을 부여합니다. visudo -f를 사용하여 /etc/sudoers.d/log-readers를 만드세요:

%logreaders ALL=(root) NOPASSWD: /usr/sbin/ausearch, /usr/local/bin/read-secure-log

read-secure-log는 정확히 한 가지 작업만 수행하는 작은 루트 소유 스크립트입니다 (모드 0755, 루트 소유):

#!/bin/sh
exec /usr/bin/zcat -f /var/log/secure /var/log/secure-*

왜 sudoers에서 cat /var/log/secure* 대신 래퍼인가요? sudoers 인수에서 *는 공백을 포함하여 모든 것을 일치시키기 때문입니다. cat /var/log/secure /etc/shadow는 cat /var/log/secure*와 일치합니다. 인수가 없는 래퍼는 그런 취약점이 없습니다.

부여하지 마세요 journalctl sudo를 통해. 이것은 페이저(less)를 열며 less 안의 !sh는 루트 셸을 제공합니다. 저널 액세스를 위해서는 대신 systemd-journal 그룹을 사용하세요.

옵션 3: 회전 후에도 유지되는 그룹 소유권

ACL을 직접 설정하면 다음 회전까지 작동합니다: sudo setfacl -m g:logreaders:r /var/log/secure. 그런 다음 파일이 다시 생성되면 ACL이 사라집니다. 접근을 유지하려면 두 파일을 생성하는 곳에서 처음부터 올바른 그룹으로 파일을 생성하도록 만드세요:

  • logrotate, 파일의 절 부분에: create 0640 root logreaders
  • rsyslog, 파일을 기록하는 작업에서: action(type=”omfile” file=”/var/log/secure” fileGroup=”logreaders” fileCreateMode=”0640″)

롤아웃하기 전에 비프로덕션 박스에서 logrotate -f로 테스트하세요.

컨테이너

컨테이너 로그를 읽기 위해서만 분석가들을 docker 그룹에 추가하지 마세요. docker의 멤버십은 해당 호스트에서 루트와 다름없습니다. 로그 수집기나 SIEM에서 컨테이너 로그를 가져오거나, 플랫폼 팀에 읽기 전용 액세스를 요청하세요.

문제가 발생했을 때

증상가능한 원인Fix
usermod 후 여전히 권한 거부오래된 세션로그아웃하고 다시 로그인
사용자가 다른 그룹을 잃음-a 없이 usermod -G그룹을 다시 추가함; 항상 -aG를 사용하세요
journalctl이 사용자 자신의 로그만 표시systemd-journal (또는 adm / wheel)에 없음그룹을 추가함; 새로운 세션
어제 작동하던 액세스가 오늘은 안 됨로그가 회전하면서 ACL 소실옵션 3 사용
adm이 /var/log/secure에 도움이 되지 않음Red Hat 계열의 파일은 루트 전용옵션 2 또는 3 사용
SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.