akarititle.png

AKARI / TOMOYO 機能比較表

AKARI は TOMOYO Linux 1.8 をベースに作成されているため、 AKARI は TOMOYO Linux 1.8 と同様の機能と構文をサポートしています。このページでは両者の違いについて説明します。

TOMOYO 1.8AKARITOMOYO 2.6
利点全ての機能と構文をサポートします。カーネルパッケージの置き換えが不要です。メインラインカーネルに含まれています。
カーネルコンパイル時に組み込まれていれば、カーネルパッケージの置き換えが不要です。
欠点カーネルパッケージの置き換えが必要になります。サポートされている機能と構文がカーネルのバージョンおよびカーネルコンパイル時の設定オプションに依存します。サポートされている機能と構文がカーネルのバージョンに依存します。
依存関係 カーネルソースに対するパッチの適用とコンパイルが必要です。 カーネル 6.11 以前では、カーネルパッケージが以下の設定オプションと一緒にコンパイルされていることが必要です。
  • CONFIG_SECURITY=y
  • CONFIG_KALLSYMS=y
  • CONFIG_PROC_FS=y
  • CONFIG_MODULES=y
カーネル 6.12 以降では、カーネルパッケージが以下の設定オプションと一緒にコンパイルされていることが必要です。
  • CONFIG_SECURITY=y
  • CONFIG_KALLSYMS=y
  • CONFIG_KALLSYMS_ALL=y
  • CONFIG_PROC_FS=y
  • CONFIG_MODULES=y
カーネルバージョンに関わらず、上記に加えて、以下の設定オプションも一緒にコンパイルされていることが望ましいです。
  • CONFIG_SECURITY_NETWORK=y
  • CONFIG_SECURITY_PATH=y
現時点では、 x86_32 x86_64 SH ARM でのみ動作を確認しています。他のアーキテクチャでの動作テストはまだ行われていません。
カーネル 5.1 以降が必要です。

機能および構文に関する詳細な違いについて以下に示します。

TOMOYO 1.8AKARITOMOYO 2.6
対応カーネルバージョン2.4.37
2.6.27-2.6.39
3.0-3.19
4.0-4.20
5.0-5.19
6.0-
2.6.0-2.6.202.6.21-2.6.232.6.24-2.6.282.6.292.6.30-2.6.322.6.33-2.6.39
3.0-3.19
4.0-4.20
5.0-5.19
6.0-6.11
5.1-5.19
6.0-
種別内容
パス名の正確さ
ディレクトリに対する書き込み操作を行う際に絶対パスを用いた指定を許可○○(*1)○
自プロセスの情報へのアクセスのみを許可( proc:/self/ )○○○
削除されたファイルに対するアクセスを許可○○○
4000文字を超える長いパス名に対するアクセスを許可○○○
パス名の指定を容易にする機能
再帰的なパス名の指定( /\{dir\}/ )○○○
パス名のグループ化( path_group )○○○
数値の指定を容易にする機能
数値のグループ化( number_group )○○○
IPアドレスのグループ化( address_group )○○○
再起動回数を減らす機能
ガベージコレクションによるメモリ解放○○○
より詳細なドメイン遷移を行う機能
プログラムの実行を伴わないドメイン遷移を許可( task manual_domain_transition )○○○
条件を満たしたら自動的にドメイン遷移を行う( task auto_domain_transition )○○
より詳細なアクセス許可を指定する機能
プロセスのユーザIDなどを利用した制限○○○
ファイルの所有者IDなどを利用した制限○○○
グループ化されたパーミッション( acl_group )の利用を許可○○○
ポリシー名前空間のサポート○○○
暴走によるダメージを減らす機能
スリープペナルティ機能( enforcing_penalty )○○
execute handler 機能( task {auto_execute_handler,denied_execute_handler} )○○
アクセスログを取得する機能
ポリシー違反のメール通知○○○
許可ログ/拒否ログの取得○○○
ソフトウェアのアップデートを支援する機能
ポリシー違反の対話的な処理○○○
ファイルに対するアクセス制御
読み込みモードでのオープンを制限( file read )○○○
    読み込み以外のためにオープンされる場合にはパーミッションをチェックしない○○○
    sysctl 要求に対して読み込みパーミッションをチェックする○○○
