Cách tương đối dễ dàng để chặn tất cả lưu lượng truy cập từ một quốc gia cụ thể?


16

Tôi có một ứng dụng web không có người dùng ở Philippines, nhưng liên tục bị bắn phá bởi những kẻ gửi thư rác, thẻ kiểm tra thẻ và các hoạt động không mong muốn khác từ đó. Tôi có thể thấy trong nhật ký rằng họ có IP ở Philippines và ban đầu tìm thấy trang web của tôi thông qua google.ph hoặc các .phtrang web khác .

Tôi có các bộ lọc và kiểm tra bảo mật khá tốt, vì vậy chúng không thực sự gây ra nhiều thiệt hại, nhưng dù sao, tôi thực sự cảm thấy mệt mỏi với nó. Họ sử dụng hết băng thông, lấp đầy cơ sở dữ liệu của tôi, nhật ký lạm dụng và nhật ký bảo mật với những thứ nhảm nhí, lãng phí thời gian của tôi cho các tài khoản, v.v.

Mặc dù đại đa số công dân Philippines không phải là người gửi thư rác và tôi không thể chặn mọi quốc gia làm phiền tôi, vào thời điểm này, tôi nghĩ các giải pháp chỉ đơn giản là chặn tất cả lưu lượng truy cập từ Philippines vào ứng dụng web của tôi. (Tôi biết việc chặn các khối IP của toàn bộ quốc gia không phải là một thông lệ hay và có nhiều vấn đề, nhưng đối với quốc gia này, tôi muốn tạo một ngoại lệ.)

(Tôi biết họ có thể giả mạo địa chỉ IP của họ, nhưng ít nhất tôi có thể khiến họ làm việc cho nó một chút.)

Tôi biết có một vài dịch vụ Geoip ngoài kia. Bất cứ ai cũng biết về bất kỳ dịch vụ miễn phí hoặc rẻ tiền? Hoặc có cách nào khác để lọc lưu lượng truy cập từ một quốc gia cụ thể không?

Tôi đang chạy PHP trên Apache 2, nếu nó quan trọng.


2
Câu hỏi hợp lệ.
crashmstr

crashmstr: tôi sẽ nghĩ vậy Thực hiện loại hành động này để thử và chặn toàn bộ quốc gia sẽ chỉ khiến bạn cắt đứt nhiều người dùng tiềm năng hơn là bạn đang cắt đứt những kẻ gửi thư rác tiềm năng. Và khi những kẻ gửi thư rác bắt đầu đến từ các khu vực mà bạn không muốn chặn (như quốc gia của bạn), bạn sẽ chìm trong hình tượng trưng sâu sắc bởi vì tất cả các phương pháp trước đây của bạn sẽ là một sự lãng phí.
TheTXI

Có lẽ không có gì - bảo mật hiện tại của tôi xử lý tốt. Xin vui lòng đọc câu hỏi trước khi trả lời.

<p> Vậy bạn sẽ làm gì khi những kẻ gửi thư rác bắt đầu đến từ các quốc gia khác (hoặc tốt hơn là bắt đầu định tuyến lưu lượng truy cập của họ qua Hoa Kỳ?) </ p>
TheTXI

1
Philippines là một trong những quốc gia nói tiếng Anh lớn trên thế giới, bên cạnh Hoa Kỳ, Anh, Canada và Úc. Tôi thực sự khuyên bạn không nên cấm họ, nhiều hơn bạn sẽ cấm Úc. Tất nhiên trừ khi, trang web của bạn là quốc gia cụ thể. Nhưng nếu đúng như vậy, nó nên có một TLD cụ thể theo quốc gia, chứ không phải là một dot-com, thì mọi người sẽ biết bạn không giao dịch với họ và có thể truy cập samename.com.
Lee B

Câu trả lời:


8

Bạn có thể làm điều này dựa trên địa chỉ IP bằng API Locatin IP miễn phí như IPInfoDB http://ipinfodb.com/index.php.


28

