作業ソリューション

作業ソリューション

friend私は友達にSFTPアクセスを提供し、友達が自分のウェブサイトをホストできるように、私のサーバーに新しいユーザーを作成しました。

ユーザーがSFTPを介してサーバーに接続すると、デフォルトのフォルダはありますが、friend簡単/home/friend/にシャットダウンできることを確認しました。/home/friend/ 読み取りアクセス権でサーバー上のすべてのファイルにアクセスします。、例えば/home/anotheruser/website2/config.php!私はこれをしたくありません。

このユーザーを「刑務所/分離モード」に設定するように指示されたので、デフォルト設定が終わったら次のようにしますsshd_config

...
Subsystem sftp /usr/lib/openssh/sftp-server

...これを追加しました:

Match User friend
ChrootDirectory /home/friend
ForceCommand internal-sftp

そしてやりましたservice sshd restart

これにより、ユーザーを使用してSFTPを介してサーバーに接続できなくなりますfriend。こんな!また、Subsystem ...に置き換えてみましたが、Subsystem sftp internal-sftp結果は同じです。friendSFTP経由でサーバーに接続できなくなりました。

質問:

friend家から出ることができないようにSFTP / SSHを介してユーザーを隔離する方法は?/home/friend/


注: 読みました。chroot Jailを使用してSFTPユーザーをホームディレクトリに制限する方法SFTP専用SSHユーザーを自宅にルートに切り替えるにはどうすればよいですか? 、等。

答え1

どのOSを使用しているのかわかりませんが、刑務所に閉じ込められたSFTPユーザーを設定する必要がある場合は、以下のリンクを使用してください。以下は、刑務所に閉じ込められたSFTPユーザーを設定する方法の非常に便利なチュートリアルです。

https://access.redhat.com/solutions/2399571

その後、友達がアクセスできるように、目的のchrootディレクトリに2つのディレクトリのいずれかをマウントします。

答え2

作業ソリューション

これはチュートリアルからインスピレーションを得たSSHキーを使用して制限付きchrootユーザーとしてSFTPサーバーを構成する方法 @HeysusEscobarの答えで言及されました。

次の手順に従ってくださいroot

useradd friend   # NB: this doesn't create a home dir, see https://askubuntu.com/q/374870
passwd friend    # set the password 
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend        # this is where he'll be chrooted
mkdir /sftp/friend/home   # his home directory
mkdir /sftp/friend/www    # for websites
usermod -aG sftpusers friend   # aG for append group
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend   # set as his home directory

次の項目に追加してください/etc/ssh/sshd_config

# Subsystem sftp /usr/lib/openssh/sftp-server   # you'll probably need to comment this line
Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u

そしてservice sshd restart。それだけです!

気づく:

  • 他のユーザーはまだ可能なので、ssh他のユーザーのために何も変更しません。
  • ユーザーはfriend以下を実行できません。ssh
  • ユーザーはfriend以下を介して接続できます。sftp

friendPS:Webサイトからインターネットにアクセスできるようにするには、それをApache設定に追加します。

<VirtualHost *:80>
  ServerName friend.example.com
  DocumentRoot /sftp/friend/www
  php_admin_value "open_basedir" "/sftp/friend"
  <Directory />
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

サイト注:上記の操作を実行した後でも、PHPを使用してchroot環境を終了したり、ファイルシステム全体に影響を与えるマルウェアを実行したりすることはopen_basedirできませんか?friendリンク質問:ルートが変更または分離されたSFTPユーザーは、PHPを使用してファイルシステム全体にアクセスできます。


古い(半分だけ動作する)ソリューション

ドキュメントによると、ヘルプChrootDirectory /home/friendに置き換えてください。ChrootDirectory /home

ChrootDirectory:認証後のchroot(2)のディレクトリパス名を指定します。パス名のすべてのコンポーネントは、ルートが所有する必要があります。他のユーザーやグループが書き込めないディレクトリ。

これにより、ユーザーはfriendSFTPに再接続できますが、出ることはできませんが、/home/まだアクセスできます/home/anotheruser/...

答え3

.sshd_configファイルに対する変更を保持し、それを使用してchmod -R 700 /home/anotheruser他の人(含む)を制限するfriendことができます。chmod値の変更これが厳しすぎると、これは私が個人的に私の質問で見つけることです。ここ。 (この回答を他の回答として投稿して申し訳ありません。あなたの回答にコメントとして追加するのに十分な評判がありません。)

関連情報