Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Landlock LSM: Secure Linux Apps ohne root-Rechte

2026年09月17日に「Dev.to」が公開したITニュース「Landlock LSM: Secure Linux Apps ohne root-Rechte」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

LandlockはLinuxカーネルの新機能で、root権限なしでアプリがアクセスできるファイルやネットワークを細かく制限し、安全に実行する。これにより、システムエンジニアが開発中のプログラムや疑わしいアプリを簡単にサンドボックス化し、セキュリティを向上できる。

ITニュース解説

Linuxのシステムでは、ダウンロードして実行したプログラムが、何の制限もなくユーザーの全データにアクセスできてしまうという状況が、残念ながら一般的だ。これは、私たちが無意識のうちにアプリケーションを信頼し、システムを無防備な状態にしていることを意味する。しかし、この現状を変える画期的な技術が、Linuxカーネルに新しく搭載されたLandlockという機能だ。Landlockを使えば、root権限(管理者権限)がなくても、個々のプログラムを安全な「サンドボックス」に閉じ込めることができるようになる。

Landlockは、MAC(Mandatory Access Control:強制アクセス制御)と呼ばれるセキュリティ技術の一種で、LSM(Loadable Security Module:ロード可能セキュリティモジュール)としてLinuxカーネルに組み込まれている。従来のアクセス制御がユーザーやグループに依存する任意アクセス制御(DAC)だったのに対し、MACはシステムがあらかじめ定めたルールに基づいてアクセスを強制的に制限する。Landlockの最大の特徴は、このMACの仕組みを、システム全体に影響を与える複雑な設定なしに、個々のユーザーがアプリケーションごとに適用できる点にある。つまり、難しい設定をすることなく、どのファイルやネットワークリソースにアプリケーションがアクセスできるかを、一般ユーザー自身が自由に決められるのだ。

これまでにも、Linux環境でアプリケーションの動作を制限するサンドボックス技術は存在した。AppArmorやSELinux、Firejail、あるいはFlatpakのようなコンテナ技術に組み込まれたサンドボックス機能などがそれに当たる。しかし、これらの多くは、システム全体の設定変更が必要だったり、非常に専門的な知識とroot権限がなければ設定が困難だったりするという大きな課題があった。例えば、ソフトウェア開発者がテストのために未知のプログラムを実行する場合、そのプログラムを完全に信頼するか、あるいは膨大な時間をかけてセキュリティ設定を行うかのどちらかを選ぶしかなかった。Landlockは、この根本的な問題を解決する。各ユーザーが管理者権限なしで、自分のアカウント内でアプリケーションのアクセス制限ポリシーを作成・適用できるため、未検証のソフトウェアを安全に試したり、疑わしいファイルを隔離された環境で開いたりすることが格段に容易になる。

Landlockの利便性を理解するには、具体的な例を見るのが一番だ。landconfineというツールを使えば、コマンド一つで簡単にサンドボックス環境を構築できる。例えば、WebブラウザのFirefoxを、一時ファイルが保存される/tmpディレクトリと、アイコンファイルがある/usr/share/iconsディレクトリ以外には一切アクセスできないように起動するとしよう。この場合、landconfine --no-net --files=/tmp,/usr/share/icons -- firefoxというコマンドを実行するだけでよい。これにより、Firefoxがもし何らかの脆弱性を持っていたとしても、ユーザーの個人ファイルや設定情報、あるいは会社の重要データなどにアクセスされる心配はなくなる。影響は指定されたごく限られた範囲に留まるため、被害を最小限に抑えることができる。

