web-dev-qa-db-ja.com

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

外部ユーザーがイントラネット専用の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トラフィックをトンネリングできるようにすることです。

11
CT.

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

sshd_config

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

注:sshd_config(5) で使用される構文/ディレクティブの一部は、manssh_config(5)のページ。特に、 ssh_config(5)[〜#〜]パターン[〜#〜]セクションを必ずお読みください。

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

Match group proxy-only

次の基準をMatchできます:UserGroupHostLocalAddressLocalPortおよびAddress。複数の条件に一致させるには、条件とパターンのペアをカンマで区切ります(上記のgroup proxy-only)。

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

no-ptyauthorized_keys設定はPermitTTY no設定によってミラーリングされ、command="/sbin/nologin"ForceCommand /sbin/nologinになります。

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

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

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

authorized_keys

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

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

no-pty ssh-rsa ...

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

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

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

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

3
ajdecon

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

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

command = "command"

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

そして

制限

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

そして最後に

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

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

次のようになります。

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

Tunnelier を試すことをお勧めします。構成/管理がはるかに簡単です。

0
Bael

これはあなたが探している答えではないかもしれませんが、代わりにOpenVPNの使用を検討しましたか?

0
Matt Beckman