Nginx phpmyadmin 403 bị cấm

Khi phát triển một trang web hoặc ứng dụng web, nhiều người dùng cần chức năng của một hệ thống cơ sở dữ liệu như MySQL. Tuy nhiên, việc tương tác với hệ thống chỉ từ ứng dụng khách dòng lệnh MySQL yêu cầu phải làm quen với Ngôn ngữ truy vấn có cấu trúc — thường được gọi là SQL — ngôn ngữ này có thể gây trở ngại lớn cho một số người dùng

Nội dung chính Hiển thị

  • Giới thiệu
  • điều kiện tiên quyết
  • Bước 1 — Cài đặt phpMyAdmin
  • Bước 2 — Thay đổi vị trí mặc định của phpMyAdmin
  • Bước 3 — Vô hiệu hóa đăng nhập gốc
  • Bước 4 — Tạo Cổng xác thực
  • Bước 5 — Thiết lập quyền truy cập qua đường hầm được mã hóa
  • Thiết lập kiểm soát truy cập dựa trên IP trên Nginx
  • Truy cập phpMyAdmin thông qua đường hầm được mã hóa
  • Tôi có thể sử dụng phpMyAdmin với nginx không?
  • Cách cài đặt và bảo mật phpMyAdmin với nginx trên Ubuntu 18. 04 máy chủ?
  • Làm cách nào để cài đặt hoàn toàn phpMyAdmin trên Ubuntu?
  • Làm cách nào để cài đặt PHP FPM Nginx ubuntu?

phpMyAdmin được tạo để cho phép người dùng tương tác với MySQL thông qua giao diện web trực quan, chạy cùng với môi trường phát triển PHP. Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt phpMyAdmin trên máy chủ Nginx

Ghi chú. phpMyAdmin chạy trên máy chủ cơ sở dữ liệu, xử lý thông tin đăng nhập cơ sở dữ liệu và cho phép người dùng thực thi các câu lệnh SQL trên cơ sở dữ liệu. Kết hợp với thực tế rằng đó là một ứng dụng PHP được triển khai rộng rãi, điều này có nghĩa là phpMyAdmin thường xuyên trở thành mục tiêu tấn công. Nếu bạn cài đặt và định cấu hình phpMyAdmin mà không thực hiện các bước thích hợp để bảo vệ nó khỏi các tác nhân độc hại, thì bạn có nguy cơ bị mất hoặc đánh cắp dữ liệu

Ngoài việc cài đặt ứng dụng, hướng dẫn này sẽ giới thiệu một số biện pháp bạn có thể thực hiện để tăng cường bảo mật cho bản cài đặt phpMyAdmin của mình. Nó cũng sẽ giải thích chi tiết từng biện pháp để bạn có thể đưa ra quyết định sáng suốt và bảo vệ hệ thống của mình

điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần

  • Một máy chủ chạy Ubuntu 20. 04. Máy chủ này phải có người dùng không phải root với quyền quản trị và tường lửa được định cấu hình bằng
    1. UNINSTALL COMPONENT "file://component_validate_password";
    8. Để thiết lập điều này, hãy làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 20. 04
  • Ngăn xếp LEMP (Linux, Nginx, MySQL và PHP) được cài đặt trên Ubuntu 20 của bạn. 04 máy chủ. Để cài đặt và định cấu hình các thành phần này, hãy làm theo hướng dẫn của chúng tôi về Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Ubuntu 20. 04

Ngoài ra, vì phpMyAdmin xử lý xác thực bằng thông tin đăng nhập MySQL, chúng tôi thực sự khuyên bạn nên cài đặt chứng chỉ SSL/TLS để kích hoạt lưu lượng được mã hóa giữa máy chủ và máy khách. Nếu bạn không có miền hiện có được định cấu hình với chứng chỉ hợp lệ, hãy làm theo hướng dẫn này về cách bảo mật Nginx bằng Let's Encrypt trên Ubuntu 20. 04 để thiết lập cái này

Cảnh báo. Nếu bạn chưa cài đặt chứng chỉ SSL/TLS trên máy chủ và bạn vẫn muốn tiếp tục, vui lòng xem xét việc thực thi quyền truy cập qua Đường hầm SSH như được giải thích trong Bước 5 của hướng dẫn này

Khi bạn đã có những điều kiện tiên quyết này, bạn có thể bắt đầu làm theo Bước 1 của hướng dẫn này

Bước 1 — Cài đặt phpMyAdmin

Bạn có thể cài đặt phpMyAdmin bằng cách sử dụng APT để tải xuống gói

  1. UNINSTALL COMPONENT "file://component_validate_password";
9 từ kho lưu trữ mặc định của Ubuntu

Bắt đầu bằng cách cập nhật chỉ mục gói của máy chủ

  1. sudo apt update

Bây giờ bạn có thể cài đặt phpMyAdmin bằng cách chạy lệnh sau

  1. sudo apt install phpmyadmin

During the installation process, you will be prompted to choose a web server (either Apache or Lighttpd) to configure. phpMyAdmin can automatically make a number of configuration changes to ensure that it works correctly with either of these web servers upon installation. However, because you are using Nginx as a web server you shouldn’t choose either of these options. Instead, press

  1. exit
0 to highlight the and then press
  1. exit
1 to continue the installation process.

Next, you’ll be prompted whether to use

  1. exit
2 for configuring the application database. Select . This will set up the internal database and administrative user for phpMyAdmin. You will be asked to define a new password for the phpmyadmin MySQL user, but because this isn’t a password you need to remember you can leave it blank and let phpMyAdmin randomly create a password.

