
私はこれがあいまいさによるセキュリティであることを知っていますが、これは教育目的にのみ使用され、インターネットを介してアクセスすることはできません。内部ツールとしてのみ使用されます。
次のリンクを確認しました。 一部のユーザーに対して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