SYN flood attack DDoS là gì ? Cách thức phòng chống !

01/10/2019

SYN Flood attack khai thác từ lỗ hổng bên trong TCP/ IP bắt tay nhau trong việc tấn công phá vỡ một dịch vụ web.

Cuộc tấn công SYN Flood là gì?

SYN flood ( half-open attack) là một kiểu tấn công từ chối dịch vụ (DDos), tấn công này với mục đích làm cho Server không có  lưu lượng để truy cập hợp pháp bằng cách tiêu thụ tất cả tài nguyên server đang có sẵn. Bằng việc gửi liên tục gửi các packet tin yêu cầu kết nối ban đầu (SYN). Người tấn công có thể áp đảo tất cả các cổng có sẵn trên Server được chọn muc tiêu, làm cho thiết bị Client đáp ứng lưu lượng hợp pháp một cách chậm chạp hoặc không đáp ứng kịp thời.

Làm thế nào tấn công SYN Flood ?

Một cuộc tấn công DDoS SYN-flood tận dụng quy trình bắt tay ba chiều TCP. Trong điều kiện bình thường, kết nối TCP được thể hiện quy trình 3 bước riêng biệt để tạo được sự kết nối như sau:

Bước 1: Đầu tiên, máy tấn công gửi 1 packet tin SYN đến Server để yêu cầu kết nối.

Bước 2: Sau khi tiếp nhận packet SYN, Server phản hồi lại máy khách bằng một packet SYN/ACK, để xác nhận thông tin từ Client.

Bước 3: Cuối cùng, Client nhận được packet tin SYN/ACK thì sẽ trả lời server bằng packet tin ACK báo với server biết rằng nó đã nhận được packet tin SYN/ACK, kết nối đã được thiết lập và sẵn sàng trao đổi dữ liệu.

SYN flood attack

SYN flood attack

Để tạo từ chối dịch vụ (DOS), thực tế kẻ tấn công sẽ khai thác sau khi nhận được packet SYN ban đầu từ Client, Server sẽ phản hồi lại 1 hoặc nhiều packet SYN/ACK và chờ đến bước cuối cùng trong quá trình Handshake . Ở đây, cách thức thực hiện của nó như sau:

Bước 1: Kẻ tấn công sẽ gửi một khối lượng lớn các packet tin SYN đến Server được nhắm là mục tiêu và thường là các địa chỉ IP giả mạo.

Bước 2: Sau đó, Server sẽ phản hồi lại từng yêu cầu kết nối, để lại 1 cổng mở sẵn sàng tiếp nhận và phản hồi.

Bước 3: Trong khi Server chờ packet ACK ở bước cuối cùng từ Client, packet mà không bao giờ đến, kẻ tấn công tiếp tục  gửi thêm các packet SYN. Sự xuất hiện các packet SYN mới khiến máy chủ tạm thời duy trì kết nối cổng mở mới trong một thời gian nhất định, một khi tất cả các cổng có sẵn được sử dụng thì Server không thể hoạt động như bình thường.

Trong kết nối mạng, khi Server bên này để kết nối mở nhưng máy bên kia kết nối thì không, kết nối này được coi là half-open. Trong kiểu tấn công DDos, sau khi server gửi gói tin SYN/ACK nó sẽ phải đợi cho đến khi client trả lời hoặc hết thời gian timeout, đến khi các port trở lại bình thường. Kết quả của kiểu tấn công này được coi là cuộc tấn công half-open.

SYN flood attack

SYN flood attack