Không giống như hầu hết các áp phích khác ở đây, tôi sẽ không nói với bạn đây là một ý tưởng tồi, rằng bạn không nên làm điều đó, rằng nó sẽ không giải quyết vấn đề của bạn, hoặc bạn nên làm gì khác. Đây là những gì đã xảy ra với chúng tôi:

Các cá nhân từ Trung Quốc và Hàn Quốc (hoặc sử dụng proxy ở Trung Quốc và Hàn Quốc, dù sao) vẫn khiến chúng tôi khó chịu. Portscanning, thu thập dữ liệu các trang web của chúng tôi để tìm kiếm các lỗ hổng, thực hiện các nỗ lực đăng nhập, v.v. Tôi đã cố gắng phớt lờ chúng (fail2ban thường chăm sóc chúng) nhưng tại một số điểm, chúng đã tấn công chúng tôi mạnh đến nỗi nó biến thành một cuộc tấn công DoS. Khi bạn có hàng trăm kết nối cùng một lúc từ những người đang cố gắng sử dụng máy chủ web của bạn làm proxy, cố gắng SSH vào máy của bạn, thử tên người dùng và mật khẩu ngẫu nhiên, nó có xu hướng cân nhắc trên trang web. Cuối cùng tôi đã chán ngấy.

Chúng tôi không nhận được bất kỳ lưu lượng truy cập hợp pháp từ Trung Quốc hoặc Hàn Quốc; công ty chúng tôi không bán ở đó (chúng tôi là thương mại điện tử) vì vậy không có nguy cơ mất lưu lượng truy cập hợp pháp, vì vậy tôi cho rằng việc chặn chúng trước thời hạn sẽ dễ dàng hơn thay vì chờ đợi chúng trở thành trò hề.

  1. Đã truy cập http://ip.ludost.net/ và tải xuống IP <-> cơ sở dữ liệu quốc gia của họ.
  2. Trích xuất tất cả các dải địa chỉ IP của Trung Quốc và Hàn Quốc.
  3. Đã cài đặt mô-đun ipset cho bộ lọc mạng
  4. Các bãi chứa ipset được xây dựng cho Trung Quốc và Hàn Quốc (xem bên dưới)
  5. Đã thêm quy tắc vào iptables để âm thầm thả bất kỳ lưu lượng truy cập nào từ các bộ đó.

Và đó là nó. Người dùng gặp sự cố của chúng tôi đã biến mất, tải trên mạng và máy chủ bị giảm và chúng tôi đã vượt qua mùa Giáng sinh mà không gặp khó khăn gì.

Lưu ý 1 : bạn có thể làm điều này với iptables thông thường (tức là không có ipset) nhưng nó đắt hơn về mặt tính toán so với sử dụng ipset.

Lưu ý 2 : Đây là cách các bãi chứa trông (ipset sẽ tạo ra những thứ này cho bạn nếu bạn muốn):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

Lưu ý 3 : Chúng tôi sử dụng một nethash vì tất cả các phạm vi của chúng tôi được lưu trữ dưới dạng các khối CIDR. Nếu bạn không muốn chuyển đổi chúng thành CIDR, bạn có thể sử dụng iptreemap thay thế, nhưng tôi tưởng tượng rằng nó có thể kém hiệu quả hơn nếu bạn nhận được nhiều lưu lượng truy cập.


2
Điểm tôi muốn đưa ra là ý tưởng chặn một quốc gia như Trung Quốc hay Hàn Quốc hoặc bất cứ nơi nào cho vấn đề đó không chỉ là ngăn chặn một nhóm người nói một ngôn ngữ khác với bạn. Tôi là công dân Hoa Kỳ và nếu tôi muốn mua thứ gì đó từ công ty của bạn, bạn đã mất tôi với tư cách là khách hàng vì tôi đang phục vụ tại Hàn Quốc. Vì vậy, yea, có giao thông hợp pháp ở đó.
GNUix

