sshポート転送を拒否せずに制限する方法は?


5

ログインシェルが実際にインタラクティブログインを許可しないスクリプトであり、非常に限られた特定のコマンドセットのみをリモートで実行できるアカウントを作成したとします。

それでも、sshこのアカウントのユーザーはポートを転送できますが、これはホールです。

さて、ツイストは、sshセッションが確立されたときに、実際にそのアカウントに特定のポート転送構成をセットアップさせたいということです。ただし、任意のポート転送を構成することは不可能でなければなりません。

(許可されたポート転送構成がすべてのセッションの一部として無条件に確立される場合、これは許容できる解決策です。)


数日中に誰も前に出ない場合、私は自分の答えを受け入れます。そして、おそらくそれに取り組んでください。
カズ

しばらくの間それを受け入れられない/開いたままにすると、もう少し注意が向けられます。週末をSO 以外の場所で過ごすのが好きな人もいます :)
サンポサラーラ

私の最初の答えは提案されたパッチでしたが、OpenSSHの既存の機能が仕事をします。
カズ

おっと、これはserverfaultに属しますよね!ここで「スーパーユーザー」は「ルート」または「sysadmin」を意味しないことを忘れがちです。
カズ

回答:


7

結局のところ、OpenSSHにはこの機能-Lがあり、サーバー側でスタイルのオープンを制限します。この機能には2つの方法があります。

  1. サーバー構成ファイルにはPermitOpenオプションがあります。このオプションを使用して、転送を確立できるホストとポートを指定できます。このオプションはMatchブロック内で使用できるため、ユーザー、グループ、ホスト名、またはIPアドレスパターンによって制限できます。

  2. authorized_keys、ファイル、オプションは、特定のキーに関連付けすることができます。permitopenserver-configのものと同様に機能するオプションがあります。

メモ/制限:

  • このオプションAllowTcpForwardingは、双方向のすべての転送を無効にし、サーバーでのリスニングポートの設定とアクティブな転送を防ぎます。

  • スタイル接続のPermitOpenアクセス制御はありません-R。これはおそらく大丈夫です。つまり、ユーザーはssh、サーバーでリッスンするためにさまざまな非特権ポートを開くために使用できるということです。これらがSSH接続の反対側で接続する場所は、クライアントの問題です。-L方向への転送を制限する場合、ユーザーはそれらの-Rポートを使用する方法がありません(少なくともssh、ユーザーが任意のインタラクティブセッションを作成できない場合は、を介して)。

  • 許可されたオープンの空のリストを作成して、ユーザーが-Lスタイル接続を行わないようにする方法はないようです。ただし、回避策は、空の文字列など、無害な、存在しない、または不可能なホスト名を使用することです。具体的にpermitopen=":1234"は、トリックを行います。


私はのきめ細かいアクセス制御なしで生きることができるので-R、これは私にとってうまくいきます。
カズ

0

ユーザーが-Lスタイルの接続を一切行わないようにするために、許可されたオープンの空のリストを作成する方法はないようです。ただし、回避策は、空の文字列など、無害な、存在しない、または不可能なホスト名を使用することです。具体的には、permitopen = ":1234"がトリックを行います。

「any」の引数を使用して、すべての制限を削除し、転送要求を許可できます。「none」の引数を使用して、すべての転送要求を禁止できます。デフォルトでは、すべてのポート転送要求が許可されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.