Tôi đang bị DDoS. Tôi có thể làm gì?


179

Đây là một câu hỏi Canonical về giảm thiểu DoS và DDoS.

Tôi tìm thấy một lưu lượng truy cập lớn trên một trang web mà tôi lưu trữ ngày hôm nay; Tôi đang nhận được hàng ngàn kết nối mỗi giây và tôi thấy tôi đang sử dụng tất cả 100Mbps băng thông có sẵn của mình. Không ai có thể truy cập trang web của tôi vì hết thời gian yêu cầu và tôi thậm chí không thể đăng nhập vào máy chủ vì SSH cũng hết thời gian! Điều này đã xảy ra một vài lần trước đây và mỗi lần nó kéo dài một vài giờ và tự biến mất.

Thỉnh thoảng, trang web của tôi có một vấn đề khác biệt nhưng có liên quan: trung bình tải máy chủ của tôi (thường là khoảng 0,25) tên lửa lên đến 20 hoặc nhiều hơn và không ai có thể truy cập trang web của tôi giống như trường hợp khác. Nó cũng biến mất sau vài giờ.

Khởi động lại máy chủ của tôi không giúp được gì; Tôi có thể làm gì để làm cho trang web của mình có thể truy cập lại được và điều gì đang xảy ra?

Liên quan, tôi đã tìm thấy một lần rằng trong một hoặc hai ngày, mỗi lần tôi bắt đầu dịch vụ của mình, nó nhận được một kết nối từ một địa chỉ IP cụ thể và sau đó bị sập. Ngay khi tôi khởi động lại, điều này lại xảy ra và nó lại bị sập. Làm thế nào là tương tự, và tôi có thể làm gì về nó?


Câu trả lời:


191

Bạn đang trải qua một cuộc tấn công từ chối dịch vụ. Nếu bạn thấy lưu lượng truy cập đến từ nhiều mạng (các IP khác nhau trên các mạng con khác nhau), bạn đã có từ chối dịch vụ phân tán (DDoS); nếu tất cả đến từ cùng một nơi bạn có một DoS cũ đơn giản. Nó có thể hữu ích để kiểm tra, nếu bạn có thể; sử dụng netstat để kiểm tra. Điều này có thể khó thực hiện, mặc dù.

Từ chối dịch vụ thường rơi vào một vài loại: dựa trên lưu lượng truy cập và dựa trên tải. Mục cuối cùng (với dịch vụ sự cố) là DoS dựa trên khai thác và khá khác biệt.

Nếu bạn đang cố gắng xác định loại tấn công nào đang xảy ra, bạn có thể muốn nắm bắt một số lưu lượng truy cập (sử dụng wireshark, tcpdump hoặc libpcap). Bạn nên, nếu có thể, nhưng cũng cần lưu ý rằng bạn có thể sẽ nắm bắt được khá nhiều lưu lượng truy cập.

Như thường lệ, chúng sẽ đến từ các botnet (mạng của các máy chủ bị xâm nhập dưới sự kiểm soát trung tâm của một số kẻ tấn công, mà chúng sẽ đấu thầu). Đây là một cách tốt để kẻ tấn công (rất rẻ) có được băng thông ngược dòng của rất nhiều máy chủ khác nhau trên các mạng khác nhau để tấn công bạn, trong khi che dấu vết của chúng. Các Orbit Ion Cannon Low là một ví dụ của một botnet (mặc dù là tự nguyện thay vì phần mềm độc hại có nguồn gốc từ); Zeus là một điển hình hơn.

Dựa trên giao thông

Nếu bạn đang sử dụng DoS dựa trên lưu lượng truy cập, bạn sẽ thấy rằng có rất nhiều lưu lượng truy cập đến máy chủ của mình đến nỗi kết nối của nó với Internet hoàn toàn bão hòa. Có tỷ lệ mất gói cao khi ping máy chủ của bạn từ nơi khác và (đôi khi tùy thuộc vào phương pháp định tuyến đang sử dụng) đôi khi bạn cũng thấy độ trễ thực sự cao (ping rất cao). Kiểu tấn công này thường là DDoS.

Mặc dù đây là một cuộc tấn công thực sự "ầm ĩ" và rõ ràng điều gì đang xảy ra, nhưng thật khó để quản trị viên máy chủ giảm thiểu (và về cơ bản là không thể cho người dùng lưu trữ chia sẻ để giảm thiểu). Bạn sẽ cần sự giúp đỡ từ ISP của bạn; cho họ biết bạn đang bị DDoS và họ có thể giúp đỡ.

