サーバー側では、ユーザー シェルを /bin/true
に設定することでこれを制限できます。 .これにより、認証は可能になりますが、実行するシェルがないため、実際には何も実行されません。これは、SSH が提供できるもののサブセットに制限されることを意味します。ポート フォワーディングが提供されている場合は、引き続きそれを行うことができます。
クライアント側では、おそらく -N
で接続したいと思うでしょう。 .これにより、クライアントがシェルなどのリモートコマンドを要求するのを防ぎます。認証部分が完了した後、クライアントは停止します。 これを指摘してくれたコメンターに感謝します.
以下には、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
これにより、ユーザー 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 [email protected]
使用している 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 で使用できますが、Match Group セクションでは使用できません。一致グループは、OpenSSH 4.x 以前では非常に制限されています。