rsshを使用してプライベートaptリポジトリを制限する - apt-getが/bin/shを試しているのはなぜですか?

rsshを使用してプライベートaptリポジトリを制限する - apt-getが/bin/shを試しているのはなぜですか?

SSHを介してプライベートストアを設定しようとしています。マイsources.list.d/インクルージョン

deb ssh://user@host:/repo ./ 

ユーザーはホストの証明書専用アカウントです。apt-get updateうまくいきます。

しかし、ダウンロードリポジトリへのアクセスを制限したいと思います。つまり、シェルアクセスを無効にしたいのです。ユーザーシェルをrsshに設定してscpとsftpのみを許可すると、更新は中止されます。

から/var/log/syslog

user user attempted to execute forbidden commands
command: /bin/sh

aptがストレージシステムへのシェルアクセスを必要とするのはなぜですか。これを防ぐ方法はありますか?

私はapt-transport-sftpのgithubリポジトリがあることに気づき、見てみましょうが、ユーザーの便宜のためにより一般的なパッケージを使用することをお勧めします。

ベストアンサー1

APTはリモートで何をしますか?

テストアカウントを設定し、apt単純なスクリプトを使用して、リポジトリ所有者のシェルの代わりにリモートサーバーで実行されているすべてのコマンドを記録しました。aptよく知られているファイルのフルパスを見つけるためにリモートシェルが作成されるようです::

2015-09-14: Executing 'sh -c /bin/sh'; input and output follows:
find /tmp/repo/./InRelease -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./Release.gpg -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./Release -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./Packages.bz2 -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./it_CH.bz2 -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./it.bz2 -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./en.bz2 -follow -printf '%s\n' 2> /dev/null || echo

find /tmp/repo/./Packages.xz -follow -printf '%s\n' 2> /dev/null || echo

...

したがって、repoユーザーが実行できる操作に制限を渡すことはできないと思います rssh。 (1)実行されるコマンドはSTDINを介してリモートシェルに渡され(SSHのリモート実行機能とは対照的)、(2)コマンドはシェルパイプです。

解決策?

ストレージユーザーがリモートで実行できる操作を制限したい場合は、次の2つの方法があると思います。

  • repo ユーザーのシェルを次に設定します。 rbash 代わりに、$PATH実行する必要があるコマンドのみを含むカスタム設定を提供してください。 (必ず設定してください$PATH(ファイルは次の場所から始めてください))できないストレージユーザーからの書き込み。 )それでもアクセス資格情報を持っている人は誰でもシステム上のすべてのファイルを読むことができる可能性があります。

  • ストレージファイルとAPTに必要なすべてのコマンドでchroot刑務所を作成し、ストレージユーザーのシェルを実行するスクリプトまたはプログラムに設定しますchroot /jail "$@"

記録apt-get update操作

リモートで行われた操作を記録するために使用するスクリプトは次のとおりです。

#!/bin/sh

echo "$(date -I): executing 'sh $@'; input and output follows" >> /tmp/sh.log
tee -a /tmp/sh.log | /bin/sh "$@" | tee -a /tmp/sh.log

おすすめ記事