Ghi chú. Giả sử bạn đã cài đặt MySQL bằng cách làm theo Bước 2 của hướng dẫn ngăn xếp LEMP tiên quyết, bạn có thể đã quyết định bật plugin Xác thực mật khẩu. Khi viết bài này, việc kích hoạt thành phần này sẽ gây ra lỗi khi quá trình cài đặt phpMyAdmin cố gắng đặt mật khẩu cho người dùng phpmyadmin

Nginx phpmyadmin 403 bị cấm

Để giải quyết vấn đề này, hãy chọn tùy chọn hủy bỏ để dừng quá trình cài đặt. Sau đó, mở lời nhắc MySQL của bạn

  1. sudo mysql

Hoặc, nếu bạn đã bật xác thực mật khẩu cho người dùng MySQL gốc, hãy chạy lệnh này rồi nhập mật khẩu của bạn khi được nhắc

________số 8

Từ dấu nhắc MySQL, hãy chạy lệnh sau để tắt thành phần Xác thực mật khẩu. Lưu ý rằng thao tác này sẽ không thực sự gỡ cài đặt nó mà chỉ ngăn thành phần được tải trên máy chủ MySQL của bạn

  1. UNINSTALL COMPONENT "file://component_validate_password";

Sau đó, bạn có thể đóng máy khách MySQL

  1. exit

Sau đó thử cài đặt lại gói

  1. UNINSTALL COMPONENT "file://component_validate_password";
9 và nó sẽ hoạt động như mong đợi

  1. sudo apt install phpmyadmin

Sau khi cài đặt phpMyAdmin, bạn có thể mở lại lời nhắc MySQL bằng

  1. exit
4 hoặc
  1. exit
5, sau đó chạy lệnh sau để bật lại thành phần Xác thực mật khẩu

  1. UNINSTALL COMPONENT "file://component_validate_password";
5

Khi lệnh

  1. exit
6 hoàn thành, phpMyAdmin sẽ được cài đặt đầy đủ. Tuy nhiên, để máy chủ web Nginx tìm và phục vụ chính xác các tệp phpMyAdmin, bạn sẽ cần tạo một liên kết tượng trưng từ các tệp cài đặt đến thư mục gốc tài liệu của Nginx. Nếu bạn đã làm theo hướng dẫn ngăn xếp LEMP tiên quyết, gốc tài liệu cài đặt Nginx của bạn là
  1. exit
7

  1. UNINSTALL COMPONENT "file://component_validate_password";
8

Cài đặt phpMyAdmin của bạn hiện đã hoạt động. Để truy cập giao diện, hãy truy cập tên miền hoặc địa chỉ IP công cộng của máy chủ, sau đó là

  1. exit
8 trong trình duyệt web của bạn

  1. sudo apt update
0

Như đã đề cập trước đây, phpMyAdmin xử lý xác thực bằng thông tin đăng nhập MySQL. Điều này có nghĩa là để đăng nhập vào phpMyAdmin, bạn sử dụng cùng tên người dùng và mật khẩu mà bạn thường sử dụng để kết nối với cơ sở dữ liệu bằng dòng lệnh hoặc bằng API. Nếu bạn cần trợ giúp tạo người dùng MySQL, hãy xem hướng dẫn này về Cách quản lý cơ sở dữ liệu SQL

Ghi chú. Đăng nhập vào phpMyAdmin với tư cách là người dùng MySQL gốc không được khuyến khích vì nó thể hiện rủi ro bảo mật đáng kể. Hướng dẫn này sẽ phác thảo cách vô hiệu hóa thông tin đăng nhập với tư cách là người dùng MySQL gốc trong Bước 3 của hướng dẫn này

Cài đặt phpMyAdmin của bạn hoàn toàn hoạt động vào thời điểm này. Tuy nhiên, bằng cách cài đặt giao diện web, bạn đã đưa máy chủ cơ sở dữ liệu MySQL của mình ra thế giới bên ngoài. Do tính phổ biến của phpMyAdmin và khả năng nó cung cấp quyền truy cập vào một lượng lớn dữ liệu nhạy cảm, các cài đặt như thế này là mục tiêu phổ biến cho các cuộc tấn công. Trong các phần tiếp theo của hướng dẫn này, chúng tôi sẽ giới thiệu một vài phương pháp khác nhau để bạn có thể làm cho cài đặt phpMyAdmin của mình an toàn hơn

Bước 2 — Thay đổi vị trí mặc định của phpMyAdmin

Một cách để bảo vệ cài đặt phpMyAdmin của bạn là làm cho nó khó tìm hơn. Các bot sẽ quét các đường dẫn phổ biến, như ________ 48, ________ 30, ________ 31, ________ 32 và các tên tương tự khác. Việc thay đổi URL của giao diện từ

  1. exit
8 thành một thứ gì đó không chuẩn sẽ khiến các tập lệnh tự động khó tìm thấy cài đặt phpMyAdmin của bạn hơn và thực hiện các cuộc tấn công vũ phu

Ở bước trước, bạn đã tạo một liên kết tượng trưng trong thư mục gốc của tài liệu web Nginx trỏ đến

  1. sudo apt install phpmyadmin
4, nơi đặt các tệp ứng dụng phpMyAdmin thực tế. Bạn có thể đổi tên liên kết tượng trưng này để thay đổi URL giao diện của phpMyAdmin

Để thực hiện việc này, hãy điều hướng đến thư mục gốc của tài liệu Nginx

  1. sudo apt install phpmyadmin
0

Sau đó chạy lệnh

  1. sudo apt install phpmyadmin
5 sau để liệt kê các tệp trong thư mục gốc của tài liệu để hiểu rõ hơn về thay đổi mà bạn sẽ thực hiện. Lệnh này bao gồm tùy chọn
  1. sudo apt install phpmyadmin
6, cho biết lệnh sử dụng định dạng "danh sách dài". Điều này sẽ hướng dẫn
  1. sudo apt install phpmyadmin
