個別のユーザーと権限を作成して、MySQLデータベースを安全に保ちます

私は常にグッドプラクティスの友人であり、サーバー、サービス、または単に情報のセキュリティを維持するのに役立つ場合はなおさらです。

多くの管理者またはユーザーが持っている習慣(悪い習慣)は、 ルート すべてのデータベースについて、つまり... WordPress CMSを使用してサイトをインストールし、データベースへのアクセスデータとして(WPがMySQLサーバーを使用してそのDBを使用するため)、MySQLサーバー管理ユーザーを配置します。 :ルート

また、他のWebアプリケーション(チャット、貼り付け、フォーラムなど)をインストールして同じことを行い、常にMySQLのrootユーザーを使用します...

エラー!!!

これは単に致命的な習慣です。

サーバー上に次のサービスがあるとします。

  1. WordPressを使用するサイトまたはポータル。
  2. 私たちのサポートフォーラム、講演など...コミュニティ全体。
  3. MySQLデータベースを使用してユーザーとパスワードを保存するFTP。
  4. 電子メールユーザーは、MySQLデータベースに保存されます(ユーザーとパスワード)。
  5. 知っている人とチャットするためにインストールする小さなWebChat。

そして、それらすべてにおいて、5つのサービスでMySQLルートユーザーを使用して、各サービスがデータにアクセスして対応するデータベースに保存するようにします。

ある晴れた日、そこにある多くのトロールのいずれかですが、これはトロールであるだけでなく、いくつかの悪用、脆弱性、ハッキングなどをマスターしています...私たちに有害なことをすることにしました。

使用しているWebChatのバグを見つけ、このバグを利用して、WebChat構成ファイルを含むWebChatファイルにアクセスします。このファイルでは、明らかに、WebChatが使用するユーザー名とパスワードです。 MySQLサーバーにアクセスして、何を推測しますか? …それは、ルートユーザーに他なりません。

この情報を取得することにより、非常に簡単な方法でトロルは次のことができます。

  1. 私たちを削除するか、私たちが持っているサイトまたはポータル(WordPress)に関連するすべてのものを盗みます。
  2. あなたは私たちから、そして私たちが作成したコミュニティであるフォーラムを使用する私たちのユーザーから情報を削除および/または盗むことができます。
  3. また、サーバーにメールアカウントを持っているすべてのユーザーのユーザー名とパスワードを盗んだり、メールから情報を盗んだり、なりすましたりすることもできます。
  4. そして最後に、FTPサーバーのアカウントを使用して、マルウェアを含むファイルをアップロードできます。これにより、サーバーを完全に完全に制御できるようになります。

さて...あなたはどう思いますか? …🙂

私たちが持っているデータベースごとに独立したユーザーを作成しないだけで起こり得るすべてのことを理解していますか?

これは誇張された友達ではありません、これは驚くほど簡単に起こる可能性があります...まあ、大惨事を解き放つために必要なのはあなたがインストールしたいくつかのウェブアプリケーションの単なるバグです。

今…

Webアプリケーションごとに個別のMySQLユーザーを作成するにはどうすればよいですか?

まず、rootユーザーを使用してMySQLサーバーに入る必要があります。これは、rootユーザーがデータベースの作成、アクセス許可の確立、ユーザーの作成などの権限を持っているためです。

mysql -u root -p

彼らが上記を書いて押すとき [入る] MySQLルートユーザーのパスワードの入力を求められます。入力して押すと、 [入る] 繰り返しますが、すぐに次のようなものが表示されます。

次に、«という名前のデータベースを作成しますウェブチャット「:
CREATE DATABASE webchatdb;

セミコロンに注意してください«;»行の終わり。

準備ができました。データベースはすでに作成されています。次に、ユーザーの作成に進みましょう«ウェブチャットユーザー«パスワード付き«パスワードdelputowebchat「:

CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';

今魔法...私たちはすべての特権(読み取りと書き込み)を与えます ウェブチャットユーザー DB内のみ ウェブチャット:

GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;

そして出来上がり、ユーザーはすでにそのデータベースの権限を持っています...今はMySQLへの権限を更新するだけです。つまり、ユーザーに変更を加えたばかりなので、ユーザーの権限を再読み込みするようにMySQLに指示します。

FLUSH PRIVILEGES ;

私はスクリーンショットを残します:

そして、これがすべてです。 使用する各Webアプリケーションに対してこれを行うことにより、それらがそれらのWebアプリケーションのいずれかに違反した場合でも、他のアプリケーションが安全であることを保証します(少なくともMySQLの観点から)

良い習慣は何ですか? 😉

