あなたが提供するかもしれない助けを事前に感謝します。 Linux(ubuntu)、Apache、仮想ホスト、およびセキュリティに関するいくつかのビットを使用して独学で学んだことはありますが、これらをすべてシームレスにまとめることはまだしていません。
また、ユーザーアカウントとサイト/仮想ホストを正しく設定していないという点で、過去に犯した間違いから難しい道を学びました。ルートとしてサーバーにsshし(非常に悪いことを知っています)、すべての仮想ホストとファイルを手動で作成したため、すべてがルートによって所有されています。古いバージョンのjoomlaが悪用され、他のすべての仮想ホストに悪意のあるスパムコードが挿入されました。
私は新しいサーバーに移行する過程にあり、仮想ホストとそれらにアクセスできるユーザーアカウントのセットアップに関して、正しい手順を探しています。サードパーティのソフトウェアを使用しているため、場合によっては、他の誰かがWebサイトファイルを調査するためにサイトにFTP接続する必要があります。
現在のサーバーはバージョン10.04ですが、新しいサーバーはバージョン12.04です。すべてのウェブサイトのファイルは下でセットアップされます
/home/www/site1.com
/home/www/site2.com
/home/www/site3.com
等
要するに、これが私が求めていることだと思います。
仮想ホストとユーザーを正しくセットアップして、サーバー上の他の仮想ホストではなく、独自のファイルにのみアクセスできるようにする方法を教えてください。たとえば、そのサイトが悪意のあるコードで悪用された場合、サーバー上の他のサイトに感染することはできません
特定のファイルにのみftpし、他のサイトにはアクセスできないように、ユーザーをどのように設定しますか。
前述のように、これらのステップのいずれかを実行する方法を詳細に説明する記事は多数ありますが、それらをシームレスに結び付けるものはありません。
誰もが提供できるヘルプを本当に感謝します。アドバイスが必要な追加情報については、お気軽にお問い合わせください。現在、chrootをセットアップするためのチュートリアルに従っていますが、途中でいくつかの矛盾を見つけたため、これを正しく行っていないのではないかと心配しています。ジェイルキットも調査しています。
「Apache virtual Host別のユーザー」と尋ねられたとき、質問はgoogleのトップの検索結果であるため、 this answer に基づいてより詳細な回答をしたいと思います。私の答えは、PHPとCGIのユースケースをカバーしていません(suPHPを使用します)。 Apacheモジュールとして使用する場合、PHPに焦点を合わせます。
Apacheモジュール Apache2-mpm-itk を使用できます。 Apache 2.4の現在のバージョンで利用可能です。ディレクティブAssignUserID
が付属しています。このディレクティブは、仮想ホストのリクエストが処理されるユーザーとグループを定義します。これは、私が最終的に行ったApacheサイト構成の例です。
<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>
もちろん、個々のDocumentRootsがそれぞれのユーザーによって所有されており、グループにアクセスできない限り、これはセキュリティを向上させるだけです。 PHP関連のセキュリティをさらに強化するために、スクリプトはDocumentRoot
にopen_basedir制限付きで投獄されます。バックエンドファイルアクセスについては、 SFTP with chroot を好みます。
注:Apache2-mpm-itkは現在、Apacheのhttp2モジュールと互換性がありません。
これはあなた自身の質問に対する答えだとは思いません。しかし、私はまだコメントできないので、「答え」領域に書く必要があります。私は季節ごとにWeb管理を行っています。安全な方法でテストして試すには、仮想マシン(つまりVirtualBox)または「古い」デスクトップコンピューターにテスト環境をセットアップする方法があります。初心者のWebホスト管理者の非常に一般的な問題の1つは、Webサーバープログラムの動作を理解することです。この場合、Apacheの動作を理解し、少なくとも構成ファイルを理解する必要があると思います。 Webmin は、Apacheやその他のサービスを管理するのに非常に役立つツール(初心者にとって)であることがわかりました。テスト環境で物事を試すのに時間がかかるので、物事がより明確になります。
あなたの質問に戻って、答えはチュートリアル記事または小さな本であると思います。開始のためにこれらの記事をチェックしてください:
http://www.servermom.org/build-ubuntu-server-a-complete-guide/