Giữ cơ sở dữ liệu MySQL của bạn an toàn bằng cách tạo người dùng và quyền riêng biệt

Tôi luôn là một người bạn của các phương pháp hay, còn hơn thế nữa nếu chúng giúp chúng tôi duy trì tính bảo mật của các máy chủ, dịch vụ hoặc đơn giản là thông tin của chúng tôi.

Một thói quen (thói quen xấu) mà nhiều quản trị viên hoặc người dùng mắc phải là sử dụng quyền truy cập với nguồn gốc đối với tất cả cơ sở dữ liệu, nghĩa là ... họ cài đặt một trang web bằng WordPress CMS và khi truy cập dữ liệu vào cơ sở dữ liệu (để WP sử dụng máy chủ MySQL và sử dụng DB của nó), họ đặt người dùng quản trị máy chủ MySQL : nguồn gốc

Ngoài ra, họ cài đặt bất kỳ ứng dụng web nào khác (trò chuyện, dán, diễn đàn, v.v.) và làm tương tự, họ luôn sử dụng người dùng gốc của MySQL ...

LỖI!!!

Đây chỉ đơn giản là một thói quen chết người.

Giả sử chúng ta có các dịch vụ sau trên một máy chủ:

  1. Một trang web hoặc cổng thông tin sử dụng WordPress.
  2. Diễn đàn hỗ trợ của chúng tôi, các cuộc nói chuyện, vv ... của cả một cộng đồng.
  3. FTP sử dụng cơ sở dữ liệu MySQL để lưu trữ người dùng và mật khẩu.
  4. Người dùng email được lưu trữ (người dùng và mật khẩu) trong cơ sở dữ liệu MySQL.
  5. Một WebChat nhỏ mà chúng tôi cài đặt để trò chuyện với ai đó mà bạn biết.

Và trong tất cả chúng, trong 5 dịch vụ chúng tôi sử dụng người dùng gốc của MySQL để mỗi dịch vụ truy cập và lưu dữ liệu trong cơ sở dữ liệu tương ứng của nó.

Một ngày đẹp trời, có rất nhiều troll trên mạng, nhưng đây không chỉ là troll, mà còn làm chủ một số khai thác, lỗ hổng, hack, v.v. quyết định làm điều gì đó có hại cho chúng ta.

Tìm lỗi trong WebChat mà chúng tôi đang sử dụng, lợi dụng lỗi này, nó quản lý để truy cập các tệp WebChat, bao gồm tệp cấu hình WebChat và… trong tệp này, rõ ràng là tên người dùng và mật khẩu mà WebChat sử dụng để truy cập máy chủ MySQL và đoán xem? … Nó không hơn không kém là NGƯỜI DÙNG ROOT!

Bằng cách lấy thông tin này, theo một cách rất đơn giản, troll có thể:

  1. Xóa chúng tôi và / hoặc ăn cắp mọi thứ liên quan đến trang web hoặc cổng thông tin mà chúng tôi có (WordPress).
  2. Bạn có thể xóa và / hoặc lấy cắp thông tin từ chúng tôi VÀ từ những người dùng của chúng tôi, những người sử dụng Diễn đàn, cộng đồng mà chúng tôi tạo ra.
  3. Bạn cũng có thể lấy cắp tên người dùng và mật khẩu của TẤT CẢ người dùng có tài khoản email trên máy chủ của chúng tôi, cũng như lấy cắp thông tin từ email của họ, mạo danh, v.v.
  4. Và bây giờ cuối cùng, bạn có thể sử dụng tài khoản trên máy chủ FTP của chúng tôi và tải lên bất kỳ tệp nào có chứa phần mềm độc hại, điều này sẽ cho phép bạn giành được quyền kiểm soát TOTAL và TUYỆT ĐỐI đối với máy chủ của chúng tôi.

Vậy bạn nghĩ sao? … 🙂

Bạn có thấy mọi thứ có thể xảy ra chỉ bằng cách không tạo người dùng độc lập cho mỗi cơ sở dữ liệu mà chúng ta có?

Đây KHÔNG phải là một lời phóng đại bạn bè, điều này có thể xảy ra một cách dễ dàng đáng kinh ngạc ... tốt, tất cả những gì cần thiết để giải phóng thảm họa chỉ là một lỗi trong một số ứng dụng web mà bạn đã cài đặt.

