Khi thiết lập web server, bạn có thể sẽ cần giới hạn quyền truy cập đến một số phần trên trang để bảo vệ dữ liệu tuyệt mật. Qua bài viết về cách thiết lập mật khẩu xác thực cho Nginx trên Ubuntu 20.04 này, bạn sẽ được hướng dẫn cách sử dụng mật khẩu (password) để thiết lập phương thức xác thực trên web server Nginx.
Điều kiện để thiết lập xác thực bằng mật khẩu cho Nginx
Để thực hiện việc thiết lập xác thực bằng password cho Nginx, trước tiên ta cần có quyền truy cập vào môi trường Ubuntu 20.04 với user non-root và có quyền sudo. Bên cạnh đó bạn đọc cũng cần cài đặt sẵn Nginx trên máy. (Hướng dẫn chi tiết về cách cài đặt Nginx trên Ubuntu 20.04 tại đây)
Sau khi đảm bảo được các điều trên, hãy cùng bắt đầu việc xác thực mật khẩu cho Nginx theo các bước dưới đây.
Thiết lập mật khẩu xác thực cho Nginx trên Ubuntu 20.04 là cần thiết để bảo vệ hệ thống, dữ liệu và quản lý quyền truy cập. Điều này giúp đảm bảo an toàn và tuân thủ các tiêu chuẩn bảo mật cho ứng dụng và hệ thống của bạn.
Tuy nhiên, để VPS vận hành ổn định, mượt mà và đạt hiệu quả tối đa thì tốc độ cũng là một yếu tố quan trọng cần được chú trọng.
Hiện tại Vietnix đang cung cấp các gói VPS tốc độ cao, đa dạng cấu hình, tính năng hiện đại, bảo mật cao gồm: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU với nhiều mức giá khác nhau.
Nhanh tay liên hệ Vietnix để được tư vấn gói VPS tốc độ cao phù hợp với nhu cầu ngay hôm nay.
Bước 1: Tạo file password
Để bắt đầu, cần tạo một file chứa các tổ hợp username và password. Bạn có thể dùng công cụ OpenSSL có sẵn trên server hoặc htpasswd từ package apache1-utils.
Cách 1: Dùng OpenSSL
Nếu server đã có sẵn OpenSSL thì ta có thể nhanh chóng tạo file password mà không cần cài thêm package nào. Trước hết, tạo một file ẩn có tên .htpasswd trong thư mục cấu hình /etc/nginx để lưu trữ tổ hợp username-password.
Ta có thể thêm một username vào file bằng lệnh dưới đây, trong đó thay vietnix thành username tương ứng mà bạn muốn đặt:
sudo sh -c "echo -n 'vietnix:' >> /etc/nginx/.htpasswd"
Tiếp theo, tạo một entry mật khẩu đã được mã hóa cho username:
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
Nếu muốn cài đặt thêm nhiều username khác thì hãy sử dụng tiếp hai lệnh ở trên. Để kiểm tra cách username và password đã được mã hóa được lưu trữ trong file thế nào, chạy lệnh cat dưới đây:
cat /etc/nginx/.htpasswd
Output
vietnix:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
Cách 2: Dùng công cụ Apache
Mặc dù OpenSSL vẫn có thể được dùng để mã hóa password cho việc xác thực của Nginx, nhưng nhiều người dùng vẫn thích dùng các công cụ chuyên dụng như htpasswd
.
Trước tiên, cài đặt package apache2-utils cho server:
sudo apt update
sudo apt install apache2-utils
Bây giờ ta có thể sử dụng lệnh htpasswd để tạo file password. Tương tự, tạo một file .htpasswd trong thư mục /etc/nginx.
Đối với lần đầu sử dụng lệnh, ta cần thêm option -c để tạo file được chỉ định. Chạy lệnh dưới đây để tạo một entry mới trong file, đồng thời chỉ định username (ví dụ như vietnix) ở cuối lệnh:
sudo htpasswd -c /etc/nginx/.htpasswd vietnix
Hệ thống sau đó sẽ yêu cầu nhập và xác nhận password.
Nếu muốn tạo thêm những user tiếp theo thì ta không cần dùng -c như trước:
sudo htpasswd /etc/nginx/.htpasswd another_user
Kiểm tra username và password đã được mã hóa bằng lệnh cat:
cat /etc/nginx/.htpasswd
Output
vietnix:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.
Bước 2: Cấu hình xác thực Nginx bằng password
Sau khi có file chứa user và password ở định dạng Nginx có thể đọc, bây giờ ta cần cấu hình Nginx kiểm tra file trước khi thực hiện bảo mật.
Đầu tiên là mở file cấu hình block server muốn bảo mật, giả sử bài viết này chọn block default được cài qua Nginx package của Ubuntu:
sudo nano /etc/nginx/sites-enabled/default
Để thiết lập xác thực, bạn cần chọn nội dung để giới hạn quyền truy cập trước. Nginx cho phép người dùng giới hạn ở mức độ server hoặc trong một vị trí được chỉ định cụ thể.
Giả sử bạn cần đặt giới hạn ở mức độ server. Directive auth_basic dùng để bật chế độ xác thực cùng với tên hiển thị cho user khi đăng nhập. Bạn sẽ dùng directive auth_basic_user_file để trỏ Nginx đến file password vừa tạo ở bước trước:
server {
listen 80 default_server;
. . .
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Lưu ý: Tùy vào loại block cần giới hạn, bạn có thể kiểm soát mức độ chi tiết những thành phần nào phải được xác thực bằng password. Đoạn code dưới đây dùng để giới hạn tài liệu gốc với block location, đồng thời cũng có thể thay đổi danh sách để áp dụng cho một thư mục cụ thể.
server {
listen 80 default_server;
. . .
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Cuối cùng là lưu rồi đóng file lại, restart Nginx để áp dụng chính sách password mới:
sudo systemctl restart nginx
Bước 3: Kiểm tra phương thức xác thực bằng password
Để xác nhận rằng các thay đổi đã được áp dụng, hãy thử truy cập vào nội dung trên một trình duyệt web:
http://server_domain_or_IP
Bây giờ bạn sẽ được yêu cầu nhập username và password:
Nếu nhập đúng thông tin đăng nhập bạn sẽ được truy cập vào nội dung đó. Mặt khác, nếu nhập sai hoặc chọn Cancel thì trang sẽ hiển thị như sau:
Vietnix với hơn 10 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.
Nhanh tay đăng ký Vietnix VPS ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093 – 07 088 44444
- Email: sales@vietnix.com.vn
Lời kết
Bài viết về cách thiết lập mật khẩu xác thực cho Nginx trên Ubuntu 20.04 này đã hướng dẫn chi tiết các bước thiết lập phương thức xác thực bằng password cho Nginx trên Ubuntu. Vietnix khuyến khích bạn đọc nên kết hợp với cả các phương pháp mã hóa tin cậy khác như TLS để bảo đảm thông tin đăng nhập trên server. Nếu có điều gì thắc mắc, bạn hãy để lại bình luận bên dưới để được hỗ trợ thêm.