Tuy nhiên, hầu hết các ISP và nhà cung cấp dịch vụ vận chuyển sẽ chủ động nhận ra những gì đang diễn ra và xuất bản tuyến đường lỗ đen cho máy chủ của bạn. Điều này có nghĩa là họ xuất bản một tuyến đến máy chủ của bạn với chi phí càng ít càng tốt, thông qua 0.0.0.0: họ làm cho lưu lượng truy cập đến máy chủ của bạn không còn có thể định tuyến trên Internet. Các tuyến này thường là / 32 và cuối cùng chúng bị xóa. Điều này không giúp gì cho bạn cả; mục đích là để bảo vệ mạng của ISP khỏi deluge. Trong thời gian, máy chủ của bạn sẽ mất quyền truy cập Internet một cách hiệu quả.

Cách duy nhất ISP của bạn (hoặc bạn, nếu bạn có AS của riêng mình) sẽ có thể trợ giúp là nếu họ đang sử dụng các công cụ lưu lượng truy cập thông minh có thể phát hiện và lưu lượng truy cập DDoS có thể bị giới hạn. Không phải ai cũng có công nghệ này. Tuy nhiên, nếu lưu lượng truy cập đến từ một hoặc hai mạng hoặc một máy chủ lưu trữ, họ cũng có thể chặn lưu lượng truy cập trước bạn.

Nói tóm lại, có rất ít bạn có thể làm về vấn đề này. Giải pháp dài hạn tốt nhất là lưu trữ các dịch vụ của bạn ở nhiều địa điểm khác nhau trên Internet, điều này sẽ phải được DDoS riêng lẻ và đồng thời, làm cho DDoS trở nên đắt hơn nhiều. Các chiến lược cho việc này phụ thuộc vào dịch vụ bạn cần bảo vệ; DNS có thể được bảo vệ bằng nhiều máy chủ tên có thẩm quyền, SMTP với các bản ghi MX và bộ trao đổi thư dự phòng và HTTP với DNS vòng tròn hoặc đa giai đoạn (nhưng dù sao thì một số sự xuống cấp có thể đáng chú ý trong thời gian dài).

Cân bằng tải hiếm khi là một giải pháp hiệu quả cho vấn đề này, bởi vì chính bộ cân bằng tải cũng chịu cùng một vấn đề và chỉ tạo ra một nút cổ chai. IPTables hoặc các quy tắc tường lửa khác sẽ không giúp ích vì vấn đề là đường ống của bạn đã bão hòa. Khi các kết nối được nhìn thấy bởi tường lửa của bạn, nó đã quá muộn ; băng thông vào trang web của bạn đã được sử dụng. Không quan trọng bạn làm gì với các kết nối; cuộc tấn công được giảm nhẹ hoặc kết thúc khi lượng lưu lượng truy cập đến trở lại bình thường.

Nếu bạn có thể làm như vậy, hãy cân nhắc sử dụng mạng phân phối nội dung (CDN) như Akamai, Limelight và CDN77 hoặc sử dụng dịch vụ chà DDoS như CloudFlare hoặc Prolexic. Các dịch vụ này thực hiện các biện pháp tích cực để giảm thiểu các loại tấn công này và cũng có rất nhiều băng thông có sẵn ở nhiều nơi khác nhau đến mức làm ngập chúng nói chung là không khả thi.

Nếu bạn quyết định sử dụng CloudFlare (hoặc bất kỳ CDN / proxy nào khác), hãy nhớ ẩn IP máy chủ của bạn. Nếu kẻ tấn công phát hiện ra IP, anh ta có thể trực tiếp DDoS máy chủ của bạn, bỏ qua CloudFlare. Để ẩn IP, máy chủ của bạn không bao giờ nên giao tiếp trực tiếp với các máy chủ / người dùng khác trừ khi chúng an toàn. Ví dụ: máy chủ của bạn không nên gửi email trực tiếp đến người dùng. Điều này không áp dụng nếu bạn lưu trữ tất cả nội dung của mình trên CDN và không có máy chủ của riêng bạn.

