複数のユーザーでApache仮想ホストを正しくセットアップする


15

あなたが提供するかもしれない助けを事前に感謝します。Linux(ubuntu)、Apache、仮想ホスト、およびセキュリティに関するいくつかのビットを使用して独学しましたが、これらをすべてシームレスにまとめることはまだしていません。

また、ユーザーアカウントとサイト/仮想ホストを正しく設定していないという点で、過去に犯した過ちから難しい方法を学びました。ルートとしてサーバーにsshし(非常に悪いことを知っています)、すべての仮想ホストとファイルを手動で作成したため、すべてがルートによって所有されています。古いバージョンのjoomlaが悪用され、他のすべての仮想ホストに悪意のあるスパムコードが挿入されました。

私は新しいサーバーに移行する過程にあり、仮想ホストとそれらにアクセスできるユーザーアカウントのセットアップに関して、従うべき正しい手順を探しています。サードパーティのソフトウェアを使用しているため、場合によっては、他の誰かがWebサイトファイルを調査するためにサイトにFTP接続する必要があります。

現在のサーバーはバージョン10.04ですが、新しいサーバーはバージョン12.04です。すべてのウェブサイトのファイルは下でセットアップされます

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

要するに、これが私が求めていることだと思います。

  1. 仮想ホストとユーザーを正しくセットアップして、サーバー上の他の仮想ホストではなく、自身のファイルにのみアクセスできるようにする方法を教えてください。たとえば、そのサイトが悪意のあるコードで悪用された場合、サーバー上の他のサイトに感染することはできません

  2. ユーザーが特定のファイルにのみftpし、他のサイトにはアクセスできないようにユーザーを設定するにはどうすればよいですか。

前述のように、これらの手順のいずれかを実行する方法を詳しく説明する記事は多数ありますが、それらをシームレスに結び付けるものはありません。

誰でも提供できるヘルプを本当に感謝します。アドバイスが必要な追加情報については、お気軽にお問い合わせください。現在、chrootをセットアップするためのチュートリアルに従っていますが、途中でいくつかの矛盾を見つけたため、これを正しく行っていないのではないかと心配しています。ジェイルキットも調査しています。

回答:


6

「apache仮想ホストの個別ユーザー」と尋ねられたとき、質問はgoogleのトップの検索結果なので、この回答に基づいてより詳細な回答をしたいと思います。私の答えは、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関連のセキュリティをさらに強化するため、スクリプトはDocumentRootopen_basedir制限で投獄されます。バックエンドファイルアクセスについては、chrootを使用しSFTPを好みます。

注:現在、apache2-mpm-itkはApacheのhttp2モジュールと互換性がありません。


1

これはあなた自身の質問に対する答えだとは思いません。しかし、私はまだコメントできないので、「回答」領域に書き込む必要があります。私は季節ごとにWeb管理を行っています。安全な方法で物事をテストして試す1つの方法は、仮想マシン(つまりVirtualBox)または「古い」デスクトップコンピューターでテスト環境をセットアップすることです。初心者のWebホスト管理者の非常に一般的な問題の1つは、Webサーバープログラムの動作を理解することです。この場合、Apacheの動作を理解し、少なくとも構成ファイルを理解する必要があると思います。Webminは、Apacheやその他のサービスを管理するのに非常に役立つツールであり、初心者にとっては便利だと思います。テスト環境で物事を試すのに時間がかかるので、物事がより明確になります。

あなたの質問に戻って、答えはチュートリアル記事または小さな本になると思います。開始のためにこれらの記事をチェックしてください:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/


ありがとう、バイオサイバーマン。これらはほとんど私が従う基本的な手順であり、かなり精通しています。唯一の違いは、各Webサイトを別のユーザーにchownしなかったことです。これは次に試してみたいことですが、これによりvirtualhostsフォルダーが互いに保護されますか?Jailkitはソリューションの一部のように見えますが、100%確信はありません。過去にwebminで遊んだことがあるので、webminを再訪して、私の質問のいずれかで役立つかどうかを確認します。
user249729 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.