
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-guy
SSH対応コンピュータを介して(そのコンピュータまたは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ですぐに終了するため、すぐに切断されます。これを防ぎ、転送接続を開いたままにするには、そのフラグをコマンドに追加します-N
。ssh
これはコマンドの実行を試みませんが、まだ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 以前では、一致グループは非常に制限されています。