5 trả về nhiều thông tin hơn so với cách khác

  1. sudo apt install phpmyadmin
1

Đầu ra của bạn sẽ chứa một dòng như sau

  1. sudo apt install phpmyadmin
2

Dòng này chỉ ra rằng bạn có một liên kết tượng trưng có tên

  1. UNINSTALL COMPONENT "file://component_validate_password";
9 trong thư mục này. Bạn có thể thay đổi tên liên kết này thành bất kỳ tên nào bạn thích và làm như vậy sẽ thay đổi URL nơi bạn có thể truy cập phpMyAdmin. Điều này sẽ giúp che khuất điểm cuối khỏi các bot thực hiện tìm kiếm tự động các tên điểm cuối phổ biến

Chọn một tên ẩn mục đích của điểm cuối. Hướng dẫn này sẽ đặt tên cho điểm cuối là

  1. sudo apt install phpmyadmin
9 và sử dụng tên này trong các ví dụ xuyên suốt, nhưng bạn nên chọn một tên thay thế

Đổi tên liên kết tượng trưng bằng lệnh

  1. UNINSTALL COMPONENT "file://component_validate_password";
50

  1. sudo apt install phpmyadmin
3

Sau khi chạy lệnh này, hãy chạy lại lệnh

  1. UNINSTALL COMPONENT "file://component_validate_password";
51 để xác nhận rằng liên kết tượng trưng đã được đổi tên chính xác

  1. sudo apt install phpmyadmin
1

Lần này, đầu ra sẽ chỉ ra rằng danh sách cho liên kết tượng trưng đã được cập nhật với tên mới của nó

  1. sudo apt install phpmyadmin
5

Bây giờ khi bạn truy cập URL mà trước đây bạn đã sử dụng để truy cập phpMyAdmin, bạn sẽ gặp lỗi 404

  1. sudo apt update
0

Thay vào đó, bạn có thể truy cập giao diện phpMyAdmin của mình tại URL mới mà bạn vừa định cấu hình

  1. sudo apt install phpmyadmin
7

Bằng cách che khuất vị trí thực của phpMyAdmin trên máy chủ, bạn đang bảo vệ giao diện của nó trước các lần quét tự động và các nỗ lực vũ phu thủ công

Bước 3 — Vô hiệu hóa đăng nhập gốc

Trên MySQL, cũng như trong các hệ thống Linux thông thường, tài khoản root là tài khoản quản trị đặc biệt với quyền truy cập không hạn chế vào hệ thống. Ngoài việc là một tài khoản đặc quyền, đó còn là một tên đăng nhập đã biết, khiến nó trở thành mục tiêu rõ ràng cho các cuộc tấn công vũ phu. Để giảm thiểu những rủi ro này, bước này sẽ phác thảo cách định cấu hình phpMyAdmin để từ chối mọi nỗ lực đăng nhập đến từ người dùng MySQL gốc. Bằng cách này, ngay cả khi bạn cung cấp thông tin đăng nhập hợp lệ cho người dùng gốc, bạn vẫn sẽ nhận được Quyền truy cập bị từ chối. lỗi và sẽ không được phép đăng nhập

Vì bạn đã chọn

  1. exit
2 để định cấu hình và lưu trữ cài đặt phpMyAdmin nên cấu hình mặc định của ứng dụng hiện được lưu trữ trong cơ sở dữ liệu MySQL của bạn. Bạn sẽ cần tạo một tệp
  1. UNINSTALL COMPONENT "file://component_validate_password";
53 mới trong thư mục cấu hình của phpMyAdmin để xác định cài đặt tùy chỉnh của mình. Mặc dù các tập lệnh PHP của phpMyAdmin được đặt bên trong thư mục
  1. sudo apt install phpmyadmin
4, các tệp cấu hình của ứng dụng được đặt trong
  1. UNINSTALL COMPONENT "file://component_validate_password";
55

Tạo một tệp cài đặt tùy chỉnh mới bên trong thư mục

  1. UNINSTALL COMPONENT "file://component_validate_password";
56 và đặt tên là
  1. UNINSTALL COMPONENT "file://component_validate_password";
57

  1. sudo apt install phpmyadmin
8

Sau đó thêm nội dung sau vào tệp mới

/etc/phpmyadmin/conf. d/pma_secure. php

  1. sudo apt install phpmyadmin
9

Bằng cách bao gồm các chỉ thị

  1. UNINSTALL COMPONENT "file://component_validate_password";
58 và
  1. UNINSTALL COMPONENT "file://component_validate_password";
59 và đặt cả hai thành
  1. UNINSTALL COMPONENT "file://component_validate_password";
80, tệp cấu hình này lần lượt vô hiệu hóa thông tin đăng nhập không cần mật khẩu và thông tin đăng nhập của người dùng MySQL gốc

Lưu ý rằng cài đặt

  1. UNINSTALL COMPONENT "file://component_validate_password";
81 định cấu hình phpMyAdmin để sử dụng phương thức xác thực
  1. UNINSTALL COMPONENT "file://component_validate_password";
82. phpMyAdmin sử dụng phương thức xác thực
  1. UNINSTALL COMPONENT "file://component_validate_password";
82 theo mặc định, cho phép bạn đăng nhập vào phpMyAdmin với tư cách là bất kỳ người dùng MySQL hợp lệ nào với sự trợ giúp của cookie. Với phương pháp này, mật khẩu người dùng MySQL được lưu trữ và mã hóa bằng thuật toán Tiêu chuẩn mã hóa nâng cao (AES) trong một cookie tạm thời

Trước đây, phpMyAdmin thay vì sử dụng thuật toán Blowfish cho mục đích này. Tuy nhiên, nó vẫn tìm kiếm một lệnh có tên là

  1. UNINSTALL COMPONENT "file://component_validate_password";
