TRANG CHỦ
CHUYÊN MỤC
HỌC HỎI
TAG
ABOUT
Tìm kiếm
Hạn chế quyền truy cập bằng xác thực cơ bản HTTP
2023-10-18 11:15:13
Nginx
System
319 lượt xem
0 bình luận
Kiểm soát quyền truy cập bằng xác thực HTTP Basic và tùy chọn kết hợp với kiểm soát truy cập dựa trên địa chỉ IP. Bạn có thể hạn chế quyền truy cập vào trang web của mình hoặc một số phần của trang web bằng cách triển khai xác thực tên người dùng/mật khẩu. Tên người dùng và mật khẩu được lấy từ một tệp được tạo và điền bởi công cụ tạo tệp mật khẩu, như ```apache2-utils```. Xác thực HTTP Basic cũng có thể được kết hợp với các phương pháp hạn chế truy cập khác, chẳng hạn như hạn chế quyền truy cập theo địa chỉ IP hoặc vị trí địa lý … ### Điều kiện tiên quyết * Mã nguồn mở NGINX Plus hoặc NGINX * Tiện ích tạo file mật khẩu như ```apache2-utils``` (Debian, Ubuntu) hoặc ```httpd-tools``` (RHEL/CentOS/Oracle Linux). ### Tạo một tập tin mật khẩu Ví dụ: để tạo cặp tên người dùng-mật khẩu, hãy sử dụng tiện ích tạo tệp mật khẩu ```apache2-utils``` hoặc ```httpd-tools``` 1- Xác minh rằng ```apache2-utils``` (Debian, Ubuntu) hoặc ```httpd-tools``` (RHEL/CentOS/Oracle Linux) đã được cài đặt. 2- Tạo một tập tin mật khẩu và người dùng đầu tiên. Chạy ```htpasswd``` tiện ích với ```-c``` (để tạo tệp mới), tên đường dẫn tệp làm đối số đầu tiên và tên người dùng làm đối số thứ hai: ``` sudo htpasswd -c /etc/apache2/.htpasswd user1 ``` Nhấn Enter và nhập mật khẩu cho ```user1``` theo dấu nhắc. 3- Tạo các cặp mật khẩu người dùng bổ sung. Bỏ ```-c``` vì tệp đã tồn tại: ``` sudo htpasswd /etc/apache2/.htpasswd user2 ``` 4- Bạn có thể xác nhận rằng tệp chứa tên người dùng được ghép nối và mật khẩu băm: ``` cat /etc/apache2/.htpasswd user1:$apr1$/woC1jnP$KAh0SsVn5qe... user2:$apr1$QdR8fNLT$vbCEEzDj7L... ``` ### Định cấu hình NGINX để xác thực cơ bản HTTP 1- Bên trong vị trí mà bạn định bảo vệ, hãy chỉ định lệnh ```auth_basic``` và đặt tên cho khu vực được bảo vệ bằng mật khẩu. Tên của khu vực sẽ được hiển thị trong cửa sổ hộp thoại tên người dùng/mật khẩu khi yêu cầu thông tin xác thực: ``` location /api { auth_basic "Administrator’s Area"; #... } ``` 2- Chỉ định lệnh ```auth_basic_user_file``` với đường dẫn đến tệp ```.htpasswd``` chứa cặp người dùng/mật khẩu: ``` location /api { auth_basic "Administrator’s Area"; auth_basic_user_file /etc/apache2/.htpasswd; } ``` 3- Ngoài ra, bạn có thể giới hạn quyền truy cập vào toàn bộ trang web bằng xác thực cơ bản nhưng vẫn đặt một số khu vực trang web ở chế độ công khai. Trong trường hợp này, hãy chỉ định tham số ```off``` của ```lệnh auth_basic``` để hủy kế thừa từ các cấp cấu hình cao hơn: ``` server { ... auth_basic "Administrator’s Area"; auth_basic_user_file conf/htpasswd; location /public/ { auth_basic off; } } ``` ### Kết hợp xác thực cơ bản với hạn chế truy cập theo địa chỉ IP Xác thực cơ bản HTTP có thể được kết hợp hiệu quả với hạn chế truy cập theo địa chỉ IP. Bạn có thể triển khai ít nhất hai kịch bản: * Người dùng phải được xác thực và có địa chỉ IP hợp lệ * Người dùng phải được xác thực hoặc có địa chỉ IP hợp lệ 1- Cho phép hoặc từ chối quyền truy cập từ các địa chỉ IP cụ thể bằng lệnh cho phép và từ chối : ``` location /api { #... deny 192.168.1.2; allow 192.168.1.1/24; allow 127.0.0.1; deny all; } ``` Quyền truy cập sẽ chỉ được cấp cho mạng ```192.168.1.1/24``` không bao gồm địa chỉ ```192.168.1.2```. Lưu ý rằng các lệnh ```allow``` và ```deny``` sẽ được áp dụng theo thứ tự chúng được xác định. 2- Kết hợp hạn chế bằng xác thực IP và HTTP với chỉ thị đáp ứng . Nếu bạn đặt lệnh thành ```all```, quyền truy cập sẽ được cấp nếu khách hàng đáp ứng cả hai điều kiện. Nếu bạn đặt lệnh thành ```any```, quyền truy cập sẽ được cấp nếu khách hàng đáp ứng ít nhất một điều kiện: ``` location /api { #... satisfy all; deny 192.168.1.2; allow 192.168.1.1/24; allow 127.0.0.1; deny all; auth_basic "Administrator’s Area"; auth_basic_user_file conf/htpasswd; } ``` ### Ví dụ hoàn chỉnh ``` http { server { listen 192.168.1.23:8080; root /usr/share/nginx/html; location /api { api; satisfy all; deny 192.168.1.2; allow 192.168.1.1/24; allow 127.0.0.1; deny all; auth_basic "Administrator’s Area"; auth_basic_user_file /etc/apache2/.htpasswd; } } } ```  Nếu tên và mật khẩu được cung cấp không khớp với tệp mật khẩu, bạn sẽ gặp lỗi ```401 (Authorization Required)```.
Tag:
Nginx
Gợi ý bài viết liên quan
Thiết lập IP động Dynamic DNS (DDNS) trên Cloudflare
Hướng dẫn cài đặt NodeJS trên Ubuntu 22.04
Làm cách nào để cài đặt PIP trên Windows?
Làm cách nào để cài đặt Python trên Windows?
Cách sử dụng Gzip nén tệp và thư mục trong Linux