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


31

SSHサーバーのユーザーを制限して、SSH TUNNELINGの特権のみを許可するにはどうすればよいですか?つまり、SSH経由でログインしてもコマンドを実行できません。

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

回答:


34

サーバー側では、ユーザーシェルをに設定することでこれを制限できます/bin/true。これにより、認証が可能になりますが、実行するシェルを取得できないため、実際には何も実行されません。つまり、SSHが提供できるもののサブセットに制限されます。ポートフォワーディングを提供している場合でも、彼らはそれを行うことができます。

クライアント側では、おそらくに接続する必要があり-Nます。これにより、シェルなどのリモートコマンドに対してクライアントがASKINGから停止し、認証部分が完了した後に停止します。これを指摘してくれたコメンターに感謝します。


私はこれを試してみます:P thx!
ランスベインズ

2
Calebの答えに追加するには、シェルを実行しないようにクライアントに指示する必要がある場合があります。opensshコマンドラインでは、これは-Nフラグを使用して行われます。PuTTYにも同様のオプションがありますが、正確な名前は思い出せません。
ビルB

うーん、それは基本的にクライアント側のセキュリティですよね?サーバー側のセキュリティ設定を探していますが、ありがとうございます!
ランスベインズ

2
申し訳ありませんが、私は明確ではありませんでした-私はサーバー設定と組み合わせて意味しました。これまでの私の経験では、シェルをシェルではないものに設定すると、シェルを開くことができてもできないので、まったく接続できません。そのため、セキュリティはサーバー側で適用されます(Calebの方法を使用)が、その後接続に問題がある場合は、クライアント側のスイッチを設定する必要があります。
ビルB

3
このようなユーザーはで作成しuseradd sshtunnel -m -d /home/sshtunnel -s /bin/trueます。
fracz

13

以下には、X11およびSSHエージェントのソケット転送も許可されないという利点がありますが、これはまだCalebsの方法で許可されている可能性があります。別の利点は、ユーザーが他の方法でデフォルトのシェルを変更できる場合、これにより、SSHアクセスがTCP転送のみに制限されることです。

以下にあなたを入れてください/etc/ssh/sshd_config

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

ユーザーthat-restricted-guyがSSH対応マシンを介してTCP接続を転送できるようにします(localhostこのマシンへの接続、さらにこのマシンから他のマシンへの接続も可能)。

さらに制限したい場合(これは良い考えです)、次のこともできます。

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

これにより、ユーザーeven-more-restricted-guyは接続を127.0.0.1 TCPポート12345にのみ転送できるようになります(SSH対応マシンで表示されるため)。

ユーザーが通常接続すると、/bin/falseコマンドがトリガーされ、コード1で即座に終了するため、すぐに切断されます。これを回避し、転送接続を開いたままにするには-Nsshコマンドにフラグを追加します。これはコマンドを実行しようとしませんが、それでもTCP転送をセットアップできます。

後者のセットアップで動作するforwardコマンドの例:

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

1
私は、この答えをカレブスの答えよりも改善された解決策と言い換えました。
aef

確かに。私も掃除した。誤解が解決するのを見るのは良いことです。おやすみなさい。
-Jakuje

1

あなたのバージョンの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

異なる動作または制限を提供するグループごとに、これらのMatch Groupブロックを繰り返すことができます。

この人が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の古いバージョンで使用できますが、Match Groupセクションでは使用できません。マッチグループは、OpenSSH 4.x以前では非常に制限されています。

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