Cài đặt và bảo mật cơ sở dữ liệu Redis, MySQL & MariaDB, MongoDB, PostgreSQL

Trong thời đại số hiện nay, việc bảo mật cơ sở dữ liệu không chỉ là một tùy chọn mà là một yêu cầu bắt buộc. Với sự gia tăng của các cuộc tấn công mạng và yêu cầu tuân thủ ngày càng nghiêm ngặt, việc hiểu và triển khai các biện pháp bảo mật phù hợp là điều cốt yếu cho mọi tổ chức.

Bài viết này sẽ hướng dẫn bạn cách cài đặt và bảo mật năm hệ quản trị cơ sở dữ liệu phổ biến nhất: Redis, MongoDB, MariaDB, PostgreSQL, và MySQL. Chúng ta sẽ đi từ những bước cài đặt cơ bản đến các biện pháp bảo mật nâng cao, đảm bảo dữ liệu của bạn được bảo vệ một cách toàn diện.

1. Redis – Kho Lưu Trữ Dữ Liệu Trong Bộ Nhớ Hiệu Suất Cao

Redis là một hệ thống lưu trữ key-value trong bộ nhớ được sử dụng rộng rãi cho caching, quản lý session và xử lý dữ liệu thời gian thực. Tính đơn giản và tốc độ xử lý vượt trội làm cho Redis trở thành lựa chọn hàng đầu cho nhiều ứng dụng hiện đại.

Cài Đặt Redis

Cập nhật danh sách gói:

sudo apt update

Cài đặt Redis:

sudo apt install redis-server -y

Kiểm tra phiên bản Redis:

redis-server --version

Kích hoạt dịch vụ Redis:

sudo systemctl enable redis-server

Cấu Hình Redis

Chỉnh sửa file cấu hình:

sudo vim /etc/redis/redis.conf

Bảo Mật Mạng cho Redis

Mặc định, Redis chỉ lắng nghe trên 127.0.0.1 (localhost), có nghĩa là nó chỉ chấp nhận kết nối từ cùng một máy. Đây là cài đặt lý tưởng cho các hệ thống đơn server nơi ứng dụng và Redis cùng nằm trên một host.

bind 127.0.0.1

Lưu ý quan trọng: Nếu bạn cần cho phép truy cập mạng (ví dụ cho môi trường multi-node), hãy đảm bảo bind Redis vào IP nội bộ/riêng tư và bảo mật nó bằng xác thực và firewall rules.

Thiết Lập Mật Khẩu Redis

Cấu hình mật khẩu Redis kích hoạt một trong những tính năng bảo mật tích hợp sẵn – lệnh auth – yêu cầu client phải xác thực trước khi được phép truy cập database.

Bỏ comment và thiết lập mật khẩu:

requirepass mat_khau_manh_cua_ban

Cấu Hình Supervisord

Trong file cấu hình Redis (redis.conf), tìm directive supervised. Cài đặt này cho phép bạn chỉ định init system (như systemd, upstart, hoặc init) sẽ quản lý Redis như một background service.

Tìm directive supervised:

supervised no

Thay đổi thành:

supervised systemd

Thiết Lập Persistent Storage (Tùy chọn)

Cài đặt chế độ persistence bằng cách thay đổi giá trị appendonly thành yes:

appendonly yes
appendfilename "appendonly.aof"

Khởi động lại dịch vụ Redis:

sudo systemctl restart redis.service

Kiểm Tra Kết Nối

redis-cli
> auth {mat_khau_cua_ban}
> info server

Các Biện Pháp Bảo Mật Redis Nâng Cao

  1. Xác Thực Mật Khẩu Mạnh: Sử dụng mật khẩu phức tạp và thay đổi định kỳ
  2. Bind vào Localhost: Giới hạn truy cập chỉ từ máy local
  3. Vô Hiệu Hóa Lua Scripting: Nếu không cần thiết
  4. Sử Dụng Firewall: Chỉ cho phép IP tin cậy truy cập
  5. Cấu Hình ACL (Access Control Lists): Sử dụng tính năng ACL mới của Redis để kiểm soát truy cập chi tiết
  6. Kích Hoạt TLS: Mã hóa kết nối giữa client và server

2. MongoDB – Cơ Sở Dữ Liệu NoSQL Linh Hoạt

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL được thiết kế để xây dựng các ứng dụng hiện đại, hướng dữ liệu. Khác với các cơ sở dữ liệu quan hệ truyền thống sử dụng bảng với hàng và cột, MongoDB lưu trữ dữ liệu trong các document linh hoạt, giống JSON được nhóm thành các collection.

