Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 18.04
Trong khi nhiều user cần chức năng của hệ quản trị database như MySQL, họ có thể không cảm thấy thoải mái khi tương tác với hệ thống chỉ từ dấu nhắc MySQL.phpMyAdmin được tạo ra để user có thể tương tác với MySQL thông qua giao diện web. Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt và bảo mật phpMyAdmin để bạn có thể sử dụng nó một cách an toàn để quản lý database của bạn trên hệ thống Ubuntu 18.04.
Yêu cầu
Trước khi bắt đầu với hướng dẫn này, bạn cần hoàn thành một số bước cơ bản.
Trước tiên, ta sẽ giả định server của bạn có user không phải root có quyền sudo
, cũng như firewall được cấu hình với ufw
, như được mô tả trong hướng dẫn cài đặt server ban đầu cho Ubuntu 18.04 .
Ta cũng sẽ giả định bạn đã hoàn thành cài đặt LAMP (Linux, Apache, MySQL và PHP) trên server Ubuntu 18.04 của bạn . Nếu việc này vẫn chưa hoàn tất, bạn có thể làm theo hướng dẫn này về cách cài đặt LAMP trên Ubuntu 18.04 .
Cuối cùng, có những lưu ý quan trọng về bảo mật khi sử dụng phần mềm như phpMyAdmin, vì nó:
- Giao tiếp trực tiếp với cài đặt MySQL của bạn
- Xử lý xác thực bằng thông tin đăng nhập MySQL
- Thực thi và trả về kết quả cho các truy vấn SQL tùy ý
Vì những lý do này và bởi vì nó là một ứng dụng PHP được triển khai rộng rãi thường bị nhắm đến tấn công, bạn không nên chạy phpMyAdmin trên các hệ thống từ xa qua kết nối HTTP thuần túy. Nếu bạn không có domain hiện có được cấu hình với certificate SSL / TLS, bạn có thể làm theo hướng dẫn này về cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 18.04 . Điều này sẽ yêu cầu bạn đăng ký domain , tạo bản ghi DNS cho server của bạn và cài đặt Server ảo Apache .
Khi bạn đã hoàn thành các bước này, bạn đã sẵn sàng để bắt đầu với hướng dẫn này.
Bước 1 - Cài đặt phpMyAdmin
Để bắt đầu, ta sẽ cài đặt phpMyAdmin từ repository mặc định của Ubuntu.
Điều này được thực hiện bằng cách cập nhật index gói của server của bạn và sau đó sử dụng trình cài đặt gói apt
để kéo các file xuống và cài đặt chúng trên hệ thống của bạn:
- sudo apt update
- sudo apt install phpmyadmin php-mbstring php-gettext
Tiếp theo sẽ hỏi bạn để cấu hình cài đặt của bạn một cách chính xác.
Cảnh báo: Khi dấu nhắc xuất hiện, “apache2” được đánh dấu, nhưng không được chọn. Nếu bạn không nhấn SPACE
để chọn Apache, trình cài đặt sẽ không di chuyển các file cần thiết trong khi cài đặt. Nhấn SPACE
, TAB
, sau đó ENTER
để chọn Apache.
- Đối với lựa chọn server , hãy chọn
apache2
- Chọn
Yes
khi được hỏi có sử dụngdbconfig-common
để cài đặt database hay không - Sau đó, bạn cần chọn và xác nhận password ứng dụng MySQL cho phpMyAdmin
Quá trình cài đặt thêm file cấu hình phpMyAdmin Apache vào folder /etc/apache2/conf-enabled/
, nơi nó được đọc tự động. Điều duy nhất bạn cần làm là bật rõ ràng phần mở rộng mbstring
PHP, bạn có thể thực hiện bằng lệnh :
- sudo phpenmod mbstring
Sau đó, khởi động lại Apache để các thay đổi được công nhận:
- sudo systemctl restart apache2
phpMyAdmin hiện đã được cài đặt và cấu hình. Tuy nhiên, trước khi bạn có thể đăng nhập và bắt đầu tương tác với database MySQL của bạn , bạn cần đảm bảo user MySQL của bạn có các quyền cần thiết để tương tác với chương trình.
Bước 2 - Điều chỉnh Xác thực User và Đặc quyền
Khi bạn cài đặt phpMyAdmin vào server của bạn , nó sẽ tự động tạo một user database có tên là phpmyadmin
để thực hiện một số quy trình cơ bản nhất định cho chương trình. Thay vì đăng nhập với quyền user này bằng password quản trị bạn đã đặt trong khi cài đặt, bạn nên đăng nhập với quyền là user MySQL gốc của bạn hoặc với quyền là user chuyên quản lý database thông qua giao diện phpMyAdmin.
Cấu hình quyền truy cập password cho account root MySQL
Trong các hệ thống Ubuntu chạy MySQL 5.7 (và các version mới hơn), user MySQL gốc được đặt để xác thực bằng cách sử dụng plugin auth_socket
theo mặc định chứ không phải bằng password . Điều này cho phép một số bảo mật và hữu dụng trong nhiều trường hợp, nhưng nó cũng có thể làm phức tạp thêm khi bạn cần cho phép một chương trình bên ngoài - như phpMyAdmin - truy cập vào user .
Để đăng nhập vào phpMyAdmin với quyền là user MySQL gốc của bạn, bạn cần chuyển phương thức xác thực của nó từ auth_socket
sang mysql_native_password
nếu bạn chưa làm như vậy. Để thực hiện việc này, hãy mở dấu nhắc MySQL từ terminal của bạn:
- sudo mysql
Tiếp theo, hãy kiểm tra phương thức xác thực mà mỗi account user MySQL của bạn sử dụng bằng lệnh sau:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Trong ví dụ này, bạn có thể thấy rằng user root trên thực tế xác thực bằng cách sử dụng plugin auth_socket
. Để cấu hình account gốc để xác thực bằng password , hãy chạy ALTER USER
sau. Đảm bảo thay đổi password
thành một password mạnh mà bạn chọn:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau đó, chạy FLUSH PRIVILEGES
yêu cầu server reload các bảng tài trợ và áp dụng các thay đổi của bạn có hiệu lực:
- FLUSH PRIVILEGES;
Kiểm tra lại các phương thức xác thực được sử dụng bởi từng user của bạn để xác nhận root không còn xác thực bằng plugin auth_socket
:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Bạn có thể thấy từ kết quả này user root sẽ xác thực bằng password . Đến đây bạn có thể đăng nhập vào giao diện phpMyAdmin với quyền là user gốc của bạn với password bạn đã đặt cho nó tại đây.
Cấu hình quyền truy cập password cho user MySQL chuyên dụng
Ngoài ra, một số có thể thấy rằng việc kết nối với phpMyAdmin với một user chuyên dụng phù hợp hơn với quy trình làm việc của họ. Để thực hiện việc này, hãy mở lại MySQL shell:
- sudo mysql
Lưu ý: Nếu bạn đã cài đặt xác thực password , như được mô tả trong phần trước, bạn cần sử dụng một lệnh khác để truy cập shell MySQL. Phần sau sẽ chạy ứng dụng client MySQL của bạn với quyền regular user và bạn sẽ chỉ có được quyền administrator trong database bằng cách xác thực:
- mysql -u root -p
Từ đó, tạo một user mới và cung cấp cho nó một password mạnh:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Sau đó, cấp cho user mới của bạn các quyền thích hợp. Ví dụ: bạn có thể cấp quyền user cho tất cả các bảng trong database , cũng như quyền thêm, thay đổi và xóa quyền user bằng lệnh này:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Sau đó, thoát MySQL shell:
- exit
Như vậy, bạn có thể truy cập giao diện web bằng cách truy cập vào domain hoặc địa chỉ IP công cộng của server , theo sau là /phpmyadmin
:
http://your_domain_or_IP/phpmyadmin
Đăng nhập vào giao diện, bằng quyền root hoặc bằng tên user và password mới mà bạn vừa cấu hình .
Khi đăng nhập, bạn sẽ thấy giao diện user trông giống như sau:
Đến đây bạn có thể kết nối và tương tác với phpMyAdmin, tất cả những gì còn lại cần làm là tăng cường bảo mật hệ thống của bạn để bảo vệ nó khỏi những kẻ tấn công.
Bước 3 - Bảo mật version phpMyAdmin của bạn
Do tính phổ biến của nó, phpMyAdmin là mục tiêu phổ biến của những kẻ tấn công và bạn nên cẩn thận hơn để ngăn chặn truy cập trái phép. Một trong những cách dễ nhất để thực hiện việc này là đặt một cổng vào phía trước toàn bộ ứng dụng bằng cách sử dụng các chức năng ủy quyền và xác thực .htaccess
được tích hợp sẵn của Apache.
Để thực hiện việc này, trước tiên bạn phải cho phép sử dụng overrides file .htaccess
bằng cách chỉnh sửa file cấu hình Apache của bạn.
Chỉnh sửa file được liên kết đã được đặt trong folder cấu hình Apache của bạn:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Thêm chỉ thị AllowOverride All
trong phần <Directory /usr/share/phpmyadmin>
của file cấu hình, như sau:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All . . .
Khi bạn đã thêm dòng này, hãy lưu file .
Để áp dụng các thay đổi bạn đã thực hiện, hãy khởi động lại Apache:
- sudo systemctl restart apache2
Đến đây bạn đã bật sử dụng .htaccess
cho ứng dụng của bạn , bạn cần tạo một cái để thực sự triển khai một số bảo mật.
Để thành công, file phải được tạo trong folder ứng dụng. Bạn có thể tạo file cần thiết và mở file đó trong editor của bạn với quyền root bằng lệnh :
- sudo nano /usr/share/phpmyadmin/.htaccess
Trong file này, hãy nhập thông tin sau:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Đây là ý nghĩa của mỗi dòng này:
-
AuthType Basic
: Dòng này chỉ định kiểu xác thực mà bạn đang triển khai. Loại này sẽ triển khai xác thực password bằng file password . -
AuthName
: Điều này đặt thông báo cho hộp thoại xác thực. Bạn nên giữ điều này chung chung để user lạ sẽ không nhận được bất kỳ thông tin nào về những gì đang được bảo vệ. -
AuthUserFile
: Điều này đặt vị trí của file password sẽ được sử dụng để xác thực. Điều này phải nằm ngoài các folder đang được phục vụ. Ta sẽ tạo file này trong thời gian ngắn. -
Require valid-user
: Điều này chỉ định rằng chỉ những user được xác thực mới được cấp quyền truy cập vào tài nguyên này. Đây là những gì thực sự ngăn user lạ xâm nhập.
Khi bạn hoàn tất, hãy lưu file .
Vị trí bạn đã chọn cho file password của bạn là /etc/phpmyadmin/.htpasswd
. Đến đây bạn có thể tạo file này và chuyển nó thành user ban đầu bằng tiện ích htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Bạn sẽ được yêu cầu chọn và xác nhận password cho user bạn đang tạo. Sau đó, file được tạo bằng password băm mà bạn đã nhập.
Nếu bạn muốn nhập thêm user , bạn cần phải làm như vậy mà không có cờ -c
, như sau:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Bây giờ, khi bạn truy cập vào folder con phpMyAdmin của bạn , bạn sẽ được yêu cầu nhập tên account và password bổ sung mà bạn vừa cấu hình :
https://domain_name_or_IP/phpmyadmin
Sau khi nhập xác thực Apache, bạn sẽ được đưa đến trang xác thực phpMyAdmin thông thường để nhập thông tin đăng nhập MySQL của bạn . Cài đặt này bổ sung một lớp bảo mật bổ sung, có thể mong muốn vì phpMyAdmin đã từng bị các lỗ hổng bảo mật trong quá khứ.
Kết luận
Đến đây bạn đã cấu hình phpMyAdmin và sẵn sàng sử dụng trên server Ubuntu 18.04 của bạn . Sử dụng giao diện này, bạn có thể dễ dàng tạo database , user , bảng, v.v. và thực hiện các thao tác thông thường như xóa và sửa đổi cấu trúc và dữ liệu.
Các tin liên quan
Cách cài đặt và cấu hình Ansible trên Ubuntu 18.042020-04-16
Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04 [Quickstart]
2020-04-16
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 18.04
2020-04-12
Cách cài đặt và cấu hình SimpleSAMLphp để Xác thực SAML trên Ubuntu 18.04
2020-04-02
Cách sử dụng Vuls làm máy quét lỗ hổng bảo mật trên Ubuntu 18.04
2020-04-01
Cách tạo người dùng mới hỗ trợ Sudo trên Ubuntu 18.04 [Quickstart]
2020-03-23
Cách cài đặt và cấu hình SNMP Daemon và Client trên Ubuntu 18.04
2020-03-17
Cách lưu trữ một trang web với Caddy trên Ubuntu 18.04
2020-03-13
Cách sử dụng nsh để chạy các lệnh từ xa an toàn trên Ubuntu 18.04
2020-03-04
Cách đóng gói và xuất bản ứng dụng Snap trên Ubuntu 18.04
2020-02-25