書き込みモードでのオープンを制限( file {write,append} )○○○
    書き込み以外のためにオープンされる場合にはパーミッションをチェックしない○○○
    sysctl 要求に対して書き込みパーミッションをチェックする○○○
プログラムの実行を制限( file execute )○○○
    一時的な名前を持つプログラムの実行を許可○○○
    シンボリックリンクのリンク先を制限○○○
    起動時の名前を制限( argv[0] )○○○
    引数( argv[] )および環境変数( envp[] )の内容を制限○○○
    使用してよい環境変数名を制限( misc env )○○○
    バイナリローダー(例: /lib/ld-linux.so.2 )として使用できるプログラムを制限○○
    ドメイン遷移方法を指定○○○
ファイルの作成を制限( file create )○○○
    ファイル作成時のパーミッションを制限○○○
ディレクトリの作成を制限( file mkdir )○○○
    ディレクトリ作成時のパーミッションを制限○○○
FIFOの作成を制限( file mkfifo )○○○
    FIFO作成時のパーミッションを制限○○○
UNIXドメインソケットの作成を制限( file mksock )○○○
    UNIXドメインソケット作成時のパーミッションを制限○○○
シンボリックリンクの作成を制限( file symlink )○○○
    シンボリックリンク作成時のリンク先を制限○○○
デバイスファイルの作成を制限( file {mkblock,mkchar} )○○○
    デバイスファイル作成時のデバイス番号およびパーミッションを制限○○○
IOCTLの可否を制限( file ioctl )○○○
    IOCTLのコマンド番号を制限○○○
所有者の変更可否を制限( file chown )○○○
    所有者IDを制限○○○
グループの変更可否を制限( file chgrp )○○○
    グループIDを制限○○○
パーミッションの変更可否を制限( file chmod )○○○
    パーミッションを制限○○○
ファイルの削除を制限( file unlink )○○○
ファイルの切り詰めを制限( file truncate )○○○
ファイルのリネームを制限( file rename )○○○
ファイルのハードリンクを制限( file link )○○○
ディレクトリの削除を制限( file rmdir )○○○
ファイルシステムのマウントを制限( file mount )○○○
    マウント時のファイルシステム種別を制限○○○
    マウント時のモードを制限○○(*2)○○
ファイルシステムのアンマウントを制限( file unmount )○○○
ルートディレクトリの置換を制限( file chroot )○○(*1)○
ルートディレクトリの交換を制限( file pivot_root )○○○
ネットワークに対するアクセス制御
接続要求を送信する際にリモートホストのIPアドレスおよびポート番号を制限
( network inet stream connect )
○○(*3)○
パケットを送信する際にリモートホストのIPアドレスおよびポート番号を制限
( network inet {dgram,raw} send )
○○(*3)○
接続要求を受信する際にリモートホストのIPアドレスおよびポート番号を制限
( network inet stream accept )
○○(*3) (*4)
パケットを受信する際にリモートホストのIPアドレスおよびポート番号を制限
( network inet {dgram,raw} recv )
○
ローカルホストのIPアドレスおよびポート番号を制限
( network inet {stream,dgram,raw} bind / network inet stream listen )
○○(*3)○
特定のローカルポート番号を必要とするアプリケーションのために予約しておく○
接続要求を送信する際に相手のUNIXアドレスを制限
( network unix {stream,seqpacket} connect )
○○(*3)○
パケットを送信する際に相手のUNIXアドレスを制限
( network unix dgram send )
○○(*3)○
接続要求を受信する際に相手のUNIXアドレスを制限
( network unix {stream,seqpacket} accept )
○○(*3) (*4)
パケットを受信する際に相手のUNIXアドレスを制限
( network unix dgram recv )
○
自分のUNIXアドレスを制限
( network unix {stream,dgram,seqpacket} bind / network unix {stream,seqpacket} listen )
○○(*3)○
ケイパビリティに対するアクセス制御
独自のケイパビリティを用いた制限( capability )○
プロセス間通信に対するアクセス制御
シグナルの送信先を制限( ipc signal )○
その他
SELinuxやAppArmorなどとの同時使用を許可○○○
使いたい機能だけを有効にすることを許可○○○
設定を初期化するときの所要時間を短縮○○○