Thứ năm, 18/04/2019 | 00:00 GMT+7

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

Trong khi nhiều user cần chức năng của hệ thống database như MySQL, việc tương tác với hệ thống chỉ từ client dòng lệnh MySQL yêu cầu sự quen thuộc với ngôn ngữ SQL, vì vậy nó có thể không phải là giao diện ưa thích đối với một số người.

phpMyAdmin được tạo ra để user có thể 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. Trong hướng dẫn này, ta sẽ thảo luận cách cài đặt phpMyAdmin trên server Nginx và cách cấu hình server để tăng cường bảo mật.

Lưu ý: Có những cân nhắc bảo mật quan trọng khi sử dụng phần mềm như phpMyAdmin, vì nó chạy trên server database , nó xử lý thông tin đăng nhập database và nó cho phép user dễ dàng thực thi các truy vấn SQL tùy ý vào database của bạn. Vì phpMyAdmin là một ứng dụng PHP được triển khai rộng rãi nên nó thường xuyên là mục tiêu tấn công. Ta sẽ xem xét một số biện pháp bảo mật mà bạn có thể thực hiện trong hướng dẫn này để bạn có thể đưa ra quyết định sáng suốt.

Yêu cầu

Trước khi bắt đầu với hướng dẫn này, bạn cần những thứ sau có sẵn cho mình:

Vì phpMyAdmin xử lý xác thực bằng thông tin đăng nhập MySQL, bạn nên cài đặt certificate SSL / TLS để kích hoạt truy cập được mã hóa giữa server và client . Nếu bạn không có domain hiện có được cấu hình với certificate hợp lệ, bạn có thể 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 18.04 .

Cảnh báo: Nếu bạn chưa cài đặt certificate SSL / TLS trên server và bạn vẫn muốn tiếp tục, vui lòng xem xét 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 đã đáp ứng các yêu cầu này, bạn có thể tiếp tục với phần còn lại của hướng dẫn.

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

Điều đầu tiên ta cần làm là cài đặt phpMyAdmin trên server LEMP. Ta sẽ sử dụng repository mặc định của Ubuntu để đạt được mục tiêu này.

Hãy bắt đầu bằng cách cập nhật index gói của server với:

  • sudo apt update

Đến đây bạn có thể cài đặt phpMyAdmin với:

  • sudo apt install phpmyadmin

Trong quá trình cài đặt, bạn sẽ được yêu cầu chọn web server ( Apache hoặc Lighthttp ) để cấu hình. Bởi vì ta đang sử dụng Nginx làm web server , ta không nên đưa ra lựa chọn ở đây. Nhấn tab và sau đó nhấn OK để chuyển sang bước tiếp theo.

Tiếp theo, bạn sẽ được yêu cầu có sử dụng dbconfig-common để cấu hình database ứng dụng hay không. Chọn Yes . Thao tác này sẽ cài đặt database nội bộ và admin-user cho phpMyAdmin. Bạn cần xác định password mới cho user phpmyadmin MySQL. Bạn cũng có thể để trống và để phpMyAdmin tạo password ngẫu nhiên.

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 cần tạo một softlink từ các file cài đặt đến folder root tài liệu của Nginx:

  • sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Cài đặt phpMyAdmin của bạn 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 :

https://server_domain_or_IP/phpmyadmin 

màn hình đăng nhập phpMyAdmin

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

Lưu ý: Không khuyến khích đăng nhập vào phpMyAdmin với quyền là user MySQL gốc vì nó có nguy cơ bảo mật đáng kể. Ta sẽ xem cách tắt đăng nhập root trong bước tiếp theo của hướng dẫn này.

Cài đặt phpMyAdmin của bạn sẽ hoàn toàn hoạt động tại thời điểm này. Tuy nhiên, bằng cách cài đặt giao diện web, ta đã đưa server database MySQL của bạn ra thế giới bên ngoài. Do sự phổ biến của phpMyAdmin và số lượng lớn dữ liệu mà nó có thể 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 cho các cuộc tấn công. Trong các phần sau của hướng dẫn này, ta sẽ thấy một số cách khác nhau mà ta có thể làm cho cài đặt phpMyAdmin của bạn an toàn hơn.

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

Một trong những cách cơ bản nhất để bảo vệ cài đặt phpMyAdmin của bạn là làm cho nó khó tìm hơn. Bots sẽ quét các đường dẫn phổ biến, như phpmyadmin , pma , admin , mysql , v.v. Việc thay đổi URL của giao diện từ /phpmyadmin 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 và cố gắng tấn công brute-force.

