
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
結果は同じです。friend
SFTP経由でサーバーに接続できなくなりました。
質問:
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
friend
PS: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)のディレクトリパス名を指定します。パス名のすべてのコンポーネントは、ルートが所有する必要があります。他のユーザーやグループが書き込めないディレクトリ。
これにより、ユーザーはfriend
SFTPに再接続できますが、出ることはできませんが、/home/
まだアクセスできます/home/anotheruser/...
。