web-dev-qa-db-ja.com

本番環境で使用するための安全なLAMPサーバー

Linux、Apache、MySQL、PHPサーバー(またはPerl)を本番環境で使用するために保護するための手順は何ですか?

LinuxのMySQLパスワードとrootパスワードを設定する以外に、他にどのような(おそらくそれほど明白ではない)手順を実行する必要がありますか?

また、私が余分な妄想を抱くつもりだった場合、通常は必要ないかもしれない、どのような手順を踏むことができますか?

これは基本的な単一サイトでの使用ですが、安全である必要があります。

10
WalterJ89

これらの推奨事項は私の頭から離れており、包括的であることを意図していません。

Bastilleをチェックしてください。これは、Linuxのベストプラクティスを実装する一連のスクリプトです。

プレーンテキストプロトコルを介して認証データを送信しないでください。たとえば、FTPを無効にします。 Apacheを介して認証データを送信する場合は、SSLを使用してください。

GUIインターフェイスを含む不要なソフトウェアを無効にして削除します。

SUIDビットが設定されているファイルを監査して削除します。 (これにより、root以外の能力が大幅に制限されます。個々の変更の影響を理解してください。)

パブリック書き込み可能ディレクトリを監査し、書き込み可能ビットを削除します。 (/ tmpはそのままにしておきます。)

Rootとしてデーモンを実行することは避けてください。

セキュリティのベストプラクティスについて、ソケットをリッスンするすべてのマルチユーザーソフトウェアを詳細に調査します。

システムへのユーザーの追加を回避することは、最善のアプローチの1つです。マルチユーザーシステムでは、細部にさらに注意を払う必要があります。

パスワード標準を適用します。例:文字と数字を使用した、最小10文字、英数字以外の文字。これは、パスワードファイルが侵害された場合にブルートフォースをより困難にするためです。システムを介してこれを実施します。

認証の試行が5回失敗した後、最低10分間のロックアウトでユーザーをロックアウトします。ユーザーが過去5つのパスワードを使用できないように、パスワード履歴を維持します。

大規模な環境では、複数のサブネットを使用したネットワーク分離を使用してリスクを分離することが絶対的な要件です。小規模な環境の場合は、ローカルシステムでファイアウォールを実行して、露出を制限することをお勧めします。たとえば、IPへのSSHのみを許可します。 tcpwrappersは、追加のレイヤーにも使用できます。 (/etc/hosts.allow、/etc/hosts.deny)

そしてもちろん、すべてのソフトウェアを最新の状態に保ちます。特に公開デーモン。

SSHの場合:

  • SSHプロトコルを無効にする1
  • Root認証のみを許可するwithout-password(キーペアのみ)

Apacheの場合:

  • 不要なモジュールを無効にする
  • .htaccessとパブリックディレクトリを無効にする
  • FollowSymlinkと不要なオプションを無効にします
  • 必要ない場合はPHP)をインストールしないでください。

MySQLの場合:

  • デフォルトユーザーを無効にします。
  • ワイルドカードホストは使用しないでください。
  • ユーザーごとに一意のホストを設定してください。
  • 必要な場合を除いて、TCPでリッスンしないでください。 (異常に避けられない。)
  • アプリケーションのユーザー権限を可能な限り制限します。 (書き込みにはSELECT、INSERT、UPDATE、DELETE、読み取りにはSELECT)

特にセキュリティのためにphp.iniのチューニングを調査することをお勧めします。デフォルトでは、よりリスクの高いソフトウェアです。

バスティーユ

13
Warner

これは、セットアップのベースとして使用し、分布に応じて変更できる優れた記事です: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-ランプ-ウェブ-サーバー-with-centos-5-36786

2

防衛情報セキュリティ機関 には一連の セキュリティチェックリスト があり、開始するのに適しています。さらに良いのは、各エントリの論理的根拠を理解することですが、それは簡単な答えではありません。エンクレーブ、ネットワーク、Unix、およびWebサーバーを確認することをお勧めします [〜#〜] stig [〜#〜] s。

0
mpez0