Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> ケイパビリティ機能を使用してLinuxシステムのセキュリティを強化する方法

ケイパビリティ機能を使用してLinuxシステムのセキュリティを強化する方法

  

概要:従来のUNIXシステムのアクセス制御モデルは非常に単純です - 普通のユーザーからスーパーユーザーまで。このモデルでは、プロセスまたはアカウントは小さな特権またはすべてのシステム特権のいずれかを持ちます。明らかに、これはシステムのセキュリティにとって良くありません。 Linux-2.1カーネルから始めて、よりきめの細かいアクセス制御を達成するために機能の概念が導入されました。

1.はじめに

UNIXは安全なオペレーティングシステムであり、一般ユーザーに最低限の許可を与え、すべてのシステム特権を単一のアカウントに与えます。 - 根っこ。 rootアカウントは、システムの管理、ソフトウェアのインストール、アカウントの管理、特定のサービスの実行、ファイルシステムのインストール/マウント解除、ユーザーの管理、ソフトウェアのインストールなどに使用されます。さらに、一般ユーザーの多くの操作にもroot特権が必要です。これはsetuidによって実現されます。

特権的な操作を実行するために単一のアカウントに頼る方法はシステムのリスクを増大させます。また、特権的なポートにバインドしてルートのみを開くなど、ルート特権を必要とするプログラムは単一操作用です。権限はファイルにアクセスできます。プログラムによってはセキュリティ上の脆弱性がある場合があります。プログラムがrootとして実行されない場合、その脆弱性によってシステムに脅威がもたらされることはありません。

バージョン2.1から、カーネル開発者はLinuxカーネルに機能の概念を追加しました。目的は、rootアカウントで特定の操作を実行する必要があるプログラムの依存関係を排除することです。 2.2カーネル以降では、これらの世代は基本的に使用可能ですが、まだいくつか問題がありますが、方向は正しいです。

2. Linuxカーネルの詳細な機能

伝統的なUNIXの信頼モデルは非常に単純です。つまり、 "スーパーユーザーvs.通常のユーザー"モデルです。このモデルでは、プロセスのUIDに応じて、プロセスは何でもまたはほとんど何もしないことができます。プロセスがプライベートポートへのバインド、カーネルモジュールのロード/アンロード、ファイルシステムの管理などの操作を実行する必要がある場合は、フルルート特権が必要です。明らかに、これはシステムセキュリティに大きな脅威をもたらします。 UNIXシステムにおけるSUIDの問題は、この信頼モデルによって引き起こされます。たとえば、一般ユーザーはpingコマンドを使用する必要があります。これはroot権限で実行されるSUIDコマンドです。実際、このプログラムは必要なICMPパケットを確立するためにRAWソケットのみを必要とし、他のroot権限はこのプログラムには不要です。プログラムが適切に記述されていないと、システムの制御を得るために攻撃者によって悪用される可能性があります。

機能により、このリスクを軽減できます。システム管理者は、rootユーザーからシステムのセキュリティを奪うことができるため、rootユーザーでも特定の操作を実行できなくなります。このプロセスは元に戻せません。つまり、機能を削除した場合、システムを再起動しない限り、rootユーザーは削除した機能を再追加できません。

2.1。機能の概念

Linuxカーネルで使用されている機能の概念は非常に紛らわしいです。コンピュータサイエンスでは、さまざまな機能が定義されています。ケーパビリティは、プロセスがオブジェクトに対して実行できる操作であり、オブジェクトとそのオブジェクトに対して許可されている操作にフラグを立てます。ファイルディスクリプタは、能力の一種である、あなたが読み書きする許可を要求するためのオープンシステムコールを使用し、成功したオープンシステムコール場合は、システムの突然の橋鄭課⒁フアン新牙をむき出し遅い腸のワームHは打撃にそれをヒスノイズリーグカップバナナ梁ヤンにバインド上げNaxizhengsi Tuiguamisun Xinmufangzi Chihuanmouqi Maogounaitao Menxianghuidiムートン悪夢Qianbishidui U繊細Huizhihujinㄏイチジクフレキシブル線ХJiaojianshicongウェイペンシステムつまり、カーネルが必要なデータ構造を一度に確立した後、読み取りや書き込みなどの動作チェックをデータ構造に含めるだけで済みます。機能に対する操作には、複製機能、プロセス間の移動機能、機能の変更、および機能の取り消しがあります。機能を変更することは、読み取りまたは書き込み専用のファイル記述子を読み取り専用に変更することに似ています。現在、さまざまなシステムへの機能の適用の程度は同じではありません。