Với cài đặt phpMyAdmin của ta , ta đã tạo một softlink trỏ đến /usr/share/phpmyadmin , nơi chứa các file ứng dụng thực tế. Để thay đổi URL giao diện của phpMyAdmin, ta sẽ đổi tên softlink này.

Trước tiên, hãy chuyển đến folder root của tài liệu Nginx và liệt kê các file trong đó để hiểu rõ hơn về thay đổi mà ta sẽ thực hiện:

  • cd /var/www/html/
  • ls -l

Bạn sẽ nhận được kết quả sau:

Output
total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin

Kết quả cho 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. Điều này sẽ thay đổi URL truy cập của phpMyAdmin, có thể giúp che khuất điểm cuối khỏi các bot được mã hóa cứng để tìm kiếm các tên điểm cuối phổ biến.

Chọn một tên che khuất mục đích của điểm cuối. Trong hướng dẫn này, ta sẽ đặt tên cho endpoint / nothingtosee , nhưng bạn nên chọn một tên thay thế . Để thực hiện điều này, ta sẽ đổi tên liên kết:

  • sudo mv phpmyadmin nothingtosee
  • ls -l

Sau khi chạy các lệnh trên, bạn sẽ nhận được kết quả sau:

Output
total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 nothingtosee -> /usr/share/phpmyadmin

Bây giờ, nếu bạn truy cập URL cũ, bạn sẽ gặp lỗi 404:

https://server_domain_or_IP/phpmyadmin 

lỗi phpMyAdmin 404

Giao diện phpMyAdmin của bạn bây giờ sẽ có sẵn tại URL mới mà ta vừa cấu hình :

https://server_domain_or_IP/nothingtosee 

màn hình đăng nhập phpMyAdmin

Bằng cách làm xáo trộn vị trí thực của phpMyAdmin trên server , bạn đang đảm bảo giao diện của nó chống lại quá trình quét tự động và các nỗ lực brute-force thủ công.

Bước 3 - Tắt đăng nhập root

Trên MySQL cũng như trong các hệ thống Linux thông thường, account gốc là một account 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 account quyề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 brute-force. Để giảm thiểu rủi ro, ta sẽ cấu hình phpMyAdmin để từ chối bất kỳ nỗ lực đăng nhập nào đến từ user root . Bằng cách này, ngay cả khi bạn cung cấp thông tin đăng nhập hợp lệ cho user root , bạn vẫn sẽ gặp lỗi "quyền truy cập bị từ chối" và sẽ không được phép đăng nhập.

Vì ta đã chọn sử dụng dbconfig-common để cấu hình và lưu trữ cài đặt phpMyAdmin nên cấu hình mặc định hiện được lưu trữ trong database . Ta cần tạo một file config.inc.php mới để xác định cài đặt tùy chỉnh của ta .

Mặc dù các file PHP cho phpMyAdmin được đặt bên trong /usr/share/phpmyadmin , ứng dụng này sử dụng các file cấu hình nằm tại /etc/phpmyadmin . Ta sẽ tạo một file cài đặt tùy chỉnh mới bên trong /etc/phpmyadmin/conf.d và đặt tên là pma_secure.php :

  • sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

Tệp cấu hình sau chứa các cài đặt cần thiết để tắt đăng nhập không cần password ( AllowNoPassword được đặt thành false ) và đăng nhập root ( AllowRoot được đặt thành false ):

/etc/phpmyadmin/conf.d/pma_secure.php
<?php  # PhpMyAdmin Settings # This should be set to a random string of at least 32 chars $cfg['blowfish_secret'] = '3!#32@3sa(+=_4?),5XP_:U%%8\34sdfSdg43yH#{o';  $i=0; $i++;  $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowNoPassword'] = false; $cfg['Servers'][$i]['AllowRoot'] = false;  ?> 

Lưu file khi bạn chỉnh sửa xong bằng cách nhấn CTRL + X rồi nhấn y để xác nhận các thay đổi và ENTER . Các thay đổi sẽ tự động áp dụng. Nếu bạn reload trang đăng nhập ngay bây giờ và cố gắng đăng nhập bằng quyền root, bạn sẽ gặp lỗi Access Denied :

truy cập bị từ chối

Đăng nhập root hiện bị cấm trên 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 password database gốc trên server của bạn. Hơn nữa, nó sẽ thực thi việc sử dụng các account MySQL ít quyền hơn để truy cập giao diện web của phpMyAdmin, bản thân nó là một thực tiễn 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ể bỏ qua 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 hạn chế, nói chung sẽ hiệu quả hơn để 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 khai thác chung và các cuộc 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ở với thế giới, bạn đang cung cấp một nền tảng brute-force để những kẻ tấn công đoán thông tin đăng nhập database của bạn.

