Làm thế nào để làm chậm một Hacker


17

Một số kịch bản kiddie ở Delhi, Ấn Độ đã cố gắng hack trang web của chúng tôi kể từ đêm qua. Anh ấy đã viết một kịch bản trình duyệt thực hiện các yêu cầu của máy chủ của chúng tôi trong các vòng lặp lớn, thử mọi thứ dưới ánh mặt trời.

Anh ta không đi đến đâu, và thậm chí không vượt qua được hàng phòng thủ cơ bản của chúng tôi (nhưng anh ta đang lấp đầy các tệp nhật ký của chúng tôi).

Chúng tôi sẽ gửi lại 403 Unauthorizedcho các yêu cầu của anh ấy ngay khi chúng đến, nhưng chúng tôi càng chặn các yêu cầu của anh ấy nhanh hơn, kịch bản của anh ấy chạy càng nhanh.

Chúng tôi muốn giới thiệu một "độ trễ" nào đó trước khi gửi lại phản hồi 403. Càng lâu, càng tốt.

Câu hỏi: Làm thế nào chúng ta có thể trì hoãn các nỗ lực hack mà không ảnh hưởng đến phần còn lại của trang web?

  • Tôi cho rằng một Giấc ngủ (15000) trên chuỗi của anh ta sẽ là tin xấu cho những người truy cập trang web khác.
  • Kéo sợi chỉ mới cho anh ta có vẻ như quá mức cần thiết.
  • Có cách nào khác để gửi phản hồi chậm không?
  • Chúng ta có thể buộc trình duyệt của mình chờ bao lâu? Tôi cho rằng tôi không quan tâm nhiều nếu anh ta 403 Unauthorizedmắc lỗi hoặc cuối cùng đã hết thời gian, vì vậy chúng tôi thậm chí có thể chờ đợi vô thời hạn / vô hạn.

36
Có một lý do nào khiến bạn không thể cấu hình tường lửa của mình để giảm lưu lượng truy cập đến từ địa chỉ IP của anh ấy? Vấn đề này sẽ được giải quyết tốt hơn ở cấp độ mạng so với cấp ứng dụng. Giảm lưu lượng sẽ có nghĩa là anh ta sẽ phải ngồi ở đó cho đến khi hết yêu cầu kết nối. Và hoàn toàn không trả lời sẽ hiệu quả hơn nhiều so với việc trả lại những phản hồi "trái phép" vì nó mang lại cho anh ta hiệu quả không có thông tin để kiểm tra.
cdhowie

3
Tại sao không chặn ip của anh ấy?
Hogan

2
Rút phích cắm máy chủ của bạn.
Nói Ibrahim Hashimi

Nhìn vào câu trả lời của tôi - đây là một điều tiêu chuẩn, tôi ngạc nhiên khi bạn không nhận được câu trả lời chỉ ra một số hệ thống phát hiện xâm nhập trước đó.
Không hợp lý

@Sayed, rút ​​phích cắm máy chủ của bạn là một trong những điều tồi tệ nhất bạn có thể làm. Bên cạnh DoSing chính mình, hãy xem thêm bảo
AviD

Câu trả lời:


37

Cần có một tường lửa riêng ở đâu đó trước máy chủ web của bạn. Bạn muốn chặn các yêu cầu ở đó từ bao giờ đến máy chủ của mình, chẳng hạn như IP của anh ấy liên quan đến máy chủ của bạn không còn tồn tại nữa.


1
Xin chào Joel, đây là câu trả lời "được chấp nhận", nhưng vì câu hỏi đã được chuyển từ StackOverflow, nên có vẻ như tôi không có thẩm quyền để thực sự chấp nhận nó. Tôi đã cho câu trả lời của bạn +1. Đây chỉ là những gì tôi sẽ làm.
Flipster

2
@flip nhấp vào tên của bạn và sau đó liên kết 'tài khoản' ở giữa trang bên phải. Điều đó sẽ cho phép bạn liên kết điều này trở lại tài khoản tràn ngăn xếp của bạn và lấy lại quyền sở hữu câu hỏi.
Joel Coel

1
nhưng bạn cũng muốn làm điều đó một cách tự động - không có điểm nào trong việc xử lý các vấn đề như vậy trong từng trường hợp. (xem câu trả lời của tôi)
Unreason

5

