SSHサーバーのユーザーを制限して、SSH TUNNELINGの特権のみを許可するにはどうすればよいですか?つまり、SSH経由でログインしてもコマンドを実行できません。
私のLinuxサーバーはUbuntu 11.04とOpenWrtです。
SSHサーバーのユーザーを制限して、SSH TUNNELINGの特権のみを許可するにはどうすればよいですか?つまり、SSH経由でログインしてもコマンドを実行できません。
私のLinuxサーバーはUbuntu 11.04とOpenWrtです。
回答:
サーバー側では、ユーザーシェルをに設定することでこれを制限できます/bin/true
。これにより、認証が可能になりますが、実行するシェルを取得できないため、実際には何も実行されません。つまり、SSHが提供できるもののサブセットに制限されます。ポートフォワーディングを提供している場合でも、彼らはそれを行うことができます。
クライアント側では、おそらくに接続する必要があり-N
ます。これにより、シェルなどのリモートコマンドに対してクライアントがASKINGから停止し、認証部分が完了した後に停止します。これを指摘してくれたコメンターに感謝します。
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
ます。
以下には、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で即座に終了するため、すぐに切断されます。これを回避し、転送接続を開いたままにするには-N
、ssh
コマンドにフラグを追加します。これはコマンドを実行しようとしませんが、それでもTCP転送をセットアップできます。
後者のセットアップで動作するforwardコマンドの例:
ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine
あなたのバージョンの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以前では非常に制限されています。