Linuxセキュリティメカニズム

この記事では、最も一般的なLinuxセキュリティツールについて簡単に説明します。 情報は要約形式で提供されます。ツールに関心がある場合は、リンクをたどって詳細を読むことができます。 ユーザーのリクエストに応じて、後続の記事でいくつかのメカニズムをより詳細に検討できます。



次のツールが考慮されます:POSIX ACL、sudo、chroot、PAM、SELinux、AppArmor、PolicyKit。 仮想化は、セキュリティツールにある程度関連していますが、特にこれは別個の広範なトピックであるため、考慮されません。



POSIX ACL



説明:属性(Discretionary Access Control、DAC)に基づくファイルへのアクセス権の差別化。

作業のメカニズム:システム(特に、ファイルシステムマネージャー)は、ユーザー(またはユーザーに代わって実行されるプログラム)がアクセスしたファイルの属性を読み取り、これらの属性に基づいてアクセスを許可するかどうかを決定します。 アクセスエラーが発生すると、対応するエラーコードがアプリケーションに返されます。

使用例:他のユーザーのファイルへのアクセスをブロック/許可するには、 chmodで属性を変更し、 chownおよびchgrpで所有者/グループを変更します(またはより一般的なsetfaclコマンドを使用します)。 現在の権限は、 lsおよびgetfaclを使用して表示できます。

追加リンクLinuxのPOSIXアクセス制御リスト、Linuxの 高度なACL



須藤



説明:独自のプログラムおよび/または他の人の名前でプログラムを実行する。

作業のメカニズム: sudo / sudoeditコマンドが呼び出されると、システムは/ etc / sudoersファイルを読み取り、それに基づいてユーザーが起動できるコマンドを決定します。

使用例:構成全体は、/ etc / sudoersファイルで定義されています。 たとえば、特定のコマンドのみの実行を特定のユーザーからのみ許可できます。

WEBMASTERS www = (www) ALL, (root) /usr/bin/su www





この行は、 WEBMASTERSエイリアスで定義されたユーザーがユーザーwwwに代わってすべてのコマンドを実行できること、またはwwwでのみsuを実行できることを示しています。



chroot



説明:プロセスのコンテキストでルートを変更することにより、ファイルシステムへのプロセスのアクセスを制限する操作。

操作のメカニズム:ファイルシステムのルートディレクトリが再定義されるコンテキストでプログラム(デフォルトでは/ bin / sh)を実行します。 これで、呼び出されたプログラムへのすべての呼び出しはルートディレクトリを超えることができません(つまり、プログラムは非常に条件付きのサンドボックスで実行されます)。 特にルートの下からこのメカニズムをバイパスすることは難しくないため、このツールは安全性のために推奨されません。 仮想化のみが実際のサンドボックスを提供できます。

使用例:特別なディレクトリが作成され、作業に必要な環境がそこにコピーされます( mount --bindコマンドを使用することもできます)。 次に、このディレクトリにchrootが作成され、実行中のプログラムは事前に準備された環境でのみ機能します。 簡素化するために、ディストリビューションで利用可能なさまざまなjailツールを使用できます。



PAM



説明:認証プラグイン。

作業のメカニズム: PAMを使用して作成されたプログラムは、ライブラリにアクセスします。このライブラリは、実際にユーザー認証手順を実際に実行します。 認証エラーが発生した場合、対応するエラーコードがアプリケーションに返されます。

使用例: PostgreSQL、Apache、Squid、およびその他のプログラム(ユーザーが作成したものを含む)は、独自の構成ファイルを介さずにユーザーアカウントを操作できますが、PAMにアクセスし、さまざまな認証オプション(Kerberos、eToken、生体認証など)を提供します。当然、これはLinux自体にも適用されます。ユーザー名/パスワードをいくつか入力するだけでなく、入力することもできます。



SELinux



説明:セキュリティポリシーとコンテキストに基づく必須アクセス制御(MAC)システムの実装。

制御は、管理者とシステムによって制御が適用されるときに強制的に呼び出され、従来のアクセス制御の場合のようにユーザーの決定に依存しません。 [ * ]


作業のメカニズム:アクセス権を確認するために、カーネルLSMモジュールが使用されます。このモジュールは、アプリケーションのセキュリティポリシーを確認し、そのタイプを使用されるファイル(オブジェクト)のセキュリティコンテキストと比較します。 アクセスエラーが発生すると、対応するエントリが/var/log/audit/audit.logに追加されます。 これは、 setroubleshootユーティリティを介してユーザーに通知できます。

使用例:ターゲットモードでは、SELinuxはApacheが特定のディレクトリのみを読み取ることを許可します。 ホームディレクトリにWebサイトを作成し、/ var / wwwのシンボリックリンクを介してWebサイトを開く標準の(誰かのための)方法は、検証手順に合格しません。 SELinuxはフルスキャンを実行してファイルセキュリティコンテキストをチェックします。 ファイルのセキュリティコンテキストを変更するには、 chconコマンドを使用する必要があります(この場合、 chcon -R -h -t httpd_sys_content_t / path / to / directory )。 現在のセキュリティコンテキストはls -Zで表示できます。

追加リンクSELinuxの構造



防具



説明:セキュリティポリシー(プロファイル)に基づくプロアクティブな防御システム。

作業のメカニズム:アクセス権を確認するために、カーネルLSMモジュールが使用されます。これは、アプリケーションの起動時に、そのプロファイル(/etc/apparmor.d)の存在を確認し、プロファイルが存在する場合、プロファイルに従ってシステムコールを制限します。 アクセスエラーが発生すると、対応するエントリが/var/log/audit/audit.logに追加されます。 これについては、 apparmor-notifyユーティリティを使用してユーザーに通知できます

使用例: aa-genprofコマンドを使用して、必要なユースケースをすべて実行することにより、目的のアプリケーションのプロファイルを作成できます。 さらに、作成されたプロファイルファイルは、興味のある方法で変更したり、/ etc / apparmor.dに保存したり、 aa-enforceでアクティブにしたりできます。



Policykit



説明:システム権限を制御するためのツール。

作業のメカニズム:アプリケーションがサービスにアクセスすると(アクセスはアクションとして渡されます)、PolicyKitを介してこのアクションに対するユーザーのアクセス権をチェックします。 ポリシーによっては、アクセスが拒否、許可、または認証が必要になる場合があります。 エラー表示(またはパスワード要求)は、クライアントアプリケーションによって引き継がれる必要があります。

使用例:ネットワークをセットアップするとき、Ubuntuではパスワードを要求せずにすべての情報を表示できます(PolicyKit構成では許可なく読み取りが許可されるため)が、設定を保存する必要がある場合、パスワードが要求されます。 さらに、ユーザーにはシステム全体に対するルート権限が付与されていません。 使用されるサービスの制限内でのみ機能します。



おわりに



当然、この記事では扱っていない他のセキュリティ関連ツールがあります。 ただし、上記のすべては最も一般的なディストリビューションの事実上の標準であり、セキュリティに関心がある場合は、それらを知っておくことをお勧めします。



セキュリティ機能の説明(ロシア語)への関連性の高いリンクがある場合は、コメントに記入してください。 また、発見されたすべてのコメントと不正確な点も嬉しく思います。



All Articles