通过创建单独的用户和权限来确保MySQL数据库的安全

我一直是良好做法的朋友,如果他们能帮助我们维护服务器,服务或仅是我们的信息的安全性,我将是我的好朋友。

许多管理员或用户具有的习惯(坏习惯)是通过 对于所有数据库,也就是...他们使用WordPress CMS安装站点,并作为对数据库的访问数据(WP使用MySQL服务器并使用其DB),将MySQL服务器管理用户:root

此外,他们安装任何其他Web应用程序(聊天,粘贴,论坛等)并执行相同的操作,他们始终使用MySQL的root用户...

错误!!!

这简直是​​致命的习惯。

假设我们在服务器上具有以下服务:

  1. 使用WordPress的网站或门户。
  2. 我们的支持论坛,讲座等……整个社区。
  3. 使用MySQL数据库存储用户和密码的FTP。
  4. 电子邮件用户(用户和密码)存储在MySQL数据库中。
  5. 我们安装的一个小型WebChat可以与您认识的人聊天。

在所有这五个服务中,我们都使用MySQL的root用户,以便每个服务访问数据并将其保存在相应的数据库中。

好的一天,这里有很多巨魔,但它不仅是巨魔,而且还掌握了一些漏洞利用,漏洞,黑客攻击等...决定对我们有害。

利用此错误,在我们正在使用的WebChat中找到一个错误,它设法访问WebChat文件,包括WebChat配置文件,并且…显然,在此文件中,存在WebChat用于访问密码的用户名和密码。 MySQL服务器,您猜怎么着? …根本就不是ROOT USER!

通过获取此信息,巨魔可以非常简单地进行以下操作:

  1. 删除我们和/或窃取与我们拥有的站点或门户网站相关的所有内容(WordPress)。
  2. 您可以从我们以及使用论坛(我们创建的社区)的用户中删除和/或窃取信息。
  3. 您还可以窃取在我们的服务器上拥有电子邮件帐户的所有用户的用户名和密码,以及窃取其电子邮件中的信息,模拟他人等。
  4. 现在最后,您可以在我们的FTP服务器上使用一个帐户,并上传任何包含恶意软件的文件,这将使您获得对我们服务器的绝对控制和全面控制。

那么你觉得呢? ……🙂

您是否看到不为我们拥有的每个数据库创建独立用户而可能发生的一切?

这不是夸大其词的朋友,这很容易发生……好吧,触发灾难所需要的只是在已安装的某些Web应用程序中的错误。

现在…

如何为每个Web应用程序创建单独的MySQL用户?

首先,我们必须以root用户身份进入MySQL服务器,因为他是具有创建数据库,建立权限,创建用户等特权的用户:

mysql -u root -p

当他们写下以上内容并按 [输入] 将要求他们输入MySQL root用户的密码,然后输入密码并按 [输入] 再次,您将立即显示以下内容:

现在我们将创建一个名为«的数据库网络聊天室“:
CREATE DATABASE webchatdb;

注意分号«;»该行的末尾。

准备好了,您已经创建了数据库,现在让我们继续创建用户«网络聊天用户«使用密码«密码delputowebchat“:

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

现在神奇了……我们将赋予所有特权(读写) 网络聊天用户 仅在数据库中 网络聊天室:

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

瞧,用户已经在该数据库中拥有权限...现在只剩下要刷新对MySQL的权限,也就是说,告诉MySQL重新读取用户的权限,因为我们刚刚对他们进行了更改:

FLUSH PRIVILEGES ;

我给你留下了截图:

这就是一切。 通过对我们使用的每个Web应用程序执行此操作,我们保证在万一它们设法破坏其中一个Web应用程序的情况下,其他Web应用程序将是安全的(至少从MySQL的角度来看)

什么是好习惯? 😉

我希望它对您和我都一样有用,因为我试图尽我所能解释它。

问候


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   马丁

    好的KZKG帖子,如果在论坛上,我会发个粘帖!

    1.    KZKG ^ Gaara

      谢谢😀

      1.    古巴红

        您为网络聊天输入的密码很好,与mysql有关的另一件事是其内存的使用

  2.   日向_宁次

    呵呵,谢谢您使我想起MySQL命令,现在让我们看看在局域网上拥有的“魔兽世界”服务器数据库是否具有“安全性”。

  3.   sieg84

    我对此的知识为零,但对于将MySQL用于Amarok而言,这几乎是相同的?
    创建数据库amarokdb;
    将所有特权授予amarokdb *通过'password'标识给'amarokuser'; 冲洗特权;

    1.    KZKG ^ Gaara

      我已经很长时间没有使用Amarok了,但是如果您使用的是MySQL数据库,那么从理论上讲,它也应该如此。

  4.   卡洛斯·安德烈斯·雷斯特雷波

    您好,如果您在Linux中为针对Web服务器的安全性创建了一个条目,这很好,其中许多服务器没有适当的安全性,并且该服务器的管理员也不是专家,他们只是在为您提供便利,例如使用服务器中的symlink允许读取同一服务器上其他帐户的配置文件,许多管理员并不知道这一点,这就是为什么网站污名泛滥的原因

    问候

    1.    KZKG ^ Gaara

      你好,
      欢迎光临本站🙂

      到目前为止,我并不是真正的专家,但是我将尽力贡献出我多年来积累的一点知识🙂

      很少有网络管理员会做的另一件事是,分别给具有apache的站点授予特权,即用户和组www-data(或类似名称),这对每个站点来说都是不同的,然后将其中的每一个封闭。

      问候

  5.   黑客775

    好提示

    问候

    1.    KZKG ^ Gaara

      谢谢

  6.   纳米

    我讨厌您终端的外观,背景字母使我无法集中精力。 你是个他妈的疯狂的xD

    除此之外,这很有趣,因为我已经从这些事情中看到了服务中断的可悲案例。

    现在,不仅依赖于此,安全性还在于数据库的构建方式,一位老师向我解释说,但是我还没有沉浸在数据库中……我们应该弄混MongoDB = D天

  7.   卡洛斯·科罗内尔

    今天我租用的服务器发生了这种情况

    我按照您的步骤进行操作,进入cpanel并查找MYSQL数据库,它告诉我该数据库已损坏。

    我不知道现在如何在root用户下输入
    我是这方面的新手,但是在这里阅读您会学到很多东西,希望您能引导我使用

    1.    KZKG ^ Gaara

      你好🙂
      您拥有的是主机(SharedHosting)或VPS(虚拟服务器)?

      如果您拥有托管服务而不是VPS,则应查看托管服务是否具有SSH访问权限(请联系向您出售主机的公司的技术支持,并询问他们如何通过SSH访问),通过SSH输入后,该用户将不是root用户,但必须使用安装该Web应用程序时输入的用户。

      实际上,您的主题很复杂,因为变体和可能性非常多,我建议您在我们的论坛中打开一个新主题,这将为您提供更舒适的服务-» http://foro.desdelinux.net

      问候😀

  8.   Bossbrondem

    好,

    我知道,最好不要给除root以外的任何用户所有特权。 但是,自从我安装phpmyadmin以来,已经创建了具有所有特权的新用户“ phpmyadmin”。 似乎应该这样做,因为在MySQL中它只是管理数据库的图形版本。 无论如何,我想确保它是否正常,还是应该对用户“ phpmyadmin”的特权进行一些修改。

    问候和谢谢!

  9.   灵光

    优秀的…
    我是全心全意做事的人之一,但你让我的朋友睁开了眼睛..
    非常感谢…