Hướng dẫn tạo thêm lớp “Khóa Cổng” cho website WordPress (bảo mật cấp sever)

Việc tạo “Khóa Cổng” (Gateway Lock) cho website WordPress ở cấp độ server là một biện pháp bảo mật nâng cao, giúp bảo vệ website của bạn khỏi các truy cập trái phép hoặc các cuộc tấn công Brute-Force ngay từ lớp đầu tiên (server layer) trước khi yêu cầu đến được WordPress. Phương pháp này thường được gọi là HTTP Basic Authentication hoặc Password Protect Directory ở cấp độ server.

Giới thiệu về “Khóa Cổng” (HTTP Basic Authentication)

HTTP Basic Authentication là một phương pháp bảo mật yêu cầu người dùng nhập tên đăng nhập và mật khẩu trước khi có thể truy cập vào một thư mục hoặc toàn bộ website. Nó hoạt động ở cấp độ server (ví dụ: Apache hoặc Nginx), nghĩa là yêu cầu xác thực xảy ra trước khi bất kỳ code PHP nào của WordPress được thực thi.

Ví dụ thực tế: Khi bạn cố gắng truy cập vào thư mục wp-admin hoặc toàn bộ website, một cửa sổ pop-up nhỏ sẽ hiện ra yêu cầu bạn nhập tài khoản và mật khẩu. Chỉ khi nhập đúng, bạn mới có thể thấy trang đăng nhập WordPress hoặc nội dung website.

Điểm mạnh khi thêm “Khóa Cổng”

  1. Bảo mật lớp đầu tiên: Chặn các cuộc tấn công Brute-Force và các truy cập trái phép ngay tại server, giảm tải cho WordPress và giảm nguy cơ bị xâm nhập.
  2. Bảo vệ wp-admin và các khu vực nhạy cảm: Đặc biệt hiệu quả để bảo vệ thư mục quản trị wp-admin, ngăn chặn kẻ tấn công tiếp cận trang đăng nhập WordPress.
  3. Dễ triển khai: Với hướng dẫn đúng, việc cài đặt tương đối đơn giản và không yêu cầu plugin phức tạp.
  4. Tăng cường cho các lớp bảo mật khác: Hoạt động như một lớp phòng thủ bổ sung, không thay thế mà tăng cường các biện pháp bảo mật hiện có của WordPress (như mật khẩu mạnh, plugin bảo mật, tường lửa…).

Hướng dẫn tạo file mật khẩu (.htpasswd)

Để tạo file mật khẩu, bạn cần truy cập vào hosting của mình qua FTP/SFTP hoặc File Manager trong cPanel/DirectAdmin.

  1. Chọn vị trí lưu file .htpasswd: Bạn không nên lưu file .htpasswd trong thư mục gốc của website (thường là public_html hoặc www) hoặc bất kỳ thư mục nào có thể truy cập được qua trình duyệt. Vị trí lý tưởng là ở bên ngoài thư mục gốc của website, ví dụ:
    • Nếu website của bạn nằm ở /home/yourusername/public_html/yourwebsite.com/, bạn có thể lưu .htpasswd/home/yourusername/ hoặc /home/yourusername/private_files/.
    • Nếu không chắc chắn, hãy tìm một thư mục ở cấp độ cao hơn thư mục public_html hoặc www của bạn.
  2. Cách tạo file .htpasswd: File này chứa tên người dùng và mật khẩu đã được mã hóa. Bạn không thể tạo nó bằng cách gõ tay mật khẩu thông thường.
    • Sử dụng công cụ tạo .htpasswd trực tuyến: Đây là cách dễ nhất. Có rất nhiều website cung cấp công cụ này, ví dụ: Free htpasswd Generator.
      1. Truy cập trang web đó.
      2. Nhập tên người dùng (Username) bạn muốn sử dụng (ví dụ: adminlock).
      3. Nhập mật khẩu (Password) mạnh.
      4. Nhấn nút “Generate” hoặc “Create .htpasswd file”.
      5. Bạn sẽ nhận được một chuỗi trông như thế này: adminlock:$apr1$ABCDEFGH$abcdefghijklmnopqrstuvw.xyz
    • Tạo file trên hosting:
      1. Đăng nhập vào File Manager của cPanel/DirectAdmin hoặc kết nối FTP/SFTP.
      2. Di chuyển đến thư mục bạn đã chọn ở bước 1 (bên ngoài public_html).
      3. Tạo một file mới và đặt tên là .htpasswd (đảm bảo có dấu chấm ở đầu).
      4. Dán chuỗi đã tạo từ công cụ online vào file .htpasswd và lưu lại.

File lấy thông tin đường dẫn folder lưu khóa (Chỉ để kiểm tra, sau đó xóa)

