Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server Ubuntu 14.04
Hệ thống quản lý database quan hệ như MySQL là cần thiết cho một phần đáng kể các trang web và ứng dụng. Tuy nhiên, không phải tất cả user đều cảm thấy thoải mái khi quản lý dữ liệu của họ từ dòng lệnh.Để giải quyết vấn đề này, một dự án có tên là phpMyAdmin đã được tạo ra để cung cấp một giải pháp thay thế dưới dạng giao diện quản lý dựa trên web. Trong hướng dẫn này, ta sẽ trình bày cách cài đặt và bảo mật cấu hình phpMyAdmin trên server Ubuntu 14.04. Ta sẽ xây dựng cài đặt này trên web server Nginx, server này có cấu hình hoạt động tốt và có thể xử lý tải nặng tốt hơn một số web server khác.
Yêu cầu
Trước khi ta bắt đầu, có một số yêu cầu cần được giải quyết.
 Để  đảm bảo  bạn có cơ sở vững chắc để xây dựng hệ thống này, bạn nên chạy qua hướng dẫn  cài đặt   server  ban đầu của  ta  cho Ubuntu 14.04 . Trong số những thứ khác, phần này sẽ hướng dẫn bạn cách  cài đặt   user  không phải root có quyền truy cập sudo cho các lệnh quản trị.
Yêu cầu thứ hai phải được đáp ứng để bắt đầu hướng dẫn này là cài đặt một LEMP (Linux, Nginx, MySQL và PHP) trên server Ubuntu 14.04 của bạn. Đây là nền tảng mà ta sẽ sử dụng để phục vụ giao diện phpMyAdmin của ta (MySQL cũng là phần mềm quản lý database mà ta muốn quản lý). Nếu bạn chưa có cài đặt LEMP trên server của bạn , hãy làm theo hướng dẫn của ta về cài đặt LEMP trên Ubuntu 14.04 .
Khi server của bạn ở trạng thái hoạt động bình thường sau khi làm theo các hướng dẫn này, bạn có thể tiếp tục với phần còn lại của trang này.
Bước một - Cài đặt phpMyAdmin
Với nền tảng LEMP của ta đã có sẵn, ta có thể bắt đầu ngay với việc cài đặt phần mềm phpMyAdmin. Điều này có sẵn trong repository lưu trữ mặc định của Ubuntu, vì vậy quá trình cài đặt rất đơn giản.
 Đầu tiên, hãy cập nhật  index gói  local  của  server   đảm bảo  nó có một tập hợp tham chiếu mới đến các gói có sẵn. Sau đó,  ta  có thể sử dụng các công cụ đóng gói apt để kéo phần mềm xuống từ kho và cài đặt nó trên hệ thống của  ta :
sudo apt-get update sudo apt-get install phpmyadmin Trong quá trình cài đặt, bạn sẽ được yêu cầu một số thông tin. Nó sẽ hỏi bạn web server nào bạn muốn phần mềm tự động cấu hình. Vì Nginx, web server mà ta đang sử dụng, không phải là một trong những tùy chọn khả dụng, bạn chỉ cần nhấn TAB để bỏ qua dấu nhắc này.
  Dấu nhắc  tiếp theo sẽ hỏi bạn có muốn dbconfig-common cấu hình database  để phpmyadmin sử dụng hay không. Chọn “Có” để tiếp tục.
Bạn cần nhập password quản trị database mà bạn đã cấu hình trong quá trình cài đặt MySQL để cho phép những thay đổi này. Sau đó, bạn cần chọn và xác nhận password cho database mới sẽ lưu giữ dữ liệu riêng của phpMyAdmin.
Quá trình cài đặt sẽ hoàn tất. Để web server Nginx tìm và phục vụ các file phpMyAdmin một cách chính xác, ta chỉ cần tạo một softlink từ các file cài đặt đến folder root tài liệu Nginx của ta bằng lệnh sau:
sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html Mục cuối cùng mà  ta  cần giải quyết là kích hoạt module  mcrypt PHP, mà phpMyAdmin dựa vào. Điều này đã được cài đặt với phpMyAdmin, vì vậy  ta  chỉ cần bật nó lên và khởi động lại  PHP processor  của  ta :
sudo php5enmod mcrypt sudo service php5-fpm restart  Như vậy,  cài đặt phpMyAdmin của  ta  hiện đã hoạt động. Để truy cập giao diện, hãy truy cập domain   server  của bạn hoặc địa chỉ IP công cộng, theo sau là /phpmyadmin , trong  trình duyệt web :
http://server_domain_or_IP/phpmyadmin  Để đăng nhập, hãy sử dụng cặp tên  user  / password  của  user  MySQL hợp lệ.  User  root và password  quản trị MySQL là một lựa chọn tốt để bắt đầu. Sau đó,  bạn có thể  truy cập giao diện quản trị: 
Nhấp vào xung quanh để làm quen với giao diện. Trong phần tiếp theo, ta sẽ thực hiện các bước để bảo mật giao diện mới của bạn .
Bước hai - Bảo mật version phpMyAdmin của bạn
Phiên bản phpMyAdmin được cài đặt trên server của ta sẽ hoàn toàn có thể sử dụng được tại thời điểm này. Tuy nhiên, bằng cách cài đặt giao diện web, ta đã tiếp xúc hệ thống MySQL của bạn với thế giới bên ngoài.
Ngay cả với màn hình xác thực đi kèm, đây là một vấn đề khá nan giải. Do sự phổ biến của phpMyAdmin kết hợp với lượng lớn dữ liệu mà nó cung cấp quyền truy cập, các cài đặt như thế này là mục tiêu phổ biến của những kẻ tấn công.
  Ta  sẽ thực hiện hai chiến lược đơn giản để giảm nguy cơ cài đặt của  ta  bị  nhắm đến  và bị xâm phạm.  Ta  sẽ thay đổi vị trí của giao diện từ /phpmyadmin sang một thứ khác để tránh một số nỗ lực brute-force tự động của bot.  Ta  cũng sẽ tạo một cổng xác thực cấp  web server  bổ sung phải được thông qua trước khi truy cập vào màn hình đăng nhập phpMyAdmin.