Cài Đặt MongoDB

Cài đặt các gói cần thiết:

sudo apt update
sudo apt install wget curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release

Import MongoDB GPG Key:

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

Thêm MongoDB Repository:

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

Cập nhật danh sách gói:

sudo apt update

Cài đặt MongoDB:

sudo apt install -y mongodb-org

Khởi động và kích hoạt MongoDB:

sudo systemctl start mongod
sudo systemctl enable mongod

Cấu Hình MongoDB

Chỉnh sửa file cấu hình MongoDB:

sudo vim /etc/mongod.conf

Thêm IP server của bạn vào phần network interface (chú ý không thêm khoảng trắng sau dấu phẩy):

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,dia_chi_ip_server_cua_ban

Khởi động lại MongoDB:

sudo systemctl restart mongod

Kiểm Tra và Kết Nối

Kết nối local:

mongosh

Kết nối từ xa:

mongosh "mongodb://<TEN_NGUOI_DUNG>:<MAT_KHAU>@<IP_SERVER>:27017/<DATABASE>?authSource=<AUTH_DB>"

Tạo Admin User MongoDB

Sử dụng mật khẩu mạnh và kiểm soát truy cập dựa trên vai trò:

mongosh

use admin
db.createUser({ 
  user: "admin_user", 
  pwd: "Mat_Khau_Rat_Manh_123!", 
  roles: [{ 
     role: "userAdminAnyDatabase", db: "admin" 
  }, 
  "readWriteAnyDatabase"] 
});

Kết nối với user và database:

mongosh -u admin_user -p --authenticationDatabase admin

Quản Lý Users Database

Liệt kê users của database:

use admin 
db.getUsers()   // hiển thị users của admin db

use ten_database_khac
db.getUsers()   // hiển thị users của database khác

Các Biện Pháp Bảo Mật MongoDB Nâng Cao

  1. Kích Hoạt Authentication: Luôn yêu cầu xác thực
  2. Sử Dụng Role-Based Access Control: Phân quyền chi tiết theo vai trò
  3. Bind vào Localhost hoặc sử dụng Firewall: Giới hạn truy cập mạng
  4. Kích Hoạt Auditing: Theo dõi và ghi log các hoạt động
  5. Kích Hoạt TLS/SSL: Mã hóa kết nối
  6. Mã Hóa Dữ Liệu: Sử dụng encryption at rest và in transit
  7. Cập Nhật Thường Xuyên: Luôn sử dụng phiên bản mới nhất

3. MariaDB – Hệ Quản Trị Cơ Sở Dữ Liệu Quan Hệ Mở

MariaDB là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở hiệu suất cao được phát triển bởi MariaDB Foundation. Được xây dựng như một fork được điều khiển bởi cộng đồng của MySQL, nó cung cấp một sự thay thế drop-in với các tính năng cải tiến, tính ổn định mạnh mẽ và cam kết duy trì hoàn toàn mã nguồn mở.

Cài Đặt MariaDB

Cập nhật hệ thống:

sudo apt update

Cài đặt MariaDB Server:

sudo apt-get install mariadb-server -y

Kiểm tra trạng thái dịch vụ:

sudo systemctl status mariadb

Bảo Mật MariaDB

Mặc định, bạn có thể truy cập command line mysql với user root mà không cần nhập mật khẩu. Hãy đảm bảo chúng ta củng cố MariaDB server và thiết lập mật khẩu root.

sudo mysql_secure_installation

Trả lời các câu hỏi sau:

  • Set root password? [Y/n] y
  • Remove anonymous users? [Y/n] y
  • Disallow root login remotely? [Y/n] y
  • Remove test database and access to it? [Y/n] y
  • Reload privilege tables now? [Y/n] y

Kiểm tra phiên bản MariaDB:

mariadb --version

Tạo Test Database và User

Đăng nhập MariaDB:

sudo mariadb -u root -p

Tạo test database và user:

CREATE DATABASE test_db;
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'mat_khau_test';
GRANT SELECT ON test_db.* TO 'test_user'@'localhost'; 
FLUSH PRIVILEGES;  
EXIT;

Cấu Hình Bảo Mật Nâng Cao

Giới hạn Network Bindings:

Chỉnh sửa file my.cnf hoặc 50-server.cnf (thường ở /etc/mysql/mariadb.conf.d/):

bind-address = 127.0.0.1

