Linux機能の操作

前書き

Linux機能はLinuxカーネルの特別な属性であり、プロセスおよびバイナリ実行可能ファイルに、通常、実効ユーザーIDが0のプロセス(ルートユーザーであり、ルートユーザーのみがUID 0を持つ)に予約されている特定の特権を付与します。

この記事では、使用可能な機能のいくつか、その使用方法、およびそれらを設定および削除する方法について説明します。実行可能ファイルに機能を設定すると、システムのセキュリティが危険にさらされる可能性があることに注意してください。そのため、本番環境に機能を実装する前に、非本番システムでのテストを検討する必要があります。

前提条件

  • rootアクセス権を持っているLinuxシステム(rootユーザーまたはsudoアクセス権を持つユーザーを介して)。

説明

基本的に、機能の目標は、「root」の権限を特定の特権に分割することです。そのため、1つ以上の機能を持つプロセスまたはバイナリが悪用された場合、rootとして実行されている同じプロセスと比較すると、潜在的な損傷が制限されます。

プロセスおよび実行可能ファイルに機能を設定できます。ファイルの実行から生じるプロセスは、そのファイルの機能を獲得できます。

Linuxに実装されている機能は多数あり、その多くは最初のリリースから追​​加されています。それらのいくつかは次のとおりです。

  • CAP_CHOWN:ファイルのユーザーIDとグループIDを変更する
  • CAP_DAC_OVERRIDE:DAC(随意アクセス制御)をオーバーライドします。たとえば、vtoは読み取り/書き込み/実行権限チェックをバイパスします。
  • CAP_KILL:プロセスにシグナルを送信するための許可チェックをバイパスします。
  • CAP_SYS_NICE:プロセスの素晴らしさを上げる(素晴らしさの説明はここにあります
  • CAP_SYS_TIME:システムとリアルタイムのハードウェアクロックを設定する

完全なリストについては、を実行してくださいman 7 capabilities

機能はセットで割り当てられます。つまり、スレッドには「許可」、「継承」、「有効」、「環境」、ファイルには「許可」、「継承」、「効果」が割り当てられます。これらのセットはさまざまな複雑な動作を定義しているため、完全な説明はこの記事の範囲を超えています。

たとえば、ファイルに機能を設定する場合、ほとんどの場合、「許可」および「有効」を使用しますCAP_DAC_OVERRIDE+ep+ep前述のセットを示すに注意してください。

ファイル機能の操作

必要なパッケージ

2つの主要なツールがgetcapあり、setcapこれらはそれぞれこれらの属性を表示および設定できます。

  • DebianとUbuntuでは、これらのツールはlibcap2-binパッケージで提供され、次のようにインストールできます。apt install libcap2-bin
  • CentOSおよびFedoraでは、libcapパッケージが必要です。yum install libcap
  • Arch Linuxでは、これらも以下によって提供さlibcapれます。pacman -S libcap

読書能力

ファイルに機能セットがあるかどうかを確認するには、単にを���行しますgetcap /full/path/to/binary。次に例を示します。

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

システムにすでに設定されている機能を確認する場合は、次のコマンドを使用してファイルシステム全体を再帰的に検索できます。

getcap -r /

仮想ファイルシステム(など/proc)はこれらの操作をサポートしていないため、上記のコマンドは何千ものエラーを生成するため、より明確な出力を得るには、以下を使用します。

getcap -r / 2>/dev/null 

機能の割り当てと削除

ファイルに特定の機能を設定するには、を使用しますsetcap "capability_string" /path/to/file

ファイルからすべての機能を削除するには、を使用しますsetcap -r /path/to/file

デモのために、現在のディレクトリに空のファイルを作成し、機能を付与して削除します。以下から始めます。

root@demo:~# touch testfile
root@demo:~# getcap testfile

2番目のコマンドは出力を生成しません。つまり、このファイルには機能がありません。

次に、ファイルの機能を設定します。

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

例として「CAP_CHOWN + ep」を使用しましたが、他の方法でもこの方法で割り当てることができます。

次に、からすべての機能を削除しますtestfile

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

繰り返しになりますが、「CAP_CHOWN + ep」が削除されたため、出力はありません。

結論

機能には多くの潜在的な用途があり、システムのセキュリティを強化するのに役立ちます。実行可能ファイルでSUIDビットを使用する場合は、必要な特定の機能に置き換えることを検討してください。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。