Thay đổi vị trí truy cập của ứng dụng
Để web server Nginx của ta tìm và phục vụ các file phpMyAdmin của ta , ta đã tạo một softlink từ folder phpMyAdmin tới folder root tài liệu của ta ở bước trước đó.
Để thay đổi URL mà giao diện phpMyAdmin của ta có thể được truy cập, ta chỉ cần đổi tên softlink . Di chuyển vào folder root của tài liệu Nginx để hiểu rõ hơn về những gì ta đang làm:
cd /usr/share/nginx/html ls -l total 8 -rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html -rw-r--r-- 1 root root 612 Mar  4 06:46 index.html lrwxrwxrwx 1 root root  21 Aug  6 10:50 phpmyadmin -> /usr/share/phpmyadmin  Như bạn thấy ,  ta  có một  softlink  có tên là phpmyadmin trong folder  này.  Ta  có thể thay đổi tên liên kết này thành bất kỳ tên nào  ta  muốn. Thao tác này sẽ thay đổi vị trí mà phpMyAdmin có thể được truy cập từ trình duyệt, điều này có thể giúp che khuất điểm truy cập khỏi các bot được mã hóa cứng.
 Chọn một tên không cho biết mục đích của địa điểm. Trong hướng dẫn này,  ta  sẽ đặt tên cho vị trí truy cập của  ta  /nothingtosee . Để thực hiện điều này,  ta  sẽ chỉ đổi tên liên kết:
sudo mv phpmyadmin nothingtosee ls -l total 8 -rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html -rw-r--r-- 1 root root 612 Mar  4 06:46 index.html lrwxrwxrwx 1 root root  21 Aug  6 10:50 nothingtosee -> /usr/share/phpmyadmin Bây giờ, nếu bạn đi đến vị trí cài đặt phpMyAdmin trước đó của bạn , bạn sẽ gặp lỗi 404:
http://server_domain_or_IP/phpmyadmin Tuy nhiên, giao diện phpMyAdmin của bạn sẽ có sẵn tại vị trí mới mà ta đã chọn:
http://server_domain_or_IP/nothingtosee Cài đặt cổng xác thực web server
Tính năng tiếp theo mà ta muốn cho cài đặt của bạn là dấu nhắc xác thực mà user sẽ được yêu cầu phải vượt qua trước khi nhìn thấy màn hình đăng nhập phpMyAdmin.
May mắn là hầu hết các web server , bao gồm cả Nginx, đều cung cấp khả năng này. Ta sẽ chỉ cần sửa đổi file cấu hình Nginx của ta với các chi tiết.
 Trước khi thực hiện việc này,  ta  sẽ tạo một file  password  sẽ lưu trữ thông tin xác thực của  ta . Nginx yêu cầu password  được mã hóa bằng hàm crypt() . Bộ OpenSSL, đã được cài đặt trên  server  của bạn, bao gồm chức năng này.
Để tạo password được mã hóa, hãy nhập:
openssl passwd Bạn sẽ được yêu cầu nhập và xác nhận password mà bạn muốn sử dụng. Sau đó, tiện ích sẽ hiển thị version password được mã hóa trông giống như sau:
O5az.RSPzd.HE Sao chép giá trị này, vì bạn cần dán nó vào file xác thực mà ta sẽ tạo.
 Bây giờ, hãy tạo một file  xác thực.  Ta  sẽ gọi file  này là pma_pass và đặt nó trong folder  cấu hình Nginx:
