Cấm địa chỉ IP chưa được giải quyết


7

Máy chủ của tôi đã hết bộ nhớ một vài lần trong hai ngày qua, do đó trang web bị sập. Tôi đã kiểm tra AWstats và thấy rằng hàng trăm địa chỉ IP chưa được giải quyết đã được ghi lại và số lần truy cập từ chúng có vẻ không hợp lý:

Nhập mô tả hình ảnh ở đây

Tôi sẽ cấm 10 địa chỉ IP hàng đầu vì tất cả chúng đều có vẻ như spam đối với tôi. Nhưng có hàng trăm địa chỉ IP khác dường như đang gây ra hàng ngàn lượt truy cập và tôi thực sự không biết liệu chúng có phải là yêu cầu hợp pháp từ người dùng sử dụng trình duyệt hay không. Tôi có thể cấm tất cả bọn họ sử dụng htaccess, nhưng điều đó dường như không thực tế và cũng không phải là một giải pháp lâu dài. (Trang web nhận được khoảng 3 triệu lượt xem trang / tháng.)

Câu hỏi của tôi là:

  1. Làm cách nào để lọc người dùng hợp pháp khỏi các bot hoặc địa chỉ IP không mong muốn đang làm mất nội dung?
  2. Tôi có nên tiếp tục và cấm tất cả "địa chỉ IP chưa được giải quyết" không?
  3. Có cách nào tự động cấm địa chỉ IP spam không?

4
Bạn đang sửa chữa vấn đề sai. Những gì bạn nên cố gắng khắc phục là tại sao trang web hết bộ nhớ?
Josh

1
Ảnh chụp màn hình có phải là một ví dụ về những "IP chưa được giải quyết" này không? Bởi vì họ không được giải quyết vì họ không thể giải quyết được . Có vẻ như AWStats đơn giản là không được cấu hình để giải quyết các địa chỉ IP này?
MrWhite

@Josh đủ công bằng. Đây là điều đầu tiên tôi nhìn vào trong quá trình tìm kiếm vấn đề bộ nhớ. Và tôi không thể tìm thấy bất cứ điều gì vì các vụ tai nạn dường như rất ngẫu nhiên. Tôi không thực sự giỏi về những thứ quản trị viên phía máy chủ và đang học hỏi. Bất kỳ đề xuất?
Yeti

1
Chắc chắn, và xin lỗi nếu nhận xét của tôi có vẻ khắc nghiệt. Bạn có thể muốn bắt đầu một câu hỏi mới nêu chi tiết các triệu chứng cụ thể của việc cạn kiệt bộ nhớ mà bạn đang gặp và cấu hình của bạn (php fpm, mod php, httpd.conf, v.v.) vì có thể sẽ có rất nhiều liên lạc qua lại
Josh

Câu trả lời:


8

BOTS, CRAWLERS và SCRAPERS sử dụng địa chỉ IP theo khối, rất hiếm khi thấy một địa chỉ sẽ sử dụng cùng một địa chỉ IP nhiều lần. Khối IP thường được bán, mang lại và sau đó được bán lại! một số khối này sẽ giải quyết, một số sẽ không phụ thuộc vào thiết lập mà họ sử dụng, vì việc cấm IP này từ giải quyết là vô ích, vì bạn có nguy cơ cấm người dùng thực, sử dụng VPN, Proxy, v.v., điều này cũng có thể không giải quyết được.

Cấm địa chỉ IP bằng nhật ký tự giám sát không chỉ lãng phí thời gian mà còn chỉ hoạt động tạm thời cho đến khi chúng xoay khối IP một lần nữa. Cách dễ nhất và cách tốt nhất ... là thiết lập máy chủ của bạn để chặn tạm thời người dùng / bot / trình thu thập dữ liệu yêu cầu nhanh, tương tự như những gì Stack Exchange sử dụng và tất cả các trang web hàng đầu khác nhận được lưu lượng truy cập điên rồ.

Nếu bạn không có thời gian hoặc kỹ năng để xây dựng trình chặn trong nhà của riêng mình thì cách tốt nhất của bạn là nhìn vào fail2ban.

Fail2Ban

Tốt nhất bạn nên đặt câu hỏi liên quan đến bảo mật trên Security Stack vì rõ ràng nó thu hút nhiều chuyên gia hơn trong lĩnh vực này, đây là câu hỏi và câu trả lời tôi tìm thấy về cách thiết lập fail2ban với một khối tạm thời khi khách truy cập yêu cầu nhanh. Lưu ý rằng bạn cũng có thể thiết lập bổ sung cho khối tạm thời một perm, nếu họ tiếp tục làm như vậy trong khi bị chặn.

