web-dev-qa-db-ja.com

神話または現実:SELinuxはrootユーザーを制限することができますか?

私はどこかを読んだり聞いたりしました(多分 LinuxCBTのSELinuxコース ですが、確信が持てません)。オンラインのLinuxサーバーがあり、そのためにrootユーザーのパスワードも与えられています。 LinuxサーバーはSELinuxルールを使用して強化されているため、誰でもrootユーザーでログインできますが、OSに害を与えることはできません。

それは私には神話のようですが、私は確認したいと思います:Linuxユーザーを(おそらくSELinuxで)強化して、rootユーザーでも特定の悪意のある活動を実行できないようにすることはできますか? (例:システムファイルの削除、ログファイルのクリア、重要なサービスの停止など)

このようなLinuxボックスは ハニーポット を構築するための優れた出発点になります。

編集:回答(現在は削除済み)と少しのグーグルに基づいて、そのような強化されたLinuxサーバーを指摘する少なくとも2つのリンクを取得しました。残念ながら、両方のサーバーがダウンしています。念のため、ここに説明をコピーして貼り付けます。

1) http://www.coker.com.au/selinux/play.html から:

SE Linuxマシンでの無料のrootアクセス!

Debianプレイマシンsshにrootとしてplay.coker.com.auにアクセスするには、パスワードは...

このようなマシンを正常に実行するには、多くのスキルが必要です。実行する必要があるかどうかを尋ねる必要がある場合、答えは「いいえ」です。

これの目的は、必要なすべてのセキュリティが、UNIX権限なしでSE Linuxによって提供できることを実証することです(ただし、実サーバーでもUnix権限を使用することをお勧めします)。また、SEマシンにログインして、それがどのようなものかを確認することができます。

SE Linuxプレイマシンにログインするときは、-xオプションを使用してX11転送を無効にするか、ForwardX11ログインする前に/ etc/ssh/ssh_configファイルにnoを入力します。また、ログインする前に、-aオプションを使用してsshエージェントの転送を無効にするか、/ etc/ssh/ssh_configファイルにForwardAgent noを設定してください。これらの設定を正しく無効にしないと、プレイマシンにログインすると、SSHクライアントを介して攻撃される危険にさらされます。

IRCチャネルがあります、それは#selinuxonですirc.freenode.net

こちらが簡単です [〜#〜] faq [〜#〜]

2) http://www.osnews.com/comments/3731 から

Hardened Gentoo の目的は、Gentooを高セキュリティ、高安定性の運用サーバー環境で実行可能にすることです。このプロジェクトは、Gentoo本体から切り離されたスタンドアロンのプロジェクトではありません。強力なセキュリティと安定性を提供するソリューションをGentooに提供することに焦点を当てたGentoo開発者のチームを対象としています。このマシンは、強化されたGentooのSELinux デモマシン です。それの主な用途は、SELinuxの統合とポリシーをテストおよび監査することです。

20
M.S. Dousti

現実:はい、SELinuxはrootユーザーを制限できます。

これは、SELinuxが実際に現在のUnixユーザーを気にしないため可能です。表示されるのは、コンテキストと呼ばれる補足メタデータ(他のフィールドの中でdomainフィールド)これにより、SELinuxは、要求されたアクションを許可できるかどうかを決定できます。

Rootユーザーとして通常想定されるものは、SELinuxでunconfined_tまたはsysadm_t SELinuxドメインのいずれかを実行するroot Unixユーザーとしてマップされます。これは、古典的なフルパワーの全能性rootユーザーです。

ただし、制限されたユーザーuser_t SELinuxドメインを実行しているルートシェル(つまり、ルートUnixユーザーシェル)を起動するようにシステムを完全にセットアップすることはできます。 SELinuxポリシーによると、そのようなシェルは他の制限されたユーザーのシェルと何ら変わりはなく、システムに対する特別な特権がないため、rootユーザーを効果的に制限できます。

実験的な観点から見ると、このようなことは文字通り役に立たないのですが、同様の方法が現実の世界で彼らの道を見つけます。典型的な例は、データベースデーモンの停止/開始、構成ファイルの編集などを行う必要があるデータベース管理者です。SELinuxがない場合、これらのすべてのアクションでは、ユーザーがroot権限にエスカレートする必要があります(通常、単一の場合でも)たとえば、Sudoツールを使用したコマンドラインですが、それでもリークが発生する可能性があります)。

SELinuxのおかげで、このユーザーに本物のルートシェルを与えることができましたが、unconfined_tまたはsysadm_tドメインを実行する代わりに、dbadm_tドメインを実行します。つまり、彼は制限付きユーザーよりも多くの特権を持つことになりますが、これらの新しい特権は、データベースサーバーの管理に必要なものに制限されます。このユーザーは、他のサービス、ファイルを改ざんしたり、他の管理コマンドを実行したりできません厳密に彼の仕事をする必要があります。

同様に、Webサーバーや他のサービス管理者は、同じシステムで他のルートシェルを並行して実行することもできます。すべてのユーザーは、現在のUnixユーザーがrootしかし、SELinuxのおかげで、それぞれが実質的に異なる特権を持つことになります 自分の目的に必要なものに限定されます

17
WhiteWinterWolf

はい、可能です。しかし、あまり役に立ちません。

理論的には、rootユーザーが悪意のある目的で使用される可能性のあるバイナリを実行することを禁止し、SELinuxなどを介してポリシーを強制することができます。ただし、これは問題を提起します。つまり、最初にrootユーザーが何かを行うことを許可されていなくても、他の方法を使用してSELinuxポリシーを変更または削除することができます。この問題のため、rootユーザーがアクションをまったく実行できないようにする必要があり、あまり役に立ちません。

1
strugee