libseccompとは?セキュリティを強化するLinuxの仕組みをやさしく解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
libseccompとは?セキュリティを強化するLinuxの仕組みをやさしく解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


libseccompとは?

libseccompはLinuxのセキュリティを強化するためのライブラリです。libseccompはプロセスが実行できるシステムコールを事前に決めておくことで、万が一の不正な処理が行われても被害を小さくします。初心者にも分かるように、ここではたとえ話も交えつつ仕組みを解説します。

まず前提として、Linux上のアプリは普段は多くのシステムコールを呼び出して動作します。ブラックボックス化したまま動かすと危険になる場面が出てくるため、開発者は権限を絞ることが大切です。libseccompはそれを実現する道具の一つです。

どんな仕組みで動くの?

libseccompはSeccompと呼ばれる仕組みを使います。seccompはカーネルに対してアプリが使える機能を制限する仕組みです。libseccompはこの制限をコードとして扱えるよう、開発者がポリシーを記述し、アプリ起動時や実行時に適用します。

具体的には、ポリシーには許可するシステムコールと拒否・代替動作を決めるルールを並べます。アプリがそのルールに従って動作する限り通常どおり動作しますが、ルールに合致しない呼び出しがあればカーネルは拒否します。これにより、攻撃者が限られた手段だけでシステムを壊すのを難しくできます。

実務での利用例

よく使われる場面として、コンテナ化されたアプリケーションがあります。DockerやPodmanなどはデフォルトでセキュリティを高めるポリシーを組み込んでおり、libseccompを活用して不要なシステムコールをブロックします。その他にも仮想マシンではなくプロセスごとに権限を絞る場面で活躍します。

導入の手順

導入の基本は三つです。第一に現行のカーネルとlibseccompの互換性を確認すること。第二に実運用に近いポリシーを作成すること。第三にテストを十分に行い、必要に応じてポリシーを調整することです。ポリシーは最小権限の原則に従い、段階的に適用するのが安全です

注意点

古いカーネルや特定のAPIに対しては、ポリシーの適用範囲が制限される場合があります。また、誤って厳しすぎるポリシーを設定すると、正規の動作まで妨げることがあります。十分な検証と監視が欠かせません。

結論として、libseccompはLinux環境でのセキュリティを高める有力なツールです。適切に設計されたポリシーを用いれば、攻撃面を大幅に減らし、安定した運用を支えます。初心者はまず基礎を理解し、段階的に実装を進めると良いでしょう


libseccompの同意語

