回答:
あなたの質問は:
ユーザーを信用していません。馬鹿な人はインターネットで何かを見て、それが何をするか理解せずにそれを試します。悪意のある人は、他の人のファイルを覗き見してそれらのアイデアを盗むのが好きです。そして、怠惰な私に怠惰なものから始めさせないでください。
システムからユーザーをユーザーから保護するにはどうすればよいですか?
まず、unixには非常に包括的なファイルシステム許可システムがあります。 これは、UNIXファイルシステムのアクセス許可に関する適切なチュートリアルのようです。これの要点は、ユーザーがディレクトリに移動してそのディレクトリからプログラムを実行できるが、そのディレクトリの内容を表示できないようにディレクトリを設定できることです。たとえば、/ homeでこれを行うと、ユーザーが/ homeでlsを実行すると、権限拒否エラーが発生します。
ユーザーが本当に怖くて、制限された環境のスーパーマックスタイプにユーザーを固定したい場合は、freebsdのjailやsolarisのゾーンなどを使用します。追加されたポイントについては、ZFSを使用して、ログイン時に環境のスナップショットを取得できるため、ファイルが削除された場合、スナップショットからそれらをプルすることができます。
あなたが求めていることを完全に行うには、次の3つのことが必要です。
ベルト、サスペンダー、ステープルガン。そこに間違えにくい。
特定の実行可能ファイルのMACはそのすべての子によって継承されるため、AppArmorは興味深いものです。ユーザーのログインを/bin/bash-bob
に設定し、その特定のバイナリ権利にAppArmorプロファイルを設定します。ユーザーがそのアクセス許可の刑務所から抜け出す唯一の方法は、カーネルの悪用です。なんらかの/var/opt/vendor/tmp
理由で遅延インストールスクリプトがグローバル書き込み可能のままになっている場合/bin/bash-bob
、シェルとして使用しているユーザーはそこに書き込むことができません。ホームディレクトリとへの書き込みのみを許可するようにbash-bobプロファイルを設定し/tmp
ます。このような権限の誤りは利用できません。彼らは何とかrootのパスワードを見つけた場合でも、用のAppArmorプロファイルは、/bin/bash-bob
まだ彼らの後にも適用されますsu
ので、アップsu
し、bash
それを処理スポーンはの子です/bin/bash-bob
。
難しいのは、そのAppArmorプロファイルを構築することです。
私の意見では、手順2と3のみが必要です。両方を組み合わせると、両方の手順でセットアップした慎重に構成されたボックスの外で有害なことを実行する機能が妨げられるためです。
さて、あなたはできるユーザのシェルを設定するだけで、それらが特定のシェルスクリプトを実行することができますことをあなたが書いたプログラムに。
もちろん、これはプログラムとシェルスクリプトと同じくらい安全です。実際には、この種の制限付きシェルは通常、スマートな攻撃者に対して安全ではありません。
ユーザーが特定のスクリプト/バイナリのみを実行できるようにする場合は、制限付きシェルを使用できます。これは(ウィキペディアの記事で言及されているように)完全には安全ではありませんが、実行を許可されているアプリケーションが新しいシェルを実行できないことを保証できる場合は、優れた代替手段です。
ユーザー制限付きシェルをセットアップするには、ユーザーシェルとして設定します/bin/rbash
(または、バイナリがr *** name *という名前の場合、ほとんどのシェルは制限付きモードになります)。次に、**。bashrc(または同等のもの)を編集$PATH
し、許可されたすべてのバイナリ/スクリプトが格納されているディレクトリに設定します。
はい、可能ですが、実際には多くの作業と計画が必要になります。スクリプトを作成し、それらを特権使用として実行し、問題のユーザーからすべての特権を削除できます。または、ユーザーのシェルを独自に作成したものに設定して、明示的に許可したものだけをユーザーが実行できるようにすることもできます。
ただし、Linuxの標準の権限では、通常のユーザーが「システムに害を及ぼす」ことはほとんど不可能です。どんな害を防ごうとしていますか?ユーザーがホームディレクトリの外でソフトウェアをインストールしたりプログラムを実行したりできないようにするのは簡単です。chrootを使用してシステムをさらにロックダウンすることができます。
[lshell] [1](制限付きシェル)を試してみてください。
lshellはPythonでコード化されたシェルであり、ユーザーの環境を限られたコマンドセットに制限したり、SSH経由のコマンド(SCP、SFTP、rsyncなど)を有効/無効にしたり、ユーザーのコマンドをログに記録したり、タイミング制限を実装したりできます。もっと。
[1]:http : //lshell.ghantoos.org/Overview lshell
通常、この種の制限を実装する方法では、いくつかの条件を満たす必要があります。そうでない場合、制限を簡単に回避できます。
wheel
グループに属しておらず、使用が許可されている唯一のユーザーですsu
(PAMを介して適用されます)。ユーザーには、privateを指す読み取り専用のポイントで適切に保護され rbash
ています。このディレクトリには、単純なユーティリティへのリンクが含まれています。PATH
~/bin
~/bin/
$ ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
ユーザーが制限され、読み取り専用の環境を与えられている(のようなものを考えるLESSSECURE
、TMOUT
、HISTFILE
変数)。
staff_u
必要に応じて他のユーザーとしてコマンドを実行する権限が与えられますsudo
。ユーザーの/home
、/tmp
およびおそらくによって/var/tmp
インスタンス化され/etc/security/namespace.conf
ます:
/tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root
/var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root
$HOME $HOME/$USER.inst/ tmpdir:create root
また、/etc/security/namespace.init
すべての骨格ファイルをユーザーに対して読み取り専用にし、が所有するようにしroot
ます。
このようにして、他のユーザーに代わって(上記で説明したように、を介してプロビジョニングさ$USER
れたプライベート~/bin
ディレクトリのリンクを介して)自分の代わりにコマンドを実行できるか、まったく実行できないかを選択できます。/etc/skel
sudo