Linux、Apache、MySQL、PHPサーバー(またはPerl)を本番環境で使用するために保護するための手順は何ですか?
LinuxのMySQLパスワードとrootパスワードを設定する以外に、他にどのような(おそらくそれほど明白ではない)手順を実行する必要がありますか?
また、私が余分な妄想を抱くつもりだった場合、通常は必要ないかもしれない、どのような手順を踏むことができますか?
これは基本的な単一サイトでの使用ですが、安全である必要があります。
これらの推奨事項は私の頭から離れており、包括的であることを意図していません。
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の場合:
without-password
(キーペアのみ)Apacheの場合:
MySQLの場合:
特にセキュリティのためにphp.iniのチューニングを調査することをお勧めします。デフォルトでは、よりリスクの高いソフトウェアです。
これは、セットアップのベースとして使用し、分布に応じて変更できる優れた記事です: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-ランプ-ウェブ-サーバー-with-centos-5-36786
防衛情報セキュリティ機関 には一連の セキュリティチェックリスト があり、開始するのに適しています。さらに良いのは、各エントリの論理的根拠を理解することですが、それは簡単な答えではありません。エンクレーブ、ネットワーク、Unix、およびWebサーバーを確認することをお勧めします [〜#〜] stig [〜#〜] s。