84, trỏ đến cụm mật khẩu được sử dụng nội bộ bởi thuật toán AES. Đây không phải là cụm mật khẩu bạn cần nhớ, vì vậy bất kỳ chuỗi nào chứa 32 ký tự ngẫu nhiên sẽ hoạt động ở đây

Cập nhật dòng có nội dung

  1. UNINSTALL COMPONENT "file://component_validate_password";
85 thành chuỗi ngẫu nhiên chứa ít nhất 32 ký tự

Ghi chú. Nếu cụm mật khẩu bạn nhập ở đây có độ dài ngắn hơn 32 ký tự, điều đó sẽ khiến các cookie được mã hóa kém an toàn hơn. Tuy nhiên, việc nhập một chuỗi dài hơn 32 ký tự sẽ không gây hại gì

Để tạo một chuỗi ký tự thực sự ngẫu nhiên, bạn có thể cài đặt và sử dụng chương trình

  1. UNINSTALL COMPONENT "file://component_validate_password";
86 với APT

  1. sudo mysql
0

Theo mặc định,

  1. UNINSTALL COMPONENT "file://component_validate_password";
86 tạo mật khẩu dễ phát âm, mặc dù kém an toàn hơn. Tuy nhiên, bằng cách bao gồm cờ
  1. UNINSTALL COMPONENT "file://component_validate_password";
88, như trong lệnh sau, bạn có thể tạo một mật khẩu hoàn toàn ngẫu nhiên, khó nhớ. Lưu ý hai đối số cuối cùng cho lệnh này.
  1. UNINSTALL COMPONENT "file://component_validate_password";
89, quy định thời lượng chuỗi mật khẩu
  1. UNINSTALL COMPONENT "file://component_validate_password";
86 sẽ tạo ra;

  1. sudo mysql
1

Sao chép đầu ra kết quả của lệnh này và thêm nó vào tệp

  1. UNINSTALL COMPONENT "file://component_validate_password";
57, thay thế
  1. UNINSTALL COMPONENT "file://component_validate_password";
85

Lưu và đóng tệp khi bạn chỉnh sửa xong. Nếu bạn đã sử dụng

  1. sudo apt update
05, hãy làm như vậy bằng cách nhấn ______ 206, _______ 207 để xác nhận các thay đổi và sau đó nhấn
  1. exit
1 để quay lại dấu nhắc bash

Các thay đổi sẽ tự động áp dụng. Nếu bạn tải lại trang đăng nhập ngay bây giờ và cố gắng đăng nhập bằng quyền root, bạn sẽ nhận được thông báo Truy cập bị từ chối. lỗi

Đăng nhập bởi người dùng MySQL gốc hiện bị cấm khi cài đặt phpMyAdmin của bạn. Biện pháp bảo mật này sẽ chặn các tập lệnh brute-force cố gắng đoán mật khẩu của người dùng cơ sở dữ liệu gốc trên máy chủ của bạn. Hơn nữa, nó sẽ thực thi việc sử dụng các tài khoản MySQL ít đặc quyền hơn để truy cập giao diện web của phpMyAdmin, bản thân nó là một biện pháp bảo mật quan trọng

Bước 4 — Tạo Cổng xác thực

Ẩn cài đặt phpMyAdmin của bạn ở một vị trí bất thường có thể tránh được một số bot tự động quét mạng, nhưng nó vô dụng trước các cuộc tấn công có chủ đích. Để bảo vệ tốt hơn một ứng dụng web có quyền truy cập bị hạn chế, thông thường sẽ hiệu quả hơn nếu ngăn chặn những kẻ tấn công trước khi chúng có thể tiếp cận ứng dụng. Bằng cách này, họ sẽ không thể sử dụng các khai thác chung và tấn công vũ phu để đoán thông tin đăng nhập

Trong trường hợp cụ thể của phpMyAdmin, điều quan trọng hơn là phải khóa giao diện đăng nhập. Bằng cách giữ cho nó mở ra với thế giới, bạn đang cung cấp một nền tảng vũ phu để những kẻ tấn công đoán thông tin đăng nhập cơ sở dữ liệu của bạn

Bước này phác thảo cách thêm một lớp xác thực bổ sung vào cài đặt phpMyAdmin của bạn để tăng tính bảo mật cho cơ sở dữ liệu MySQL của bạn. Hầu hết các máy chủ web, bao gồm cả Nginx, đều cung cấp khả năng này nguyên bản. Bằng cách hoàn thành bước này, bất kỳ ai cố gắng truy cập vào màn hình đăng nhập cài đặt phpMyAdmin của bạn trước tiên sẽ được yêu cầu chuyển qua lời nhắc xác thực HTTP bằng cách nhập tên người dùng và mật khẩu hợp lệ

Để thiết lập điều này, trước tiên bạn cần tạo một tệp mật khẩu để lưu trữ thông tin đăng nhập xác thực. Nginx yêu cầu mã hóa mật khẩu bằng hàm

  1. sudo apt update
09. Bộ OpenSSL, được cài đặt mặc định trên máy chủ Ubuntu của bạn, bao gồm chức năng này

Để tạo mật khẩu được mã hóa, hãy nhập

  1. sudo mysql
2

Bạn sẽ được nhắc nhập và xác nhận mật khẩu mà bạn muốn sử dụng. Sau đó, tiện ích sẽ hiển thị một phiên bản mật khẩu được mã hóa trông giống như thế này

  1. sudo mysql
3

Sao chép giá trị này, vì bạn sẽ cần đưa nó vào tệp xác thực mà bạn sắp tạo

Bây giờ, hãy tạo một tệp xác thực. Với mục đích của hướng dẫn này, chúng tôi sẽ gọi tệp này là

  1. sudo apt install phpmyadmin
