5

インターネットに接続された最初のApacheWebサーバーの管理と実行に取り掛かろうとしていますが、ApacheWebサーバーを実行するためのセキュリティと最適化のヒントに関する知識を共有したいシステム管理者や開発者がいるかどうか疑問に思いました。

たぶん、Apache Webサーバーを(Linuxボックスに)インストールした直後に行うことの上位5つ(または10)のリストを共有できます。

どんな助けでも大歓迎です。

4

6 に答える 6

9

基本

  1. 最新の安定したバージョンがインストールされていることを確認してください。古いバージョンまたは不安定なバージョンの Apache を実行すると、システムがセキュリティ上の欠陥やテストされていないソリューションにさらされる可能性があります
  2. 意図したリクエストのみが実際に処理されるようにしてください。Apache によって公開された Web リソースにがどのようにアクセスする必要があるかを検討する必要があります
  3. root として Apache を実行しないでください。これは必須です。
  4. ログを処理します。ログはどんどん大きくなる傾向があります。logrotate を設定するか、定期的にログを消去することを検討してください。
  5. 監視システムで Apache の状態を監視します。私は munin と monit を組み合わせるのが好きで、設定も維持も簡単です。Nagios などは一見の価値があります。
  6. Apache が Web アプリケーション (つまり、PHP、Perl、Rails) を提供している場合は、要求が正しいモジュールによって正しい順序で処理されることを確認してください
  7. 素敵な 404 および 500 メッセージを書きます。遅かれ早かれ、訪問者はエラーに気付くでしょう。
  8. Apache を停止して再起動します。これにより、シャウトダウンと開始の両方の手順が問題なく機能していることを確認できます。
  9. mod_securityを使用する

安全

  1. Apache を DOS から保護します。
  2. 本当に必要なモジュールだけをロードします。
  3. ログを監視して、何か奇妙なことが起こっているかどうかを確認します。

パフォーマンス

  1. ソース コードから Apache をコンパイルする場合は、必ず MPM (Multi-Processing Modules) を使用してください。
  2. 本当に必要なモジュールだけをロードします。
  3. MaxClients 設定を確認して、サーバーがスワップを開始するほど多くの子を生成しないようにします。
  4. mod_deflate モジュールを使用します。これは、ネットワーク経由でクライアントに送信される前にサーバーからの出力を圧縮できるようにする DEFLATE 出力フィルターを提供します。
于 2008-10-05T00:32:36.123 に答える
3
  • Apacheプロセスがrootとして実行されていないことを確認してください。
  • 必ず最新の安定したリリースを使用してください
  • ボックスがインターネットに直接接続されている場合は、sshなどの他のすべてのサービスについて検討したことを確認してください。
  • ローカルファイアウォールルールを注意深く調べて、厳しくします。(iptablesを参照)
  • 理解できないオプションや使用する予定のないオプションをオンにしないでください
  • 重要なパッチをすぐに学ぶことができるように、Apacheセキュリティメーリングリストに登録することを検討してください
于 2008-10-05T00:21:11.170 に答える
3
  1. Webサーバーをchrootする
  2. 不要なモジュールを無効にする
  3. 代わりに必要なのはmod_securityです
  4. Webルートのファイル整合性チェッカーを設定します
  5. 同じサーバー上の他のすべてを保護し、使用されていないものはすべてオフにします
  6. nmapMetasploitなどのツールを使用してサーバーに対してテストを実行します
于 2008-10-05T02:48:23.103 に答える
1

「ボックスに Apache をインストールした後」を「本番用に新しいサーバーのインストールを準備する」と解釈します。もちろん、これはすべて開発サーバーで行われ、SCM にコミットされるか、自動インストールに組み込まれるためです。

最適化のために行うことはすべて、実際の測定に基づいて行う必要があります。実行する予定の実際のアプリケーションを使用して、できるだけ現実的にテスト環境をセットアップします。考慮すべき点は次のとおりです。

  • MaxClients を高く設定しすぎないでください。特に大規模なアプリケーション (mod_perl、PHP など) が組み込まれた prefork サーバーでは、大量の RAM を使い果たす可能性があります。メモリを使いすぎると逆効果です。クライアントは、エラーが発生するよりも、サービスが成功するまで待つ方がよいでしょう。
  • キープアライブをオンにしているかどうかを慎重に検討してください。これらは、環境に応じて速度が速くなったり遅くなったりする可能性があります。それらをオンにすることを選択した場合は、実際のユース ケースに基づいてキープアライブ タイムアウトについて検討する必要があります。
  • 本番環境で HTTPS を使用している場合は、HTTPS を有効にしてパフォーマンス テストを行います。
  • (クライアント側のキャッシュを最大化するために) 頻繁に変更されないオブジェクトに、"Last-modified" ヘッダーと "Expires" ヘッダーを適切に設定します。さまざまなブラウザーでクライアント側のキャッシュをテストします。
  • アプリケーションが HTTPS を正しく使用していることを確認してください。ブラウザーがセキュリティ警告を生成するような方法ではありません (これは、テスト中に HTTPS を使用する必要があるもう 1 つの正当な理由です)。
于 2008-10-25T11:24:11.467 に答える
0

標準のLAMP(Linux、Apache、MySQL、PHP / PEARL / PYTHON)環境を実行している場合:MySQLをApache以外のマシンに配置します。(ネットワーク遅延のために)少数の並行プロセスのみでは少し遅くなりますが、多くの並行プロセスでははるかに高速になります。

于 2008-10-05T00:25:08.010 に答える
0

DOS (サービス拒否) 攻撃を検出するように構成されていることを確認してください。

于 2008-10-05T00:31:14.567 に答える