はじめに
この実験では、Linux で seccomp フィルターが適用されているかどうかを確認する方法を学びます。seccomp は、プロセスが実行できるシステムコールを制限するセキュリティ機能です。
seccomp の状態を検証する 3 つの方法を探索します。具体的には、/proc/self/status ファイルを調べてプロセスの seccomp 状態を確認する方法、dmesg を使用してカーネルメッセージを調べて seccomp 関連のイベントを確認する方法、および /sys/kernel/security ディレクトリを調べて seccomp の設定情報を確認する方法です。これらの手順により、Linux 環境で seccomp の適用を理解して検証するための実践的なスキルを身につけることができます。
cat /proc/self/status で seccomp の状態を確認する
このステップでは、Linux でプロセスの seccomp 状態を確認する方法を探索します。seccomp (Secure Computing) は、プロセスが実行できるシステムコールを制限するセキュリティ機能です。これにより、セキュリティ脆弱性の影響を軽減することができます。
/proc/self/status ファイルを調べることで、現在のプロセスの seccomp 状態を確認することができます。このファイルには、プロセスに関する様々な状態情報が含まれています。
ターミナルが開いていない場合は、開きましょう。デスクトップの左側にある Xfce Terminal アイコンをクリックすることで、ターミナルを開くことができます。
次に、以下のコマンドを入力して Enter キーを押します。
cat /proc/self/status
このコマンドは、/proc/self/status ファイルの内容を表示します。出力をスクロールして、Seccomp: で始まる行を探します。
以下のような出力が表示されるはずです。
Name: zsh
Umask: 0002
State: R (running)
Tgid: ...
Ngid: 0
Pid: ...
PPid: ...
TracerPid: 0
Uid: ...
Gid: ...
FDSize: 64
Groups: ...
NStgid: ...
NSpid: ...
NSpgid: ...
NSsid: ...
VmPeak: ... kB
VmSize: ... kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: ... kB
VmRSS: ... kB
RssAnon: ... kB
RssFile: ... kB
RssShmem: ... kB
VmData: ... kB
VmStk: ... kB
VmExe: ... kB
VmLib: ... kB
VmPTE: ... kB
VmSwap: 0 kB
HugetlbPages: 0 kB
CoreDumpFilter: 00000000
Threads: 1
SigQ: .../...
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
voluntary_ctxt_switches: ...
nonvoluntary_ctxt_switches: ...
Seccomp: 0
Seccomp: の行は seccomp の状態を示しています。値が 0 の場合は、このプロセスで seccomp が有効になっていないことを意味します。他の可能な値は、異なる seccomp モードを示しています。
/proc/self/status の出力を理解することは、Linux でプロセス情報を調査するための基本的なスキルです。
Continue をクリックして次のステップに進みましょう。
dmesg で seccomp を確認する
このステップでは、dmesg コマンドを使用して seccomp に関連するカーネルメッセージを確認する方法を学びます。dmesg は、カーネルのリングバッファメッセージを表示するコマンドです。これらのメッセージには、ハードウェア、デバイスドライバ、および seccomp アクションのようなセキュリティ関連のイベントを含む、その他のカーネルレベルのイベントに関する情報が含まれています。
seccomp がアクティブでシステムコールをブロックすると、カーネルはしばしばリングバッファにメッセージを記録します。dmesg を使用してこれらのメッセージを表示し、seccomp に関連するメッセージをフィルタリングすることができます。
ターミナルが開いていない場合は、開きましょう。
次に、以下のコマンドを入力して Enter キーを押します。
dmesg | grep seccomp
このコマンドを分解してみましょう。
dmesg: このコマンドはカーネルメッセージを表示します。|: これはパイプです。左側のコマンド (dmesg) の出力を受け取り、右側のコマンド (grep) の入力として送ります。grep seccomp: このコマンドは、受け取った入力の中から "seccomp" という単語を含む行を検索します。
このコマンドの出力には、"seccomp" という用語を含むカーネルメッセージが表示されます。seccomp がいくつかのシステムプロセスやコンテナで使用されている典型的な環境では、以下のような出力が表示されることがあります。
[ ... ] audit: type=1326 audit(...): auid=... uid=... gid=... ses=... subj=unconfined seccomp=0 pid=... comm="..." exe="..." sig=0 arch=c000003e syscall=... compat=0 ip=... code=0x...
[ ... ] audit: type=1326 audit(...): auid=... uid=... gid=... ses=... subj=unconfined seccomp=2 pid=... comm="..." exe="..." sig=0 arch=c000003e syscall=... compat=0 ip=... code=0x...
これらのメッセージは、カーネルの監査システムが seccomp に関連するイベントを記録していることを示しています。監査メッセージの seccomp= フィールドは、イベント発生時のプロセスの seccomp モードを示しています。
出力が表示されない場合は、この特定の環境で最近 seccomp に関連するイベントが記録されていないことを意味する可能性があります。これも正常で、システムのアクティビティに依存します。
dmesg と grep を組み合わせて使用することは、カーネルメッセージをフィルタリングし、問題を診断したりセキュリティイベントを観察したりする強力な方法です。
Continue をクリックして次のステップに進みましょう。
/sys/kernel/security で seccomp を調査する
この最後のステップでは、seccomp を含む様々なカーネルセキュリティモジュールへのインターフェースを提供する /sys/kernel/security ディレクトリを探索します。このディレクトリを使用すると、カーネルのセキュリティ関連の側面を調査し、場合によっては設定することができます。
ターミナルが開いていない場合は、開きましょう。
まず、/sys/kernel/security ディレクトリに移動しましょう。これには cd コマンドを使用できます。
cd /sys/kernel/security
/sys/kernel/security ディレクトリに移動したので、ls コマンドを使用してその内容を表示しましょう。
ls
様々なセキュリティモジュールに関連するディレクトリとファイルのリストが表示されるはずです。seccomp に関連するディレクトリまたはファイルを探しましょう。出力は以下のようになることがあります(正確な内容はシステムによって異なります)。
apparmor cap device_cgroup lockdown lsm selinux seccomp smack tomoyo
seccomp という名前のディレクトリが表示されるはずです。このディレクトリには、カーネルレベルでの seccomp の設定と状態に関する情報を提供するファイルが含まれています。
seccomp ディレクトリに移動しましょう。
cd seccomp
次に、seccomp ディレクトリの内容を表示しましょう。
ls
カーネルのバージョンと設定によっては、policy のようなファイルが表示されることがあります。これらのファイルは、システムにロードされているまたは利用可能な seccomp ポリシーに関するより詳細な情報を提供することができます。
たとえば、policy というファイルが存在する場合は、その内容を表示してみることができます(ファイル名は異なる場合があります)。
cat policy
cat policy の出力は、システム全体で seccomp ポリシーがアクティブかどうか、またはこのファイルが他の情報を提供しているかどうかによって異なります。多くの標準的な設定では、このファイルには直接人間が読めるポリシーの詳細が含まれていない場合がありますが、その存在は seccomp が認識されたセキュリティモジュールであることを示しています。
/sys ファイルシステム、特に /sys/kernel/security パスを探索することは、Linux カーネルで有効化されているセキュリティ機能とその設定を理解する重要な方法です。
これで、Linux 環境で seccomp の状態と関連情報を確認する 3 つの異なる方法を学びました。
Continue をクリックして、実験を完了しましょう。
まとめ
この実験では、Linux で seccomp フィルタが適用されているかどうかを確認する方法を学びました。3 つの方法を探索しました。プロセスの Seccomp: ステータスを確認するために /proc/self/status ファイルをチェックする方法、dmesg を使用してカーネルログ内の seccomp 関連のメッセージを検証する方法、および /sys/kernel/security ファイルシステムを通じて seccomp のステータスを調査する方法です。
これらの手順は、プロセスの seccomp ステータスを判断し、Linux カーネルが seccomp をどのように報告するかを理解するための実用的な方法を提供します。これは、セキュリティ分析とトラブルシューティングにおいて重要です。



