web-dev-qa-db-ja.com

共有Webホスティングサーバーを安全に保つ方法は?

すべてのユーザーがSSHアクセスを利用できると仮定して、共有LAMPサーバーを安全に保つ方法は何ですか?

編集:私は主に、ユーザー自身から、およびユーザー間でサーバーを保護することを考えています。

20
Olivier Lalonde

おそらく不可能ですが、攻撃者が成功するのを難しくすることができます。

防御を強化してください:

セキュリティはシステムを強化します(おそらく以下のチェックリストの1つを参照します)

http://iase.disa.mil/stigs/checklist/ (UNIXセキュリティチェックリストを探す)
https://benchmarks.cisecurity.org/en-us/?route=downloads.multiform

追加:

grsecurity
Security-Enhanced Linux
AppArmor

上記のツールの適切な比較を以下に示します。 http://www.lifelinux.com/selinux-vs-apparmor-vs-grsecurity-345.html

セキュリティパッチを最新に保ちます。

可視性を取得:

HIDS(例 [〜#〜] ossec [〜#〜] )を導入して、ユーザーが悪い行動を取っていることを検出できるようにします。

上記のすべては継続的な努力を必要とします。それがセキュリティです。

13
Tate Hansen

私の意見で最初にすべきことは、sshポートを非標準のものに変更し、fail2banのようなものをインストールすることです。

また、ファイアウォールを微調整して、外部から未使用のポートへのアクセスをブロックすることもできます(たぶん、80、423、25とsshを許可するだけです...状況によって異なります)。

2
gbr

他の回答に加えて:

Webサーバーによって実行されるプログラム(cgi、phpなど)の権限が問題です。

Webサーバーの権限で実行すると、悪意のあるユーザーが他のユーザーから提供されたファイルにアクセスできます。ここでは、データベース資格情報を含む構成ファイルについて考えています。

これらのプログラムが個々のユーザーの許可を得て実行されると、プログラムファイル自体が変更される可能性があります。これにより、アプリケーションのセキュリティ問題の悪用が容易になります。たとえば、.phpスクリプトは、ファイルを保存するときにファイル名を適切に検証しない可能性があります。また、ユーザーはWebディレクトリに書き込み権限を必要とするため、phpプログラムにも書き込み権限があります。

SourceForgeには released Apacheモジュールと、より細かい権限を可能にするFuseファイルシステムがあります。

権限ビットは「rwx」(読み取り/書き込み/実行)セットの標準トリオにありますが、通常の「ユーザー」(所有者)、「グループ」、および「その他」のカテゴリは、「プロジェクトメンバー」のトリオに置き換えられます。 「プロジェクトが開始するApacheアクセス」、および「全員」。

プロジェクトWebファイルシステムの権限

2

wordpressは常に大規模なセキュリティの問題になり、PHP自体なども同様です。

確かに唯一の方法(私は思う)は、各サイトを個別の仮想マシンで実行することです。これは(ほぼ)あるサイトを別のサイトから完全に分離しますが、当然、すべてのVMを管理する必要があり、メモリ使用量やCPUサイクルなどが多くなります。

ああ、各VMは、継続的にすべてのソフトウェアパッチが必要です。

それは確かに検討する価値がありますが、これらすべてのサイトのトップを維持しようとするよりもはるかに安全です。

1
John Hunt