Cách cài đặt và bảo mật phpMyAdmin trên Debian 9
Trong khi nhiều user cần chức năng của hệ thống quản lý database như MariaDB, 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 MariaDB.phpMyAdmin được tạo ra để user có thể tương tác với MariaDB 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 Debian 9.
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  bằng ufw , như được mô tả trong hướng dẫn  cài đặt   server  ban đầu cho Debian 9 .
Ta cũng sẽ giả định bạn đã hoàn tất cài đặt LAMP (Linux, Apache, MariaDB và PHP) trên server Debian 9 của bạn . Nếu bạn chưa thực hiện việc này, hãy làm theo hướng dẫn của ta về cách cài đặt LAMP trên Debian 9 để cài đặt điều này.
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 MariaDB của bạn
 - Xử lý xác thực bằng thông tin đăng nhập MariaDB
 - 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 Debian 9 . Đ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ừ kho Debian mặc định.
 Đ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 
Yeskhi đượ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
 
 Lưu ý: MariaDB là một fork do cộng đồng phát triển của MySQL và mặc dù hai chương trình có liên quan chặt chẽ với nhau nhưng chúng không thể  swap  cho nhau hoàn toàn. Mặc dù phpMyAdmin được thiết kế đặc biệt để quản lý database  MySQL và tham chiếu đến MySQL trong các hộp thoại khác nhau, hãy yên tâm rằng cài đặt MariaDB của bạn sẽ hoạt động chính xác với 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 được sử dụng để quản lý các chuỗi không phải ASCII và chuyển đổi các chuỗi thành các mã hóa khác nhau. Làm điều này  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 quản lý database MariaDB của bạn , bạn cần đảm bảo user MariaDB 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 bằng một account  khác.
 Trong các bản cài đặt mới trên hệ thống Debian,  user  MariaDB gốc được đặt để xác thực bằng cách sử dụng plugin unix_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 (ví dụ: phpMyAdmin) quyền quản trị thông qua  user  này. Vì  server  sử dụng account  gốc cho  các việc  như xoay vòng log  và khởi động và dừng  server , tốt nhất là không thay đổi chi tiết xác thực của account  gốc . Vì phpMyAdmin yêu cầu  user  xác thực bằng password , bạn  cần  tạo account  MariaDB mới để truy cập giao diện.
Nếu bạn đã làm theo hướng dẫn yêu cầu về cài đặt LAMP và tạo account user MariaDB như được mô tả trong Bước 2, bạn chỉ có thể đăng nhập vào phpMyAdmin bằng account đó bằng password bạn đã tạo khi cài đặt bằng cách truy cập liên kết này:
https://your_domain_or_IP/phpmyadmin Nếu bạn chưa tạo user MariaDB hoặc nếu bạn có nhưng bạn muốn tạo một user khác chỉ với mục đích quản lý database thông qua phpMyAdmin, hãy tiếp tục với phần này để tìm hiểu cách cài đặt .
Bắt đầu bằng cách mở shell MariaDB:
- sudo mariadb 
 
Lưu ý: Nếu bạn đã cài đặt xác thực password , giống như cách bạn đã tạo account user mới cho server MariaDB của bạn , bạn cần sử dụng một lệnh khác để truy cập shell MariaDB. Phần sau sẽ chạy ứng dụng MariaDB của bạn với các quyền regular user và bạn sẽ chỉ có được các quyền của administrator trong database bằng cách xác thực:
- mariadb -u user -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 khỏi shell MariaDB:
- exit 
 
 Đến đây bạn  có thể truy cập giao diện web bằng cách truy cập domain  hoặc địa chỉ IP công cộng của  server  của bạn, theo sau là /phpmyadmin :
https://your_domain_or_IP/phpmyadmin Đăng nhập vào giao diện với tên user và password bạn đã 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 cho 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 MariaDB của bạn . Cài đặt này bổ sung một lớp bảo mật bổ sung, điều đáng mong đợi vì phpMyAdmin đã 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 Debian 9 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