00 và đặt nó vào thư mục cấu hình Nginx

  1. sudo mysql
4

Trong tệp này, hãy chỉ định tên người dùng bạn muốn sử dụng, theo sau là dấu hai chấm (

  1. sudo apt install phpmyadmin
01) và sau đó là phiên bản mã hóa của mật khẩu bạn nhận được từ tiện ích
  1. sudo apt install phpmyadmin
02

Trong ví dụ này, người dùng có tên là

  1. sudo apt install phpmyadmin
03, nhưng bạn có thể chọn bất kỳ tên người dùng nào bạn muốn. Đây không cần phải là tên của hồ sơ người dùng hiện có trên máy chủ Ubuntu của bạn hoặc của người dùng MySQL

Sau khi thêm tên người dùng đã chọn và mật khẩu được mã hóa mà bạn đã sao chép trước đó, tệp sẽ trông như thế này

/etc/nginx/pma_pass

  1. sudo mysql
5

Lưu và đóng tệp khi hoàn tất

Tiếp theo, bạn sẽ cần sửa đổi tệp cấu hình Nginx. Một lần nữa, hướng dẫn này tuân theo các quy ước được thiết lập trong hướng dẫn LEMP tiên quyết, vì vậy tệp cấu hình được sử dụng trong các ví dụ sau là

  1. sudo apt install phpmyadmin
04. Đảm bảo rằng bạn sử dụng tệp cấu hình Nginx có liên quan cho vị trí web nơi cài đặt phpMyAdmin của bạn hiện được lưu trữ

Mở tệp cấu hình Nginx của bạn trong trình soạn thảo văn bản ưa thích của bạn để bắt đầu

  1. sudo mysql
6

Xác định vị trí khối

  1. sudo apt install phpmyadmin
05 và phần
  1. sudo apt install phpmyadmin
06 bên trong nó. Bạn cần tạo một phần
  1. sudo apt install phpmyadmin
07 mới bên dưới khối
  1. sudo apt install phpmyadmin
06 này để khớp với đường dẫn hiện tại của phpMyAdmin trên máy chủ

Nhớ lại rằng trong Bước 2 của hướng dẫn này, bạn đã thay đổi tên của vị trí của phpMyAdmin bằng cách đổi tên liên kết tượng trưng (trong ví dụ của chúng tôi là

  1. sudo apt install phpmyadmin
09). Tại đây, bạn cần nhập tên bạn đã sử dụng cho liên kết tượng trưng này. Bạn không cần bao gồm đường dẫn tệp đầy đủ, chỉ cần tên của liên kết tượng trưng liên quan đến thư mục gốc của tài liệu Nginx

/etc/nginx/sites-available/your_domain

  1. sudo mysql
7

Trong khối này, thiết lập hai chỉ thị.

  1. sudo apt install phpmyadmin
10, xác định thông báo sẽ được hiển thị trên lời nhắc xác thực và
  1. sudo apt install phpmyadmin
11, trỏ đến tệp xác thực bạn vừa tạo. Thêm cả hai chỉ thị này vào phần
  1. sudo apt install phpmyadmin
07 mới

/etc/nginx/sites-available/your_domain

  1. sudo mysql
8

Cuối cùng, lưu ý rằng khối này có bộ chọn

  1. sudo apt install phpmyadmin
13 trước định nghĩa vị trí mới. Điều này là để đảm bảo Nginx sẽ không bỏ qua các quy tắc truy cập của bạn khi nó phù hợp với quy tắc cho các tệp PHP, thường được định nghĩa là một biểu thức chính quy để bắt tất cả các tệp
  1. sudo apt install phpmyadmin
14. Trong các tệp cấu hình Nginx, các định nghĩa biểu thức chính quy có mức độ ưu tiên cao hơn các định nghĩa vị trí tiêu chuẩn. Điều này có nghĩa là nếu bạn không sử dụng bộ chọn
  1. sudo apt install phpmyadmin
13 ở đầu vị trí, người dùng vẫn có thể bỏ qua lời nhắc xác thực bằng cách điều hướng đến
  1. sudo apt install phpmyadmin
16 trong trình duyệt của họ

Bộ chọn

  1. sudo apt install phpmyadmin
13 ở đầu định nghĩa vị trí yêu cầu Nginx bỏ qua các kết quả phù hợp khác khi tìm thấy kết quả phù hợp cho vị trí này. Điều này có nghĩa là mọi thư mục con hoặc tệp trong
  1. sudo apt install phpmyadmin
18 sẽ phù hợp với quy tắc này. Tuy nhiên, vì định nghĩa để phân tích các tệp PHP sẽ bị bỏ qua do việc sử dụng bộ chọn
  1. sudo apt install phpmyadmin
13, nên chúng tôi sẽ cần bao gồm một khối vị trí PHP mới bên trong định nghĩa
  1. sudo apt install phpmyadmin
9. Điều này sẽ đảm bảo các tệp PHP bên trong vị trí này được phân tích cú pháp chính xác;

Thêm các dòng được đánh dấu sau vào khối

  1. sudo apt install phpmyadmin
07 bạn vừa thêm

/etc/nginx/sites-available/your_domain

  1. sudo mysql
9

Hãy nhớ thay thế liên kết ẩn bằng đường dẫn thực nơi có thể tìm thấy phpMyAdmin. Bạn cũng nên kiểm tra kỹ vị trí của tệp ổ cắm PHP-FPM, tệp này sẽ thay đổi tùy thuộc vào phiên bản PHP bạn hiện đã cài đặt. Trong ví dụ này, chúng tôi sử dụng

  1. sudo apt install phpmyadmin
