OpenSSH は SCP 用の 'internal-sftp' のようなものですか?

OpenSSH は SCP 用の 'internal-sftp' のようなものですか?

私は Debian stable を実行しており、'sftponly' グループのユーザー向けに次の環境を確立したいと考えています。

  • 投獄された
  • SFTPで転送できる
  • SCPで転送できる
  • SSHで対話的にログインできない

私の実験と調査によると、sshd_config の次のスタンザで 90% の目標が達成できるようです。

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

これにより、SFTP が jail 化され、SSH が使用できなくなりますが、これは良いことです。しかし、SCP も無効になります。これは理想的とは言えません。なぜなら、かなりの数のクライアントが、SFTP ではなく SCP を使用するレガシーのスクリプト プロセスであるためです (置き換えようとしているサーバーは両方のプロトコルをサポートしていました)。また、これらのクライアントは私たちの管理下になく、簡単に変更できるため、SCP を完全に無効にすることは現実的ではない可能性があります。

この設定により SCP が無効になるのは当然です。着信 SCP 接続により、sshd はユーザーのログイン シェルを介してそのユーザーとして `scp' プロセスを生成するからです。特別な 'internal-sftp' ハンドラーがなければ、通常は SFTP でも同じことが当てはまるようです。

そこで、私の質問は、scponly や rssh などのサードパーティ ツールを使用せずに、SCP で 'internal-sftp' と同じ効果を実現する方法があるかどうかということです。 'internal-sftp' の本当に優れた点は、サポート ファイルで jail を設定したり、潜在的に悪用される可能性のあるサードパーティの setuid バイナリ (特に rssh には悪用の履歴があります) を処理したりする必要がないことです。

答え1

を見てみましょうrsshこれは、システムへの制限付きアクセスを許可する代替シェルです。

rssh は、ssh(1) を介してホストへの制限付きアクセスを提供する制限付きシェルです。これにより、シェルが rssh に設定されているユーザーは、scp(1)、sftp(1)、cvs(1)、rdist(1)、rsync(1) の 1 つ以上のコマンドのみを使用できるようになります。

ユーザごとまたはシステム全体で使用できるコマンドを設定するには、rssh.confファイル

代わりに、scponly のみ必要なことを実行します。これは ssh スイートのラッパーとして機能し、ファイル転送は許可しますが、シェル アクセスは許可しません。

答え2

これをssh経由で実行する必要がありますか?

もしそうなら、シェルを次のように設定してみてください:

/usr/libexec/openssh/sftp-server

そして、上記を/etc/shellsに追加してください。

組み込みアカウントの使用から切り離したい場合は、proftpdをセットアップすることができます。

proftpd を使用して安全な SFTP をセットアップしました。proftpd は次のようにコンパイルされました。

./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_sftp

設定方法については、以下の記事や Google のその他の記事を参照してください。

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html

答え3

残念ながら、OpenSSH には同様に簡単で信頼できるものはありません。ご指摘のとおり、SFTP サーバーは組み込まれていますが、SCP サーバーは組み込まれていないためです。

警告:ヴィンス・バークの回答いくつかの理由で悪いです:

  1. 起動ファイルに関するシェルの動作は、サーバー構成に応じて SSH がリモートで設定できる環境変数によって影響を受ける可能性があります。

  2. ユーザーはただ実行しssh /bin/bashてシェルを取得できます。シェルには tty がないので使いにくいですが、それがどうしたというのでしょう...。言うまでもなく、おそらくユーザーに実行させたくない他のすべてのプログラムも実行できます。

  3. .bash_profileユーザーが だけを実行できる場合、の権限を変更してもあまり意味がありませんssh host rm -f .bash_profile。ホーム ディレクトリの権限については何も言及されていません。

…などなど。このようなアプローチはあまりにも脆弱すぎます。

答え4

これはサードパーティのツールであり、質問の範囲外ですが、とにかく言及する価値があると思いました。

ジェイルキット:https://olivier.sessink.nl/jailkit/

バイナリとライブラリを jail にコピーしたり、jail 内から OS へのログを設定したりといった、ユーザー jail の設定を簡単にするツールのコレクションがあります。私はこれを使用して、sftp/scp/rsync のみの chroot を構築しました。

また、jailkit 限定シェルも付属しておりjk_lsh、これを jail の外部で使用して、chroot なしで scp/sftp/rsync のみを許可したい場合など、ユーザーが実行できるコマンドを制限できます。

関連情報