libseccomp
Linux上でSeccompの機能を利用するための公式(C/C++)ライブラリそのもの。システムコールのフィルタリングAPIを提供します。
libseccompライブラリ
libseccompという名称のライブラリ。プログラムからSeccompフィルタを作成・適用する機能を提供します。
Linux Seccomp ライブラリ
Seccomp機能をLinux環境で使うためのライブラリの別称。libseccompを指すことが多い表現です。
Seccompライブラリ
Seccomp機能を利用するためのライブラリ全般を指す呼び方。実装はlibseccompであることが多いです。
Seccomp API ラッパーライブラリ
Seccomp APIを簡便に使えるようにするラッパー機能を提供するライブラリを指す表現。
Linuxのシステムコールフィルタライブラリ
Linuxでシステムコールをフィルタリングする機能を提供するライブラリ、SeccompAPIを実装する基盤のこと。
Seccompフィルタリング用ライブラリ
Seccompのフィルター作成と適用を行うライブラリを指します。
セキュアコンピューティングモード用ライブラリ
Seccompの正式名称“Secure Computing Mode”に対応するライブラリで、システムコールの監視・制限を実現します。
seccomp API
Seccomp機能を操作する公開APIそのもの。libseccompはこのAPIを実装・提供します。
seccomp(英語表記
Linuxのセキュア・コンピューティング・モードを使うための英語名。プログラムはこのAPIを利用します。

libseccompの対義語・反対語

seccompなし
libseccompを使わず、システムコールのフィルタリングを行わない状態。全てのsyscallが制限なく通る可能性があります。
無制限システムコールアクセス
フィルタリングがないため、任意のシステムコールを実行できる状態。
直接syscall実行
libseccompを介さず、直接システムコールを呼ぶ実装・運用状態。フィルタに遮られません。
セキュリティ機構未適用
libseccompなどのセキュリティ機構が適用されていない状態。
セキュリティフィルタ欠如
システムコールを制限するフィルタ機能が欠如している状態。
全許可モード
全てのシステム操作・コールを許可する設定・状態。
seccomp未使用
seccompそのものを利用していない状態。
セキュリティポリシーなし
セキュリティポリシーが設定されていない無防備な状態。
フィルタリング無効
セキュリティフィルタが機能していない、無効な状態。
無防備モード
保護機構が働いておらず、外部からの影響を受けやすい状態。
libseccomp不使用状態
libseccompを使用していない状態を指す表現。
その他セキュリティ機構依存ゼロ
libseccompに限らず、他のセキュリティ機構への依存がない状態。

libseccompの共起語

libseccomp
seccompの設定を容易に行うC言語向けライブラリ。
seccomp
Linuxが提供するシステムコールの制限機能。
システムコール
OSが提供する基本的な機能呼び出し。
システムコールフィルタリング
特定のシステムコールを許可/拒否するポリシーを適用すること。
フィルタ
許可・拒否のルールをまとめたもの。
フィルタリング
ポリシーに基づいてシステムコールを評価・制御する作業。
ポリシー
許可・拒否のルールの集合体。
ルール
別の許可条件。
セキュリティ
アプリの安全性を高める取り組み全般。
サンドボックス
実行環境を分離・制限して安全性を高める仕組み。
Linuxカーネル
seccompはLinuxカーネルの機能として実装されている。
BPF
Berkeley Packet Filterの略。seccompのフィルタ実装に用いられる技術。
seccomp-bpf
seccompのフィルタをBPFで表現した方式。
SCMP_ACT_ALLOW
対象のシステムコールを許可するアクション。
SCMP_ACT_KILL
該当のシステムコールでプロセスを強制終了するアクション。
SCMP_ACT_ERRNO
指定のerrnoを返してエラー扱いにするアクション。
SCMP_ACT_TRAP
トラップを発生させ、デバッグや監視を行えるアクション。
SCMP_ACT_LOG
該当イベントをログに記録するアクション。
seccomp_init
新しいフィルタコンテキストを作成する初期化関数。
seccomp_load
設定したフィルタをカーネルに適用して有効化する関数。
seccomp_rule_add
1件のルールを追加するAPI。
seccomp_rule_add_exact
特定のシステムコールに厳密マッチするルールを追加するAPI。
seccomp_rule_add_cond
条件付きルールを追加するAPI。
seccomp.h
libseccompの公開ヘッダファイル名。
SCMP_ARCH_X86_64
x86_64アーキテクチャ用のフィルタ設定を指定。
SCMP_ARCH_AARCH64
ARM64アーキテクチャ用のフィルタ設定を指定。
Docker
Dockerなどのコンテナ環境でのセキュリティ強化に使われる。
コンテナ
アプリを分離して実行する仮想化・分離環境。
Kubernetes
Kubernetesなどのオーケストレーション環境でも利用されることがある。
セキュリティ設定
セキュリティを高める設定の総称。
ハードニング
安全性を高めるための実践。
API
libseccompが提供する関数群の総称。
ライブラリ
再利用可能なコードの集まり。
errno
エラー番号。SCMP_act_ERRNO のような場面で返される値。
syscall
system callの略称。
システムコールテーブル
利用可能なシステムコールの一覧。フィルタはこのテーブルを基に判定する。

libseccompの関連用語

libseccomp
Linuxでseccompフィルターを作成・適用するための公式APIを提供するライブラリです。
seccomp
Linuxカーネルの機能で、プロセスが呼ぶシステムコールの実行を制限して、セキュリティを向上させる仕組みです。
seccomp-bpf
seccompの実装形式の一つで、BPFを使って許可・拒否ルールを定義します。柔軟性が高く動的制御が可能です。
BPF
Berkeley Packet Filterの略。カーネル内でデータをフィルタリングする仮想機械の仕組みです(seccomp-bpfで使われます)。
eBPF
extended BPFの略。BPFの拡張版で、カーネル内の高度な処理を実現します。seccomp関連の高度な使い方にも関連します。
システムコール
ユーザー空間からカーネル空間へ機能を要求する低レベルの入口。seccompはこの呼び出しを制限します。
フィルター
許可・拒否の条件をまとめたルール群のことです。
ルール
特定のシステムコールに対して、どう処理するかを決めた条件とアクションの組み合わせです。
アクション
ルールが成立した際の処理。例として許可、エラー返却、プロセスの終了、通知などがあります。
SCMP_ACT_ALLOW
該当のsyscallを許可します。
SCMP_ACT_KILL
該当のsyscallを実行したプロセスを終了します。
SCMP_ACT_TRAP
syscall発生時にトラップを発生させ、デバッグ/監視ツールへ通知します。
SCMP_ACT_ERRNO
errnoを返してsyscallを失敗として扱います(任意のerrnoを設定可能)。
SCMP_ACT_NOTIFY
カーネルとユーザー空間で通知をやり取りし、動的な決定を可能にします。
SCMP_ACT_LOG
該当のsyscall発生をログに記録します。
SCMP_SYS_xxx
個別のsystem callを表す識別子。フィルタの対象として用います。
アーキテクチャ
フィルターを適用するCPUアーキテクチャの指定。例: x86_64、aarch64、i386 など。
Strict mode
旧式の厳格モード。保守的な設定で動作を安全に絞りますが柔軟性は低いです。
ポリシー
許可すべきsyscallの集合と、条件に応じた動作を定義する設計思想・設計図です。
デフォルトプロファイル
初期設定として用意されるseccompポリシー。環境ごとに異なる場合があります。
Dockerデフォルトseccomp
Dockerが標準で提供する安全性を確保するセキュアなプロファイル。必要に応じてカスタマイズ可能です。
seccomp_notify
notifyアクションを利用したときのイベント通知機構。動的な判断を実現します。
コンテナ
隔離された実行環境を提供する技術。seccompはコンテナのセキュリティを高める手段の一つです。
サンドボックス
アプリケーションを隔離して、悪意ある挙動の影響を限定する安全な実行環境です。
カーネルサポート
seccompを有効に機能させるためにはカーネル側の有効化とサポートが必要です。
CONFIG_SECCOMP
カーネルのビルド設定でseccomp機能を有効化する設定項目です。
CONFIG_SECCOMP_FILTER
seccompフィルター(BPFベースのフィルタ)を有効化する設定項目です。
実装API例
libseccompが提供する主なAPI例。例: seccomp_init、seccomp_rule_add、seccomp_load、seccomp_release など。
Firefox/Chromeのサンドボックス
ブラウザの安全性を高めるためにseccomp-bpfを活用して実行プロセスを分離します。
Androidセキュリティ
Androidのアプリ実行環境でもseccompを用いて制限をかける取り組みがあります。
フォーマンス/オーバーヘッド
フィルター適用による性能影響は通常小さいですが、複雑なルールでは影響が出ることがあります。
限界と注意点
すべてのsyscallを網羅できるわけではなく、動的なシステムコールの変更には対応が必要です。

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16580viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2960viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1197viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1181viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1054viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1046viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1033viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
986viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
875viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
873viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
819viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
817viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
811viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
747viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
726viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
700viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
629viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
615viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
606viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
549viws

新着記事

インターネット・コンピュータの関連記事