Kích Hoạt Logging và Auditing:

[mysqld]
log_error = /var/log/mysql/mariadb.err
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 2

Các Biện Pháp Bảo Mật MariaDB

  1. Thiết Lập Mật Khẩu Root Mạnh: Luôn sử dụng mật khẩu phức tạp
  2. Vô Hiệu Hóa Remote Root Access: Ngăn chặn truy cập root từ xa
  3. Sử Dụng SSL/TLS: Mã hóa kết nối trong block [mysqld]
  4. Auditing và Monitoring: Theo dõi các hoạt động bất thường
  5. Backup Thường Xuyên: Đảm bảo khôi phục dữ liệu khi cần thiết

4. PostgreSQL – Hệ Quản Trị Cơ Sở Dữ Liệu Nâng Cao

PostgreSQL – thường được gọi là “Postgres” – là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở mạnh mẽ, cấp doanh nghiệp. Được biết đến với tính ổn định, tính toàn vẹn dữ liệu và khả năng mở rộng, nó hỗ trợ SQL tiêu chuẩn cùng với các tính năng nâng cao như tìm kiếm full-text, kiểu dữ liệu JSON, custom functions và nhiều hơn nữa.

Cài Đặt PostgreSQL

sudo apt install postgresql

Cấu Hình PostgreSQL

Mặc định, PostgreSQL tạo một user có tên “postgres”. Chuyển sang user này và truy cập PostgreSQL prompt:

sudo -i -u postgres
psql

Kiểm tra phiên bản PostgreSQL:

SELECT version();

Thiết lập mật khẩu mạnh cho PostgreSQL user:

ALTER USER postgres WITH PASSWORD 'mat_khau_cua_ban';

Tạo Database và User Mới

Tạo database mới:

CREATE DATABASE testdb;

Tạo user mới với mật khẩu:

CREATE USER testuser WITH PASSWORD 'matkhaubaoan';

Cấp toàn quyền trên testdb cho testuser:

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;

Kiểm Tra và Quản Lý

Hiển thị tất cả users:

\du

Hiển thị tất cả databases:

\l

Cấu Hình Bảo Mật Nâng Cao

Giới hạn Remote Access:

Chỉnh sửa /etc/postgresql/<version>/main/postgresql.conf:

listen_addresses = 'localhost'

Cấu hình pg_hba.conf cho Secure Authentication:

Chỉnh sửa /etc/postgresql/<version>/main/pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    testdb          testuser        127.0.0.1/32            scram-sha-256

Kích Hoạt Logging và Auditing:

Trong postgresql.conf:

logging_collector = on
log_connections = on
log_disconnections = on
log_line_prefix = '%m [%p] %u@%d '
log_statement = 'ddl'

Khởi động lại PostgreSQL:

sudo systemctl restart postgresql

Các Biện Pháp Bảo Mật PostgreSQL

  1. Kích Hoạt Password Authentication: Yêu cầu xác thực mật khẩu
  2. Sử Dụng SSL/TLS: Mã hóa kết nối
  3. Giới Hạn Database Access: Kiểm soát truy cập database
  4. Audit và Log Access: Theo dõi các hoạt động truy cập
  5. Role-Based Access Control (RBAC): Phân quyền dựa trên vai trò
  6. Row Level Security: Bảo mật cấp độ hàng dữ liệu

5. MySQL – Hệ Quản Trị Cơ Sở Dữ Liệu Phổ Biến

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở được sử dụng rộng rãi, dựa trên Structured Query Language (SQL) để quản lý và tương tác với dữ liệu. Được biết đến với tốc độ, tính ổn định và dễ sử dụng, MySQL từ lâu đã là một trụ cột trong thế giới phát triển web.

Cài Đặt MySQL

Cài đặt MySQL Server:

sudo apt install mysql-server

Kiểm tra trạng thái dịch vụ MySQL:

sudo systemctl status mysql

Đảm bảo MySQL khởi động tự động khi hệ thống reboot:

sudo systemctl enable mysql

Bảo Mật MySQL

MySQL đi kèm với một script bảo mật giúp bạn cấu hình một số cài đặt bảo mật quan trọng nhất:

sudo mysql_secure_installation

Script này cho phép bạn:

  • Thiết lập mật khẩu root mạnh
  • Xóa anonymous users
  • Không cho phép remote root login
  • Xóa test database
  • Reload privilege tables

Đăng Nhập và Cấu Hình MySQL

sudo mysql -u root -p

Bind MySQL vào localhost