Ngoài ra, một số nhà cung cấp VPS và lưu trữ tốt hơn trong việc giảm thiểu các cuộc tấn công này so với các cuộc tấn công khác. Nói chung, càng lớn, họ sẽ càng giỏi hơn về điều này; một nhà cung cấp rất đồng đều và có nhiều băng thông sẽ có khả năng phục hồi tự nhiên hơn, và một nhà cung cấp với đội ngũ vận hành mạng tích cực và có đầy đủ nhân viên sẽ có thể phản ứng nhanh hơn.

Dựa trên tải

Khi bạn gặp phải một DDoS dựa trên tải, bạn nhận thấy rằng mức trung bình tải cao bất thường (hoặc CPU, RAM hoặc mức sử dụng đĩa, tùy thuộc vào nền tảng của bạn và thông tin cụ thể). Mặc dù máy chủ dường như không làm gì hữu ích, nhưng nó rất bận. Thông thường, sẽ có một lượng lớn các mục trong nhật ký cho thấy các điều kiện bất thường. Thường xuyên hơn không phải điều này đến từ nhiều nơi khác nhau và là một DDoS, nhưng điều đó không nhất thiết phải như vậy. Thậm chí không cần phải có nhiều máy chủ khác nhau .

Cuộc tấn công này dựa trên việc làm cho dịch vụ của bạn làm rất nhiều thứ đắt tiền. Đây có thể là một cái gì đó như mở một số lượng lớn các kết nối TCP và buộc bạn phải duy trì trạng thái cho chúng hoặc tải quá nhiều hoặc quá nhiều tệp lên dịch vụ của bạn hoặc có thể thực hiện các tìm kiếm thực sự tốn kém hoặc thực sự làm bất cứ điều gì tốn kém để xử lý. Lưu lượng truy cập nằm trong giới hạn của những gì bạn đã lên kế hoạch và có thể đảm nhận, nhưng các loại yêu cầu được thực hiện quá đắt để xử lý rất nhiều .

Thứ nhất, loại tấn công này là có thể thường là dấu hiệu của một vấn đề cấu hình hoặc lỗitrong dịch vụ của bạn. Chẳng hạn, bạn có thể đã bật ghi nhật ký quá dài và có thể lưu trữ nhật ký trên một thứ gì đó rất chậm để ghi vào. Nếu ai đó nhận ra điều này và làm nhiều việc khiến bạn phải ghi rất nhiều nhật ký vào đĩa, máy chủ của bạn sẽ chậm thu thập dữ liệu. Phần mềm của bạn cũng có thể đang làm một cái gì đó cực kỳ không hiệu quả đối với các trường hợp đầu vào nhất định; nguyên nhân có rất nhiều như có các chương trình, nhưng hai ví dụ sẽ là một tình huống khiến dịch vụ của bạn không đóng phiên mà kết thúc và một tình huống khiến nó sinh ra một quy trình con và rời bỏ nó. Nếu bạn kết thúc với hàng chục ngàn kết nối mở với trạng thái để theo dõi hoặc hàng chục nghìn quy trình con, bạn sẽ gặp rắc rối.

Điều đầu tiên bạn có thể làm là sử dụng tường lửa để giảm lưu lượng . Điều này không phải lúc nào cũng có thể, nhưng nếu có một đặc điểm bạn có thể tìm thấy trong lưu lượng truy cập đến (tcpdump có thể tốt cho việc này nếu lưu lượng nhẹ), bạn có thể thả nó vào tường lửa và nó sẽ không còn gây rắc rối nữa. Điều khác cần làm là sửa lỗi trong dịch vụ của bạn (liên hệ với nhà cung cấp và sẵn sàng cho trải nghiệm hỗ trợ lâu dài).

Tuy nhiên, nếu đó là một vấn đề cấu hình, hãy bắt đầu từ đó . Tắt ghi nhật ký trên các hệ thống sản xuất ở mức hợp lý (tùy thuộc vào chương trình, đây thường là mặc định và thường sẽ đảm bảo các mức ghi nhật ký "gỡ lỗi" và "dài dòng" bị tắt; nếu mọi thứ người dùng thực hiện đều được đăng nhập chính xác và chi tiết tốt, đăng nhập của bạn là quá dài dòng). Ngoài ra, hãy kiểm tra giới hạn quy trình và yêu cầu con , có thể điều tiết các yêu cầu đến, kết nối trên mỗi IP và số lượng quy trình con được phép, nếu có.

