ルート権限なしでLinuxログを読む方法(権限ガイド)

ルート権限なしでLinuxログを読む方法(権限ガイド)

SOC Prime Team
SOC Prime Team linkedin icon フォローする

ほとんどのディストリビューションでは、2つのグループメンバーシップでアナリストが必要とするほぼすべてをカバーしています:DebianとUbuntuの/var/log内のテキストログ用のadm、および完全なシステムジャーナル用のsystemd-journal。sudo usermod -aG adm,systemd-journal <user>でアカウントを追加し、新しいログインセッションを開始します。いくつかのログは、意図的にrootのみのアクセスに設定されています。特にRed Hatファミリーシステムの/var/log/secureや/var/log/messages、および/var/log/audit以下のすべてです。それらには、制限された範囲のsudoを使用し、rootシェルは使用しないでください。

ログを読むためにroot権限を与えるのは、次の監査や事件で発覚するような近道です。このガイドは最小権限の方法と、「グループに追加するだけ」が思ったよりも簡単でない罠について説明します。

無料で始める

誰が何を読むことができるか

LogDebian / UbuntuRHEL / Rocky / Alma
/var/log/auth.log / /var/log/securerootとadmrootのみ
/var/log/syslog / /var/log/messagesrootとadmrootのみ
Webサーバーログrootとadmrootのみ(httpdログディレクトリはロックされています)
システムジャーナル(journalctl)root、systemd-journal、admroot、systemd-journal、wheel
/var/log/audit/audit.logrootのみrootのみ

正確な所有権はディストリビューションとバージョンにより異なるため、実際に確認してください:

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

2つの詳細が重要です。-aは省略できません:これがないと、usermod -Gは ユーザーのグループを追加する代わりに置き換えます。そして、グループの変更は新しいセッションにのみ適用されます。テストする前にログアウトして再ログインするか、新しいログインシェルを開始してください。「グループを追加したのにまだ権限が拒否される」というのは、ほぼ間違いなく古いセッションの問題です。 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をアンロックしません。これらのファイルはそこでrootのみです。オプション2または3を使用してください。

オプション2: root専用のログに対する限定されたsudo

シェルではなく、特定のコマンドを許可します。visudo -fで/etc/sudoers.d/log-readersを作成します:

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

read-secure-logは、特定の1つのことだけを行う小さなroot所有のスクリプトです(モード0755、rootが所有):

#!/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*にマッチします。引数なしのラッパーにはそのような穴はありません。

sudoを通じて journalctl を許可しないでください。 それはページャー(less)を開き、less内で!shをするとrootシェルが開きます。ジャーナルへのアクセスには、代わりにsystemd-journalグループを使用してください。

オプション3: ローテーションを生き延びるグループ所有権

ACLを直接設定することは、次のローテーションまで機能します:sudo setfacl -m g:logreaders:r /var/log/secure。その後、ファイルが再作成され、ACLは消失します。アクセスを維持するには、最初から正しいグループで新しいファイルを作成するように設定します。これが行われる2つの場所:

  • logrotate、ファイルのスタンザ内:create 0640 root logreaders
  • rsyslog、それを書き込むアクションに対して:action(type=”omfile” file=”/var/log/secure” fileGroup=”logreaders” fileCreateMode=”0640″)

非プロダクションボックスでlogrotate -fを使用してテストしてから展開します。

コンテナ

コンテナログを読むためにアナリストをdockerグループに追加しないでください。dockerのメンバーシップは、そのホスト上で事実上rootです。コンテナログはログコレクターまたはSIEMから取得するか、プラットフォームチームに読み取り専用のアクセスを依頼してください。

うまくいかないとき

症状考えられる原因Fix
ユーザーモッド後も許可が拒否される古いセッションログアウトして再ログインする
ユーザーが他のグループを失った-aなしでusermod -G再追加する;常に-aGを使用する
journalctlがユーザー自身のログしか表示しないsystemd-journal(またはadm / wheel)にないグループを追加する;新しいセッション
昨日はアクセスできたが、今日はできないログがローテーションした時にACLが失われたオプション3を使用する
admが/var/log/secureに役立たないRed Hatファミリーのファイルはrootのみオプション2または3を使用する
SOC PrimeのDetection as Codeプラットフォームに参加し ビジネスに最も関連性のある脅威に対する可視性を向上させましょう。開始して即座に価値をもたらすためには、今すぐSOC Primeの専門家とのミーティングを予約してください。