GNU/Linux >> Linux の 問題 >  >> Linux

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

サーバー側では、ユーザー シェルを /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 以前では非常に制限されています。


Linux
  1. SFTPを許可してSSHを禁止する方法は?

  2. SSH経由でrootユーザーのログインを無効にする方法

  3. Sshアクセスで新しいユーザーを作成する方法は?

  1. SSHログインを特定のIPまたはホストに制限する

  2. Linux で Chroot SFTP をセットアップする方法 (SSH ではなく SFTP のみを許可する)

  3. Linux で su アクセスを PAM によってのみユーザーに制限する方法

  1. root 以外の特定のユーザーのみに crontab の使用を許可する方法

  2. 別のユーザーとして ssh する方法

  3. ssh トンネリングのみのアクセス