Có những hệ thống phát hiện xâm nhập thực tế lớn và nhỏ sẽ tự động thực hiện việc này cho bạn tùy thuộc vào các bộ lọc khác nhau, mật ong và các cơ chế khác

Ví dụ, xem fail2ban có thể được cấu hình để thực hiện các hành động dựa trên phân tích nhật ký.

Bằng cách này bạn có thể

  • dễ dàng lọc địa chỉ IP duy nhất mà từ đó một cuộc tấn công đang đến mà không ảnh hưởng đến những người dùng khác trên trang web của bạn
  • bạn có thể viết regex của riêng bạn để phân tích nhật ký
  • bạn có thể xác định hành động của riêng mình (ga thay vì cấm, v.v.)

Có các công cụ khác và lớn hơn, xem phần xem thêm trên wikipedia.

Vì câu hỏi của bạn được đánh dấu là asp.net, tôi cho rằng nền tảng máy chủ của bạn là windows. Tuy nhiên, nếu sử dụng tường lửa linux là một tùy chọn bạn có thể thử ở trên

  • đặt tường lửa linux giữa mạng WAN và máy chủ của bạn
  • cấp quyền truy cập vào máy tường lửa vào nhật ký IIS của bạn
  • viết regex để phân tích nó
  • cắm nó vào các mẫu hiện có để cấm

Tường lửa như vậy có thể được chạy trên phần cứng cực kỳ khiêm tốn - hãy nghĩ ngay cả những thứ như bộ định tuyến linksys (xem tại đây ) để có băng thông liên kết rất tốt.


4

Nếu chúng đến từ một địa chỉ IP hoặc khối địa chỉ cụ thể, bạn có thể muốn thêm tuyến đường lỗ đen vào đó:

ip ro add blackhole 10.69.96.0/24
ip ro flush cache

Bạn cũng có thể thực hiện điều này bằng cách sử dụng quy tắc iptables, nhưng nhận ra rằng quy tắc iptables được duyệt theo tuyến tính, vì vậy nếu bạn bắt đầu thêm quy tắc iptables cho mọi hành vi sai trái đi kèm, bạn có thể bắt đầu ăn nhiều CPU. Các bảng định tuyến được tối ưu hóa để xử lý nhiều, nhiều mục. Ví dụ: một trong các hộp của tôi có 350K mục trong bảng định tuyến không có vấn đề. Nhưng nếu tôi có 3K quy tắc iptables, hộp gần như chắc chắn sẽ rơi.

Nếu bạn thử làm một cái gì đó mà ứng dụng của bạn ngủ trong nhiều giây trên các kết nối này, cuối cùng bạn có thể buộc đủ tài nguyên mà các yêu cầu hợp pháp không thể nhận được bất kỳ tài nguyên nào.


1
+1. Tôi thích thông tin của bạn về hiệu quả tương đối của việc định tuyến so với netfilter trong tình huống này. iptablestrên một hạt nhân có ipsetkhả năng rất phù hợp với danh sách địa chỉ IP khổng lồ, nhưng dường như không có bản phân phối chính nào cho phép ipsettrong nhân của chúng.
Steven Thứ Hai,

Điểm hay, ipset là thứ gì đó có vẻ hữu ích cho những thứ này, nhưng không có sẵn. Có một hệ thống khác gọi là nf-hipac là trình tối ưu hóa iptables tổng quát hơn, nhưng bài đăng cuối cùng trong danh sách gửi thư và bản phát hành cuối cùng là từ năm 2005.
Sean Reifschneider

3

Bạn không muốn làm chậm anh ta vì làm chậm anh ta không đúng cách sẽ làm mất trang web của bạn như thể nó đang bị tấn công DoS vì các chủ đề của bạn sẽ 'bận rộn' phục vụ các yêu cầu của người này. Những gì bạn muốn làm là chặn IP của anh ấy và được thực hiện với nó. Không có lý do để mồi chài người làm điều đó.


2

Thứ bạn đang tìm kiếm là mô-đun Apache mod_evaisve.

Trên các bản phân phối dựa trên Debian, hãy cài đặt nó bằng

apt-get install libapache2-mod-evasive

CentOS / RHEL

yum install mod_evasive

mod_evasive theo dõi các yêu cầu đến Apache và cấm IP bằng cách sử dụng iptables vượt qua giá trị ngưỡng. Đây là một công cụ tối ưu chống lại các cuộc tấn công DoS dựa trên HTTP và thậm chí các cuộc tấn công DoS phân tán khi bạn bị nhắm đến bởi một mạng botnet khổng lồ với hàng ngàn IP khác nhau.

