これは、LAMPスタックの保護に関する標準的な質問です
LAMPサーバーを保護するための絶対的なガイドラインは何ですか?
これは、LAMPスタックの保護に関する標準的な質問です
LAMPサーバーを保護するための絶対的なガイドラインは何ですか?
回答:
Davidの答えは、サーバー強化の一般原則の優れたベースラインです。デビッドが示したように、これは大きな質問です。採用する特定の手法は、環境とサーバーの使用方法に大きく依存します。警告、これはテスト環境で構築して適切に実行するために多くの作業を要する場合があります。その後、実稼働環境、さらに重要なことにはビジネスプロセスに統合するための多くの作業が続きます。
ただし、最初に、組織に強化ポリシーがあるかどうかを確認します。これらのポリシーは最も直接的に関連している可能性があります。そうでない場合、あなたの役割にもよりますが、これはそれらを構築する絶好の機会かもしれません。また、各コンポーネントをボトムアップで個別に取り組むことをお勧めします。
L
あなたを助けるために利用可能な多くの良いガイドがあります。このリストは、ディストリビューションによっては役立つ場合とできない場合があります。
A
Apacheは保護するのが楽しい場合があります。ApacheやPHPよりもOSを強化して使いやすさを維持する方が簡単だと思います。
M
P
これは、セキュアプログラミングプラクティスの考え方全体に真っ向から取り組みます。SANSとOWASPには、この件に関するとてつもない量の情報があるため、ここでそれを再現しようとはしません。ランタイム構成に焦点を当て、開発者に残りを心配させます。LAMPの「P」はPerlを指すこともありますが、通常はPHPを指します。私は後者を想定しています。
率直に言って、このトピックに関する数冊の本に値する質問をしました。しかし、うまく機能する一般的な基本的なガイドラインがいくつかあります。
それがあなたが始めるのに役立つことを願っています。
ここに私が始めたいと思う良いチェックリストがあります。
Davidの提案に加えて、インストールのモジュール化が進むと、1つのタスク専用に作成された特定のユーザー/グループへのアクセスを制限し、スコープを制限することになるため、LAMPスタックの安全性が高まります。これは、Apacheユーザーの例です重要なシステムファイル/フォルダにアクセスできるグループではなく、それに応じて権限が設定されたApacheファイル/フォルダの場合。提供するWebサイトに関連付けられているMySqlテーブルにアクセスできるユーザー。これらのテーブルのみ。さらに、PHP呼び出しから最小限のアクセスを許可するようにアクセスを制限できます。また、PHPファイルで使用/公開されるMySQLユーザー名が、別のユーザーに使用されるユーザー名またはパスワードと同じではないことを確認してください。
これが意味すること:apacheユーザーまたはMySqlユーザーのいずれかが危険にさらされた場合、apacheがアクセスできるフォルダーの範囲外(apacheユーザーの場合)およびテーブルの外部( s)/ database(s)(MySQLデータベースのユーザーの場合)。
MySQLユーザーが何らかの理由で侵害された場合、たとえば、データベースにアクセスしてMySQLからすべてのデータベースを削除し、すべてのデータを破壊することはできません。状況によっては、隔離されたデータベースのテーブルを削除したり、一部のテーブルに情報を挿入したりする可能性があるため、絶対に必要な場合にのみテーブルアクセスを許可し、必要な権限のみを許可することが重要です。テーブルの削除特権または更新特権が必要な場合は、そのユーザーに付与しないでください。
また、何らかの理由でMySQLの管理アカウントのユーザー名とパスワードが見つかった場合、システム上のユーザー名とは異なるユーザー名を使用すると、データベースにアクセスして損害を与える前に、まずシステムのセキュリティを破る必要があります。Apacheユーザーとファイルへのアクセスについても同じことが言えます。
例の時間!システムの例を挙げて、アイデアを単純化します。
システムにユーザーがいると言います(セキュリティのためにumod -lやpasswd -lなどを使用してルートを無効にする必要があります):john、barney、terence、lisa
MySQLでbigbirdという名前のユーザーを作成できます(ハッシュ化されたパスワードを使用してください)。Bigbirdには選択権限と更新権限のみがありますが、削除や作成はできません。 さらに、MySQLデータベースで作業するためにgarfieldという名前の別の管理MySQLユーザーを作成し、MySQLデータベースからrootユーザーを削除して、そのユーザーが侵害されないようにします。ガーフィールドは認められました。MySQL全体の特権(事実上、これはルートの名前を変更するだけです)。
ここで、Apacheグループまたはユーザーのいずれかを作成し、apweb2と呼びます。Appweb2は他のグループのメンバーではなく、Apacheのすべてのファイル/フォルダーは/ home / apweb2 /に保存されます。各仮想ホストには独自のサブフォルダーがあり、これらの各ホストには、そのサブフォルダーに設定されたドキュメントルートがあります。システムの残りの部分へのアクセスを誤って提供しないために、シンボリックリンクは無効になります。
また、特定のユーザー(または特定のグループ、私はそれらをsshグループに入れて、それだけでsshを使用できるようにする)のみにsshアクセスを制限できます。
また、sudo特権を持つユーザーを選択して、さらに制限することもできます。さらに進めることができる別のステップは、sshを使用できないsshユーザーを作成することです。sshを使用できないsudoを使用できる特別なユーザーを作成できます。したがって、sshしたら、別のユーザーにログインしてもらう必要があります。 sudoへのアクセス。
そのため、各セグメントをモジュール化することで、セグメントが危険にさらされても、スタック全体が危険にさらされることはなく、最初から最初からやり直す代わりに1つの問題を解決できます。