Không cần phải nói rằng máy chủ của bạn được cấu hình tốt hơn và được cung cấp tốt hơn, loại tấn công này sẽ càng khó hơn. Tránh keo kiệt với RAM và CPU nói riêng. Đảm bảo kết nối của bạn với những thứ như cơ sở dữ liệu phụ trợ và lưu trữ đĩa nhanh và đáng tin cậy.

Dựa trên khai thác

Nếu dịch vụ của bạn gặp sự cố một cách bí ẩn cực kỳ nhanh chóng sau khi được đưa lên, đặc biệt là nếu bạn có thể thiết lập một mẫu yêu cầu trước sự cố và yêu cầu không điển hình hoặc không khớp với các mẫu sử dụng dự kiến, bạn có thể gặp phải DoS dựa trên khai thác. Điều này có thể đến từ chỉ một máy chủ (với hầu hết mọi loại kết nối internet) hoặc nhiều máy chủ.

Điều này tương tự như một DoS dựa trên tải trọng ở nhiều khía cạnh và về cơ bản có cùng nguyên nhân và giảm thiểu. Sự khác biệt chỉ là trong trường hợp này, lỗi không khiến máy chủ của bạn lãng phí mà chết. Kẻ tấn công thường khai thác lỗ hổng sự cố từ xa, chẳng hạn như đầu vào bị cắt xén gây ra sự vô hiệu hóa hoặc một cái gì đó trong dịch vụ của bạn.

Xử lý này tương tự như một cuộc tấn công truy cập từ xa trái phép. Tường lửa chống lại các máy chủ và loại lưu lượng ban đầu nếu chúng có thể được ghim xuống. Sử dụng proxy xác nhận ngược nếu áp dụng. Thu thập bằng chứng pháp y (thử và nắm bắt một số lưu lượng truy cập), gửi một vé lỗi với nhà cung cấp và xem xét nộp đơn khiếu nại lạm dụng (hoặc khiếu nại pháp lý) đối với nguồn gốc.

Các cuộc tấn công này khá rẻ để gắn kết, nếu có thể tìm thấy một khai thác, và chúng có thể rất mạnh, nhưng cũng tương đối dễ dàng để theo dõi và dừng lại. Tuy nhiên, các kỹ thuật hữu ích để chống lại DDoS dựa trên lưu lượng truy cập thường vô dụng đối với DoS dựa trên khai thác.


1
Về đoạn cuối cùng của bạn, và nếu bạn nhận được D DoS dựa trên khai thác thì sao? Làm thế nào bạn có thể theo dõi và ngăn chặn nó?
Pacerier

8

Nếu bạn là một doanh nghiệp, bạn có nhiều lựa chọn. Nếu bạn là một kẻ nhỏ bé như tôi, thuê VPS hoặc máy chủ chuyên dụng để phục vụ một trang web nhỏ, chi phí có thể nhanh chóng trở nên cấm đoán.

Từ kinh nghiệm của tôi, tôi tin rằng hầu hết các nhà cung cấp VPS và chuyên dụng sẽ không thiết lập các quy tắc tường lửa đặc biệt chỉ dành cho máy chủ của bạn. Nhưng ngày nay, bạn có một vài lựa chọn.

CDN

Nếu bạn đang chạy một máy chủ web, hãy xem xét đặt nó phía sau CDN như CloudFlare hoặc Amazon CloudFront.

CDN là đắt tiền. Để kiểm soát chi phí, hãy phân phát các tệp lớn (hình ảnh lớn, âm thanh, video) trực tiếp từ máy chủ của bạn thay vì thông qua CDN. Tuy nhiên, điều này có thể làm lộ địa chỉ IP máy chủ của bạn cho những kẻ tấn công.

Đám mây riêng

Các đám mây riêng thường là các giải pháp doanh nghiệp đắt tiền, nhưng Amazon VPC có chi phí bên cạnh không có gì để thiết lập. Tuy nhiên, băng thông của Amazon nói chung là đắt đỏ. Nếu bạn có đủ khả năng đó, thì bạn có thể thiết lập Nhóm bảo mật và Mạng ACL của Amazon VPC để chặn lưu lượng truy cập trước khi nó đến phiên bản của bạn. Bạn nên chặn tất cả các cổng ngoại trừ cổng máy chủ TCP của bạn.