SYN Flood( half-open) có thể xảy ra theo 3 cách khác nhau:

  1. Tấn công trực tiếp: SYN Flood ở những nơi địa chỉ IP không bị giả mạo thì được coi là tấn công trực tiếp. Trong cuộc tấn công này, kẻ tấn công không hoàn toàn giấu địa chỉ IP của họ. Kết quả là kẻ tấn công sử dụng duy nhất 1 thiết bị nguồn có địa chỉ IP thực để tạo ra cuộc tấn công. Kẻ tấn công rất dễ bị phát hiện và giảm nhẹ. Để tạo trạng thái half-open trên Server mục tiêu, hacker ngăn chặn máy của họ phản ứng với packet tin SYN/ACK của Server. Điều này thường đạt được nhờ quy tắc tường lửa ngăn chặn các packet tin đi ra ngoài packet tin SYN hoặc chọn lọc ra bất kỳ packet tin SYN/ACK xuất hiện trước khi chúng ảnh hưởng những độc hại đến máy người dùng.  Thực tế thì cách này ít sử dụng( nếu có), việc giảm thiểu cũng khá đơn giản – chỉ cần chặn địa chỉ IP của từng hệ thống độc hại. Nếu kẻ tấn công đang sử dụng Botnet như Mirai Botnet thì họ sẽ thành công trong việc che giấu địa chỉ IP  của các thiết bị nhiễm bệnh.
  2. Tấn công giả mạo: Một người dùng có ác tâm cũng có thể giả mạo địa chỉ IP trên mỗi packet tin SYN họ gửi đi để ngăn chặn, giảm thiểu tối đa và làm cho danh tính của họ khó phát hiện hơn. Trong những packet tin có thể bị giả mạo, có những packet tin có thể phát hiện lại nguồn của họ. Việc này rất khó để khám phá ra danh tính nhưng không phải là không thể. Đặc biệt là các nhà cung cấp dịch vụ Internet (ISP) sẵn sàng giúp đỡ.
  3. Tấn công phân tán trực tiếp(DDoS): Nếu cuộc tấn công tạo ra bằng cách sử dụng Botnet thì khả năng theo dõi cuộc tấn công trở lại nguồn của nó rất thấp. Với mức độ che giấu được thêm vào, kẻ tấn công có thể có các thiết bị phân tán cũng giả mạo địa chỉ IP mà nó gửi các packet. Nếu người tấn công đang sử dụng botnet như mirai botnet. Nhìn chung họ sẽ thành công trong việc che giấu IP về thiết bị bị nhiễm.

Bằng cách sử dụng tấn công SYN flood, một kẻ xấu nào đó cố gắng tạo ra sự tấn công Ddos tới thiết bị mục tiêu hoặc dịch vụ  với lưu lương truy cập ít hơn so với các cuộc tấn công Ddos. Thay cho các cuộc tấn công lớn, nhằm mục đích làm quá tải cơ sở hạ tầng xung quanh mục tiêu, SYN attacks only need to be larger than the available backlog in the target’s operating system. Nếu kẻ tấn công có thể xác định kích thước của backlog và mỗi lần kết nối sẽ mở trong bao lâu trước khi hết thời gian, kẻ tấn công có thể nhắm mục tiêu các tham số chính xác cần thiết để vô hiệu hóa hệ thống, bằng cách giảm tổng lưu lượng xuống mức tối thiểu cần thiết để tạo Ddos.

SYN flood attack

Làm thế để khắc phục tấn công SYN flood?

Lỗ hổng SYN flood đã được biết đến từ lâu và một số cách giảm thiểu đã được sử dụng. Một vài cách khắc phục bao gồm:

Tăng hàng đợi backlog

Mỗi hệ điều hành trên thiết bị mục tiêu có một số kết nối nhất định half-open được cho phép. Một phản hồi đối với khối lượng lớn các gói SYN là tăng số lượng kết nối half-open tối đa có thể mà hệ điều hành sẽ cho phép. Để tăng thành công tối đa backlog, hệ thống phải dữ trữ thêm tài nguyễn bộ nhớ để xử lý tất cả các yêu cầu mới. Nếu hệ thống không có đủ bộ nhớ để xử lý kích thước backlog tồn đọng tăng lên, hiệu xuất hệ thống bị ảnh hưởng một cách tiêu cực, nhưng điều đó vẫn tốt hơn bị tấn công Ddos.

Lặp lại sự kết nối half-open TCP cũ

Một cách giảm thiểu liên quan đến việc ghi đè lên các kết nối half-open cũ sau khi backlog đã được lấp đầy. Cách này yêu cầu các kết nối hợp pháp đầy đủ trong thời gian ngắn so với các backlog bằng các packets SYN độc hại. Cách bảo vệ đặc biệt này thất bại khi số lượng tấn công tăng lên hoặc kích thước backlog quá nhỏ thì không thích hợp.

SYN cookies

Cách này lien quan đến việc tạo ra 1 cookie của server . Để tránh nguy cơ mất các kết nối khi backlog đã được lấp đầy. Server phản hồi từng yêu cầu kết nối từ packet SNY/ACK, sau đó loại bỏ phản hồi SYN khỏi backlog, xóa yêu cầu khỏi  bộ nhớ và để port mở và sẵn sàng tạo kết nối mới. Nếu kết nối là môt yêu cầu hợp pháp và packet ACKcuối cùng được gửi từ client đến server, sau đó server sẽ xây dựng lại( với 1 số hạn chế) tiếp nhận SYN backlog. Mặc dù sự cố găng giảm thiểu này mất một số thông tin về kết nối TCP, nhưng nó là tốt hơn so với bị Ddos tấn công.

Xem thêm các gói Thuê Máy Chủ tại VNSO