22 hợp lệ cho PHP 7. 4, phiên bản được cài đặt trên Ubuntu 20. 04 qua kho APT mặc định

Lưu và đóng tệp khi bạn hoàn tất. Để kiểm tra xem tệp cấu hình có hợp lệ hay không, hãy chạy lệnh sau

  1. mysql -u root -p
0

Đầu ra sau cho biết cú pháp của tệp cấu hình là hợp lệ

  1. mysql -u root -p
1

Để kích hoạt cổng xác thực mới, hãy tải lại Nginx

  1. mysql -u root -p
2

Bây giờ khi bạn truy cập URL phpMyAdmin trong trình duyệt web của mình, bạn sẽ được nhắc nhập tên người dùng và mật khẩu mà bạn đã thêm vào tệp

  1. sudo apt install phpmyadmin
00

  1. sudo apt install phpmyadmin
7

Khi bạn nhập thông tin đăng nhập của mình, bạn sẽ được đưa đến trang đăng nhập phpMyAdmin tiêu chuẩn

Ghi chú. Lời nhắc xác thực có thể không xuất hiện nếu bạn đã truy cập phpMyAdmin gần đây. Để buộc lời nhắc xuất hiện, bạn có thể phải làm mới trang, xóa bộ nhớ cache hoặc mở một phiên trình duyệt khác

Ngoài việc cung cấp thêm một lớp bảo mật, cổng này sẽ giúp giữ cho nhật ký MySQL của bạn sạch khỏi các nỗ lực xác thực spam

Bước 5 — Thiết lập quyền truy cập qua đường hầm được mã hóa

Để tăng tính bảo mật, chỉ có thể khóa cài đặt phpMyAdmin của bạn đối với các máy chủ được ủy quyền. Bạn có thể giới hạn quyền truy cập vào phpMyAdmin bằng cách chỉ định các máy chủ được ủy quyền riêng lẻ trong tệp cấu hình Nginx của bạn. Bằng cách này, mọi yêu cầu đến từ một địa chỉ IP không có trong danh sách sẽ bị từ chối

Mặc dù chỉ riêng tính năng này có thể là đủ trong một số trường hợp sử dụng, nhưng nó không phải lúc nào cũng là giải pháp lâu dài tốt nhất, chủ yếu là do hầu hết mọi người không truy cập internet từ các địa chỉ IP tĩnh. Ngay sau khi bạn nhận được địa chỉ IP mới từ nhà cung cấp internet, bạn sẽ không thể truy cập giao diện phpMyAdmin cho đến khi bạn cập nhật tệp cấu hình Nginx bằng địa chỉ IP mới của mình

Để có giải pháp lâu dài mạnh mẽ hơn, bạn có thể sử dụng kiểm soát truy cập dựa trên IP để tạo thiết lập trong đó người dùng sẽ chỉ có quyền truy cập vào giao diện phpMyAdmin của bạn nếu họ đang truy cập từ địa chỉ IP được ủy quyền hoặc localhost thông qua đường hầm SSH. Chúng tôi sẽ giới thiệu cách thiết lập cả hai điều khiển truy cập này trong các phần bên dưới

Kết hợp kiểm soát truy cập dựa trên IP với đường hầm SSH giúp tăng cường bảo mật đáng kể vì nó chặn hoàn toàn truy cập đến từ internet công cộng (ngoại trừ IP được ủy quyền), ngoài việc cung cấp kênh an toàn giữa người dùng và máy chủ thông qua việc sử dụng các đường hầm được mã hóa

Thiết lập kiểm soát truy cập dựa trên IP trên Nginx

Trên Nginx, kiểm soát truy cập dựa trên IP có thể được xác định trong khối

  1. sudo apt install phpmyadmin
07 tương ứng của một trang web nhất định, sử dụng các chỉ thị
  1. sudo apt install phpmyadmin
25 và
  1. sudo apt install phpmyadmin
26. Ví dụ: nếu bạn chỉ muốn cho phép các yêu cầu đến từ một máy chủ nhất định, bạn sẽ bao gồm hai dòng sau, theo thứ tự này, bên trong khối
  1. sudo apt install phpmyadmin
07 có liên quan cho trang web mà bạn muốn bảo vệ

  1. mysql -u root -p
4

Bạn có thể cho phép bao nhiêu máy chủ tùy thích và bạn chỉ cần bao gồm một dòng

  1. sudo apt install phpmyadmin
25 cho mỗi máy chủ/IP được ủy quyền bên trong khối
  1. sudo apt install phpmyadmin
07 tương ứng cho trang web mà bạn đang bảo vệ. Các lệnh sẽ được đánh giá theo thứ tự giống như chúng được liệt kê cho đến khi tìm thấy kết quả phù hợp hoặc yêu cầu cuối cùng bị từ chối do chỉ thị
  1. sudo apt install phpmyadmin
30

Trong bước này, bạn sẽ định cấu hình Nginx để chỉ cho phép các yêu cầu đến từ localhost hoặc địa chỉ IP hiện tại của bạn. Trước tiên, bạn cần biết địa chỉ IP công cộng hiện tại mà máy cục bộ của bạn đang sử dụng để kết nối với internet. Có nhiều cách khác nhau để có được thông tin này; . io. Bạn có thể mở URL

  1. sudo apt install phpmyadmin
31 trong trình duyệt của mình hoặc chạy lệnh sau từ máy cục bộ của mình

  1. mysql -u root -p
5

Lệnh này sẽ trả về một địa chỉ IP, như thế này

  1. mysql -u root -p
6

Giá trị được lệnh này trả về là địa chỉ IP công cộng hiện tại của máy cục bộ của bạn. Bạn sẽ định cấu hình khối

  1. sudo apt install phpmyadmin
07 của phpMyAdmin để chỉ cho phép các yêu cầu đến từ IP đó hoặc cục bộ từ chính máy chủ