Landlockがどのように動作するのか、その仕組みはLinuxカーネル内部にある。まず、ユーザーはアプリケーションに許可するファイル操作の種類(読み込み、書き込みなど)を定義した「アクセス権マップ」と、それを適用する特定のファイルパスやディレクトリを組み合わせた「ルールセット」を作成する。そして、landlock_restrict_selfという特別な「システムコール」を呼び出すことで、このルールセットを現在のプロセス(実行中のプログラム)に適用する。システムコールとは、プログラムがカーネル(OSの核心部分)に対して、特定の処理を依頼するための窓口のようなものだ。一度ルールセットが適用されると、そのプロセスから行われるすべてのファイルアクセスやネットワークアクセスは、カーネルによって厳密にチェックされる。もし、許可されていない操作が検出されれば、アプリケーションは単に「Permission denied」(アクセス拒否)のエラーを受け取るだけだ。外部の複雑なソフトウェアを介することなく、カーネル自身が直接アクセスを管理するため、非常に効率的で信頼性が高い。

Landlockは、landconfineのようなユーティリティツールだけでなく、プログラム内部から直接制御することも可能だ。例えばPythonなどのプログラミング言語から、特定のファイルパスへの読み取り権限だけを許可するサンドボックスを、動的に作成し適用するといった使い方ができる。これは、スクリプトが一時的に機密データを扱うが、それ以外の操作は許可したくない、といったシナリオに非常に有効だ。さらに、Landlockは当初ファイルシステムへのアクセス制限に特化していたが、Linuxカーネルバージョン6.3以降では、ネットワークアクセスも制限できるようになった。これにより、アプリケーションがインターネットに一切接続できないようにしたり、特定の種類のネットワーク通信(例えばTCPやUDP)だけを許可したりと、より詳細な制御が可能になる。例えば、landconfine --net=none --files=/home/user/docs:rwx -- nano report.txtと実行すれば、テキストエディタのnanoが、特定のドキュメントディレクトリにのみ読み書き可能で、かつ完全にオフラインで動作する環境を簡単に作れる。これにより、もし悪意のあるソフトウェアが誤って実行されても、外部へのデータ漏洩を防ぐことができる。

しかし、Landlockを使う上でいくつかの注意点もある。まず、Landlockはデフォルトですべてのアクセスを禁止するため、必要なリソースを許可し忘れると、アプリケーションが正常に動作しなくなる可能性がある。例えば、プログラムの実行に必要なライブラリが格納されている/usr/libなどのディレクトリを許可しないと、アプリはすぐにクラッシュしてしまう。次に、Landlockはシンボリックリンク(別のファイルやディレクトリへのショートカットのようなもの)を直接追跡しないため、シンボリックリンク先の実際のパスを許可する必要がある点も重要だ。また、親プロセスで設定されたサンドボックスポリシーは、その子プロセスにも継承されるため、アプリケーションが外部ツールを呼び出す場合など、意図しない影響が出ることもある。最後に、Landlockの機能はLinuxカーネルのバージョンに依存する。ファイルシステムの制御はカーネルバージョン5.13以降で利用可能で、ネットワーク制御には6.3以降が必要となるため、ご自身のシステムのカーネルバージョンを確認することが重要だ。

Landlockは、Linuxにおけるアプリケーションセキュリティに新たな選択肢をもたらす画期的な機能だ。従来のSELinuxやAppArmorがシステム全体を保護するための強力なツールである一方で、Landlockは個々のユーザーが、個々のアプリケーションに対して、手軽かつきめ細かくアクセス制限を設定できるという点で、ユニークな価値を提供する。まだサポートされていない機能(例えばキャパビリティやマウントネームスペースの制御など)もあるが、それでもLandlockは、管理者権限なしで高度な隔離環境を実現できるという点で、大きな進歩と言える。システム全体を大がかりに再設定することなく、今日からでも手軽に利用を開始できるため、開発者や一般ユーザーにとって、より安全なLinux環境を構築するための強力な味方となるだろう。アプリケーションのセキュリティは、中央集権的な管理から、ユーザー自身がコントロールする分散型のモデルへと進化しており、Landlockはその最前線にあると言える。

関連コンテンツ

関連IT用語