Để thiết lập bảo mật mật khẩu mạnh trong MySQL, chúng ta có thể sử dụng plugin validate_password
và cấu hình các chính sách bảo mật liên quan. Việc áp dụng mật khẩu mạnh sẽ giúp ngăn chặn các cuộc tấn công như brute-force và bảo vệ hệ thống cơ sở dữ liệu của bạn một cách an toàn. Dưới đây là hướng dẫn chi tiết từng bước để thực hiện.
validate_password
trong MySQLTrước tiên, bạn cần kích hoạt plugin validate_password
, đây là công cụ cho phép bạn định nghĩa các quy tắc bảo mật mật khẩu mạnh trong MySQL.
Kết nối tới MySQL bằng tài khoản quản trị (root):
mysql -u root -p
Sau khi kết nối thành công, bạn kích hoạt plugin validate_password
bằng lệnh sau:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
Để kiểm tra plugin đã được cài đặt và kích hoạt chưa, sử dụng lệnh:
SHOW PLUGINS;
MySQL cho phép bạn cấu hình các thông số liên quan đến mật khẩu như độ dài tối thiểu, số lượng ký tự viết hoa, số, và ký tự đặc biệt.
Để yêu cầu mật khẩu có độ dài tối thiểu, sử dụng lệnh sau:
SET GLOBAL validate_password.length = 12;
Lệnh trên yêu cầu mật khẩu phải có ít nhất 12 ký tự.
Bạn có thể đặt quy định cho mật khẩu bao gồm ít nhất một ký tự viết hoa, một ký tự số, và một ký tự đặc biệt như sau:
SET GLOBAL validate_password.mixed_case_count = 1; SET GLOBAL validate_password.number_count = 1; SET GLOBAL validate_password.special_char_count = 1;
MySQL có ba mức chính sách mật khẩu:
Để chọn mức bảo mật STRONG, sử dụng lệnh:
SET GLOBAL validate_password.policy = 2;
Để kiểm tra các thiết lập liên quan đến mật khẩu, bạn sử dụng lệnh sau:
SHOW VARIABLES LIKE 'validate_password%';
Lệnh này sẽ trả về các thông số như độ dài mật khẩu, số lượng ký tự đặc biệt, và chính sách mật khẩu hiện tại.
MySQL hỗ trợ sử dụng cơ chế mã hóa mạnh như caching_sha2_password
, thay vì các phương pháp cũ như mysql_native_password
. Bạn có thể thiết lập mặc định việc sử dụng mã hóa mạnh bằng cách thực hiện lệnh sau:
SET GLOBAL default_authentication_plugin = 'caching_sha2_password';
Khi tạo tài khoản mới, bạn cần chỉ định plugin mã hóa mạnh:
CREATE USER 'newuser'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY 'StrongP@ssw0rd!';
Việc sử dụng caching_sha2_password
giúp đảm bảo rằng mật khẩu được lưu trữ và truyền tải an toàn, bảo vệ chống lại các cuộc tấn công.
Sau khi thiết lập chính sách mật khẩu, bạn có thể yêu cầu các người dùng hiện tại đổi mật khẩu để tuân theo các quy định mới.
Để thay đổi mật khẩu cho một người dùng cụ thể, sử dụng lệnh:
ALTER USER 'username'@'localhost' IDENTIFIED BY 'NewStrongP@ssw0rd!';
Nếu mật khẩu không đáp ứng các yêu cầu bảo mật, MySQL sẽ thông báo lỗi và yêu cầu người dùng đặt mật khẩu mạnh hơn.
MySQL cho phép thiết lập thời gian hết hạn mật khẩu, buộc người dùng phải thay đổi mật khẩu định kỳ để tăng cường bảo mật.
Bạn có thể đặt thời gian hết hạn cho một người dùng cụ thể bằng lệnh:
ALTER USER 'username'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
Điều này có nghĩa là mật khẩu của người dùng sẽ hết hạn sau 90 ngày.
Để thiết lập thời gian hết hạn mặc định cho tất cả người dùng, sử dụng lệnh:
SET GLOBAL default_password_lifetime = 90;
Ngoài việc thiết lập mật khẩu mạnh, bạn cũng nên giới hạn quyền truy cập từ xa chỉ cho các địa chỉ IP đáng tin cậy và áp dụng các quyền hạn thấp nhất cho người dùng.
Ví dụ, tạo người dùng chỉ có thể truy cập từ địa chỉ IP cụ thể:
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'StrongP@ssw0rd!';
Cấp quyền tối thiểu cần thiết, chẳng hạn chỉ cho phép người dùng truy cập SELECT vào cơ sở dữ liệu:
GRANT SELECT ON database_name.* TO 'username'@'192.168.1.100';
Việc giới hạn quyền truy cập giúp giảm thiểu nguy cơ khi người dùng bị tấn công hoặc bị lộ thông tin.
Cuối cùng, bạn nên sử dụng hệ thống giám sát để theo dõi các hoạt động liên quan đến bảo mật, đặc biệt là việc đăng nhập thất bại hoặc các nỗ lực truy cập trái phép.
Bạn có thể sử dụng công cụ MySQL Enterprise Audit để theo dõi và giám sát các sự kiện bảo mật, hoặc kiểm tra các nhật ký (logs) MySQL để phát hiện các hành vi đáng ngờ.
Như vậy, việc thiết lập bảo mật mật khẩu mạnh trong MySQL không chỉ bao gồm việc yêu cầu mật khẩu phức tạp mà còn phải áp dụng các biện pháp bổ sung như mã hóa mạnh, giới hạn truy cập, và theo dõi bảo mật. Điều này giúp đảm bảo rằng hệ thống cơ sở dữ liệu của bạn được bảo vệ tối đa khỏi các mối đe dọa.