Để tìm đường dẫn tuyệt đối (absolute path) của thư mục gốc website hoặc thư mục cấp cao hơn, bạn có thể tạo một file PHP nhỏ trong thư mục gốc của website, sau đó truy cập nó qua trình duyệt.

  1. Tạo file path_info.php:
    • Sử dụng File Manager hoặc FTP/SFTP, điều hướng đến thư mục gốc của website bạn (ví dụ: public_html).
    • Tạo một file mới và đặt tên là path_info.php.
    • Dán đoạn code sau vào file path_info.php:
<?php
echo "Đường dẫn thư mục hiện tại là: " . __DIR__;
?>

Lưu file.

  1. Truy cập và lấy thông tin:
    • Mở trình duyệt và truy cập: yourdomain.com/path_info.php (thay yourdomain.com bằng tên miền của bạn).
    • Bạn sẽ thấy một đường dẫn kiểu /home/yourusername/public_html/yourwebsite.com. Từ đó, bạn có thể suy ra đường dẫn cho file .htpasswd của mình, ví dụ: /home/yourusername/.htpasswd hoặc /home/yourusername/private/.htpasswd.
  2. Xóa và dọn sạch (path_info.php):
    • NGAY LẬP TỨC sau khi bạn đã lấy được thông tin đường dẫn, hãy XÓA file path_info.php khỏi server của bạn. Việc để lộ đường dẫn tuyệt đối có thể tiềm ẩn rủi ro bảo mật nếu kẻ xấu phát hiện ra.

Hướng dẫn thêm file .htaccess để bảo mật

File .htaccess là nơi bạn sẽ cấu hình server để áp dụng bảo mật bằng file .htpasswd cho các thư mục mong muốn. Bạn cần đặt file .htaccess trong thư mục mà bạn muốn bảo vệ.

Ví dụ 1: Bảo vệ toàn bộ website WordPress Nếu bạn muốn bảo vệ toàn bộ website của mình, bạn sẽ đặt .htaccess này vào thư mục gốc của WordPress (thường là public_html).

# Bảo vệ toàn bộ website bằng mật khẩu
AuthType Basic
AuthName "Khu vực giới hạn"
AuthUserFile /home/yourusername/.htpasswd  # Thay bằng đường dẫn tuyệt đối của file .htpasswd
Require valid-user

<FilesMatch ".(css|js|woff|woff2|ttf|svg|jpg|jpeg|png|gif|webp)$">
  Satisfy Any
  Allow from all
</FilesMatch>
  • Giải thích:
    • AuthType Basic: Chỉ định kiểu xác thực.
    • AuthName "Khu vực giới hạn": Tên hiển thị trong cửa sổ pop-up xác thực.
    • AuthUserFile /home/yourusername/.htpasswd: RẤT QUAN TRỌNG! Thay thế /home/yourusername/.htpasswd bằng đường dẫn tuyệt đối đến file .htpasswd của bạn đã tạo ở trên.
    • Require valid-user: Yêu cầu bất kỳ người dùng nào trong file .htpasswd đều hợp lệ.
    • <FilesMatch ...>: Đoạn này quan trọng để cho phép các file CSS, JS, hình ảnh, font chữ… tải mà không cần xác thực. Nếu không có nó, website của bạn có thể bị lỗi giao diện hoặc không tải được tài nguyên.

Bổ sung: Bảo vệ file wp-login.php bằng .htaccess

Đây là một phương pháp tuyệt vời để bảo vệ trang đăng nhập WordPress của bạn, đặc biệt hiệu quả trong việc ngăn chặn các cuộc tấn công brute-force nhắm vào wp-login.php. Bạn sẽ thêm đoạn code này vào file .htaccess chính của website bạn (thường nằm ở thư mục gốc như public_html).

<Files "wp-login.php">
    AuthType Basic
    AuthName "WordPress Login - Restricted Access"
    AuthUserFile /home/yourusername/.htpasswd  # Thay bằng đường dẫn tuyệt đối của file .htpasswd
    Require valid-user

    # Tùy chọn: Chỉ cho phép truy cập từ các địa chỉ IP cụ thể (rất khuyến nghị cho Admin)
    # Nếu bạn có IP tĩnh, hãy sử dụng quy tắc này để tăng cường bảo mật.
    # Bỏ comment (dấu #) ở đầu các dòng dưới đây để kích hoạt.
    # Order Deny,Allow
    # Deny from all
    # Allow from 192.168.1.100   # Thay bằng IP tĩnh của máy bạn hoặc văn phòng
    # Allow from 203.0.113.42   # Thêm các IP khác nếu cần
    # (Nếu chỉ muốn IP cụ thể, hãy bỏ comment 'Order Deny,Allow' và 'Deny from all',
    # cùng với các dòng 'Allow from' mà bạn muốn cho phép)

</Files>

