Firejail は、(潜在的に信頼できない)アプリケーションを実行するための制限された 環境を設定することにより、Linux システムを保護することを目的とした軽量な セキュリティツールです。
より具体的には、Linux 名前空間、seccomp-bpf、Linux ケーパビリティを使用して セキュリティ侵害のリスクを軽減する SUID サンドボックスプログラムです。 これにより、プロセスとそのすべての子プロセスは、ネットワークスタック、 プロセステーブル、マウントテーブルなどのグローバルに共有されるカーネル リソースを独自のプライベートビューで参照できます。Firejail は SELinux または AppArmor 環境で動作でき、Linux Control Groups と統合されています。
C で書かれ、実質的に依存関係がないこのソフトウェアは、3.x 以降のカーネル バージョンを搭載した任意の Linux コンピュータで動作します。サーバー、 グラフィカルアプリケーション、さらにはユーザーログインセッションまで、あらゆる 種類のプロセスをサンドボックス化できます。このソフトウェアには、Mozilla Firefox、 Chromium、VLC、Transmission など、一般的な Linux プログラム向けのサンドボックス プロファイルが多数含まれています。
サンドボックスは軽量で、オーバーヘッドも低くなっています。編集が必要な 複雑な設定ファイルはなく、開かれるソケット接続も、バックグラウンドで実行される デーモンもありません。すべてのセキュリティ機能は Linux カーネルに直接実装されており、 任意の Linux コンピュータで利用できます。
SECURITY.md を参照してください。
サポートされているバージョンについては、SECURITY.md を参照してください。
注: Debian stable および backports のバージョンは古い可能性が高いため、現在は最新リリースから .deb パッケージをダウンロードしてインストールすることをお勧めします:
またはソースからのビルド。
Debian stable (bullseye): backports パッケージの使用をお勧めします。
注: ディストリビューションおよび PPA のバージョンは古い可能性が高いため、現在は最新リリースから .deb パッケージをダウンロードしてインストールすることをお勧めします:
またはソースからのビルド。
注: PPA の推奨は主に firejail 自体に関するものです。firetools や firejail 関連ツールは、 PPA に含まれていない場合はディストリビューションから直接インストールしても 問題ありません。これらのツールは更新頻度が低い傾向があるためです。
Ubuntu 18.04+ および派生ディストリビューション(Linux Mint など)のユーザーは、 PPA の使用を 強くお勧めします。
PPA を追加してインストールする方法:
sudo add-apt-repository ppa:deki/firejail
sudo apt-get update
sudo apt-get install firejail firejail-profiles
理由: Ubuntu 20.04 の firejail パッケージは、Launchpad にパッチが投稿されてから 数か月間、CVE-2021-26910 に対する脆弱性が残されたままでした:
https://wiki.ubuntu.com/SecurityTeam/FAQ も参照してください:
Ubuntu セキュリティチームはどのようなソフトウェアをサポートしていますか?
Ubuntu は現在、main、restricted、universe と multiverse の 4 つのコンポーネントに分かれています。main と restricted のすべてのバイナリパッケージは、 Ubuntu リリースの存続期間中 Ubuntu セキュリティチームによってサポートされますが、 universe と multiverse のバイナリパッケージは Ubuntu コミュニティによってサポートされます。
さらに、PPA バージョンはより新しい可能性が高く、より多くのプロファイル修正が 含まれている可能性があります。
詳細については、以下のディスカッションを参照してください:
Firejail は複数の Linux ディストリビューションで利用できます:
前述の例外を除き、お使いのディストリビューションが サポートされているバージョンの firejail を提供している限り、 通常はディストリビューションからインストールすることをお勧めします。
インストール後、firejail --version でバージョンを確認できます。
リリースされたパッケージのいずれかをインストールすることもできます。
現在の開発版をソースからビルドしてインストールするための 手順です。
該当する場合は、以下のディストリビューション固有の手順を使用することをお勧めします。 これらはネイティブパッケージを生成するため、システムの他の部分との統合や パッケージ管理が容易になります。
その他のディストリビューションについては、一般的な手順を参照してください。
CI でのディストリビューション固有のビルドの実行方法については、.gitlab-ci.yml も参照してください。
注: AUR パッケージは私たちがメンテナンスしているものではありません。
AUR から firejail-git をインストールしてください。
例:
yay -S firejail-git
Debian、Ubuntu および派生ディストリビューション向け:
注: ./configure のフラグはすべて mkdeb.sh に渡す必要があります(例: ./mkdeb.sh --enable-foo)。
sudo apt-get update -qy
sudo apt-get install -qy \
git build-essential fakeroot lintian libapparmor-dev pkg-config gawk
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./mkdeb.sh &&
sudo dpkg -i ./*.deb &&
make installcheck
Fedora および派生ディストリビューション向け:
注: ./configure のフラグはすべて mkrpm.sh に渡す必要があります(例: ./platform/rpm/mkrpm.sh --enable-foo)。
sudo dnf update -y
sudo dnf install -y rpm-build gcc make
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./platform/rpm/mkrpm.sh &&
sudo rpm -i ./*.rpm &&
make installcheck
一般的なビルド/インストール手順:
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make -j "$(nproc)" &&
sudo make install-strip &&
make installcheck
Debian/Ubuntu では、git と gcc をインストールする必要があります。
AppArmor サポートを有効にしてビルドするには(通常は Debian、Ubuntu、openSUSE および派生ディストリビューションで使用)、AppArmor 開発ライブラリと pkg-config をインストールし、--enable-apparmor の ./configure オプションを使用します:
sudo apt-get install git build-essential libapparmor-dev pkg-config gawk
SELinux サポートを有効にしてビルドするには(通常は Fedora、RHEL および派生ディストリビューションで使用)、libselinux1-dev(Fedora では libselinux-devel)をインストールし、--enable-selinux の ./configure オプションを使用します。
git から firejail を使用する方法の詳細は、 wiki で確認できます。
注: firejail-in-firejail の問題を避けるため、プログラムのフルパスを使用してください(例: firejail firefox ではなく firejail /usr/bin/firefox)(#2877 を参照)。
サンドボックスを開始するには、コマンドの先頭に firejail を付けます:
firejail /usr/bin/firefox # starting Mozilla Firefox
firejail /usr/bin/transmission-gtk # starting Transmission BitTorrent
firejail /usr/bin/vlc # starting VideoLAN Client
sudo firejail /etc/init.d/nginx start
ターミナルで firejail --list を実行すると、アクティブなすべてのサンドボックスが一覧表示されます。例:
$ firejail --list
1617:netblue:/usr/bin/firejail /usr/bin/firefox-esr
7719:netblue:/usr/bin/firejail /usr/bin/transmission-qt
7779:netblue:/usr/bin/firejail /usr/bin/galculator
7874:netblue:/usr/bin/firejail /usr/bin/vlc --started-from-file file:///home/netblue/firejail-whitelist.mp4
7916:netblue:firejail --list
次の 2 つのコマンドを実行して、サンドボックスをデスクトップに統合します:
firecfg --fix-sound
sudo firecfg
最初のコマンドは、バージョン 9 より前の PulseAudio ソフトウェアにおける 共有メモリ/PID 名前空間の一部のバグを解決します。2 番目のコマンドは Firejail を デスクトップに統合します。PulseAudio の変更を適用するには、ログアウトしてから再度ログインする必要があります。
プログラムはいつもの方法で起動してください: デスクトップマネージャのメニュー、ファイル マネージャ、デスクトップランチャー。
この統合は、Firejail がデフォルトでサポートするすべてのプログラムに適用されます。 現在の Firejail バージョンには 900 を超えるデフォルトアプリケーションがあり、その数は 新しいリリースごとに増えています。
アプリケーションの一覧は src/firecfg/firecfg.config (インストール時は /etc/firejail/firecfg.config)にあります。
Firejail のほとんどのコマンドラインオプションは、プロファイルファイルを使用してサンドボックスに渡すことができます。
サポートされているすべてのアプリケーションのプロファイルは etc/ (インストール時は /etc/firejail/)にあります。
以前のリリース版向けのプロファイル修正の一覧も etc-fixes/ にあります。
追加の Firejail セキュリティプロファイルを公開リポジトリで管理している場合は、 リンクをお知らせください:
新しいプロファイルをリクエストするには、この issue を使用してください:
プログラムに必要なシステムコールの一覧を取得するには、このツールも使用できます:
firecfg は /usr/local/bin にシンボリックリンクを作成するため、firejail を完全に削除するには、 アンインストール前に以下を実行してください:
sudo firecfg --clean
詳細は man firecfg を参照してください。
注: $PATH で実行ファイルを検索する際、壊れたシンボリックリンクは無視されるため、上記を実行せずにアンインストールしても問題は発生しません。
LANDLOCK
Landlock is a Linux security module first introduced in version 5.13 of
the Linux kernel. It allows unprivileged processes to restrict their
access to the filesystem. Once imposed, these restrictions can never
be removed, and all child processes created by a Landlock-restricted
processes inherit these restrictions. Firejail supports Landlock as an
additional sandboxing feature. It can be used to ensure that a sand‐
boxed application can only access files and directories that it was ex‐
plicitly allowed to access. Firejail supports populating the ruleset
with both a basic set of rules (see --landlock) and with a custom set
of rules.
Important notes:
- A process can install a Landlock ruleset only if it has either
CAP_SYS_ADMIN in its effective capability set, or the "No New
Privileges" restriction enabled. Because of this, enabling the
Landlock feature will also cause Firejail to enable the "No New
Privileges" restriction, regardless of the profile or the
--nonewprivs command line option.
- Access to the /proc directory is managed through the --land‐
lock.proc command line option.
- Access to the /etc directory is automatically allowed. To
override this, use the --writable-etc command line option. You
can also use the --private-etc option to restrict access to the
/etc directory.
To enable Landlock self-restriction on top of your current Firejail se‐
curity features, pass --landlock flag to Firejail command line. You
can also use --landlock.read, --landlock.write, --landlock.special and
--landlock.execute options together with --landlock or instead of it.
Example:
$ firejail --landlock --landlock.read=/media --landlock.proc=ro /usr/bin/mc
プロファイルの統計情報を出力する小さなツールです。通常どおりコンパイルしてインストールします。 ツールは /usr/lib/firejail ディレクトリにインストールされます。
/etc/profiles のプロファイルに対して実行します:
$ /usr/lib/firejail/profstats /etc/firejail/*.profile
No include .local found in /etc/firejail/noprofile.profile
Warning: multiple caps in /etc/firejail/tidal-hifi.profile
Warning: multiple caps in /etc/firejail/tqemu.profile
Warning: multiple caps in /etc/firejail/transmission-daemon.profile
Warning: multiple caps in /etc/firejail/trivalent.profile
Stats:
profiles 1342
include local profile 1341 (include profile-name.local)
include globals 1307 (include globals.local)
blacklist ~/.ssh 1201 (include disable-common.inc)
seccomp 1213
capabilities 1335
noexec 1214 (include disable-exec.inc)
noroot 1105
memory-deny-write-execute 320
restrict-namespaces 1048
apparmor 869
private-bin 817
private-dev 1172
private-etc 842
private-cache 865
private-lib 86
private-tmp 1036
whitelist home directory 662
whitelist var 975 (include whitelist-var-common.inc)
whitelist run/user 1305 (include whitelist-runuser-common.inc
or blacklist ${RUNUSER})
whitelist usr/share 760 (include whitelist-usr-share-common.inc
net none 452
dbus-user none 766
dbus-user filter 206
dbus-system none 970
dbus-system filter 13
クイックスタート |
高度なブラウザセキュリティ |
Tor ブラウザセキュリティ |