16
Đúng vậy, ngoại trừ việc chúng tôi không gửi hàng đến Hàn Quốc, chúng tôi không thể bán cho bạn bất cứ thứ gì, vì vậy bạn sẽ không có ý định nào trên trang web của chúng tôi. Chúng tôi chưa bao giờ có ai từ Trung Quốc hoặc Hàn Quốc mua bất cứ thứ gì và gửi nó đến Mỹ, vì vậy số lượng doanh thu bị mất có thể có thể đạt mười trong một năm dựa trên phân tích của chúng tôi.
Dan Udey

2

Làm thế nào để bạn sửa một lỗi trong mã?

Thích như vậy?

Lỗi: Thêm (2,2) trả về 0, sẽ trả về 4.

Mã cố định:

int Add(int x, int y)
{
   if (x == 2 && y == 2)
      { return 4; }
   return 0;
}

Rõ ràng là không. Bạn không chỉ tạo ra một sự quái dị của những trường hợp đặc biệt, điều đó rất mong manh và là một công thức cho thảm họa. Bạn cũng không chỉ vá các triệu chứng của HÔM NAY về vấn đề tiềm ẩn.

Thay vào đó, hãy tìm ra nguyên nhân gốc rễ và khắc phục điều đó. Điều này mạnh mẽ hơn nhiều so với bất kỳ bản vá trường hợp đặc biệt nào mà bạn có thể thực hiện.

Tại sao ứng dụng web của bạn dễ bị spam? Những đặc điểm làm cho nó dễ bị tổn thương? Những đặc điểm nào làm cho nó trở thành một mục tiêu có giá trị? Có cách nào để bạn có thể thay đổi những đặc điểm đó để làm cho ứng dụng của bạn mạnh mẽ hơn chống lại thư rác và ít mục tiêu hấp dẫn hơn không? Hầu như chắc chắn câu trả lời cho những câu hỏi này là có. Thêm chuỗi xác thực vào biểu mẫu của bạn, sử dụng captcha một cách thông minh, chọn ngẫu nhiên các url và / hoặc tên tham số để làm cho chúng không thân thiện với bot. Có hàng triệu cách để tiếp cận vấn đề này, tôi rất tiếc phải nói rằng bạn đã chọn một trong những giải pháp ít giá trị nhất, ít hữu ích nhất và dễ vỡ nhất hiện có.


15
Tôi có tất cả những thứ đó, cảm ơn. Bạn đã thực sự đọc bài viết trước khi đưa ra câu trả lời của bạn?
Eli

1
@Eli, rõ ràng là bạn có. Đó là lý do tại sao bạn đang rơi trở lại các biện pháp triệt để. Bởi vì những nỗ lực trước đây của bạn rất hiệu quả.
Nêm

1

Đầu tiên, tôi mạnh mẽ đề nghị không làm điều này.

Khi những người khác đã hùng hồn hơn rất nhiều, việc chặn một quốc gia cụ thể không khắc phục được vấn đề, họ chỉ trì hoãn một chút. Ngoài ra, khi người dùng từ quốc gia đó thấy bạn đã chặn họ một cách cụ thể, điều đó sẽ chỉ thúc đẩy họ gây ra cho bạn nhiều vấn đề hơn .

Điều đó nói rằng, nếu bạn thực sự muốn làm điều này, IPinfoDB cung cấp cơ sở dữ liệu định vị địa lý IP miễn phí,

Đầu tiên, sẽ là xác định vị trí IP đơn giản theo quốc gia.

Bạn sẽ tìm kiếm theo cách này:

SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

Hoặc là

SELECT * FROM `ip_group_country` where `ip_start` <= 1249717504 order by ip_start desc limit 1;

Thứ hai, bạn có thể muốn lấy IP của một quốc gia cụ thể để tạo danh sách chặn với tệp iptable, htaccess hoặc bất cứ thứ gì bạn sử dụng. Nó sẽ được thực hiện như thế này:

SELECT `ip_cidr` FROM `ip_group_country` WHERE `country_code` = 'AF' order by ip_start;

sẽ cung cấp cho bạn:

63.243.149.0/24
67.212.160.0/24

0