Lưu ý kẻ tấn công vẫn có thể tấn công cổng máy chủ TCP của bạn. Nếu đó là một máy chủ web thì hãy cân nhắc sử dụng một cái gì đó như nginx sử dụng IO không chặn và có thể xử lý số lượng lớn kết nối. Ngoài ra, bạn không thể làm gì nhiều ngoài việc đảm bảo bạn chạy phiên bản mới nhất của phần mềm máy chủ.

Khi cổng TCP của bạn bị tấn công và tất cả đều thất bại

Đây là một giải pháp tôi đã phát triển áp dụng cho các máy chủ không phải web không thể ẩn đằng sau CDN, chẳng hạn như WebSocket, máy chủ nội dung phương tiện / truyền phát. CloudFlare hỗ trợ WebSocket nhưng chỉ dành cho doanh nghiệp tại thời điểm này.

Mục tiêu là thay đổi cổng nghe TCP của bạn đủ nhanh để botnet không thể theo kịp, cứ sau 10 giây lại nói một lần. Điều này được thực hiện bằng một chương trình proxy đơn giản thực hiện chuyển vùng cổng. Trình tự các cổng là giả ngẫu nhiên, nhưng phải dựa trên thời gian của máy chủ. Và thuật toán tính toán thời gian và cổng máy chủ phải được ẩn trong mã javascript / flash của máy khách của bạn. Chương trình cũng nên sửa đổi tường lửa khi nó thay đổi cổng nghe và tường lửa cần phải ở trạng thái. Nếu ai đó quan tâm, tôi sẽ tải tập lệnh node.js hoạt động với Amazon, lên GitHub.


4

Thay đổi tên miền của bạn để đi đến một lỗ đen như 0.0.0.0 trong một khoảng thời gian ngắn.

Nói chuyện với máy chủ của bạn cung cấp và xem liệu họ có thể cấp cho bạn một địa chỉ IP khác như một cách tạm thời để truy cập máy chủ hoặc xem máy chủ có quyền truy cập bảng điều khiển từ xa không (như bạn đang ngồi trước nó). Từ đây bạn có thể xem nếu đó là một địa chỉ IP duy nhất và chặn nó khỏi trang web hoặc một cuộc tấn công phân tán.


3
Thay đổi DNS như thế có khả năng gây hại nhiều hơn là tốt. Lúc đầu, tôi sẽ giảm TTL của bản ghi A, nhưng không thay đổi địa chỉ IP - cho đến khi tôi có một IP mới để trỏ nó đến.
kasperd

1

Khi bạn bị DDoS tấn công, ISP của bạn có thể giúp bạn nhiều nhất, nhưng nếu họ không có bảo vệ DDoS thì rất có thể bạn sẽ hết dịch vụ cho đến khi cuộc tấn công dừng lại. Thông thường họ sẽ thấy địa chỉ IP bị tấn công và null mạng trên bộ định tuyến ngược dòng của họ. Nếu bạn không có nhiều lưu lượng, có nhiều dịch vụ trực tuyến để bảo vệ DDoS nơi lưu lượng của bạn được định tuyến lại, được lọc và gửi lại cho máy chủ của bạn.


-1

Chúng tôi có tình trạng tương tự trước đây. Dưới đây là những gì chúng tôi đã làm.

Đầu tiên, cắm cáp mạng từ máy chủ của bạn. Bây giờ, hãy kiểm tra các dịch vụ máy chủ của bạn đã trở lại hoạt động bình thường bằng cách xem trình giám sát hiệu suất và trình quản lý tác vụ. Nếu không, hãy quét máy chủ của bạn bằng phần mềm malwarebytes để đảm bảo máy chủ của bạn được dọn sạch. Bước này thường sẽ đảm bảo máy chủ bị ngắt kết nối của bạn trở lại bình thường.

Tiếp theo, bạn có một tường lửa tại chỗ không? Nếu có, bạn đã gia hạn đăng ký? Đảm bảo bạn bật tính năng xâm nhập IPS trong tường lửa. Chỉ bằng cách gia hạn đăng ký tường lửa đã giải quyết cuộc tấn công DDOS của chúng tôi.

Chúng tôi đã học được rằng chúng ta nên gia hạn đăng ký bảo mật (ví dụ: Firwall hoặc chống vi-rút) và không xem nhẹ nó. Cuộc tấn công DDOS đang diễn ra hàng ngày và cũng có thể xảy ra với doanh nghiệp nhỏ. Hi vọng điêu nay co ich.

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.