できるだけ簡単に説明しようとしたので、私にとってもあなたにとってもお役に立てば幸いです。

よろしく


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   マーティン

    良い投稿KZKG、もしそれがフォーラムにあったら、私は付箋をお願いします!

    1.    KZKG ^我愛羅

      ありがとう😀

      1.    キューバレッド

        あなたがウェブチャットのために置いたパスワードは良いです、mysqlと関係があるもう一つのことはそのメモリの使用です

  2.   日向ネジ

    Hehehe、MySQLコマンドを思い出させてくれてありがとう。それでは、LAN上にあるWorld ofWarcraftサーバーデータベースに「セキュリティを設定した」かどうかを見てみましょう。

  3.   ジーク84

    これに関する私の知識はありませんが、MySQL for Amarokを使用する場合もほぼ同じですか?
    データベース amarokdb を作成します。
    amarokdbのすべての特権を付与します。* TO'amarokuser 'IDENTIFIED BY'password'; FLUSH PRIVILEGES;

    1.    KZKG ^我愛羅

      私はAmarokを長い間使用していませんが、MySQLであるDBを使用する場合、理論的にはそのように機能するはずです。

  4.   CarlosAndrésRestrepo

    こんにちは、LinuxでWebサーバーに対するセキュリティのエントリを作成するとよいでしょう。それらの多くは適切なセキュリティを備えておらず、その管理者は適切な専門家ではありません。たとえば、サーバーでsymlinkを使用すると、作業が容易になります。同じサーバー上の他のアカウントの構成ファイルを読み取ると、多くの管理者はこれに気づかず、そのためWebサイトの改ざんが急増します

    よろしく

    1.    KZKG ^我愛羅

      こんにちは、
      サイトへようこそ🙂

      私は自分自身をこの問題の専門家だとは思っていませんが、私が長年にわたって習得した小さな知識に貢献しようと思います🙂

      多くのネットワーク管理者が行っていないもうXNUMXつのことは、apacheを個別に使用するサイト、つまり、サイトごとに異なるユーザーとグループのwww-data(または同様のもの)に特権を付与することです。これらのそれぞれ。

      よろしく

  5.   ハックロパー775

    良いヒント

    よろしく

    1.    KZKG ^我愛羅

      ありがとう

  6.   ドワーフ

    私はあなたの端末の外観が嫌いです、背景の文字は私の集中力から私を連れ出します。 あなたはクソクレイジーxDです

    それ以外では、それらのことによるサービス停止の悲惨なケースを見たので、それは興味深いです。

    さて、それはそれに依存するだけでなく、セキュリティはデータベースがどのように構築されたかにあると先生は私に説明しました、しかし私はまだDBにあまり没頭していません...私たちは最近MongoDB = Dを台無しにする必要があります

  7.   カルロス・コロネル

    ちょうどそれは私の借りたサーバーで今日私に起こりました

    私はあなたの手順に従い、cpanelに行き、MYSQLデータベースを探しましたが、故障していることがわかりました。

    ルートユーザーの下に今入力する方法がわかりません
    私はこの分野の新人ですが、ここを読むと多くのことを学ぶことができます。

    1.    KZKG ^我愛羅

      こんにちは🙂
      あなたが持っているのはホスティング(SharedHosting)またはVPS(仮想サーバー)ですか?

      VPSではなくホスティングを使用している場合は、ホスティングにSSHアクセスがあるかどうかを確認する必要があります(ホスティングを販売した会社のテクニカルサポートに連絡し、SSH経由でアクセスする方法を尋ねてください)、SSHを介して入力すると、ユーザーはrootになりませんが、そのWebアプリケーションをインストールしたときに入力したユーザーを使用する必要があります。

      実際、あなたのトピックは複雑です。バリエーションや可能性が非常に多いため、フォーラムで新しいトピックを開くことをお勧めします。そこでは、より快適にサポートできるようになります-» http://foro.desdelinux.net

      ご挨拶😀

  8.   bossbrondem

    良いです、

    root以外のユーザーにすべての権限を与えないことをお勧めします。 ただし、phpmyadminをインストールしてから、すべての権限を持つ新しいユーザー「phpmyadmin」が作成されました。 これはMySQLでデータベースを管理するためのグラフィカルバージョンにすぎないため、これが当てはまるのは当然のことのようです。 とにかく、それがそのままで問題ないかどうか、またはユーザー「phpmyadmin」の特権に何らかの変更を加える必要があるかどうかを確認したいと思います。

    ご挨拶とありがとう!

  9.   エマニュエル

    優秀な…
    私は根っこですべてをする人の一人ですが、あなたは私の目を開いた友人です..
    どうもありがとう…