SSHを介してWebトラフィックをトンネリングしている間、インタラクティブシェルアクセスを無効にできますか?


12

外部ユーザーがイントラネット専用のWebアプリケーションにアクセスするための安価なVPNソリューションとして、SSHトンネリングの実装を検討しています。

現在、OpenSSHがインストールされたUbuntu Server 10.04.1 64ビットを使用しています。

WindowsボックスでPuttyを使用して、sshサーバーへのローカルポートにトンネルを作成しています。

start putty -D 9999 mysshserver.com -N

次に、Firefoxにlocalhost:9999でSOCKSプロキシを使用するように指示します。

-Nフラグは、クライアント側からインタラクティブシェルを無効にします。サーバー側でこれを行う方法はありますか?

ルートアクセスの無効化、rsaキー認証の使用、およびデフォルトポートの変更。この目的のために私が従うべき他の明らかなセキュリティ慣行はありますか?私の目標は、単にWebトラフィックをトンネリングできるようにすることです。

回答:


15

4年後、この回答は更新に値します。もともと私はauthorized_keys自分自身を使用しており、一部の特定のケースではおそらくそれを使用することになりますが、中央sshd_configサーバーの構成ファイルを使用することもできます。

sshd_config

proxy-onlyや、Match個々のユーザーなどのグループを(特定のユースケースで)指定できます。でsshd_config。これは、グローバル設定の後に行われ、グローバル設定で指定された設定の一部を取り消し、繰り返し、または調整します。

注:で使用されてsshd_config(5)いる構文/ディレクティブの一部は、のmanページに記載されていますssh_config(5)。特に、の「パターン」セクションを必ずお読みくださいssh_config(5)

グループの場合、これはMatchブロックが次のように始まることを意味します。

Match group proxy-only

することができますMatch以下の基準:UserGroupHostLocalAddressLocalPortAddress。複数の条件に一致させるには、条件とパターンのペアをカンマで区切ります(group proxy-only上記)。

簡潔にするために従来は適宜インデントされているこのようなブロック内で(そうする必要はありません)、ユーザーグループに適用する設定を宣言できますauthorized_keys。そのグループのメンバーのすべてのファイルを編集する必要はありません。

no-pty以下からの設定はauthorized_keysでミラーリングされるだろうPermitTTY no設定とcommand="/sbin/nologin"なりますForceCommand /sbin/nologin

さらに、管理者のパラノイアを満たすためにchroot、ユーザーをホームフォルダーに移動するなど、さらに多くの設定を設定することもできます。

Match group proxy-only
    PermitTTY no
    ForceCommand /sbin/nologin
    ChrootDirectory %h
    # Optionally enable these by un-commenting the needed line
    # AllowTcpForwarding no
    # GatewayPorts yes
    # KbdInteractiveAuthentication no
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    # PermitRootLogin no

(コメント化された行が必要か、必要に応じてコメントを外すかを自分で確認してください)

%h(ユーザのホームディレクトリで置換されるトークンである%uユーザー名ともたらすであろう%%パーセント記号を)。私が見つけたChrootDirectory私封じ込めるために特に有用でsftp-onlyユーザーを:

Match group sftp-only
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand internal-sftp
    PasswordAuthentication no

ブロックでは特定のディレクティブのみを使用できることに注意してくださいMatch。詳細については、manページsshd_config(5)を参照してください(を検索Match)。

authorized_keys

注意:この発言の下の部分は私の元の答えでした。その間-しかし、それはあなたの正確なsshdバージョンの機能にも依存します-私はほとんどの場合上記の方法に行きます。

はい、できます。公開鍵を割り当てるのと同じくらいきめ細かくできます。ajdeconが推奨するnologinに加えて、のキーエントリの前に次のように設定することをお勧めしますauthorized_keys

no-pty ssh-rsa ...

no ptyは、サーバー側に、そのキーに疑似端末を割り当てないように指示します。

これを前に付けることにより、特定のキーに対してnologinのようなものを強制的に実行することもできます。

command="/sbin/nologin",no-pty ssh-rsa ...

no-ptyキーのユーザーがコマンドを実行することを妨げるものではないことに注意してください。superuser.com/q/1230979/195460を参照してください。
Tad Lispy 2017

3

トンネリングのみのユーザーの場合、ログインシェルを/ sbin / nologinに変更します。これにより、ユーザーはサーバー上のシェルにアクセスできなくなりますが、クライアントからsshトンネルのセットアップを実行することはできます。



0

ユーザー/パス認証を放棄してログインにキーを使用する準備ができている場合は、各公開キーにパラメーター sを指定できます。

注目すべきパラメータは次のとおりです。

command = "コマンド"

このキーが認証に使用されるたびにコマンドが実行されることを指定します。ユーザーが指定したコマンド(存在する場合)は無視されます。

そして

制限する

すべての制限を有効にします。つまり、ポート、エージェント、X11転送を無効にし、PTY割り当てと〜/ .ssh / rcの実行を無効にします。

そして最後に

port-forwarding 制限オプションによって以前に無効にされたポート転送を有効にします。

これらを使用すると、特定のキーペアのユーザーがSSHセッションで実行できることをかなり制限できます。

次のようになります。

restrict,port-forwarding,command="/sbin/nologin" ssh-rsa <base64-encoded key>

私の回答はserverfault.com/a/242411/13364にいくらか冗長であると思いますが、 'restrict'および 'port-forwarding'パラメータのために、私は 'no-pty'よりも私の意見ではそれを残しました。
asdmin

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