ユーザアクセスを /proc からの読み取りのみに制限する

ユーザアクセスを /proc からの読み取りのみに制限する

最低限のシステム監視を設定する方法として、 に SSH で接続し、基本的なシェル コマンドを実行して 内のいくつかのファイルを読み込むスクリプトを設定しました/proc。このタスク用に特定のユーザー アカウントを作成し、次のアクセス権を付与します。

  • パスワード
  • バッシュ
  • 読み取り専用/proc

他の投稿では rssh または Chroot について言及されていますが、これらは最良の方法でしょうか? 権限のないユーザーを作成し、必要なものだけを追加して、SSH ではなくファイルシステム レベルで制限を適用する方法があるはずです。これは可能ですか?

現在監視したいシステムはすべて Ubuntu を実行していますが、特定のディストリビューションに縛られることは避けたいと思っています。

答え1

まず、権限です。新しいアカウントを作成すると (adduser少なくとも Debian ベースのシステムでは、他のシステムでは若干異なる可能性があります)、同じ名前の新しいユーザーと新しいグループが作成されます。また、ユーザーのホーム ディレクトリも作成されます。この新しいユーザーには、ホーム ディレクトリに対するユーザーとグループの読み取り/書き込み権限が与えられます。また、ワールド読み取り可能と指定されたものすべてにアクセスでき、ワールド書き込み可能と指定されたものすべてを変更することもできます。

私の知る限り、具体的に除外する従来のPOSIX権限システムを使用して、1人のユーザーまたはグループを全世界の読み取り/書き込み権限から除外します。できるただし、より高度な ACL (Windows の NTFS によく似ています) を有効にすると、特定の拒否権限を設定できます。


別の方法としては、カスタムログインシェル、コマンドを使用するchshか、 を変更することで/etc/passwd実行できます。ログインすると、この「シェル」が実行され、ユーザーの入力が標準入力にリダイレクトされ、標準出力/エラーが端末出力にリダイレクトされます。この「シェル」を次のように設定できます。どれでもシステム上で実行可能なファイル。これには、独自の C プログラム、bash/python/perl スクリプトなどが含まれますが、これらに限定されません。

これを行うにはいくつかの方法があります。ログイン シェルを、必要なデータを出力するだけで入力を受け付けないスクリプトに設定できます。データを出力して終了し、SSH セッションを閉じます。これは最も安全な方法ですが、柔軟性は劣ります。

あるいは、スクリプトに何らかの入力を受け取らせ、その入力を使用して何を印刷するかを決定することもできます。これをどのように行うかはあなた次第です。スクリプトを使用する場合は、 を1 つまたは複数のステートメントとともにbash使用できます。ただし、ユーザーから直接、サニタイズされていないコマンドを実行しないよう注意する必要があります。また、信頼できない入力を受け取ると、他のセキュリティ上の問題が発生する可能性があります。たとえば、 という入力を受け取り、 という出力を返す場合があります。readcaseifprocessesps -e

必要に応じて、C に精通している場合は、bash他のディレクトリにアクセスできないように変更することもできますが、アクセスできるディレクトリを制限するよりも、入力を受け取らないか、特定のホワイトリストコマンドのみをフィルタリングする方がはるかに安全です。また、複雑な C プログラムを変更するよりも、簡単なシェル スクリプトを作成する方が簡単です。

答え2

/proc を読み取り専用にするには、/proc の sshfs 読み取り専用クローンにアクセスします。

関連情報