GNU/Linux >> Linux の 問題 >  >> Linux

Linuxファイル機能を管理する方法

従来、Linuxプロセスは特権(rootとして実行)または非特権のいずれかです。特権プロセスはカーネル権限チェックの対象ではないため、システムに対してフルパワーを発揮します。機能は、特定の権限チェックをバイパスするためにプロセスが使用できる、別個の独立した特権です。機能はLinux2.2で最初に導入され、その後のバージョンでさらにいくつか追加されました。これらは通常、実行可能ファイルに設定され、機能を持つファイルが実行されるとプロセスに自動的に付与されます。機能は基本的にrootユーザーの権限を個別の特権に分割し、攻撃者がサービスを悪用または悪用することによって取得するアクセスを制限することでセキュリティを向上させます。

このガイドでは、一般的に使用される機能をいくつか紹介し、それらを表示および変更する方法を示します。

一般的な機能

Linuxカーネルは、多数の機能を実装しています。それらのいくつかは次のとおりです:

  • CAP_SYS_ADMIN:さまざまな操作を許可します。この機能は避けて、より具体的な機能を優先する必要があります。
  • CAP_CHOWN:ファイルのユーザーIDとグループIDを変更します
  • CAP_DAC_READ_SEARCH:ファイルの読み取りをバイパスし、ディレクトリの読み取り/実行チェックを実行します。この機能を備えたプログラムを使用して、システム上の任意のファイルを読み取ることができます。
  • CAP_DAC_OVERRIDE:DAC(随意アクセス制御)をオーバーライドします。つまり、読み取り/書き込み/実行権限チェックをバイパスします。この機能により、実行可能ファイルはファイルシステム上の任意のファイルにアクセスして変更することができます。
  • CAP_NET_BIND_SERVICE:1024未満のポート番号へのバインドを許可します。
  • CAP_KILL:SIGHUPやSIGKILLなどのプロセスにシグナルを送信するためのアクセス許可チェックをバイパスします。
  • CAP_SYS_NICE:特にプロセスのniceness値とスケジューリング優先度を変更します。
  • CAP_SYS_RESOURCE:ディスククォータ、CPU時間制限など、システムリソースのさまざまな制限を上書きできます。

完全なリストは、capabilities(7)のマニュアルページにあります。

ファイルには、許可、継承、および有効の3つの異なるセットで機能を割り当てることができます。スレッドには、アンビエントとバウンディングの2つの追加セットがあります。各セットには、実際には1ビットであるファイルの有効なセットを除いて、0個以上の機能を含めることができます。これらのセットは、このガイドの範囲を超える複雑なカーネル動作を定義します。ファイルに機能を割り当てるときは、ほとんどの場合、許可された効果的なセットを使用します。

注:SELinuxは機能に干渉する可能性があります。 SELinuxが強制モードになっているシステムでは、プロセスがその機能を利用できなくなる可能性があります。

必要なツール

機能管理には、libcapとlibcap-ngの2つの異なるパッケージがあります。後者は前者よりも簡単になるように設計されています。このガイドでは両方について説明します。

libcapは、ファイル機能を表示および設定するためのgetcapおよびsetcapを提供し、libcap-ngは、両方の機能を1つのツールfilecapに統合します。

libcap

インストール

Debian、Ubuntu、およびその他のDebianベースのディストリビューションでは、libcapユーティリティは次のコマンドでインストールできます。

apt update
apt install libcap2-bin

CentOSにインストールするには、次のコマンドを使用します。

yum install libcap

Fedoraにインストールするには、次のコマンドを使用します:

dnf install libcap

Archにインストールするには、次のコマンドを使用します。

pacman -Sy libcap
使用法

getcapは、ファイルに割り当てられている機能がある場合は、それを表示するだけです。次の構文を使用します:

getcap /path/to/binary

例:

Getcapは、-rフラグを使用して再帰的に検索することもできます。例:

注:2> / dev / nullは、getcapが/ sys、/procなどのファイルの機能を取得しようとしたときに発生する「Operationnotsupported」エラーで出力が乱雑にならないようにするために使用されます。これらの特別な仮想ファイルシステムはサポートしていません機能。

setcapを使用してファイル機能を設定するには、次の構文を使用します。

setcap CAP+set filename

たとえば、CAP_CHOWNとCAP_DAC_OVERRIDEを許可された効果的なセットに追加するには、次を使用します。

setcap CAP_CHOWN,CAP_DAC_OVERRIDE+ep file1

ファイルから機能を削除するには、-rフラグを使用します。

setcap -r filename

追加の例をいくつか示します。

libcap-ng

インストール

Debian、Ubuntu、その他のDebianベースのディストリビューションにインストールするには:

apt update
apt install libcap-ng-utils

CentOSにインストールするには:

yum install libcap-ng-utils

Fedoraにインストールするには:

dnf install libcap-ng-utils

Archにインストールするには:

pacman -Sy libcap-ng
使用法
  • filecapプログラムは、「CAP_」プレフィックスのない機能を参照します(たとえば、CAP_NET_ADMINの代わりにNET_ADMIN)。
  • filecapは相対パスでは機能しません。ファイルまたはディレクトリを引数として渡すときに、フルパスが必要です。
  • filecapでは機能セットを指定できません。機能を設定するときに、常に許可された効果的な機能を使用します。

ファイルに割り当てられた機能を表示するには:

filecap /full/path/to/file

ディレクトリを再帰的に検索するには、次を使用します。

filecap /full/path/to/dir

filecapを使用してファイルシステム全体を検索するには、次のいずれかのコマンドを使用します。

filecap /
filecap -a

filecapを使用してファイルとディレクトリを調べる例を次に示します。

ファイルに機能を設定するには、次の構文を使用します。

filecap /full/path/to/file cap_name

例:

filecap /usr/bin/tac dac_override

機能を削除するには、次の構文を使用します:

filecap /full/path/to/file none

filecapを使用して機能を設定および削除する例を次に示します。

結論

機能は、幅広いセキュリティアプリケーションを備えた強力なカーネル機能です。可能な限り、完全な特権とルートSUIDの代わりに使用する必要があります。


Linux
  1. Linuxでアカウントのパスワードを管理する方法

  2. Linuxでファイルを見つける方法

  3. Linuxでログファイルを空にする方法

  1. Linuxでスワップを作成する方法

  2. Linuxでスワップファイルを作成する方法

  3. Linuxでスワップパーティションを管理する方法

  1. Linuxでファイルを移動する方法

  2. Linuxでファイルの名前を変更するにはどうすればよいですか?

  3. Linux で iso ファイルをマウントする方法