fail2ban là một giải pháp dễ thực hiện trong những trường hợp này. Thêm một block-all-dem-noobs.conftập tin vào filter.dthư mục của bạn , một cái gì đó như thế này:

[Definition]
failregex = ^ -.*GET

Dịch: một RegExp để tìm các yêu cầu GET

Sau đó, tạo một mục mới trong jail.conf của bạn, đại loại như thế này

[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]

Dịch: Xem qua tệp access.log của tôi, sau đó chặn trong 600 giây (10 phút) các địa chỉ IP đã thực hiện 100 yêu cầu trong 5 giây

Tuy nhiên, một nhược điểm lớn là điều này có thể tạo ra dương tính giả cho người dùng NAT, vì tất cả chúng sẽ xuất hiện dưới dạng một địa chỉ IP cho bạn.


Cảm ơn câu trả lời. Tôi sẽ kiểm tra fail2ban. Điều này sẽ ảnh hưởng đến Googlebot chứ? Googlebot thực hiện ~ 1 triệu yêu cầu / ngày trên trang web!
Yeti

2
Google, không làm hỏng trang web của bạn, nó đã trì hoãn thời gian. Mục tiêu của bạn là giới hạn số lượng yêu cầu phía máy chủ mỗi giây, điều này cuối cùng sẽ giúp bạn tiết kiệm băng thông và tài nguyên. Nếu các bot khó chịu muốn xóa trang web của bạn thì sẽ mất nhiều thời gian để làm như vậy, mặt khác, Google đã thu thập dữ liệu trang web của bạn trong một thời gian dài và không cần phải đập mạnh để có được một khối lớn ngay lập tức , nhưng bạn luôn có thể thêm Google / Bing vào danh sách trắng IP nhưng bạn phải xem xét điều đó, cá nhân tôi, tôi chỉ cập nhật lưu trữ và cấm tự động lặp lại những người vi phạm.
Simon Hayter

1

Chắc chắn sử dụng fail2ban như câu trả lời của Simon khuyến nghị, bởi vì nó bảo vệ chống lại các vấn đề khác trong cấu hình mặc định của nó. Bạn đề cập đến việc máy sắp hết bộ nhớ và fail2ban cần theo dõi nhật ký của bạn và phản ứng với các bot sử dụng bộ nhớ này. Bạn vẫn có thể hết tài nguyên và nếu điều đó xảy ra, bạn cần một cái gì đó hiệu quả hơn.

Tôi khuyên bạn cũng nên sử dụng iptablestrực tiếp. Fail2ban sử dụng iptables để phản ứng với các cuộc tấn công bằng cách bỏ địa chỉ IP có vấn đề, nhưng không có lý do gì bạn không thể chủ động và chỉ cần 'tải trước' một khối IP xấu đã biết.

Ví dụ, đây là những gì tôi sử dụng để âm thầm loại bỏ toàn bộ phạm vi IP của poneytelecom:

sudo iptables -A INPUT -s 62.210.0.0/16 -j DROP

Để giảm hiệu quả tất cả lưu lượng truy cập từ 8 'lượt truy cập lớn nhất' trong ảnh chụp màn hình của bạn, bạn có thể sử dụng

sudo iptables -A INPUT -s 123.30.175.0/16 -j DROP

Hai điều quan trọng cần nhớ về điều này mặc dù. Các thay đổi sẽ không tồn tại trên các lần khởi động lại và bạn có thể chặn khách truy cập hợp pháp đến từ các dải địa chỉ IP này. Để giải quyết vấn đề sau, bạn cần tra cứu các địa chỉ IP (thử WHOIS) và đưa ra quyết định xem chúng có phải là một mất mát chấp nhận được hay không. Đối với tôi, poneytelecom chắc chắn là.

Và để làm cho (các) quy tắc iptables của bạn tồn tại trên bất kỳ bản phân phối dựa trên Debian nào, hãy thử iptables-persistentgói. Cài đặt và kích hoạt nó bằng lệnh này:

sudo aptitude install iptables-persistent && sudo service iptables-persistent start

Nếu bạn thay đổi bất kỳ quy tắc nào sau này, bạn sẽ cần lưu chúng với sudo service iptables-persistent save. (cũng lưu ý iptables-persistentcó thể được đặt tên netfilter-persistenttrong một số distro)

Chúc may mắn và cẩn thận iptables, các ví dụ của tôi sẽ hoạt động hoàn hảo và được kiểm tra nhưng nếu bạn thích nghi và thử nghiệm những cái mới, hãy chắc chắn rằng bạn đã đọc các trang hướng dẫn và hiểu hậu quả của mỗi quy tắc mới, hoặc bạn có nguy cơ khiến máy chủ không thể truy cập được, và bạn có thể phải hình ảnh lại và bắt đầu lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.