sudo nano /etc/nginx/pma_pass Trong file  này, bạn chỉ cần chỉ định tên  user  bạn muốn sử dụng, theo sau là dấu hai chấm (:), theo sau là version  password  được mã hóa mà bạn nhận được từ tiện ích openssl passwd .
  Ta  sẽ đặt tên cho demo  user   của bạn , nhưng bạn nên chọn một tên  user  khác. Tệp cho hướng dẫn này trông giống như sau:
demo:O5az.RSPzd.HE Lưu file khi bạn hoàn tất.
Bây giờ, ta đã sẵn sàng sửa đổi file cấu hình Nginx của bạn . Mở file này trong editor của bạn để bắt đầu:
sudo nano /etc/nginx/sites-available/default Trong file  này,  ta  cần thêm phần vị trí mới. Điều này sẽ  nhắm đến  đến vị trí mà  ta  đã chọn cho giao diện phpMyAdmin  của bạn  ( ta  đã chọn /nothingtosee trong hướng dẫn này).
 Tạo phần này trong khối server , nhưng bên ngoài bất kỳ khối nào khác.  Ta  sẽ đặt khối vị trí mới  của bạn  bên dưới location / khối trong ví dụ của  ta :
server {     . . .      location / {         try_files $uri $uri/ =404;     }      location /nothingtosee {     }      . . . } Trong khối này,  ta  cần đặt giá trị của một chỉ thị được gọi là auth_basic thành một thông báo xác thực mà  dấu nhắc  của  ta  sẽ hiển thị cho  user .  Ta  không muốn chỉ ra cho  user  chưa được xác thực những gì  ta  đang bảo vệ, vì vậy không đưa ra chi tiết cụ thể.  Ta  sẽ chỉ sử dụng "Đăng nhập quản trị" trong ví dụ của  ta .
 Sau đó,  ta  cần sử dụng một chỉ thị có tên auth_basic_user_file để trỏ  web server  của  ta  đến file  xác thực mà  ta  đã tạo. Nginx sẽ nhắc  user  về các chi tiết xác thực và kiểm tra xem các giá trị đã nhập có  trùng với  những gì nó tìm thấy trong file  được chỉ định hay không.
Sau khi ta hoàn thành, file sẽ trông như thế này:
server {     . . .      location / {         try_files $uri $uri/ =404;     }      location /nothingtosee {         auth_basic "Admin Login";         auth_basic_user_file /etc/nginx/pma_pass;     }      . . . } Lưu file khi bạn hoàn tất.
Để triển khai cổng xác thực mới của ta , ta phải khởi động lại web server :
sudo service nginx restart Bây giờ, nếu  ta  truy cập vị trí phpMyAdmin trong trình duyệt web của  ta  (bạn có thể phải xóa bộ nhớ cache  của bạn  hoặc sử dụng phiên trình duyệt khác nếu bạn đã sử dụng phpMyAdmin), bạn sẽ  được yêu cầu  nhập tên  user  và password  bạn đã thêm vào file  pma_pass :
http://server_domain_or_IP/nothingtosee Khi bạn nhập thông tin đăng nhập của bạn , bạn sẽ được đưa đến trang đăng nhập phpMyAdmin bình thường. Lớp bảo vệ bổ sung này sẽ giúp giữ cho log MySQL của bạn sạch sẽ các lần xác thực ngoài lợi ích bảo mật bổ sung.
Kết luận
Đến đây bạn có thể quản lý database MySQL của bạn từ một giao diện web an toàn hợp lý. Giao diện user này hiển thị hầu hết các chức năng có sẵn từ dấu nhắc lệnh MySQL. Bạn có thể xem database và schemas , thực thi các truy vấn cũng như tạo các cấu trúc và tập dữ liệu mới.
Các tin liên quan
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server CentOS 72014-08-06
Cách cài đặt Nginx trên CentOS 7
2014-07-22
Cách tạo chứng chỉ ECC trên Nginx cho Debian 7
2014-07-21
Cách thiết lập cân bằng tải Nginx với kết thúc SSL
2014-07-17
Cách cài đặt Laravel với web server Nginx trên Ubuntu 14.04
2014-06-24
Cách cài đặt gpEasy CMS với NGINX và PHP5-FPM trên Debian 7
2014-06-03
Cách sử dụng Nginx làm Giám đốc lưu lượng toàn cầu trên Debian hoặc Ubuntu
2014-05-30
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 7 cho WordPress và Nginx trên Ubuntu 14.04
2014-05-27
Cách cung cấp tệp mật khẩu KeePass2 với Nginx trên server Ubuntu 14.04
2014-05-16
Cách cài đặt WordPress với Nginx trên Ubuntu 14.04
2014-05-15
 

