web-dev-qa-db-ja.com

Apacheサーバー強化のベストプラクティス?

Apacheサーバーを保護するためのベストプラクティス、推奨事項、必要な資料は何ですか?

104
Eric Warriner

Center for Internet Security(CIS)ガイドを入手して、Apacheを保護します(セキュリティを強化する方法を詳しく説明しています)。

編集:リンクを更新 CIS Apache HTTP Server 2.2.x Benchmark

Nessus のライセンスをお持ちの場合は、監査テンプレートを取得して自動チェックを実行できます。

alt text

31
Tate Hansen
  • SSHキーベースのログインを使用する
  • 安全なMySQL
  • PhpMyAdmin、webminなどを無効にする
  • 不要なすべてのポート/プロセスを閉じます
  • ファイル整合性チェッカーを使用する
  • Mod_securityを使用する
  • 適切な権限/グループを設定する

これは良いガイドです:
https://serverfault.com/questions/212269/tips-for-securing-a-lamp-server

強化の基本ガイド: http://www.wpsecure.net/server-guide/

Phpを実行している場合: http://www.madirish.net/?article=229

Apacheログで404(またはその他のステータスコード)を見つける
awk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head

12
Wyck

Apache構成をセキュリティで保護するための20の方法 の直接の盗用だったため、当初受け入れられたこの質問に対する最初の高い投票の回答は削除されました。そのページは素晴らしいリソースです。

@RoryMcCuneもその回答へのリンクとしてこれを投稿しました:役立つ可能性のある ModSecurityコアルールセット を開発するOWASPプロジェクトがあります。

7
Jeff Ferland

ここには良いアドバイスがたくさんあるので、すでに述べたことは繰り返さない。しかし、私が言うことは:

デフォルトのエラーページを、Webサーバーのリリースやカーネルリビジョンを提供しないものに置き換えることを忘れないでください。私は各デフォルトのhtmlを「エラー400」のような1つのライナーで置き換える傾向があります。それは離れてシステムについてほとんど何も与えません。このプリンシパルは、カスタムエラーページを表示できるすべてのWebサーバーに適用されます。これらはすべて、デフォルトでは必要以上の情報を提供します。 ServerSignatureはこれを隠すと思いますが、多くの場合は隠しません。

また、すべてのデフォルトのHTMLコンテンツ(言語固有など)を削除することを忘れないでください。そのため、フィンガープリント作成ははるかに困難です。

良い読み物に関する限り、ホワイトペーパー Apcon 2008から は読む価値があります。

Mod_Security が何度か言及されていますが、これはWebアプリケーションにより適しているため、静的コンテンツのみを提供している場合、too多くの攻撃がありますが、静的Webサーバーに影響を与える可能性のあるリクエスト処理中の防御に役立ちます。

私が言及するもう1つのことは、ログを適切に管理しておらず、システムを注意深く監視していない場合、攻撃者がそれに気付かずに強打する危険を冒すことです。

6
Ori

すべての一般的なセキュリティ原則が適用されます。必要なモジュールのみを実行し、不要な機能をオフにし、権限/所有権を整理します(ほとんどのコンテンツは読み取り専用です。ファイルに400パーミッション以上のものが必要なのはなぜですか?)。

CGIジョブや、2つの異なるセキュリティメカニズムを使用して同じコンテンツを2回提供する異なるvhostなど、Apacheに固有のものは、見つけるのがはるかに困難です。正確に自動化されたチェックではなく、Apache、基盤となるOS、およびApacheで実行されているアプリケーションが実行していることを実際に理解する必要があります。

完全を期すために、ここに Apache 2.2セキュリティチェックリスト をDISAから提供しています。更新:Webサーバー強化ドキュメントの 全体のコレクション へのリンクです。

6
Marcin

Apache mod_security を見てみる価値があるかもしれません。

最近、一部のサーバーでそれを実行しています。バージョン番号の変更など、Apache自体にいくつかの構成の微調整を実行するだけでなく、SQLなどのさまざまな攻撃から保護するのに役立つWebアプリケーションファイアウォールとしても機能します注射など.

4
Mark Davidson

Apache Webサーバーを保護する方法

「ジャンボジェットを飛ばすにはどうすればよいですか」または「脳手術を行うにはどうすればよいですか」と尋ねた場合、どのような答えを期待できますか。Webサーバーを安全にする場合も同じです。何千時間ものトレーニング、練習、研究を行う必要があります。 。しかし、誰もがどこかから始めなければならないので...

サーバーを強化する方法についてのインターネット上の基本的なチェックリストはたくさんありますが、私のコメントによると、他の場所では、品質が大きく異なります。

良い情報源として sans one をお勧めします。

チェックリストをたどると、次のことができる手段を確立する必要があります

  • サーバーの整合性を検証します(ルートキット検出器とともに、tripwireなどのホストベースのIDSが必ず必要です)。
  • パッチに注意して適用する
  • システムを既知の良好な状態に回復する

セキュリティインシデントが発生した場合の対処方法については計画しないでください。それが起こったときいつ何をすべきかを計画します。

システムをセットアップして構成したら、ハードディスクを交換し、元のディスクを使用せずにサービスを再開して実行するのにかかる時間を確認します。

2
symcbean

これはApache関連だけでなく(nginx + php-fpmも含まれます)、しばしば忘れられます:php-eastereggs、php.ini経由で切り替えられる可能性があります

  expose_php = off

phpinfo.phpを残しておくほどひどいことではありませんが、通常、非常に遅延したシステム管理へのヒントになります。

easter-eggs を参照

良い糸になった。多くの人が真実を言います。

彼らは1つ忘れました OpenBSD の方法:

OpenBSDでは、Apache httpd(8)サーバーはデフォルトでchroot(2)されています

httpd(Apacheのv.1)はデフォルトでOpenBSDに含まれており、デフォルトでchrootされています。

他のUnixライクなOSのApache2またはnginxを使用すると、簡単に繰り返すことができます。

0
user29424

Apacheの最新バージョンを使用し、OSにパッチを適用し、opensslやその他のサードパーティにもパッチを適用します。

不要なポートをブロックします。

これにより、いくつかの既知の脆弱性から保護されますが、もちろん、常にゼロデイの影響を受けやすくなります。

0
Novice User

ここで6つの主要なステップ:

  1. アプリケーションコードを保護する
  2. 使用されていないすべてのモジュールを無効にします。すべて無効にしてから、モジュールを1つずつ追加してください。
  3. webフォルダー内のすべてのスクリプトとバックアップファイルを削除します。
  4. ディレクトリ一覧を無効にする
  5. modsecurityを使用して、アプリケーションレベルの攻撃からアプリケーションを保護します。
  6. Fail2banを使用してHTTPエラー(403、404)をトリガーします。

ネットワークファイアウォールに依存しないでください。Webセキュリティについて話すときは役に立ちません。

0
Mike