Các quản trị viên thường phải giới hạn quyền truy cập đến một số thành phần nhất định trên website để bảo vệ các thông tin quan trọng trên hệ thống. Một phương pháp hiệu quả là sử dụng mật khẩu để bảo vệ các tài nguyên này. Bài viết này sẽ hướng dẫn chi tiết các bước thiết lập xác thực mật khẩu cho Apache trên Ubuntu 20.04.
Điều kiên để thiết lập xác thực mật khẩu cho Apache trên Ubuntu 20.04
Trước khi bắt đầu, hãy đảm bảo rằng bạn đáp ứng được các yêu cầu sau:
- Có một server Ubuntu 20.04 với user non-root và quyền
sudo
, đồng thời cũng đã kích hoạt sẵn tường lửa. Server Ubuntu này cần được cài sẵn web server Apache. (Hướng dẫn chi tiết về cách cài đặt Apache trên Ubuntu 20.04 tại đây) - Virtual host được bảo mật bằng SSL. Nếu đã có sẵn tên miền thì bạn có thể mua chứng chỉ SSL từ Vietnix. Nếu chưa có sẵn tên miền thì bạn có thể sử dụng chứng chỉ tự ký để mã hóa.
- Bản ghi DNS A với tên miền
vietnixtest.com
trỏ đến địa chỉ IP public của server. - Bản ghi DNS A có
www.vietnixtest.com
trỏ đến địa chỉ IP public của server.
Sau khi có đủ các điều kiện trên, hãy làm theo các bước dưới đây để thiết lập phương thức xác thực mật khẩu cho Apache trên Ubuntu 20.04.
Bước 1 – Cài đặt gói công cụ Apache
Để thực hiện theo các bước trong bài viết, bạn cần sử dụng công cụ htpasswd
– một thành phần trong package apache2-utils
– để tạo file, quản lý username và password cho các nội dung cần giới hạn.
Cập nhật chỉ mục gói của server bằng lệnh sau:
sudo apt update
Sau đó cài đặt gói công cụ Apache:
sudo apt install apache2-utils
Bước 2 – Tạo file password
Sau khi có quyền truy cập vào lệnh htpasswd
, bạn có thể tạo file mật khẩu giúp Apache có thể xác thực người dùng. Đó là file ẩn có tên.htpasswd
nằm trong thư mục cấu hình /etc/apache2
của hệ thống.
Ở lần đầu tiên sử dụng công cụ, bạn cần thêm option -c
để tạo file .htpasswd
, ở phía cuối lệnh sẽ có tên username (trong ví dụ này là vietnix
) để tạo một entry mới trong file:
sudo htpasswd -c /etc/apache2/.htpasswd vietnix
Sau đó bạn sẽ được yêu cầu cung cấp và xác thực mật khẩu cho người dùng.
Đối với các lần sử dụng lệnh tiếp theo, bạn có thể bỏ đối số -c
khi muốn thêm những người dùng khác:
sudo htpasswd /etc/apache2/.htpasswd another_user
Nội dung của file bây giờ sẽ chứa username và mật khẩu được mã hóa cho từng bản ghi:
cat /etc/apache2/.htpasswd
Output
vietnix:$apr1$eponJaBR$9uyVIRpDpbHoseI.hS1cq/
another_user:$apr1$dDXiQxte$RGn3CVfFLQOPf5lSJgNvV1
Để đảm bảo quá trình cài đặt và thiết lập có thể diễn ra thuận lợi và không gặp trở ngại, việc sử dụng một máy chủ có khả năng mở rộng linh hoạt và toàn quyền quản trị là cần thiết. Một trong những lựa chọn phổ biến hiện nay là sử dụng VPS Vietnix, dịch vụ máy chủ ảo có nhiều tính năng và tiện ích hỗ trợ cho việc quản trị và phát triển website.
Với VPS Vietnix, bạn có thể tùy chỉnh các thiết lập cấu hình theo nhu cầu sử dụng, đảm bảo hiệu suất cao và độ ổn định tốt cho website của mình. Tùy theo nhu cầu sử dụng mà bạn có thể tham khảo gói VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU. Bên cạnh đó, Vietnix cũng cung cấp dịch vụ hỗ trợ kỹ thuật chuyên nghiệp, giúp bạn giải quyết các vấn đề liên quan đến máy chủ một cách nhanh chóng và hiệu quả. Liên hệ để được tư vấn chi tiết ngay.
Bước 3 – Cấu hình xác thực mật khẩu Apache
Ở bước này, bạn sẽ cấu hình để yêu cầu Apache kiểm tra file .htpasswd
trước khi cung cấp các nội dung được bảo vệ. Có hai cách để thực hiện: Trực tiếp cấu hình trong file virtual host, hoặc đưa file .htaccess
vào các thư mục cần giới hạn. Đa số gợi ý nên sử dụng file virtual host, nhưng nếu muốn cho phép cả những user non-root tự quản lý mức độ giới hạn truy cập của mình thì hãy làm theo cách thứ hai.
Cách 1: Cấu hình kiểm soát truy cập trong Virtual Host (Ưu tiên dùng phương pháp này)
Ở phương pháp đầu tiên, bạn sẽ chỉnh sửa cấu hình Apache và thêm mật khẩu bảo vệ vào file virtual host. Việc này thường sẽ có nhiều ưu điểm hơn vì dịch vụ sẽ không cần phải đọc nhiều file cấu hình phân tán trên server. Tuy nhiên việc chỉnh sửa chỉ có thể thực hiện được nếu bạn có quyền truy cập vào cấu hình.
Trước tiên hãy mở file virtual host bạn cần giới hạn, trong ví dụ này sẽ là file /etc/apache2/sites-available/vietnixtest.com.conf
chứa virtual host.
Mở file bằng text editor bất kỳ:
sudo nano /etc/apache2/sites-available/vietnixtest.com.conf
Nội dung của file sẽ có dạng như dưới đây:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName vietnixtest.com
ServerAlias www.vietnixtest.com
DocumentRoot /var/www/vietnixtest.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Việc xác thực được thực hiện riêng lẻ cho từng thư mục. Để thiết lập xác thực thì bạn cần chỉ định thư mục muốn giới hạn bằng block <Directory_>
. Ở ví dụ này, bạn sẽ giới hạn toàn bộ root của tài liệu:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName vietnixtest.com
ServerAlias www.vietnixtest.com
DocumentRoot /var/www/vietnixtest.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/vietnixtest.com">
</Directory>
</VirtualHost>
Trong block thư mục này, hãy chỉ định rằng bạn đang thiết lập phương thức xác thực loại Basic
. Đối với AuthName
, hãy chọn tên để hiển thị cho người dùng khi cần yêu cầu thông tin đăng nhập. Directive AuthUserFile
dùng để trỏ Apache đến file password vừa tạo. Cuối cùng, tạo một yêu cầu sao cho chỉ valid-user
mới có quyền truy cập vào tài nguyên này, tức là những người dùng có thể xác thực bằng mật khẩu mới được phép truy cập.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName vietnixtest.com
ServerAlias www.vietnixtest.com
DocumentRoot /var/www/vietnixtest.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/vietnixtest.com">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
Sau đó lưu rồi đóng file lại. Nếu đang sử dụng nano, bạn có thể nhấn CTRL + X
, tiếp đó nhấn Y
và ENTER
.
Kiểm tra cấu hình bằng lệnh sau:
sudo apache2ctl configtest
Nếu output là Syntax OK
thì bạn có thể restart server để áp dụng chính sách mật khẩu mới:
sudo systemctl restart apache2
Bạn có thể dùng lệnh status
để đảm bảo rằng server đang hoạt động:
sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Fri 2022-04-29 17:12:24 UTC; 4s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 4493 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SU>
Main PID: 4514 (apache2)
Tasks: 55 (limit: 9508)
Memory: 5.8M
CGroup: /system.slice/apache2.service
├─4514 /usr/sbin/apache2 -k start
├─4516 /usr/sbin/apache2 -k start
└─4517 /usr/sbin/apache2 -k start
Cách 2: Cấu hình kiểm soát truy cập bằng file .htaccess
Apache có thể sử dụng file .htaccess
để cho phép một số nội dung cấu hình được thiết lập bên trong thư mục. Tuy nhiên Apache sẽ phải đọc lại các file này sau mỗi request liên quan đến thư mục nên cách này thường ảnh hưởng xấu đến hiệu năng của dịch vụ. Tuy nhiên nếu bạn đang sử dụng file .htaccess
để cho phép các user non-root tự quản lý giới hạn của mình thì vẫn đây vẫn là cách tối ưu hơn.
Trước tiên, mở file config Apache bằng một text editor bất kỳ:
sudo nano /etc/apache2/apache2.conf
Tìm block <Directory>
cho thư mục /var/www
chứa root tài liệu. Cập nhật dòng này để phản ánh root rồi đổi directive AllowOverride
từ None
thành All
. Bây giờ nội dung của block sẽ như dưới đây:
. . .
<Directory /var/www/vietnixtest.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
. . .
Sau đó lưu rồi đóng file lại.
Tiếp theo, thêm một file .htaccess
vào thư mục cần hạn chế. Trong ví dụ này, bạn sẽ giới hạn toàn bộ root tài liệu (tức là cả website) ở /var/www/vietnixtest.com
:
sudo nano /var/www/vietnixtest.com/.htaccess
Trong file này bạn thực hiện chỉ định phương thức xác thực Basic
, phần AuthName
chỉ định tên sẽ hiển thị cho người dùng khi yêu cầu thông tin đăng nhập. Directive AuthUserFile
dùng để trỏ Apache đến file password vừa tạo trước đó. Cuối cùng, bạn cần thiết lập sao cho chỉ user valid-user
mới có quyền truy cập tài nguyên:
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Sau đó lưu rồi đóng lại file. Bây giờ restart web server để bảo vệ tất cả nội dung bên trong hoặc dưới thư mục chứa file .htaccess
:
sudo systemctl restart apache2
Cuối cùng là chạy lệnh sau để kiểm tra trạng thái:
sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Fri 2022-04-29 17:18:17 UTC; 3s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 4721 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SU>
Main PID: 4744 (apache2)
Tasks: 55 (limit: 9508)
Memory: 5.9M
CGroup: /system.slice/apache2.service
├─4744 /usr/sbin/apache2 -k start
├─4745 /usr/sbin/apache2 -k start
└─4746 /usr/sbin/apache2 -k start
Bước 4 – Xác nhận phương thức bảo mật
Bây giờ bạn sẽ thử truy cập một nội dung được giới hạn để kiểm tra xem đã được bảo vệ chưa. Mở trình duyệt rồi vào https://vietnixtest.com
hoặc server_IP
(lưu ý hãy thay domain và IP bằng chính IP hoặc domain của bạn).
Hệ thống sẽ yêu cầu nhập username và password:
Nếu nhập chính xác thông tin đăng nhập thì bạn sẽ truy cập được nội dung. Mặt khác, nếu cung cấp sai thông tin hoặc nhấn Cancel thì màn hình sẽ hiển thị trang lỗi như sau:
Vietnix là một nhà cung cấp giải pháp hosting, VPS, tên miền, chứng chỉ SSL có hơn 10 năm kinh nghiệm hoạt động. Vietnix đã đạt được sự tin tưởng của hơn 50.000 khách hàng cá nhân và doanh nghiệp với hơn 100.000 dịch vụ đã được kích hoạt. Điều đáng tự hào hơn, chúng tôi nhận được sự giới thiệu của 97% khách hàng sau khi họ trải nghiệm và sử dụng dịch vụ.
Vietnix cam kết mang đến cho khách hàng của mình những giải pháp VPS chất lượng nhất, với đội ngũ kỹ thuật viên chuyên nghiệp và giàu kinh nghiệm. Bên cạnh đó, Vietnix cũng luôn cập nhật các công nghệ mới nhất để đáp ứng nhu cầu ngày càng cao của khách hàng.
Nếu bạn đang tìm kiếm một nhà cung cấp giải pháp VPS uy tín, chất lượng và đáng tin cậy, hãy đến với Vietnix. Chúng tôi sẽ là đối tác đáng tin cậy của bạn trên con đường phát triển kinh doanh của mình. Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Đị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 này đã hướng dẫn các bước thiết lập xác thực mật khẩu cho Apache trên Ubuntu 20.04. Bây giờ các nội dung quan trọng đã được bảo vệ và chỉ những người dùng cung cấp đúng thông tin bảo mật mới có thể truy cập được vào tài nguyên này. Chúc bạn thực hiện thành công trên hệ thống của mình.