Thêm một lớp xác thực bổ sung vào cài đặt phpMyAdmin của bạn cho phép bạn tăng cường bảo mật. User sẽ được yêu cầu chuyển qua dấu nhắc xác thực HTTP trước khi nhìn thấy màn hình đăng nhập phpMyAdmin. Hầu hết các web server , bao gồm cả Nginx, đều cung cấp khả năng này.

Để cài đặt điều này, trước tiên ta cần tạo một file password để lưu trữ thông tin xác thực. 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:

Output
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 sẽ chỉ định tên user mà bạn muốn sử dụng, tiếp theo là dấu hai chấm ( : ), tiếp theo là version được mã hóa của password mà bạn nhận được từ openssl passwd tiện ích.

Ta sẽ đặt tên cho user của bạn là sammy , nhưng bạn nên chọn một tên user khác. Tệp sẽ trông như thế này:

/ etc / nginx / pma_pass
sammy: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. Đối với hướng dẫn này, ta sẽ sử dụng file cấu hình có tại /etc/nginx/sites-available/ example.com . Bạn nên sử dụng file cấu hình Nginx có liên quan cho vị trí web nơi phpMyAdmin hiện đang được lưu trữ. Mở file này trong editor của bạn để bắt đầu:

  • sudo nano /etc/nginx/sites-available/example.com

Định vị khối serverlocation / phần bên trong nó. Ta cần tạo một phần location mới trong khối này để trùng với đường dẫn hiện tại của phpMyAdmin trên server . Trong hướng dẫn này, vị trí của phpMyAdmin so với root web là /nothingtosee :