Nó chạy như một mô-đun Apache được tải trong thời gian chạy và không phải là một daemon riêng biệt.

Mặc dù, một kẻ tấn công thông minh có quyền điều khiển một mạng botnet khổng lồ vẫn có thể hạ bệ máy chủ web của bạn bằng cách định thời gian các yêu cầu được gửi bởi mỗi zombie trong mạng botnet để không có IP nào vượt qua giá trị ngưỡng.

Trong trường hợp đó, bạn đã sử dụng IDS dựa trên sự bất thường và có thể tự đào tạo hệ thống. Nhưng điều này rất khó xảy ra trừ khi bạn có một số kẻ thù lớn thực sự hoặc ai đó có chương trình nghị sự của công ty.


0

Nếu bạn đang sử dụng linux, hãy sử dụng iptables để giới hạn anh chàng thích 1 byte / giây với độ trễ lớn và khiến anh ta mất mãi mãi để thậm chí nhận được một yêu cầu. Nếu nó được phân phối, điều đó sẽ không giúp được nhiều.

Tôi không chắc chắn cách bạn làm điều đó trên Windows, nhưng bạn có thể tìm thấy một số tùy chọn tương tự trong bộ định tuyến hoặc tường lửa phần cứng, nếu bạn có.

EDIT: Đồng ý với những điều trên, đây giống như một câu hỏi lỗi máy chủ.


2
Kỹ thuật này đôi khi được sử dụng trong các cuộc tấn công DDoS - bởi kẻ tấn công. Làm điều này trên máy chủ là loại phản tác dụng. <_ <
p-static

Không thực sự đúng khi nói rằng nó được sử dụng trong các cuộc tấn công DDoS - loại hiệu ứng này là mục tiêu của các cuộc tấn công DDoS. Làm điều đó trên máy chủ / tường lửa, nhưng chỉ để tấn công máy tính là cách phòng thủ thực sự duy nhất (AFAIK).
Không hợp lý

0

Nếu địa chỉ IP của anh chàng khá ổn định, bạn có thể tạo một HTTPModule tùy chỉnh, hãy cắm nó thông qua thay đổi trong tệp web.config và có độ trễ khi nhận dạng địa chỉ IP này. Hoặc bạn có thể gửi lại cho anh ta một số mã 404 hoặc chuyển hướng anh ta đến một nơi khác.


0

Bạn biết họ đang ở Ấn Độ. Trang web của bạn có những khách hàng Ấn Độ quan trọng sẽ ngăn chặn toàn bộ phạm vi IP của họ ở cấp độ tường lửa cho đến khi dòng chảy dừng lại? Đó chắc chắn không phải là một giải pháp vững chắc nhưng nếu bạn chỉ cần đối phó với một 'kiddie kịch bản' điển hình thì nó đủ để làm họ nản lòng và gửi chúng đến một mục tiêu khác.

Thậm chí tốt hơn, nếu đó là từ một IP, bạn có thể trả lời bằng cuộc tấn công từ chối dịch vụ của riêng bạn :)


Đó không thực sự là một giải pháp, cắt thạch bằng rìu. Và B, DDOS không thực sự là một khuyến nghị tốt (mặc dù tôi cho rằng bạn đang đùa), không có lý do gì để a) làm smth illagel b) đặt thêm tải lên máy chủ của bạn!
Trufa

0

Ngoài câu trả lời bạn nhận được, bạn sẽ muốn lưu tài liệu của mình (nhật ký, dấu vết) và cung cấp chúng cho nhà cung cấp dịch vụ của bạn. Đây là cách hiệu quả nhất trong sự cố vì nhà cung cấp của bạn có thể chứng kiến ​​sự xâm nhập. Mặc dù bạn đã thành công trong các biện pháp của mình, điều quan trọng là phải giảm bớt các nỗ lực tiếp theo và nó giúp nhà cung cấp của bạn trong việc chuyển yêu cầu tới nhà cung cấp dịch vụ của kẻ tấn công; có thể nói rằng hành động hiệu quả nhất là nhà cung cấp của kẻ tấn công từ chối dịch vụ cho khách hàng của mình, kẻ tấn công được xác định.


0

nếu lập trình viên của bạn, bạn có thể làm việc với sự kiện .net Begin_Request và đặt "giấc ngủ" của bạn vào đó

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.