Hiện nay…

Làm cách nào để tạo người dùng MySQL riêng biệt cho từng ứng dụng web?

Đầu tiên, chúng ta phải nhập máy chủ MySQL với người dùng gốc, vì anh ta là người có đặc quyền tạo cơ sở dữ liệu, thiết lập quyền, tạo người dùng, v.v.:

mysql -u root -p

Khi họ viết như trên và nhấn [Đi vào] Họ sẽ được hỏi mật khẩu của người dùng gốc MySQL, họ nhập mật khẩu và nhấn [Đi vào] một lần nữa, bạn sẽ ngay lập tức được hiển thị một cái gì đó như thế này:

Bây giờ chúng ta sẽ tạo một cơ sở dữ liệu có tên «webchatdb":
CREATE DATABASE webchatdb;

Chú ý dấu chấm phẩy «;»Ở cuối dòng.

Sẵn sàng, bạn đã tạo cơ sở dữ liệu rồi, bây giờ hãy bắt đầu tạo người dùng «người dùng webchat«Với mật khẩu«mật khẩudelputowebchat":

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

Bây giờ điều kỳ diệu ... chúng tôi sẽ trao tất cả các đặc quyền (đọc và ghi) cho người dùng webchat CHỈ trong DB webchatdb:

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

Và thì đấy, người dùng đã có các quyền trong cơ sở dữ liệu đó ... bây giờ nó chỉ còn lại để làm mới các quyền đối với MySQL, tức là yêu cầu MySQL đọc lại các đặc quyền của người dùng vì chúng tôi vừa thực hiện một thay đổi trong đó:

FLUSH PRIVILEGES ;

Tôi để lại ảnh chụp màn hình:

Và đây là tất cả mọi thứ. Bằng cách thực hiện điều này cho mỗi ứng dụng web mà chúng tôi sử dụng, chúng tôi đảm bảo rằng trong trường hợp họ quản lý để vi phạm một trong các ứng dụng web đó, các ứng dụng khác sẽ an toàn (ít nhất là theo quan điểm của MySQL)

Thực hành tốt là gì? 😉

Tôi hy vọng nó hữu ích với bạn cũng như đối với tôi, vì tôi đã cố gắng giải thích nó một cách đơn giản nhất có thể.