Để thực hiện việc này, một lần nữa hãy mở tệp cấu hình Nginx của trang web của bạn bằng trình soạn thảo văn bản ưa thích của bạn

  1. sudo mysql
6

Vì bạn đã có quy tắc truy cập trong cấu hình hiện tại của mình nên bạn cần kết hợp quy tắc đó với kiểm soát truy cập dựa trên IP bằng cách sử dụng chỉ thị

  1. sudo apt install phpmyadmin
33. Bằng cách này, bạn có thể giữ lời nhắc xác thực HTTP hiện tại để tăng cường bảo mật

Thêm các dòng được đánh dấu sau vào khối cấu hình phpMyAdmin của bạn

  1. sudo apt install phpmyadmin
07

/etc/nginx/sites-available/your_domain

  1. mysql -u root -p
8

Đây là giao diện của tệp sau khi thêm các chỉ thị mới này. Hãy nhớ thay thế

  1. sudo apt install phpmyadmin
09 bằng đường dẫn thực nơi có thể tìm thấy phpMyAdmin và địa chỉ IP được đánh dấu bằng địa chỉ IP công cộng hiện tại của máy cục bộ của bạn

/etc/nginx/sites-available/your_domain

  1. mysql -u root -p
8

Lưu và đóng tệp khi bạn hoàn tất. Để kiểm tra xem tệp cấu hình có hợp lệ hay không, bạn có thể chạy

  1. mysql -u root -p
0

Đầu ra sau đây được mong đợi

  1. mysql -u root -p
1

Bây giờ hãy tải lại máy chủ web để các thay đổi có hiệu lực

  1. mysql -u root -p
2

Vì địa chỉ IP của bạn được liệt kê rõ ràng là máy chủ được ủy quyền nên quyền truy cập của bạn sẽ không bị quấy rầy. Tuy nhiên, bất kỳ ai khác đang cố truy cập vào cài đặt phpMyAdmin của bạn sẽ gặp lỗi

  1. sudo apt install phpmyadmin
36

  1. sudo apt install phpmyadmin
7

Phần phụ tiếp theo của hướng dẫn này sẽ cung cấp chi tiết về cách sử dụng đường hầm SSH để truy cập máy chủ web thông qua các yêu cầu cục bộ. Bằng cách này, bạn vẫn có thể truy cập vào giao diện của phpMyAdmin ngay cả khi địa chỉ IP của bạn thay đổi

Truy cập phpMyAdmin thông qua đường hầm được mã hóa

Đường hầm SSH hoạt động như một cách chuyển hướng lưu lượng mạng thông qua các kênh được mã hóa. Bằng cách chạy lệnh

  1. sudo apt install phpmyadmin
37 tương tự như lệnh bạn sẽ sử dụng để đăng nhập vào máy chủ, bạn có thể tạo một “đường hầm” an toàn giữa máy cục bộ của mình và máy chủ đó. Sau khi thiết lập một đường hầm, tất cả lưu lượng truy cập vào một cổng cục bộ nhất định có thể được chuyển hướng qua đường hầm được mã hóa, sử dụng máy chủ từ xa làm proxy trước khi tiếp cận với internet. Điều này tương tự như những gì xảy ra khi bạn sử dụng mạng riêng ảo (VPN), nhưng đường hầm SSH thường yêu cầu ít cấu hình hơn để thiết lập

Bạn có thể sử dụng đường hầm SSH để ủy quyền các yêu cầu của mình tới máy chủ web từ xa đang chạy phpMyAdmin. Bằng cách tạo một đường hầm giữa máy cục bộ của bạn và máy chủ nơi cài đặt phpMyAdmin, bạn có thể chuyển hướng các yêu cầu cục bộ đến máy chủ web từ xa. Quan trọng hơn, lưu lượng truy cập sẽ được mã hóa và các yêu cầu sẽ đến Nginx như thể chúng đến từ localhost. Bằng cách này, bất kể bạn đang kết nối từ địa chỉ IP nào, bạn sẽ có thể truy cập giao diện của phpMyAdmin một cách an toàn

Vì lưu lượng giữa máy cục bộ của bạn và máy chủ web từ xa sẽ được mã hóa nên đây là giải pháp thay thế an toàn cho các trường hợp bạn không thể cài đặt chứng chỉ SSL/TLS trên máy chủ web đang chạy phpMyAdmin

Từ máy cục bộ của bạn, hãy chạy lệnh này bất cứ khi nào bạn cần truy cập vào phpMyAdmin

  1. UNINSTALL COMPONENT "file://component_validate_password";
4

Hãy kiểm tra từng phần của lệnh

  • người sử dụng. hồ sơ người dùng Ubuntu để kết nối với máy chủ nơi phpMyAdmin đang chạy
  • máy chủ_tên_miền_or_IP. Máy chủ SSH nơi phpMyAdmin đang chạy
  • -L 8000. máy chủ cục bộ. 80 chuyển hướng lưu lượng HTTP trên cổng
    1. sudo apt install phpmyadmin
    38
  • -L 8443. máy chủ cục bộ. 443 chuyển hướng lưu lượng HTTPS trên cổng
    1. sudo apt install phpmyadmin
    39
  • -N. ngăn chặn việc thực hiện các lệnh từ xa

Ghi chú. Lệnh này sẽ chặn thiết bị đầu cuối cho đến khi bạn ngắt nó bằng cách nhấn

  1. sudo apt install phpmyadmin
40, trong trường hợp đó, nó sẽ kết thúc kết nối SSH và dừng chuyển hướng gói. Nếu bạn muốn chạy lệnh này ở chế độ nền, bạn có thể bao gồm tùy chọn SSH
  1. sudo apt install phpmyadmin