Bạn nên sử dụng các sản phẩm như fail2ban để loại bỏ các lỗi bạn ném vào ứng dụng web cho thấy nỗ lực gửi thư rác đang được tiến hành. Điều này sẽ chặn IP trong một khoảng thời gian, làm cho trang web của bạn có khả năng chống lại, nhưng không chặn được toàn bộ khối IP.


3
Như tôi đã nói trong bài đăng, ngoại hình không ai đọc, tôi có một hệ thống chặn và ngăn chặn thư rác hoàn toàn tốt. Tôi đang tìm cách giảm bớt khối lượng công việc phải làm và thời gian tôi phải dành để theo dõi nó.
Eli

Đó là lý do tại sao tôi đề xuất fail2ban. Nó tự động cấm IP vấn đề cho bạn mà không cần vũ lực chặn các khối IP lớn.
Kevin Kuphal

0

Một vài giải pháp:

  • loại trừ một số IP trong cấu hình Apache với mod_access
  • sử dụng GeoIp trực tiếp từ Apache: http://www.maxmind.com/app/mod_geoip
  • Loại trừ một số IP từ iptables Linux trực tiếp. Điều này sẽ rủi ro hơn nếu bạn chỉ có quyền truy cập từ xa, bạn có thể tự khóa máy của mình
  • Geoip + iptables

Những giải pháp này khá dễ dàng và nhanh chóng để đưa vào vị trí, và miễn phí.

Một giải pháp dài hạn hơn là phát hiện thư rác từ ứng dụng web của bạn, đăng nhập IP và cung cấp iptables của bạn để chặn chúng tự động.


0

Bạn có cân nhắc việc tìm ai đang vận hành các mạng mà bạn đang bị tấn công không? Tìm liên hệ "lạm dụng" bằng cách sử dụng whois và báo cáo với họ. Tất nhiên nó có thể đến từ một số mạng, nhưng nó cũng có thể có giá trị nếu bạn thấy một số địa chỉ / khối mạng định kỳ.


4
Nếu bạn đã từng cố gắng giao dịch với các ISP ở châu Á (đặc biệt là Trung Quốc, Hàn Quốc, v.v.), bạn sẽ thấy rằng điều họ không bao giờ làm là quan tâm đến việc một số người nước ngoài phàn nàn về điều gì đó. Không có thời gian của họ để làm mọi thứ đúng cách vì vậy họ không. Báo cáo lạm dụng trở thành một sự lãng phí thời gian của bạn.
Dan Udey

Tôi có trụ sở tại Hàn Quốc và tôi không có gì ngoài trải nghiệm thú vị với các ISP Hàn Quốc.
GNUix

0

Bạn có mọi quyền chặn địa chỉ IP từ bất kỳ lý do nào bạn có thể tự biện minh cho mình. Chính bạn là người cung cấp một dịch vụ và chính bạn là người quyết định ai có thể có nó hay không. Có lẽ là nghi vấn nếu điều này là đạo đức nhưng đó là điều bạn chỉ có thể tự quyết định.

Tuy nhiên, việc chặn một phân đoạn IP bởi vì nó có một số khía cạnh địa lý đối với tôi nghe có vẻ giống như một cách tiếp cận hoảng loạn.

Những gì tôi đã làm trong quá khứ là có một trình thu thập thông tin đi qua các nhật ký gần đây nhất của tôi và dựa trên lệnh cấm IP cá nhân đó gây phiền nhiễu trong khoảng thời gian 24 giờ. Nếu IP cụ thể đó hoạt động sai một lần nữa, nó bị cấm trong 2 ngày, sau đó 3 ngày, v.v. bạn sẽ bị trôi.

IP bị cấm trong hơn một tuần sẽ được gửi cho tôi và tôi gửi thư lạm dụng cho nhà cung cấp dịch vụ đó (người biết rằng nó thậm chí có thể giúp đỡ).


0

Tôi sẽ chọn giải pháp Snort + OSSEC có thể duy trì một cách linh hoạt như thế này.


Đây là những gì VPN an toàn dành cho.
Andrew Oblley
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.