sshd_configを使用したSSHおよびSFTPの設定

sshd_configを使用したSSHおよびSFTPの設定

私はこれがあいまいさによるセキュリティであることを知っていますが、これは教育目的にのみ使用され、インターネットを介してアクセスすることはできません。内部ツールとしてのみ使用されます。

次のリンクを確認しました。 一部のユーザーに対してsftpを無効にし、sshを有効にする方法は?

問題は、下記のように私の質問に答えないことです。

あるユーザーはsftpを使用してサーバーにログインし、他のユーザーはsshを使用してサーバーにログインできる仮想サーバーを設定しようとします。

sftp部分は、この質問でさらに示されているように、sshd_configファイル内の内部sftpを強制することによって機能します。この部分が機能する方法は、ユーザーがサーバーへのSSH接続を無効にし、私が作成したSFTP刑務所にのみアクセスできるようにすることです。

SSHを介してのみChroot刑務所にアクセスできる他のユーザーの場合は、SFTPを介したアクセスを無効にする方法がわかりません。問題は、このユーザーがlsやcatなどのコマンドをブロックするために特別にchroot刑務所を作成しましたが、ユーザーがsftpを使用してサーバーにアクセスしている場合にこれらのコマンドを使用できることです。

/etc/ssh/sshd_config のセクションは次のとおりです。

Match User test1
        ChrootDirectory /home/jail
        X11Forwarding no
        AllowTcpForwarding no

# Match Group sftpusers
Match User test2
        ChrootDirectory /sftp/guestuser
        ForceCommand internal-sftp
        AllowUsers test2

私は以下を追加してみました:

ForceCommand Subsystem sftp /bin/false or
ForceCommand sftp /bin/false or
Subsystem sftp /bin/false or
to
Match User test1

ただし、上記の追加のいずれもsshd_configには適用されません。

だから私の質問は次のようになります

user1がSFTP経由でサーバーにアクセスするのを防ぐ方法はありますか?それ以外の場合は、SFTPからlsやcatなどの特定のコマンドを削除する方法はありますか?

どんなアドバイスも本当にありがとうございます。

ベストアンサー1

最も簡単な方法は、この問題を処理するためのいくつかのスクリプトを作成することです。次へ追加

Match User test1
  ForceCommand /path/to/your/script.sh

SFTP要求ではない限り、スクリプトはデフォルトでユーザーが望むように実行されます。

#!/bin/bash
if [[ "$SSH_ORIGINAL_COMMAND" =~ .*sftp-server.* ]]; then
   echo "SFTP not allowed"
   exit 255;
else
   exec "$SSH_ORIGINAL_COMMAND"
fi

おすすめ記事