Giải thích chi tiết đoạn code:

  • <Files "wp-login.php"></Files>: Đây là một chỉ thị trong .htaccess cho phép bạn áp dụng các quy tắc bảo mật chỉ riêng cho file wp-login.php. Điều này có nghĩa là các quy tắc xác thực bên trong khối này sẽ chỉ có hiệu lực khi ai đó cố gắng truy cập vào file wp-login.php. Toàn bộ website và các trang khác vẫn sẽ hoạt động bình thường mà không yêu cầu mật khẩu.
  • AuthType Basic: Giống như trước, chỉ định kiểu xác thực là HTTP Basic Authentication. Khi người dùng truy cập wp-login.php, một cửa sổ pop-up sẽ hiện lên yêu cầu tài khoản/mật khẩu.
  • AuthName "WordPress Login - Restricted Access": Đây là thông báo sẽ hiển thị trên cửa sổ xác thực pop-up. Bạn có thể tùy chỉnh thông báo này.
  • AuthUserFile /home/yourusername/.htpasswd: Cực kỳ quan trọng! Dòng này chỉ ra đường dẫn tuyệt đối đến file .htpasswd mà bạn đã tạo (chứa tên người dùng và mật khẩu đã mã hóa). Hãy đảm bảo bạn đã thay thế /home/yourusername/.htpasswd bằng đường dẫn chính xác trên server của bạn.
  • Require valid-user: Quy tắc này yêu cầu người dùng phải cung cấp thông tin xác thực hợp lệ (có trong file .htpasswd) để có thể truy cập vào file wp-login.php.
  • Tùy chọn bổ sung: Chỉ cho phép truy cập từ các địa chỉ IP cụ thể (rất khuyến nghị cho Admin) Đoạn code bị comment (có dấu # ở đầu) này là một lớp bảo mật cực kỳ mạnh mẽ mà bạn có thể thêm vào. Nó cho phép bạn chỉ định các địa chỉ IP cụ thể nào được phép truy cập vào wp-login.php.
    • Order Deny,Allow: Thiết lập thứ tự xử lý quy tắc truy cập. Ở đây, server sẽ xử lý tất cả các quy tắc Deny trước, sau đó mới đến các quy tắc Allow.
    • Deny from all: Mặc định, từ chối tất cả các truy cập đến wp-login.php.
    • Allow from 192.168.1.100: Cho phép truy cập từ địa chỉ IP cụ thể. Bạn cần thay 192.168.1.100 bằng địa chỉ IP tĩnh của máy tính hoặc mạng văn phòng mà bạn thường dùng để đăng nhập. Bạn có thể thêm nhiều dòng Allow from cho các IP khác nhau.
    Lưu ý quan trọng khi sử dụng IP tĩnh:
    • Nếu IP của bạn là động (thay đổi thường xuyên), bạn sẽ rất dễ bị khóa khỏi trang đăng nhập của chính mình.
    • Hãy thật cẩn thận khi kích hoạt tính năng này. Luôn đảm bảo bạn có ít nhất một IP tĩnh hoặc một cách để thay đổi file .htaccess nếu bị khóa.
    • Nếu bạn đang di chuyển hoặc làm việc từ nhiều địa điểm với IP khác nhau, tùy chọn này có thể không phù hợp hoặc cần được quản lý cẩn thận.

Cách triển khai:

  1. Tạo file .htpasswd: Thực hiện theo hướng dẫn đã cung cấp trước đó để tạo file .htpasswd ở một vị trí an toàn ngoài thư mục gốc của website và lấy đường dẫn tuyệt đối của nó.
  2. Chỉnh sửa file .htaccess chính:
    • Sử dụng FTP/SFTP hoặc File Manager trên hosting, truy cập vào thư mục gốc của website WordPress của bạn (thường là public_html hoặc www).
    • Mở file .htaccess hiện có.
    • Dán đoạn code trên (bao gồm cả <Files "wp-login.php"></Files>) vào đầu hoặc cuối file .htaccess (trước hoặc sau các quy tắc của WordPress, ví dụ: # BEGIN WordPress# END WordPress).
    • Rất quan trọng: Đảm bảo bạn đã thay thế /home/yourusername/.htpasswd bằng đường dẫn chính xác của file .htpasswd của bạn.
    • Nếu bạn muốn sử dụng tính năng chỉ cho phép IP cụ thể, hãy bỏ dấu # ở đầu các dòng Order, Deny, và Allow tương ứng, và thay thế IP mẫu bằng IP thực của bạn.
  3. Lưu file và kiểm tra:
    • Lưu lại file .htaccess.
    • Mở trình duyệt ở chế độ ẩn danh (Incognito/Private window) và truy cập yourdomain.com/wp-admin hoặc yourdomain.com/wp-login.php. Bạn sẽ thấy một cửa sổ pop-up yêu cầu xác thực HTTP Basic Authentication trước khi thấy trang đăng nhập WordPress.

Việc kết hợp HTTP Basic Authentication cho wp-login.php cùng với việc giới hạn IP (nếu có thể) sẽ tạo ra một lá chắn bảo mật cực kỳ vững chắc cho cổng đăng nhập WordPress của bạn.

Nếu bạn sợ sau này chỉnh file htaccess chính dễ lỗi thì làm theo ví dụ 2:

Ví dụ 2: Chỉ bảo vệ thư mục wp-admin Đây là cách phổ biến và được khuyến nghị nhất, vì nó bảo vệ khu vực nhạy cảm nhất mà không ảnh hưởng đến trải nghiệm người dùng thông thường trên frontend. Đặt file .htaccess này vào trong thư mục wp-admin của bạn.

# Bảo vệ thư mục wp-admin bằng mật khẩu
AuthType Basic
AuthName "Khu vực quản trị WordPress"
AuthUserFile /home/yourusername/.htpasswd  # Thay bằng đường dẫn tuyệt đối của file .htpasswd
Require valid-user
  • Lưu ý: Với việc chỉ bảo vệ wp-admin, bạn không cần <FilesMatch> cho các tài nguyên tĩnh, vì chúng thường được tải từ các thư mục khác hoặc qua frontend.

Hướng dẫn thêm file .htaccess:

  1. Xác định thư mục cần bảo vệ: Ví dụ, thư mục gốc của WordPress (public_html) hoặc thư mục wp-admin.
  2. Tạo file .htaccess:
    • Sử dụng File Manager hoặc FTP/SFTP, điều hướng đến thư mục bạn muốn bảo vệ.
    • Tạo một file mới và đặt tên là .htaccess (đảm bảo có dấu chấm ở đầu).
    • Dán đoạn code .htaccess tương ứng với nhu cầu của bạn vào file.
    • Lưu file.

Hướng dẫn xóa và dọn sạch

Nếu bạn muốn gỡ bỏ “Khóa Cổng” này:

  1. Xóa file .htpasswd:
    • Truy cập vào vị trí bạn đã lưu file .htpasswd (ví dụ: /home/yourusername/.htpasswd).
    • Xóa file này đi.
  2. Xóa (hoặc chỉnh sửa) file .htaccess:
    • Truy cập vào thư mục bạn đã đặt file .htaccess (thường là thư mục gốc WordPress hoặc wp-admin).
    • Xóa toàn bộ file .htaccess đó. Hoặc nếu bạn có các quy tắc .htaccess khác quan trọng, hãy mở file và xóa chỉ các dòng liên quan đến AuthType, AuthName, AuthUserFile, Require valid-user và khối <FilesMatch> nếu có.
  3. Xóa file path_info.php (nếu bạn chưa làm):
    • Hãy chắc chắn rằng file path_info.php đã được xóa khỏi thư mục gốc của website sau khi bạn lấy được đường dẫn.

Quan trọng:

  • FTP/File Manager: Bạn cần quyền truy cập FTP/SFTP hoặc File Manager trên hosting để thực hiện các thao tác này.
  • Đường dẫn tuyệt đối: Đường dẫn đến file .htpasswd (ví dụ: /home/yourusername/.htpasswd) phải là đường dẫn tuyệt đối trên server của bạn, không phải là đường dẫn tương đối.
  • Thận trọng: Hãy cẩn thận khi chỉnh sửa file .htaccess vì một lỗi nhỏ cũng có thể khiến website của bạn không hoạt động. Luôn sao lưu trước khi chỉnh sửa.
  • Nhà cung cấp hosting: Một số nhà cung cấp hosting có thể có các công cụ riêng trong cPanel/DirectAdmin để “Password Protect Directory”, đó là cách đơn giản hơn nếu họ cung cấp. Hãy kiểm tra bảng điều khiển hosting của bạn trước.

Việc triển khai “Khóa Cổng” này sẽ giúp tăng cường đáng kể lớp bảo mật đầu tiên cho website WordPress của bạn. Chúc bạn thành công!

Xem thêm: Hướng dẫn tối ưu file .htaccess cho web được bảo mật hơn

3/5 - (1 bình chọn)
Chia sẻ tới bạn bè và gia đình
kiendinh
kiendinh

Đinh Hùng Kiên, từng "thử sức" với C++, C#, nhưng lại rẽ hướng sang Marketing. Với tư duy logic sắc bén từ nền tảng lập trình và sự hỗ trợ mạnh mẽ của AI (ChatGPT, Gemini), Kiên chuyên về gỡ lỗi, triển khai các tính năng website. Kiên lập codecungai.com để giúp những người không chuyên biến ý tưởng thành hiện thực trên WordPress một cách dễ dàng.

Bài viết: 12
5 1 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x