/ etc / nginx / sites-available / default
server {     . . .          location / {                 try_files $uri $uri/ =404;         }          location /nothingtosee {                 # Settings for phpMyAdmin will go here         }      . . . } 

Trong khối này, ta cần cài đặt hai chỉ thị khác nhau: auth_basic , xác định thông báo sẽ được hiển thị trên dấu nhắc xác thực và auth_basic_user_file , trỏ đến file ta vừa tạo. Đây là cách file cấu hình của bạn sẽ trông như thế nào khi bạn hoàn tất:

/ etc / nginx / sites-available / default
server {     . . .          location /nothingtosee {                 auth_basic "Admin Login";                 auth_basic_user_file /etc/nginx/pma_pass;         }       . . . } 

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

  • sudo nginx -t

Sản lượng sau được mong đợi:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Để kích hoạt cổng xác thực mới, bạn phải reload web server :

  • sudo systemctl reload nginx

Bây giờ, nếu bạn truy cập URL phpMyAdmin trong trình duyệt web của bạn , bạn sẽ được yêu cầu nhập tên user và password bạn đã thêm vào file pma_pass :

https://server_domain_or_IP/nothingtosee 

Trang xác thực Nginx

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

Lưu ý: Nếu việc làm mới trang không hoạt động, 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.

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

Bước 5 - Cài đặt quyền truy cập qua tunnel được mã hóa (Tùy chọn)

Để tăng cường bảo mật, bạn chỉ có thể khóa cài đặt phpMyAdmin của bạn ở những server được ủy quyền. Bạn có thể đưa các server được ủy quyền vào danh sách trắng trong file cấu hình Nginx của bạn để mọi yêu cầu đến từ địa chỉ IP không có trong danh sách sẽ bị từ chối.

Mặc dù chỉ tính năng này 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 tốt nhất về lâu dài, chủ yếu là do hầu hết mọi người không truy cập Internet từ địa chỉ IP tĩnh. Ngay sau khi 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 cập nhật file cấu hình Nginx bằng địa chỉ IP mới của bạn .

Để 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 cài đặt trong đó user 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 server cục bộ thông qua đường hầm SSH . Ta sẽ xem cách cài đặt điều 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 SSH tunneling giúp tăng tính 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ừ các IP được phép), ngoài ra còn cung cấp một kênh bảo mật giữa user và server thông qua việc sử dụng các tunnel được mã hóa.

Cài đặt 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 location tương ứng của một trang web nhất định, bằng cách sử dụng các chỉ thị allowdeny . Ví dụ: nếu ta chỉ muốn cho phép các yêu cầu đến từ một server nhất định, ta nên bao gồm hai dòng sau, theo thứ tự này, bên trong khối location có liên quan cho trang web mà ta muốn bảo vệ:

allow hostname_or_IP; deny all; 

Bạn có thể cho phép bao nhiêu server tùy ý, bạn chỉ cần đưa một dòng allow cho mỗi server / IP được ủy quyền bên trong khối location tương ứng cho trang web bạn đang bảo vệ. Các chỉ thị sẽ được đánh giá theo thứ tự như chúng được liệt kê, cho đến khi tìm thấy kết quả phù hợp hoặc cuối cùng yêu cầu bị từ chối do deny all chỉ thị.

Bây giờ ta sẽ 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 local của bạn đang sử dụng để kết nối với Internet. Có nhiều cách khác nhau để lấy thông tin này; để đơn giản, ta sẽ sử dụng dịch vụ do ipinfo.io cung cấp. Bạn có thể mở URL https://ipinfo.io/ip trong trình duyệt của bạn hoặc chạy lệnh sau từ máy local của bạn:

  • curl https://ipinfo.io/ip

Bạn sẽ nhận được một địa chỉ IP đơn giản làm kết quả , như sau:

Output
203.0.113.111

Đó là địa chỉ IP công cộng hiện tại của bạn. Ta sẽ cấu hình khối vị trí của phpMyAdmin để chỉ cho phép các yêu cầu đến từ IP đó, ngoài localhost. Ta cần chỉnh sửa lại đoạn cấu hình cho phpMyAdmin bên trong /etc/nginx/sites-available/ example.com .

Mở file cấu hình Nginx bằng editor dòng lệnh mà bạn chọn:

  • sudo nano /etc/nginx/sites-available/example.com

Bởi vì ta đã có luật truy cập trong cấu hình hiện tại của bạn , ta cần kết hợp nó với kiểm soát truy cập dựa trên IP bằng cách sử dụng chỉ thị satisfy all . Bằng cách này, ta có thể giữ dấu nhắc xác thực HTTP hiện tại để tăng cường bảo mật.

Đây là cách cấu hình phpMyAdmin Nginx của bạn trông như thế nào sau khi bạn chỉnh sửa xong:

/etc/nginx/sites-available/example.com
server {     . . .      location /nothingtosee {         satisfy all; #requires both conditions          allow 203.0.113.111; #allow your IP         allow 127.0.0.1; #allow localhost via SSH tunnels         deny all; #deny all other sources          auth_basic "Admin Login";         auth_basic_user_file /etc/nginx/pma_pass;     }      . . . } 

Hãy nhớ thay thế nothingtosee bằng đường dẫn thực tế nơi có thể tìm thấy phpMyAdmin và địa chỉ IP được đánh dấu bằng địa chỉ IP công khai hiện tại của bạn.

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

  • sudo nginx -t

Sản lượng sau được mong đợi:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Bây giờ reload web server để các thay đổi có hiệu lực:

  • sudo systemctl reload nginx

Vì địa chỉ IP của bạn được liệt kê rõ ràng là server được ủy quyền, quyền truy cập của bạn sẽ không bị ảnh hưởng. Bất kỳ ai khác đang cố gắng truy cập cài đặt phpMyAdmin của bạn bây giờ sẽ gặp lỗi 403 (Bị cấm):

https://server_domain_or_IP/nothingtosee 

Lỗi 403

Trong phần tiếp theo, ta sẽ xem cách sử dụng tunnel SSH để truy cập web server thông qua các yêu cầu local . Bằng cách này, bạn vẫn có thể truy cập 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 một tunnel đượ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 một lệnh ssh tương tự như những gì bạn sẽ sử dụng để đăng nhập vào một server , bạn có thể tạo một “đường hầm” an toàn giữa máy local của bạn và server đó. Tất cả lưu lượng truy cập vào một cổng local nhất định giờ đây có thể được chuyển hướng qua tunnel được mã hóa và sử dụng server từ xa làm proxy trước khi kết nối với internet. Nó tương tự như những gì sẽ xảy ra khi bạn sử dụng VPN ( Mạng riêng ảo ), tuy nhiên việc cài đặt tunnel SSH đơn giản hơn nhiều.

Ta sẽ sử dụng tunnel SSH để ủy quyền các yêu cầu của ta tới web server từ xa đang chạy phpMyAdmin. Bằng cách tạo một tunnel giữa máy local của bạn và server nơi phpMyAdmin được cài đặt, bạn có thể chuyển hướng các yêu cầu local đến web server từ xa và điều 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 được Nginx như thể chúng đến từ localhost . Bằng cách này, dù bạn đang kết nối từ địa chỉ IP nào, bạn có thể truy cập an toàn vào giao diện của phpMyAdmin.

Vì lưu lượng truy cập giữa máy local của bạn và web server từ xa sẽ được mã hóa, đâ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 certificate SSL / TLS trên web server chạy phpMyAdmin.

Từ máy local của bạn , hãy chạy lệnh này khi nào bạn cần truy cập vào phpMyAdmin:

  • ssh user@server_domain_or_IP -L 8000:localhost:80 -L 8443:localhost:443 -N

Hãy xem xét từng phần của lệnh:

  • user : Người dùng SSH để kết nối với server nơi phpMyAdmin đang chạy
  • hostname_or_IP : Server SSH nơi phpMyAdmin đang chạy
  • -L 8000: localhost: 80 chuyển hướng truy cập HTTP trên cổng 8000
  • -L 8443: localhost: 443 chuyển hướng truy cập HTTP S trên cổng 8443
  • -N : không thực hiện các lệnh từ xa

Lưu ý: Lệnh này sẽ chặn terminal cho đến khi bị ngắt bằng CTRL+C , trong trường hợp đó, lệnh này 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ể sử dụng tùy chọn SSH -f .

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 localhost:PORT , trong đó PORT8000 cho HTTP hoặc 8443 cho HTTPS:

http://localhost:8000/nothingtosee 
https://localhost:443/nothingtosee 

màn hình đăng nhập phpMyAdmin

Lưu ý: 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 certificate SSL. Điều này xảy ra do domain bạn đang sử dụng (localhost) không trùng với địa chỉ đã đăng ký trong certificate (miền nơi phpMyAdmin thực sự đang được phân phát). Nó là an toàn để tiếp tục.

Tất cả các yêu cầu trên localhost:8000 (HTTP) và localhost:8443 (HTTPS) hiện đang được chuyển hướng qua một tunnel 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 vào phpMyAdmin của bạn , bạn còn bảo vệ tất cả lưu lượng giữa máy tính local và server từ xa bằng cách sử dụng một tunnel đượ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 tunnel 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ể thực hiện bằng cách xóa bất kỳ IP được ủy quyền nào khác khỏi file cấu hình Nginx, để lại 127.0.0.1 là chỉ được phép server để truy cập vị trí đó. Vì không ai có thể thực hiện các yêu cầu trực tiếp đến phpMyAdmin, nên có thể an toàn để xóa xác thực HTTP để đơn giản hóa cài đặt của bạn. Đây là cách file cấu hình của bạn trông giống như trong trường hợp như vậy:

/etc/nginx/sites-available/example.com
server {     . . .      location /nothingtosee {          allow 127.0.0.1; #allow localhost only         deny all; #deny all other sources     }      . . . } 

Sau khi bạn reload cấu hình của Nginx bằng sudo systemctl reload nginx , cài đặt phpMyAdmin của bạn sẽ bị khóa và user sẽ được yêu cầu sử dụng tunnel SSH để truy cập giao diện của phpMyAdmin thông qua các yêu cầu được chuyển hướng.

Kết luận

Trong hướng dẫn này, ta đã biết cách cài đặt phpMyAdmin trên Ubuntu 18.04 chạy Nginx làm web server . Ta cũng đề cập đến các 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 tunnel SSH để truy cập cài đặt phpMyAdmin chỉ qua yêu cầu local .

Sau khi hoàn thành hướng dẫ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 thể hiện 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 qua database và schemas , thực thi các truy vấn và tạo các cấu trúc và tập dữ liệu mới.


Tags:

Các tin liên quan

Cách bảo mật một ứng dụng Node.js được chứa đựng bằng Nginx, Let's Encrypt và Docker Compose
2019-01-04
Cách cài đặt Nginx trên FreeBSD 11.2
2018-11-15
Cách bảo mật Nginx bằng NAXSI trên Ubuntu 16.04
2018-11-09
Cách tạo chứng chỉ SSL tự ký cho Nginx trên Debian 9
2018-09-07
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Debian 9
2018-09-06
Cách bảo mật Nginx bằng Let's Encrypt trên Debian 9
2018-09-05
Cách cài đặt Nginx trên Debian 9
2018-09-04
Cách cài đặt Nginx trên Ubuntu 18.04 [Quickstart]
2018-07-23
Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu 18.04
2018-07-13
Cách di chuyển web root Nginx đến vị trí mới trên Ubuntu 18.04
2018-07-12