SSHトンネルのみを許可するようにSSHユーザーを制限する方法は?

SSHトンネルのみを許可するようにSSHユーザーを制限する方法は?

SSHサーバーでユーザーを制限して許可する方法ただ特権SSHトンネル?つまり、SSH経由でログインしてもコマンドを実行できません。

私のLinuxサーバーはUbuntu 11.04とOpenWrtです。

答え1

サーバー側では、ユーザーシェルを/bin/true。これにより認証できますが、実行するシェルがないため、実際には何も実行できません。つまり、SSHが提供できるサブセットに制限されます。ポート転送を提供していても、それを行うことができます。

クライアント側では、を使用してこれを実行できます-N。これにより、クライアントがリモートコマンド(シェルなど)を要求するのを防ぎ、認証部分が完了した後にのみ停止します。これを指摘したコメント作成者に感謝します。

答え2

以下の利点は、X11およびSSHプロキシソケットの配信も無効になっていますが、Calebsモードではまだ許可されることです。もう1つの利点は、ユーザーが別の方法でデフォルトのシェルを変更できる場合、SSHアクセスはTCP転送にのみ制限されることです。

次の項目を入力してください/etc/ssh/sshd_config

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

ユーザーは、that-restricted-guySSH対応コンピュータを介して(そのコンピュータまたはlocalhostそのコンピュータから別のコンピュータに)すべてのTCP接続を転送できます。

より制限的に適用するには(良いアイデア)、次のこともできます。

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

これにより、ユーザーは127.0.0.1 TCPポート12345にのみ接続を転送できますeven-more-restricted-guy(SSH対応システムを介して表示できるため)。

ユーザーが正常に接続すると、/bin/falseコマンドが実行され、何も実行せずにコード1ですぐに終了するため、すぐに切断されます。これを防ぎ、転送接続を開いたままにするには、そのフラグをコマンドに追加します-Nsshこれはコマンドの実行を試みませんが、まだTCP転送設定を許可します。

後者の設定で機能する必要がある転送コマンドの例:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine

答え3

SSHバージョンがそれをサポートするのに十分新しい場合(openssh 5.x +)、一致グループを使用すると、人々がSSHで実行できる操作を制御できます。

基本的に私たちはそれらをSFTPユーザーとして扱いますが、TCP転送とオプションで転送できる宛先を指定します。ホームディレクトリを提供してもその下にディレクトリを作成しないと、ファイルを転送する権限がないため、ファイルを転送できません。

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

これを繰り返すだけです競争グループ各グループに異なる動作や制限を提供するブロックです。

iptablesを使用すると、この人がネットワークからアクセスできる場所をさらに制御できます。

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

「nicepeople」グループのGIDが500であるとします。

上記のSSHオプションのいくつかは、古いバージョンのopensshで利用できますが、「一致グループ」セクションでは利用できません。 OpenSSH 4.x 以前では、一致グループは非常に制限されています。

関連情報