POSIX 1003.1eでは、一般にPOSIX機能と呼ばれる機能定義も提案されていますが、これはLinuxで定義されているものとは異なります。ルート許可は従来の* NIXシステムでは強力すぎるため、カーネルはこれらの機能を使用してルート特権を分割します。

2.2。Linuxが伝統的なクレデンシャルモデルの代わりにPOSIX機能を使用する方法

各プロセスは3つの機能依存のビットマップを持っています:継承可能(I)、許可(P)、有効(E)プロセス記述子task_struct(include /linux /sched.h)内のcap_effective、cap_inheritable、cap_permittedに対応します。各能力は1で表され、1は何らかの能力を示し、0は能力がないことを示します。プロセスが特権操作を実行したい場合、オペレーティングシステムはプロセスの有効なUIDが0かどうかをチェックする代わりに、cap_effectiveの対応するビットが有効かどうかをチェックします。たとえば、プロセスがシステムクロックを設定したい場合、Linuxカーネルはcap_effective CAP_SYS_TIMEビット(ビット25)が有効かどうかをチェックします。

cap_permittedは、プロセスが使用される能力を示します。 cap_permittedには、cap_effectiveでは利用できない機能が含まれることがありますが、これらの機能はプロセス自体によって一時的に放棄されます。不要な機能を放棄するプロセスは、セキュリティを向上させるのに非常に役立ちます。たとえば、pingに必要なのはCAP_NET_RAWだけです。セキュリティ上の欠陥があったとしても、それ以外の機能を放棄したとしても、システムに多大な損害を与えることはありません。 Cap_inheritableは、現在のプロセスによって実行されているプログラムによって継承される能力を表します。

3. Linuxがサポートする機能

Linuxは7つのPOSIX 1003.1e規定機能を実装しており、21(カーネル2.4.7-10以降)はLinuxに固有のものです。これらの機能は/usr/src/linux/include/linux/capability.hファイルで定義されています。

デジタル能力を名前説明CAP_CHOWNにファイルがプロセスに属している場合CAP_DAC_READ_SEARCH 2はすべての制限を無視し、すべてのDACファイルのアクセス制限を無視して、ファイルの所有権を変更することが許さ0 CAP_DAC_OVERRIDEは、検索操作3 UIDを読んCAP_FOWNER:詳細は以下のとおり、setuidビットのCAP_KILL 5は、プロセスへの送信信号CAP_SETGIDケーパビリティを可能にすることができ、彼6に属していない可能ファイル4の制限CAP_FSETIDを解除すると、グループID CAP_SETUIDケーパビリティ7はID CAP_SETPCAP 8は、他のプロセスの転移に任意のを許可し、他のプロセスを削除するユーザーを変更することを可能に変更しますそしてファイルを変更することができ能力CAP_LINUX_IMMUTABLE 9は、変更することができない(不変)のみを追加(追加のみ)1024未満のポートCAP_NET_BROADCAST 11に結合させプロパティCAP_NET_BIND_SERVICE 10を可能にするネットワーク管理タスクを実行することができ、ネットワークブロードキャストおよびマルチキャストアクセスCAP_NET_ADMIN 12:インタフェースをルーティングおよびファイアウォールは、CAP_NET_RAW 13 /usr/src/linux/include/linux/capability.hドキュメントを参照してください(生)生ソケットCAP_IPC_LOCK 14は、ロック共有メモリセグメントを可能にする可能CAP_IPC_OWNER 15の無視IPC所有権チェックが16のインサートをCAP_SYS_MODULEとカーネルモジュールCAP_SYS_RAWIO 17はioperm /IOPLアクセスCAP_SYS_CHROOT 18のchrootの使用を可能にすることができます削除()システムコールCAP_SYS_PTRACE 19は、任意のプロセスCAP_SYS_PACCTケーパビリティ20のトラッキングを使用すると、プロセス・アカウンティング(プロセス・アカウンティング)CAP_SYS_ADMIN 21許可を設定することを可能にすることができシステム管理タスク(ファイルシステムのロード/アンロード、ディスククォータの設定、デバイスとファイルの切り替えのオン/オフなど)を実行します。詳細は/usr/src/linux/include/linux/capability.hファイルを参照してください。

Copyright © Windowsの知識 All Rights Reserved