web-dev-qa-db-ja.com

どうすれば安全に誰かにシェルを渡すことができますか?

誰かにシェルアカウントを与えることについて質問があります。それはどれくらい安全ですか?彼は/ etcを読むことができました。ユーザーを一部のビンと自分の家にのみ制限するセキュリティで保護されたシェルアカウントを与えるにはどうすればよいですか? chroot刑務所の唯一の方法はありますか?

7
CappY

ユーザーが実行できることを制御する最も簡単で効率的な方法の1つは、 lshell です。

lshellはPythonでコード化されたシェルであり、ユーザーの環境を限られたコマンドセットに制限したり、SSH経由のコマンド(SCP、SFTP、rsyncなど)を有効/無効にしたり、ユーザーのコマンドをログに記録したり、タイミング制限を実装したりできます。もっと。

4
Aif

誰かにシェルアカウントを与えると、世界中で読めるすべてのファイルを見ることができます。これには、/etc(ユーザー名は含まれますがパスワードは含まれません)など、システムが機能するために必要な/etc/passwd内の多くのファイルが含まれます。

ユーザーにchroot内でのログインのみを許可すると、chroot外のファイルは表示されません。つまり、chroot内に十分な数のプログラム、ライブラリなどを配置する必要があります。ユーザーがアクセスできるすべてのものと、これらのすべての依存関係も同様です。

Chrootは直接ファイルアクセスのみを保護することに注意してください。ユーザーは、すべてのユーザーの実行中のプロセスの名前や引数など、さまざまなことをスヌープできます(SELinuxなどの追加の保護を設定していない場合)。ユーザーが多くのことを行う必要がない場合は、制限付きシェルを使用してより厳しい制限を設定できます(ユーザーが独自の実行可能ファイルを作成できないようにするなど)が、制限付きシェルの権利を設定するのは非常に難しいので、私はしません。 tお勧めします。

今日、仮想マシンは非常に安価です。選択できる無料の実装が多数あり(ユーザーモードLinux、VirtualBox、VMware、KVM、OpenVZ、VServerなど)、追加のシステムインストールで使用されるディスクスペースは最小限です(とにかくchrootに必要になる場合があります)。仮想マシンは、ファイル、プロセス、ネットワークなど、ほとんどすべてを分離します。非常に異常な制約がない限り、これが最適な方法です。

1つのオプションは、 rbash [bash-r]などの制限されたシェルセッションにそれらを配置することです。

現時点では、正確に何を達成したいのかは少しわかりませんが、表面的には、「その他」のposix aclは、新しいアカウントだけでなく、アカウントが属するグループのグループaclにも適用されます。たとえば、「ユーザー」。

2
Tok

/etcの一部は、特権のないユーザーでも読み取り可能である必要があることに注意してください。 /etcに読み取り可能ではないが読み取り可能であるものがある場合は、より大きな問題があり、少なくともディストリビューションのアクセス許可チェック/修正プログラムを実行する必要があります。

刑務所は厳しい制限を設定する最も簡単な方法です。 SElinuxをセットアップし、ユーザーが非常に限定されたセキュリティコンテキストを持つように調整するなど、他の方法もあります。

1
geekosaur