Liên quan


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   một giống én dijo

    KZKG đăng bài tốt, nếu nó ở trong diễn đàn, tôi sẽ yêu cầu một nếp!

    1.    KZKG ^ Gaara dijo

      Cảm ơn 😀

      1.    CubaMàu Đỏ dijo

        Mật khẩu bạn đặt cho webchat là tốt, một điều khác liên quan đến mysql là sử dụng bộ nhớ của nó

  2.   Hyuuga_Neji dijo

    Hehehe, cảm ơn vì đã nhắc nhở tôi về các lệnh MySQL. Bây giờ chúng ta hãy xem liệu "Tôi đặt một số bảo mật" trên cơ sở dữ liệu máy chủ World of Warcraft mà tôi có trong mạng LAN của mình hay không.

  3.   bao84 dijo

    kiến thức của tôi về điều này là không, nhưng nó gần giống như khi sử dụng MySQL cho Amarok?
    TẠO CƠ SỞ DỮ LIỆU amarokdb;
    CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ TRÊN amarokdb. * CHO 'amarokuser' ĐƯỢC XÁC NHẬN BẰNG 'mật khẩu'; QUYỀN RIÊNG TƯ FLUSH;

    1.    KZKG ^ Gaara dijo

      Tôi đã không sử dụng Amarok trong một thời gian dài, nhưng nếu bạn sử dụng DB là MySQL, về lý thuyết, nó cũng sẽ hoạt động theo cách đó.

  4.   Carlos Andres Restrepo dijo

    Xin chào, sẽ rất tốt nếu bạn tạo một mục bảo mật chống lại các máy chủ web trong Linux, nhiều người trong số họ không có bảo mật thích hợp và quản trị viên của cùng không phải là chuyên gia, họ chỉ làm cho mọi thứ dễ dàng hơn, ví dụ: việc sử dụng liên kết tượng trưng trên máy chủ cho phép đọc các tệp cấu hình của các tài khoản khác trên cùng một máy chủ mà nhiều quản trị viên không biết về điều này và đó là lý do tại sao các trang web khử trùng tăng lên

    Liên quan

    1.    KZKG ^ Gaara dijo

      Chào bạn
      Chào mừng đến với trang web 🙂

      Thực ra tôi không coi mình là một chuyên gia trong vấn đề này, nhưng tôi sẽ cố gắng đóng góp những kiến ​​thức ít ỏi mà tôi có được trong những năm qua 🙂

      Một điều khác mà không nhiều quản trị viên mạng làm là cấp đặc quyền cho các trang web có apache riêng lẻ, đó là người dùng và nhóm dữ liệu www (hoặc tương tự), là một dữ liệu khác nhau cho mỗi trang web và lần lượt lồng từng cái này.

      Liên quan

  5.   hackloper775 dijo

    Mẹo tốt

    Liên quan

    1.    KZKG ^ Gaara dijo

      thanks

  6.   nano dijo

    TÔI GHÉT sự xuất hiện của thiết bị đầu cuối của bạn, những chữ cái nền khiến tôi mất tập trung. Bạn là một xD điên rồ chết tiệt

    Bên ngoài đó, thật thú vị bởi vì tôi đã thấy những trường hợp ngừng dịch vụ thảm hại từ những thứ đó.

    Bây giờ, không chỉ phụ thuộc vào điều đó, sự bảo mật còn nằm ở cách cơ sở dữ liệu được xây dựng, một giáo viên giải thích cho tôi, nhưng tôi vẫn chưa đắm chìm trong DB ... chúng ta nên đánh lừa MongoDB = D một trong những điều này ngày

  7.   Đại tá Carlos dijo

    chỉ là điều đó đã xảy ra với tôi hôm nay với máy chủ thuê của tôi

    Tôi đã làm theo các bước của bạn, tôi vào cpanel và tìm kiếm cơ sở dữ liệu MYSQL và nó cho tôi biết rằng nó không hoạt động.

    Tôi không biết làm thế nào để nhập bây giờ với người dùng root
    Mình là người mới học trong này, nhưng đọc đến đây bạn học được nhiều điều, mong bạn hướng dẫn để mình truy cập

    1.    KZKG ^ Gaara dijo

      Xin chào 🙂
      Những gì bạn có là một Hosting (SharedHosting) hay một VPS (máy chủ ảo)?

      Nếu bạn có Hosting chứ không phải VPS thì bạn nên xem Hosting của mình có quyền truy cập SSH không (liên hệ với bộ phận hỗ trợ kỹ thuật của công ty đã bán máy chủ lưu trữ cho bạn và hỏi họ cách truy cập qua SSH), khi bạn nhập thông qua SSH, người dùng sẽ KHÔNG được root, nhưng bạn phải sử dụng người dùng bạn đã nhập khi cài đặt ứng dụng web đó.

      Trên thực tế, chủ đề của bạn là một chủ đề phức tạp, bởi vì các biến thể và khả năng rất nhiều, tôi khuyên bạn nên mở một chủ đề mới trong diễn đàn của chúng tôi, ở đó sẽ thoải mái hơn khi giúp bạn - » http://foro.desdelinux.net

      Xin chào 😀

  8.   bossbrondem dijo

    tốt,

    Tôi hiểu rằng tốt hơn hết là không nên cấp tất cả các đặc quyền cho bất kỳ người dùng nào ngoại trừ root. Tuy nhiên, kể từ khi tôi cài đặt phpmyadmin, một người dùng mới "phpmyadmin" đã được tạo với tất cả các đặc quyền. Có vẻ hợp lý khi đây là trường hợp, vì nó chỉ là một phiên bản đồ họa để quản lý cơ sở dữ liệu trong MySQL. Dù sao đi nữa, tôi muốn chắc chắn rằng liệu nó có ổn hay không hay tôi nên thực hiện một số sửa đổi trong các đặc quyền của người dùng "phpmyadmin".

    Xin kính chào và cảm ơn!

  9.   Emmanuel dijo

    Thông minh…
    Tôi là một trong những người làm mọi thứ với root, nhưng bạn đã mở rộng tầm mắt của tôi bạn ơi ..
    Cảm ơn rất nhiều…