Bài cũ hướng dẫn một mục trong bảng quản trị mà bản DirectAdmin hiện nay không còn. Bài này viết lại theo cách vẫn dùng được, và cũng là cách chạy trên mọi hosting Apache.
1. Chức năng cũ đã bị bỏ
Các bản DirectAdmin trước có mục Password Protected Directories trong bảng người dùng. Bản hiện nay không còn mục đó, và File Manager cũng không có lựa chọn bảo vệ thư mục trong menu chuột phải.
Cách còn dùng được là đặt trực tiếp hai tệp: .htaccess và .htpasswd. Nghe thủ công hơn, nhưng nó chạy trên mọi hosting Apache và không phụ thuộc vào phiên bản bảng quản trị.
2. Dùng để làm gì
| Tình huống | Có hợp không |
|---|---|
| Che một website thử nghiệm khỏi người ngoài | Hợp |
| Che một thư mục tài liệu nội bộ | Hợp |
| Thêm một lớp trước trang đăng nhập quản trị | Hợp, và khá hiệu quả |
| Bảo vệ dữ liệu cá nhân của khách hàng | Không đủ. Việc đó cần hệ thống tài khoản thật trong phần mềm |
3. Bước 1: tạo tệp mật khẩu
Tệp .htpasswd chứa tên đăng nhập và mật khẩu đã băm. Không được để nó trong thư mục web.
Đặt nó ở thư mục gốc tài khoản, ngang hàng với domains, không phải bên trong public_html.
Cách tạo
Nếu gói hosting có SSH:
# Tao tep moi, SE GHI DE neu tep da ton tai
htpasswd -c /home/<ten-tai-khoan>/.htpasswd <ten-dang-nhap>
# Them nguoi dung thu hai tro di: BO -c, neu khong la xoa mat nguoi truoc
htpasswd /home/<ten-tai-khoan>/.htpasswd <ten-dang-nhap-2>
⚠️ Tham số -c tạo tệp mới và xoá sạch nội dung cũ. Chỉ dùng -c đúng một lần, cho người dùng đầu tiên.
Không có SSH thì dùng một công cụ sinh chuỗi .htpasswd trên mạng, rồi dán kết quả vào tệp tạo bằng File Manager. Chuỗi có dạng:
ten-dang-nhap:$apr1$...chuoi-da-bam...
Chọn công cụ sinh theo kiểu bcrypt hoặc APR1-MD5. Đừng dùng công cụ sinh mật khẩu dạng không băm.
4. Bước 2: tạo tệp .htaccess trong thư mục cần bảo vệ
Dùng File Manager, vào đúng thư mục cần bảo vệ, bấm New File, đặt tên .htaccess, rồi dán vào:
AuthType Basic
AuthName "Khu vuc han che"
AuthUserFile /home/<ten-tai-khoan>/.htpasswd
Require valid-user
| Dòng | Nghĩa |
|---|---|
AuthType Basic |
Kiểu xác thực cơ bản của Apache |
AuthName |
Chữ hiện trong hộp thoại hỏi mật khẩu. Dùng chữ không dấu, vì phần này không phải lúc nào cũng hiện đúng tiếng Việt |
AuthUserFile |
Đường dẫn tuyệt đối tới tệp .htpasswd |
Require valid-user |
Ai có trong tệp mật khẩu đều vào được |
Đường dẫn ở AuthUserFile phải là đường dẫn tuyệt đối trên máy chủ, không phải địa chỉ web. Sai đường dẫn là lỗi phổ biến nhất, và biểu hiện là website báo lỗi máy chủ chứ không hỏi mật khẩu.
Tìm đường dẫn tuyệt đối: mở File Manager, vào thư mục gốc, đường dẫn hiện ở thanh trên.
5. Kiểm
Mở địa chỉ thư mục đó trên một trình duyệt ẩn danh, hoặc một trình duyệt khác. Phải hiện hộp thoại hỏi tên đăng nhập và mật khẩu.
Dùng trình duyệt thường thì nó có thể nhớ phiên cũ và vào thẳng, làm quý Khách hàng tưởng chưa ăn.
6. Ba lỗi hay gặp
a. Website báo lỗi máy chủ nội bộ thay vì hỏi mật khẩu.
Gần như luôn là sai đường dẫn ở AuthUserFile. Kiểm lại đường dẫn tuyệt đối.
b. Hỏi mật khẩu nhưng nhập đúng vẫn không vào được.
Tệp .htpasswd sai định dạng. Mỗi dòng phải là ten:chuoi-da-bam, không có khoảng trắng thừa, và tệp phải kết thúc bằng một dòng trống.
c. Thư mục con cũng bị hỏi mật khẩu.
Đây là hành vi đúng: .htaccess áp cho thư mục đó và mọi thư mục con. Muốn một thư mục con mở tự do thì đặt trong đó một tệp .htaccess riêng với nội dung:
Require all granted
7. Bảo vệ trang đăng nhập quản trị
Một cách dùng rất đáng giá: thêm một lớp mật khẩu trước trang đăng nhập của website.
Với WordPress, tạo .htaccess trong thư mục wp-admin với nội dung ở mục 4. Khi đó người muốn dò mật khẩu quản trị phải qua hai lớp, và các chương trình dò tự động dừng ngay ở lớp đầu.
⚠️ Với WordPress, cần cho tệp admin-ajax.php đi qua, nếu không một số chức năng ở giao diện ngoài sẽ hỏng:
<Files "admin-ajax.php">
Require all granted
</Files>
8. Giới hạn cần biết
| Giới hạn | Nghĩa |
|---|---|
| Mật khẩu đi qua đường truyền | Chỉ an toàn khi website đã chạy HTTPS. Chưa có HTTPS thì mật khẩu đi dạng dễ đọc lại |
| Không có khoá sau nhiều lần sai | Lớp này không tự chặn khi bị dò liên tục |
| Dùng chung một tài khoản | Không phân biệt được ai đã vào |
Nên đây là lớp che, hợp cho môi trường thử nghiệm và tài liệu nội bộ. Dữ liệu thật của khách hàng cần hệ thống tài khoản trong chính phần mềm.
9. Khi cần hỗ trợ
Quý Khách hàng đặt xong mà website báo lỗi, hãy nhắn qua khung chat ở góc phải màn hình kèm: đường dẫn thư mục cần bảo vệ, nội dung tệp .htaccess đã đặt, và nguyên văn thông báo lỗi.
Đừng gửi nội dung tệp .htpasswd. Đội ngũ kỹ thuật không cần nó, và chuỗi băm trong đó là thứ đem đi dò mật khẩu được.