web-dev-qa-db-ja.com

sshユーザーが/ home /%uコンテンツのみを参照するように制限する方法

OpenSSH構成のみを使用してユーザーを/ home /%uディレクトリに制限できますか?インターネットで見つけた手順から、SSHサーバーを停止し、sshd_configファイルに以下を追加しました:

Match group sftpusers
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no

次に、SSHサーバーを再起動しました。

参考までに、ユーザーをsftpusersグループに追加しました

ユーザーは引き続きcd /を参照でき、catコマンドを使用して、システム上のファイル構造全体のファイルコンテンツ(cat /usr/bin/test.sh)を一覧表示できます

Ubuntu Server 12.04 LTSを実行しています。

7
Maheshwar

まず最初に、ChrootDirectory %hはユーザーの家に展開されるため、/home/%uではない場合でも、%hではなく/home/$USERを使用することをお勧めします。

次に、実際の問題について説明します。実行するコマンドとしてinternal-sftpを強制する必要があります。次の設定は私にとってはうまく機能し、あなたにとってもそうです:

Match group sftp
    ForceCommand internal-sftp
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

ユーザーの家はroot所有で、上記のように755の権限を持つ必要があります。

drwxr-xr-x 22 root root 4.0K Nov 24  2011 /home/testuser
7
zhenech

fakechrootの使用

  1. SSHに使用するユーザーとディレクトリを準備します。たとえば、いくつかのコマンドを/binディレクトリからユーザーのbinディレクトリにコピーすることができます。ユーザーの名前はtest、ユーザーのディレクトリは/home/testと見なされます。

  2. fakechrootパッケージをインストールします。

    # Debian-based distros
    Sudo apt install fakechroot
    
  3. OpenSSHサーバー構成ファイルを開いて編集します(例:/etc/ssh/sshd_config)。

  4. 次の行を構成ファイルに追加します(または、存在する場合は既存の行を置き換えます)。

    # Replace test with your user of choice
    Match User test
        ForceCommand fakechroot chroot /home/test
        # Other options
    
  5. ファイルを保存します。目的の特定のポートでOpenSSHサーバーを起動します。次に、SSH経由でログインしてみます。すべてが期待どおりに機能するはずです。

それが役に立てば幸い!

0
MAChitgarha