41

Bây giờ, hãy truy cập trình duyệt của bạn và thay thế server_domain_or_IP bằng

  1. sudo apt install phpmyadmin
42, trong đó
  1. sudo apt install phpmyadmin
43 là
  1. sudo apt install phpmyadmin
38 cho HTTP hoặc
  1. sudo apt install phpmyadmin
39 cho HTTPS

  1. UNINSTALL COMPONENT "file://component_validate_password";
5
  1. UNINSTALL COMPONENT "file://component_validate_password";
6

Ghi chú. Nếu bạn đang truy cập phpMyAdmin qua HTTPS, bạn có thể nhận được thông báo cảnh báo đặt câu hỏi về tính bảo mật của chứng chỉ SSL. Điều này xảy ra vì tên miền bạn đang sử dụng (localhost) không khớp với địa chỉ đã đăng ký trong chứng chỉ (tức là miền mà phpMyAdmin đang thực sự được phục vụ). Hãy yên tâm rằng nó là an toàn để tiếp tục

Ngoài ra, hãy lưu ý rằng bạn có thể cần phải làm mới phiên trình duyệt của mình hoặc kiểm tra kỹ URL nếu bạn đã thiết lập bất kỳ chuyển hướng nào trong tệp cấu hình Nginx của mình

Tất cả các yêu cầu trên

  1. sudo apt install phpmyadmin
46 (HTTP) và
  1. sudo apt install phpmyadmin
47 (HTTPS) hiện đang được chuyển hướng qua một đường hầm an toàn đến ứng dụng phpMyAdmin từ xa của bạn. Bạn không chỉ tăng cường bảo mật bằng cách vô hiệu hóa quyền truy cập công khai vào phpMyAdmin của mình, bạn còn bảo vệ tất cả lưu lượng giữa máy tính cục bộ của mình và máy chủ từ xa bằng cách sử dụng đường hầm được mã hóa để gửi và nhận dữ liệu

Nếu bạn muốn thực thi việc sử dụng đường hầm SSH cho bất kỳ ai muốn truy cập vào giao diện phpMyAdmin của bạn (bao gồm cả bạn), bạn có thể làm điều đó bằng cách xóa mọi IP được ủy quyền khác khỏi tệp cấu hình Nginx, để lại

  1. sudo apt install phpmyadmin
48 làm máy chủ duy nhất được phép . Vì không ai có thể thực hiện yêu cầu trực tiếp tới phpMyAdmin, nên việc xóa xác thực HTTP là an toàn để đơn giản hóa thiết lập của bạn. Đây là cách tệp cấu hình của bạn sẽ trông như thế nào trong một tình huống như vậy

/etc/nginx/sites-available/your_domain

  1. UNINSTALL COMPONENT "file://component_validate_password";
7

Khi bạn tải lại cấu hình của Nginx với

  1. sudo apt install phpmyadmin
49, cài đặt phpMyAdmin của bạn sẽ bị khóa và người dùng sẽ được yêu cầu sử dụng đường hầm SSH để truy cập giao diện của phpMyAdmin thông qua các yêu cầu được chuyển hướng

Sự kết luận

Bằng cách làm theo hướng dẫn này, bạn đã cài đặt phpMyAdmin trên Ubuntu 20. 04 chạy Nginx làm máy chủ web. Bạn cũng đã tìm hiểu về một số phương pháp nâng cao để bảo mật cài đặt phpMyAdmin trên Ubuntu, chẳng hạn như vô hiệu hóa đăng nhập root, tạo thêm một lớp xác thực và sử dụng đường hầm SSH để truy cập cài đặt phpMyAdmin chỉ thông qua các yêu cầu cục bộ

Sau khi hoàn thành hướng dẫn này, bạn có thể quản lý cơ sở dữ liệu MySQL của mình từ một giao diện web khá an toàn. Giao diện người dùng này hiển thị hầu hết các chức năng có sẵn thông qua dòng lệnh MySQL. Bạn có thể duyệt cơ sở dữ liệu và lược đồ, thực hiện các truy vấn và tạo các tập dữ liệu và cấu trúc mới

Nếu bạn muốn tìm hiểu thêm về cách làm việc với MySQL, chúng tôi khuyên bạn nên xem phần giới thiệu về truy vấn trong MySQL này. Để hiểu sâu hơn về SQL ngoài các truy vấn đơn thuần, bạn cũng có thể quan tâm đến loạt bài hướng dẫn Cách sử dụng SQL của chúng tôi

Tôi có thể sử dụng phpMyAdmin với nginx không?

Bạn sẽ có thể truy cập cơ sở dữ liệu MySQL hoặc MariaDB của mình trong phpMyAdmin bằng Nginx thông qua giao diện web đồ họa một cách dễ dàng, chạy cùng với môi trường phát triển PHP .

Cách cài đặt và bảo mật phpMyAdmin với nginx trên Ubuntu 18. 04 máy chủ?

Cách cài đặt và bảo mật phpMyAdmin với Nginx trên Ubuntu 18. 04 .

điều kiện tiên quyết

Bước 1 - Cài đặt phpMyAdmin

Bước 2 - Thay đổi vị trí mặc định của phpMyAdmin

Bước 3 - Vô hiệu hóa đăng nhập gốc

Bước 4 - Tạo Cổng xác thực

Làm cách nào để cài đặt hoàn toàn phpMyAdmin trên Ubuntu?

Cài đặt phpMyAdmin Để chọn nó, nhấn phím cách rồi nhấn Enter. Nếu bạn không nhấn phím cách, các tệp cần thiết để cài đặt sẽ không được chuyển. Chọn Có và nhấn Enter. Bây giờ bạn được yêu cầu nhập mật khẩu cho cơ sở dữ liệu quản trị viên