chặn địa chỉ IP và block bots truy cập website dùng htaccess

quan tri he thong, giam sat, hosting, domain gia re

Hôm nay mình ngồi chống botnet tự nhiên lại nhớ đến món này, ghi tạm vào đây để sau này còn có tư liệu tham khảo.

Để sử dụng htaccess ngăn ngừa truy cập trái phép hoặc đốt hết băng thông của host thì mình cần nắm được các món sau:
Xác định các đối tượng cần ngăn chặn

Có một số cách để tìm hiểu:

Xem trong log của host hoặc các thống kê của Google về website .
Kiểm tra các cơ sở dữ liệu của người dùng Agent (nếu website có tổ chức ghi lại các thông số -logs) .
Cập nhật danh sách các website độc hại..từ blacklist được public trên thế giới.

Khi đã thông tỏ rồi, chúng ta mới làm bước tiếp theo. Vì đơn giản nếu bước này chưa xong thì bạn sẽ không biết là mình định chặn cái gì 😀 .
Chặn chương trình với. Htaccess

Nếu chưa có file .htaccess trong thư mục gốc của trang web thì bạn cần tạo ra nó đã nhé. Sau đây là thí dụ số 1:
Sử dụng User-agent agent

  # Để loại bỏ các bot
  RewriteEngine on
  RewriteCond %HTTP_USER_AGENT ^BadBot
  RewriteRule ^(.*)$ http://tên-miền-muốn-gửi-sang

Cách làm này dựa theo user-agent, chẳng hạn ở trên thì user-agent có chứa từ “BadBot”. Thật đơn giản đúng không? Khi máy chủ web kiểm tra có bot mà user-agent có chứa chuỗi bắt đầu với “BadBot”. Khi đó nó sẽ redirects sang cái trang mà bạn định link đến.

Nếu muốn chặn nhiều bot thì chỉ cần thêm [OR] vào nữa là xong, thí dụ:

  # thêm [or]
  RewriteEngine on
  RewriteCond %HTTP_USER_AGENT ^BadBot [OR]
  RewriteCond %HTTP_USER_AGENT ^EvilScraper [OR]
  RewriteCond %HTTP_USER_AGENT ^FakeUser
  RewriteRule ^(.*)$ http://té-đi-mày/

Đoạn mã trên khác thí dụ trước ở chỗ nó chặn 3 cái cùng 1 lúc. Lưu ý các từ “[OR]” tùy chọn sau hai tên bot đầu tiên: điều này cho phép máy chủ biết có nhiều bot trong danh sách.
Chặn qua Referer

Chặn không cho website khác lấy hình ảnh, file,…của host mình và cũng không cho nó dùng iframe,..để đánh cắp băng thông của mình:

  RewriteEngine On
  RewriteCond %HTTP_REFERER ^http://.*1-vài-ký-tự-trong-domain\.com [NC]
  RewriteRule .* - [F]

Mã này sẽ trả về kết quả ’403 Forbidden’- báo lỗi. Kết quả cuối cùng: người dùng trên trang web đó sẽ thấy một hình ảnh bị hỏng, liên kết bị lỗi,..và băng thông của host sẽ không còn bị đánh cắp.

Dưới đây là mã cho chặn nhiều hơn một trang web:

  RewriteEngine On
  RewriteCond %HTTP_REFERER ^http://.*tên-miền-1\.com [NC,OR]
  RewriteCond %HTTP_REFERER ^http://.*tên-miền-2\.com [NC,OR]
  RewriteCond% (HTTP_REFERER) ^ http:// tên-miền-cuối-trong-danh-sách .* \. Com [NC]
  RewriteRule .* - [F]

Cấm địa chỉ IP truy cập website

Đôi khi bạn chỉ không muốn một người nào đó (hoặc bot) truy cập vào trang web của bạn cả. Một cách đơn giản để ngăn chặn chúng là cấm địa chỉ IP:

order allow,deny
deny from 192.168.1.1
deny from 234.45.67.89
deny from 123.45.67.89
allow from all

Ví dụ trên cho thấy làm thế nào để chặn các địa chỉ IP cụ thể. Nếu muốn chặn cả 1 dải IP, cũng rất đơn giản:

  order allow,deny
  deny from 192.168.
  deny from 123.0.0.
  allow from all

Đoạn mã trên sẽ chặn bất kỳ địa chỉ IP bắt đầu với “192,168.” hoặc “123.0.0.” truy cập vào trang web.
Nếu cần, ta cũng có thể chặn bất kỳ ISP nào

  order allow,deny
  deny from fpt-chẳng-hạn.com
  deny from sub-domain.domain.com
  allow from all

Cuối cùng, cần lưu ý khi sử dụng Htaccess

Như bạn thấy,. Htaccess là một công cụ rất mạnh để kiểm, cấu hình website. Phải thật cẩn thận và chính xác khi thao tác nhé. Nếu có bất kỳ sai sót nào, kể cả là đánh sai cả 1 khoảng trắng trong file .htaccess, máy chủ sẽ trả về 1 trang Error 500 trang thay vì hiển thị trang web.Vì vậy hãy chắc chắn để sao lưu file .htaccess của bạn trước khi thực hiện bất kỳ thay đổi.