ルートが変更または分離されたSFTPユーザーは、PHPを使用してファイルシステム全体にアクセスできます。

ルートが変更または分離されたSFTPユーザーは、PHPを使用してファイルシステム全体にアクセスできます。

一つ与えたい私のサーバーのWebホスティングスペースを私の友人に分離する。私はそうしました:

useradd friend 
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend     
mkdir /sftp/friend/home
mkdir /sftp/friend/www 
usermod -aG sftpusers friend
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend 

私はこれを次に追加しますsshd_config

Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u

Apacheの設定は次のとおりです。

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

仕組み:friendSFTPはJailroot環境からアクセスできます。/sftp/friendSFTPを終了できません。。これはいいですね。

しかし、私は彼がPHPを使用してファイルシステムの他のファイルを見ることができることを知っていました。彼が以下をindex.php含むファイルを生成した場合:

<?php
print_r(scandir('/'));
?>

彼はファイルシステムで他のファイルを見ることができArray ( [0] => . [1] => .. [2] => bin [3] => boot [4] => dev [5] => etc [6] => home [7] => lib [8] => lib64 [9] => media [10] => mnt [11] => opt [12] => proc [13] => root [14] => run [15] => sbin [16] => sftp [17] => srv [18] => sys [19] => tmp [20] => usr [21] => var )、PHPを使ってそこからいくつかのファイルを開くこともできます。

質問:

/sftp/friend/PHPを使用しても彼がどんなものにもアクセスできないようにする方法は何ですか?

はい

php_admin_value "open_basedir" "/sftp/friend"

構成に<VirtualHost>十分な保護がありますか?

または、マルウェアを実行して他のウェブサイトにアクセスすることができますか?

リンク:仮想ホスト/ウェブサイトのPHPが同じApacheサーバー上の他の仮想ホスト/ウェブサイトのディレクトリに書き込むのを防ぐ方法は?

ベストアンサー1

sshdChrootDirectorySSHログインとSFTP / scpファイル転送にのみ適用されます。

ApacheのDocumentRootは異なります。 HTTPリクエストに応答するApacheサービスファイルに関連してURI名前空間のルートを定義しますが、Webサーバーが実行または通信できる他のプロセス(PHPスクリプトインタプリタなど)。

ApacheプラグインでPHPを使用している場合は、php_admin_valueApacheの設定が<VirtualHost>適切なソリューションのようです。ただし、php-fpmPHP処理へのより間接的なアクセスを使用または準備する場合は、他の設定ファイル(おそらく/etc/php/7.3/fpm/pool.d/www.confDebian 10と同じですか?)またはまったく異なることをしてください。

おすすめ記事