Mặc định, MySQL được bind vào local interface (localhost), có nghĩa là nó chỉ chấp nhận kết nối từ máy local. Để cho phép kết nối từ xa, cần chỉnh sửa file cấu hình MySQL.

Chỉnh sửa file cấu hình:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Tìm và sửa đổi dòng sau:

bind-address = 127.0.0.1

Tạo User và Database Mới

Tạo user mới:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'MatKhauManh!';

Tạo database mới:

CREATE DATABASE newdb;

Cấp quyền truy cập cho user mới chỉ trên database đó:

GRANT ALL PRIVILEGES ON newdb.* TO 'newuser'@'localhost';

Áp dụng các thay đổi:

FLUSH PRIVILEGES;

Hiển thị tất cả users:

SELECT user, host FROM mysql.user;

Các Biện Pháp Bảo Mật MySQL

  1. Secure MySQL Installation: Chạy mysql_secure_installation
  2. Vô Hiệu Hóa Remote Root Access: Không cho phép root truy cập từ xa
  3. Sử Dụng SSL/TLS Encryption: Mã hóa kết nối
  4. Giới Hạn User Privileges: Áp dụng nguyên tắc least privilege
  5. Regular Updates: Cập nhật thường xuyên các bản vá bảo mật
  6. Monitoring và Auditing: Theo dõi các hoạt động bất thường

Các Nguyên Tắc Bảo Mật Chung Cho Tất Cả Hệ Quản Trị CSDL

1. Nguyên Tắc Least Privilege

Chỉ cấp quyền tối thiểu cần thiết cho mỗi user hoặc ứng dụng. Điều này giảm thiểu rủi ro khi một tài khoản bị xâm phạm.

2. Mã Hóa Dữ Liệu

  • Encryption at Rest: Mã hóa dữ liệu khi lưu trữ
  • Encryption in Transit: Mã hóa dữ liệu khi truyền tải
  • Field-Level Encryption: Mã hóa các trường dữ liệu nhạy cảm

3. Monitoring và Auditing

  • Theo dõi các hoạt động truy cập bất thường
  • Ghi log tất cả các thao tác quan trọng
  • Thiết lập cảnh báo cho các hành vi đáng ngờ

4. Backup và Recovery

  • Backup dữ liệu thường xuyên
  • Kiểm tra tính toàn vẹn của backup
  • Thực hành quy trình khôi phục

5. Network Security

  • Sử dụng firewall để kiểm soát truy cập
  • Cấu hình VPN cho truy cập từ xa
  • Phân đoạn mạng để cách ly các hệ thống

6. Cập Nhật và Patch Management

  • Luôn sử dụng phiên bản mới nhất
  • Áp dụng các bản vá bảo mật kịp thời
  • Theo dõi các advisory bảo mật

Kết Luận

Bảo mật cơ sở dữ liệu là một quá trình liên tục, không phải là một nhiệm vụ một lần. Với sự phát triển không ngừng của các mối đe dọa mạng, việc duy trì một chiến lược bảo mật đa lớp và cập nhật thường xuyên là điều cốt yếu.

Các hệ quản trị cơ sở dữ liệu được đề cập trong bài viết này – Redis, MongoDB, MariaDB, PostgreSQL, và MySQL – đều cung cấp các tính năng bảo mật mạnh mẽ khi được cấu hình đúng cách. Điều quan trọng là phải hiểu rõ các tính năng này và áp dụng chúng một cách phù hợp với nhu cầu cụ thể của tổ chức bạn.

Nhớ rằng, bảo mật tốt nhất là sự kết hợp của công nghệ, quy trình và con người. Đầu tư vào đào tạo đội ngũ, thiết lập quy trình bảo mật rõ ràng và sử dụng các công cụ giám sát phù hợp sẽ giúp bạn xây dựng một hệ thống cơ sở dữ liệu an toàn và đáng tin cậy.


Tác giả: Được biên soạn và cập nhật với thông tin mới nhất từ các nguồn chính thức và best practices năm 2025

Cập nhật lần cuối: Tháng 8, 2025

4.9/5 - (16 votes)

Nếu bạn thấy bài viết có ích bạn có thể chia sẻ bài viết này. Yêu cầu thêm bài viết tại đây
Đã copy
vutruso

Vũ Trụ Số chuyên cung cấp hosting cho WordPress, dịch vụ thiết kế website, quản trị website cho doanh nghiệp, các dịch vụ bảo mật website WordPress, tăng tốc website WordPress

Bài viết liên quan