CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về tấn công từ chối dịch vụ 1.1.1 Khái niệm tấn công từ chối dịch vụ Tấn công từ chối dịch vụ DoS là một loại tấn công nhằm mục đích làm cho thiết bị hoặc
CƠ SỞ LÝ THUYẾT
Tổng quan về tấn công từ chối dịch vụ
1.1.1 Khái niệm tấn công từ chối dịch vụ
Tấn công từ chối dịch vụ (DoS) là một loại tấn công nhằm mục đích làm cho thiết bị hoặc tài nguyên mạng không khả dụng cho người dùng hợp pháp bằng cách làm gián đoạn tạm thời hoặc vô thời hạn các dịch vụ của máy chủ Tấn công từ chối dịch vụ thường được thực hiện bằng cách áp đảo hoặc làm ngập lụt thiết bị, tài nguyên được nhắm tới với các yêu cầu thừa nhằm cố gắng làm quá tải hệ thống và ngăn một số hoặc tất cả các yêu cầu hợp pháp được thực hiện Một cuộc tấn công DoS được đặc trưng bởi việc sử dụng một thiết bị duy nhất để khởi động cuộc tấn công
1.1.2 Một số kiểu tấn công phổ biến
SYN Flood khai thác điểm yếu trong chuỗi kết nối TCP, được gọi là bắt tay ba chiều Máy chủ sẽ nhận được một thông điệp đồng bộ (SYN) để bắt đầu "bắt tay" Máy chủ nhận tin nhắn bằng cách gửi cờ báo nhận (ACK) tới máy lưu trữ ban đầu, sau đó đóng kết nối Tuy nhiên, trong một SYN Flood, tin nhắn giả mạo được gửi đi và kết nối không đóng dẫn đến dịch vụ sập
User Datagram Protocol (UDP) là một giao thức mạng không session Một UDP Flood nhắm đến các cổng ngẫu nhiên trên máy tính hoặc mạng với các gói tin UDP Máy chủ kiểm tra ứng dụng tại các cổng đó nhưng không tìm thấy ứng dụng nào
HTTP Flood gần giống như các yêu cầu GET hoặc POST hợp pháp được khai thác bởi một hacker Nó sử dụng ít băng thông hơn các loại tấn công khác nhưng nó có thể buộc máy chủ sử dụng các nguồn lực tối đa
Slowloris cho phép kẻ tấn công sử dụng nguồn lực tối thiểu trong một cuộc tấn công và các mục tiêu trên máy chủ web Khi đã kết nối với mục tiêu mong muốn, Slowloris giữ liên kết đó mở càng lâu càng tốt với HTTP tràn ngập
Application Level Attacks khai thác lỗ hổng trong các ứng dụng Mục tiêu của loại tấn công này không phải là toàn bộ máy chủ, mà là các ứng dụng với những điểm yếu được biết đến
1.1.3.1 Dựa trên phương pháp tấn công
− Tấn công tràn bộ nhớ đệm (Buffer overflow attacks)
Tấn công tràn bộ nhớ đệm có thể khiến máy sử dụng tất cả dung lượng ổ cứng, bộ nhớ RAM hoặc CPU time Hình thức khai thác này thường dẫn đến sự chậm chạp, các sự cố hệ thống hoặc các hành vi có hại khác dẫn đến việc từ chối dịch vụ
− Tấn công gây ngập lụt (Flooding attacks)
Bằng cách bão hòa một máy chủ được nhắm tới với số lượng gói tin quá lớn, tác nhân độc hại có thể làm bão hòa dung lượng máy chủ, dẫn đến từ chối dịch vụ Để một cuộc tấn công DoS flood thành công, tác nhân độc hại phải có nhiều băng thông khả dụng hơn mục tiêu
1.1.3.2 Dựa trên giao thức mạng
− Tấn công tầng mạng hoặc giao vận Ở dạng này, các gói tin TCP, UDP và ICMP được sử dụng để thực hiện tấn công Mục tiêu tấn công nhắm tới nằm ở tầng ba và tầng bốn (network layer/transport layer) trong mô mình OSI
− Tấn công tầng ứng dụng Ở dạng này, các tấn công thường hướng đến các dịch vụ thông dụng ứng với các giao thức tầng ứng dụng như HTTP, DNS và SMTP.
Một số giải pháp phòng chống tấn công DoS
− Nâng cấp phần cứng thiết bị
Là một giải pháp đơn giản nhất để chống tất công DoS Việc nâng cấp thiết bị làm tăng tính khả dụng cho hệ thống đồng nghĩa với việc hacker sẽ khó khăn hơn nếu muốn tấn công DoS dựa vào cơ chế Flood attacks Nhưng giải pháp này đòi hỏi chi phí cao cũng như không giải quyết triệt để vấn đề
− Lọc gói tin vào/ra hệ thống
Sử dụng tính năng lọc gói tin của các thiết bị như router/firewall để loại bỏ các gói tin không mong muốn, giảm lượng lưu thông trên mạng cũng như tránh được các giói tin độc hại được truyền vào trong hệ thống
− Cập nhật các bản vá hệ thống thường xuyên
Nếu bị tấn công do lỗi của phần mềm hay thiết bị thì cần phải nhanh chóng cập nhật các bản sửa lỗi cho hệ thống đó hoặc thay thế
− Sử dụng thiết bị chuyên dụng
Hiện nay, rất nhiều các công ty công nghệ đã và đang tung ra thị trường các sản phẩm thiết bị anti DoS/DDoS Việc chi một khoản tiền để được các tổ chức có chuyên môn tham gia bảo vệ hệ thống của mình là hoàn toàn hợp lý
− Hệ thống dự phòng Đảm bảo luôn có các thành phần dự phòng trong hệ thống giúp tránh được tình trạng dịch vụ/hệ thống bị sập khiến người dùng không thể truy cập và sử dụng dịch vụ.
GIẢI PHÁP PHÒNG CHỐNG TẤN CÔNG DoS
Sử dụng module mod_qos cho máy chủ web apache trong phòng chống DoS tầng ứng dụng(Slowloris)
Mod_qos là mô-đun chất lượng dịch vụ (QoS) cho máy chủ Apache HTTP,triển khai các cơ chế kiểm soát,có thể cung cấp mức độ ưu tiên khác nhau cho các yêu cầu khác nhau
Máy chủ web chỉ có thể phục vụ một số lượng hạn chế các yêu cầu đồng thời QoS được sử dụng để đảm bảo rằng các tài nguyên quan trọng luôn sẵn sàng khi máy chủ tải cao Mod_qos được sử dụng để từ chối các yêu cầu đối với các tài nguyên không quan trọng trong khi cấp quyền truy cập vào các ứng dụng quan trọng hơn Cũng có thể vô hiệu hóa các hạn chế truy cập, ví dụ, đối với các yêu cầu với các tài nguyên rất quan trọng hoặc đối với những người dùng rất quan trọng
− Các cơ chế kiểm soát có sẵn ở các cấp độ sau:
+ Kiểm soát mức yêu cầu: mod_qos kiểm soát số lượng yêu cầu đồng thời đối với không gian tên (URL) Nó được sử dụng để xác định các mức độ ưu tiên khác nhau cho các trang hoặc ứng dụng khác nhau trong một máy chủ web
+ Kiểm soát mức độ kết nối: mod_qos kiểm soát số lượng kết nối TCP tới máy chủ web Điều này giúp hạn chế các kết nối đến từ một ứng dụng khách hoặc từ các mạng không xác định, để giảm số lượng tối đa các kết nối đồng thời tới một máy chủ ảo hoặc để triển khai các cài đặt duy trì HTTP động
+ Kiểm soát mức băng thông: điều chỉnh các yêu cầu / phản hồi đối với một số URL nhất định trên máy chủ web
+ Dòng yêu cầu chung và bộ lọc tiêu đề loại bỏ các URL yêu cầu hoặc tiêu đề HTTP đáng ngờ
− Các trường hợp sử dụng mod_qos:
Trường hợp sử dụng đầu tiên cho thấy cách mod_qos có thể tránh ngừng dịch vụ của máy chủ web do phản hồi chậm của một ứng dụng Trong trường hợp một ứng dụng (ví dụ A) rất chậm, các yêu cầu sẽ đợi cho đến khi hết thời gian chờ xảy ra Do nhiều yêu cầu đang chờ, máy chủ web hết kết nối TCP miễn phí và không thể xử lý các yêu cầu khác tới ứng dụng B hoặc
C Mod_qos giới hạn các yêu cầu đồng thời đối với một ứng dụng để đảm bảo tính khả dụng của các tài nguyên khác
Phần mở rộng HTTP 1.1 tiếp tục tồn tại,cho phép các kết nối TCP liên tục cho nhiều yêu cầu / phản hồi Điều này tăng tốc độ truy cập vào máy chủ web do lưu lượng mạng ít hơn và được tối ưu hóa Nhược điểm của các kết nối liên tục này là tài nguyên máy chủ bị chặn mặc dù không có dữ liệu nào được trao đổi giữa máy khách và máy chủ Mod_qos cho phép máy chủ hỗ trợ duy trì hoạt động miễn là có đủ kết nối miễn phí, dừng hỗ trợ duy trì hoạt động khi đạt đến ngưỡng kết nối xác định
+ Máy khách mở nhiều kết nối đồng thời
Một máy khách có thể mở nhiều kết nối TCP đồng thời để tải xuống nội dung khác nhau từ máy chủ web Mặc dù máy khách có nhiều kết nối nhưng người dùng khác có thể không truy cập được vào máy chủ vì không còn kết nối miễn phí nào cho họ Mod_qos có thể giới hạn số lượng kết nối đồng thời cho một địa chỉ nguồn IP
+ Nhiều yêu cầu đối với một URL duy nhất
Mod_qos giới hạn số lượng yêu cầu tối đa mỗi giây đối với URL này Mô- đun cũng có thể kiểm soát băng thông Chỉ cần chỉ định băng thông tối đa cho phép và moq_qos bắt đầu điều chỉnh khi cần thiết
+ Giảm thiểu các cuộc tấn công từ chối dịch vụ băng thông thấp (điển hình là slowloris) Được đề cập kĩ hơn ở phần sau
2.1.2 Ứng dụng mod_qos cho máy chủ web Apache trong phòng chống DoS tầng ứng dụng(Slowloris)
2.1.2.1 Chi tiết về kiểu tấn công Slowloris Đây là kĩ thuật tương tự như SYN flood (tạo nửa kết nối để làm cạn kiệt tài nguyên máy chủ) nhưng diễn ra ở lớp HTTP (lớp ứng dụng) Để tấn công, tin tặc gửi yêu cầu HTTP đến máy chủ, nhưng không gửi toàn bộ yêu cầu, mà chỉ gửi một phần (header) và bổ sung nhỏ giọt, để khỏi bị ngắt kết nối Với hàng trăm kết nối như vậy, tin tặc chỉ tốn rất ít tài nguyên, nhưng đủ để làm treo máy chủ, không thể tiếp nhận các kết nối từ người dùng hợp lệ
Cấu trúc của môt HTTP request:
: dòng Request-line
: Không có hoặc có thêm các header (General|Request|Entity) theo sau bởi một ký hiệu CRLF (carriage return line feed – báo hiệu trở về đầu dòng tiếp theo) Một dòng trống (VD một dòng mà không có gì ở trước CRLF) báo hiệu kết thúc phần header
: Có hoặc không có phần nội dung thông điệp
"-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0" "-"
192.168.1.40 - - [24/Aug/2021:10:51:58 +0700] "GET /?64004357733126 HTTP/1.1" 400 0 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; NET CLR 1.1.4322; NET CLR 2.0.503l3; NET CLR 3.0.4506.2152; NET CLR 3.5.30729; MSOffice 12)" "-"
Apache mở socket và nhận data từ client (3-way handshakes đã hoàn tất) cho mọi request đi vào Trong trường hợp slowloris tấn công ở đây, nó cố tình không gửi một cái CRLF để hoàn tất request header cho nên apache cứ việc chờ Trạng thái chờ này sẽ kéo dài cho đến khi timeout (theo mặc định apache hiện chờ 300 giây- 5 phút) Quá
5 phút này, socket ấy sẽ bị hủy Kẹt ở chỗ là trong vòng 5 phút ấy slowloris đã mở thêm 3000 sockets nếu không có cái gì giới hạn ở phía apache hoặc phía trước apache
Cứ thế, cứ chồng chất lên Với mặc định 150 MaxClients thì mất 15s apache sẽ không còn phục vụ được ai nữa Ưu điểm khác của Slowloris là trong suốt quá trình tấn công, do kết nối chưa hoàn chỉnh, sẽ không có thông tin gì trong log Chỉ đến khi ngưng kết nối, sẽ có hàng loạt lỗi 400 trong log do truy vấn sai
Hình 2-1 Một đoạn nội dung file access.log sau khi tấn công Slowloris kết thúc
Không phải mọi máy chủ đều bị ảnh hưởng bởi kiểu tấn công này Các máy chủ như Microsoft IIS hoặc nginx ít bị ảnh hưởng trước Slowloris
Có nhiều cách để khắc phục kiểu tấn công này, mỗi cách đều có ưu điểm riêng:
+ Không dùng Apache nữa! Nếu dùng Apache sau proxy nghịch, thì chỉ cho nghe trên cổng 127.0.0.1 hoặc các IP cục bộ
+ Giảm Timeout cho Apache Tuy nhiên cách này không mấy hiệu quả, tin tặc chỉ phải gửi thêm nhiều gói tin mà thôi
+ Giới hạn số kết nối đến Apache cho mỗi IP Có thể dùng mod_qos chẳng hạn để làm việc này
+ Giải quyết ở lớp dưới: cấu hình firewall để giới hạn số kết nối đến cổng 80 trên mỗi IP
Nếu dùng nginx làm reverse proxy, tuy nhiên nếu Apache chạy phía sau vẫn nghe trên IP public (vì còn chạy một website thử nghiệm khác, không qua proxy) nên vẫn dễ bị tấn công Việc xây dựng nginx-reverse proxy mang lại nhiều vấn đề rắc rối, đó là chi phí cho việc xây dựng server, công sức, trong khi đó chúng ta có thể giải quyết việc này rất dễ dàng bằng cách sử dụng các module có sẵn cung cấp cho máy chủ Apache điển hình là mod_qos
− QS_SrvMaxConnPerIP : được sử dụng để giới hạn các kết nối mà một IP được phép mở (quan trọng)
− MaxClients: giới hạn số lượng tối đa các kết nối TCP đang hoạt động
− QS_SrvMaxConnClose : xác định số lượng kết nối tối đa cho máy chủ (máy chủ ảo) hỗ trợ HTTP duy trì Nếu số lượng kết nối đồng thời vượt quá ngưỡng này, các kết nối TCP sẽ bị đóng sau mỗi yêu cầu Chỉ định số lượng kết nối này theo tỷ lệ phần trăm MaxClients.(ví dụ 70% giá trị MaxClients)
Xây dựng thiết bị Anti-DoS
2.2.1 Giải pháp Ý tưởng ở đây là sử dụng một thiết bị biên đứng tại rìa mạng làm Thiết bị này đứng trước các thiết bị/dịch vụ cần bảo vệ, hứng tất cả lưu lượng đi vào hệ thống Thực hiện kiểm tra các gói tin dựa trên dấu hiệu và chính sách, cuối cùng quyết định chúng có được phép đi vào hệ thống hay không
Như vậy thiết bị của ta cần đảm bảo ba yếu tố sau:
- Có khả năng định tuyến các gói tin
- Có khả năng lọc các gói tin bất thường dựa trên các dấu hiệu đã biết của một cuộc tấn công DoS
- Có khả năng thực thi các chính sách giới hạn băng thông, lưu lượng trên đường truyền do người quản trị thiết lập
Hình 2-2 Mô hình giải pháp
Khái niệm định tuyến Định tuyến là quá trình xác định đường đi tốt nhất trên một mạng máy tính để gói tin tới được đích theo một số thủ tục nhất định nào đó thông qua các nút trung gian là bộ định tuyến
Trên các hệ điều hành Server phổ biến hiện nay như CentOS, Ubuntu server, đều có thể hoạt động như một router mạng, định tuyến các gói dữ liệu IP giữa các mạng Dịch vụ router này cho phép các LAN và WAN được kết nối chéo với nhau một cách dễ dàng
Hình 2-3 Minh họa sử dụng Linux server làm thiết bị định tuyến
Berkeley Packet Filter (BPF) là một máy ảo có mục đích đặc biệt để lọc các gói mạng, đây một công nghệ được sử dụng trong một số hệ điều hành nhất định cho các 0000JIT vitual machine trong Linux kernel) Nó cung cấp giao diện thô cho data link layer, cho phép raw link-layer gửi và nhận gói tin BPF có sẵn trên hầu hết các hệ điều hành giống Unix và eBPF cho Linux và Windows
Hình 2-4 Hiệu suất của từng loại BPF
Vì nó đang chạy cùng với hạt nhân, nên có một số biện pháp giới hạn số lượng mã có thể được thực thi và những gì nó có thể làm Ví dụ, nó không thể chứa các vòng lặp (chỉ các vòng lặp bị giới hạn), có một số giới hạn các lệnh eBPF và các hàm trợ giúp Giới hạn lệnh tối đa cho mỗi chương trình được giới hạn ở 4096 lệnh BPF, có nghĩa là bất kỳ chương trình nào cũng sẽ kết thúc nhanh chóng Đối với nhân mới hơn 5.1, giới hạn này đã được nâng lên thành 1 triệu lệnh BPF eXpress Data Path
Express Data Path (XDP) là một “đường dẫn dữ liệu” hiệu suất cao dựa trên eBPF, được hợp nhất trong nhân Linux kể từ bản 4.8 XDP cho phép người dùng cài đặt các chương trình xử lý gói tin vào kernel Chương trình sẽ thực thi cho mỗi gói đến trước khi kernel thực hiện bất kỳ quá trình xử lý nào khác trên dữ liệu
Hình 2-5 Luồng đi của gói tin và hoạt động của XDP Ý tưởng đằng sau XDP là thêm một hook sớm trong đường dẫn RX của nhân kernel và để chương trình eBPF do người dùng cung cấp quyết định số phận của gói tin Hook được đặt trong trình điều khiển NIC ngay sau quá trình xử lý ngắt và trước bất kỳ phân bổ bộ nhớ nào do chính ngăn xếp mạng cần Vì vậy, tất cả điều này xảy ra trước khi SKB (cấu trúc dữ liệu cơ bản nhất trong mã mạng Linux) được cấp phát Trên thực tế, điều này có nghĩa là điều này được thực thi trước những thứ như tc và iptables
Kết thúc chương trình, một mã hành động sẽ xác định những việc cần làm với gói đó:
+ XDP_PASS: gói tin tiếp tục thông qua network stack
+ XDP_DROP: loại bỏ gói tin
+ XDP_ABORTED: tương tự như DROP, nhưng cho biết đã xảy ra lỗi khi xử lý
+ XDP_TX: trả lại gói tin đã nhận ra khỏi cùng một NIC mà nó đã đến Điều này thường được kết hợp với việc sửa đổi nội dung gói, chẳng hạn như viết lại địa chỉ IP và Mac
+ XDP_REDIRECT: chuyển hướng gói tin đến một nơi khác, một CPU khác hoặc NIC khác
XDP cho phép xử lí các gói tin chuyển dịch tới hệ thống với hiệu năng tối đa, cho phép các chương trình được tích hợp vào trong kernel để chuyển hướng có chọn lọc các gói tin đến một socket user-space, bỏ qua ngăn xếp các gói mạng thông thường, và có thể hoạt động ở mức thấp hơn Chế độ này khá giống với cách thức hoạt động như Netmap và PF_Ring
Cũng có thể coi XDP hoạt động như một "phần mềm giảm tải” có thể xử lý tốt với việc giảm tải quá trình xử lí không cần thiết và không thiết truy cập các chức năng hỗ trợ của lõi kernel để tăng hiệu suất tối đa, trong khi các ứng dụng khác tương tác với stack mạng thông thường
Các tính năng nổi bật trong XDP như :
+ Tích hợp các stack mạng với nhau, giữ lại toàn bộ quyền kiểm soát phần cứng trong Kernel Giúp cho việc bảo mật kernel và không yêu cầu thay đổi cấu hình mạng Ngoài ra, các cổng mạng với driver của Linux có thể được hỗ trợ bởi XDP, không yêu cầu các thiết bị phần cứng quá chuyên dụng,các driver có sẵn chỉ cần được chỉnh sửa đơn giản để có thể thêm XDP vào
+ Có thể sử dụng chọn lọc các stack mạng trong kernel với các tính như sử dụng bảng định tuyến và TCP stack, giữ các cấu hình cổng interface mạng giống nhau
+ Đảm bảo tính ổn định cho cả bộ tính năng, chỉ dẫn của eBPF và API
+ Không yêu cầu truyền tải lại các gói tin tốn tài nguyên từ user-space vào trong kernel khi đang hoạt động các công việc dựa trên các lớp socket thông thường
+ Có tính chất “trong suốt” với các ứng dụng đang chạy trên máy chủ, cho phép các công việc triển khai mới vẫn được xử lí, chẳng hạn như việc bảo vệ hệ thống chế độ inline khỏi các cuộc tấn công DoS
+ Không yêu cầu sử dụng toàn bộ CPU core để xử lí các gói tin với XDP Điều này đem lại hiệu quả và tầm quan trọng trong việc tiết kiệm tài nguyên của hệ thống
KẾT QUẢ THỰC NGHIỆM
Tầng ứng dụng
Hình 3-1 Mô hình hệ thống
3.1.1.2 Cài đặt hệ thống a Web server apache:
+ Sửa đổi cài đặt tường lửa để có thể truy cập vào các cổng web mặc định:
+ Kiểm tra máy chủ web:
+ Truy cập website từ bên ngoài http://192.168.189.131/ trên trình duyệt để kiểm tra
# sudo apt-get -y install libapache2-mod-qos b Kali-attack:
− Download file thực thi tấn công Slowloris DoS trên Github:
# wget https://raw.githubusercontent.com/Ogglas/Orignal-Slowloris-HTTP- DoS/master/slowloris.pl
− Cấp quyền để file có quyền thực thi:
# chmod 755 slowloris.pl c Client-win7:
− Cài đặt trình duyệt web Firefox để truy cập vào website vừa tạo
3.1.2 Thử nghiệm phát hiện và chống tấn công DoS
− Kịch bản 1: Máy chủ web chưa cài đặt và cấu hình mod_qos
+ Thực hiện tấn công Slowloris DoS từ máy kali có địa chỉ IP 192.168.189.130 đến máy chủ web Apache có địa chỉ IP 192.168.189.131 trong trường hợp máy chủ web chưa cài mod_qos
+ Truy cập vào trang web từ máy client win 7 có địa chỉ IP 192.168.189.136 xem web còn phản hồi không?
− Kịch bản 2: Máy chủ web đã cài đặt và cấu hình mod_qos
+ Thực hiện tấn công Slowloris DoS từ máy kali có địa chỉ IP 192.168.189.130 đến máy chủ web Apache có địa chỉ IP 192.168.189.131 trong trường hợp máy chủ web khi đã cài mod_qos
+ Truy cập vào trang web từ máy client win 7 có địa chỉ IP 192.168.189.136 xem web còn phản hồi không?
− Trên máy Kali thực hiện tấn công Slowloris vào máy chủ web với dòng lệnh sau:
# /slowloris.pl -dns "192.168.189.131" -port 80 -timeout 1 -num 10000 -cache
− Cấu hình mod_qos trong file qos.conf:
# nano /etc/apache2/mods-available/qos.conf
− Sửa file cấu hình theo sau:
# Xử lí các kết nối lên đến 100000 IP khác nhau
# Cho phép 50 kết nối với mỗi IP
# Giới hạn số lượng tối đa các kết nối TCP đang hoạt động 150 (mặc định apache MPM:prefork)
# Vô hiệu hóa tính năng keep-alive khi 70% (105) kết nối TCP bị chiếm dụng QS_SrvMaxConnClose 105
# Tốc độ request/response tối thiểu
# (từ chối các ứng dụng khách chậm chặn máy chủ, giữ cho các kết nối luôn mở mà không yêu cầu bất kỳ điều gì)
− Kịch bản 1: Máy chủ web chưa cài đặt và cấu hình mod_qos
+ Truy cập vào trang web từ máy client win 7 máy chủ không phản hồi (từ chối dịch vụ):
Hình 3-2 Client win 7 không truy cập được vào web
− Kịch bản 2: Máy chủ web đã cài đặt và cấu hình mod_qos
+ Truy cập vào trang web từ máy client win 7 máy chủ phản hồi bình thường:
Hình 3-3 Client win 7 truy câp được vào web
+ Mở file access.log trên apache ta thấy request của client win 7 vẫn nhận được respond từ server Đây là truy cập thành công, webserver phản hồi lại code 200, kích thước body không bao gồm header mà server trả về cho người truy cập là 3624
Hình 3-4 Dòng log truy cập thành công của client win 7 vào web server apache
Tầng mạng/tầng vận chuyển
Hình 3-5 Mô hình hệ thống thực nghiệm Cấu hình thiết bị:
- Attacker: Ubuntu - 1GB RAM – 2 CPU – 50GB Disk
- Anti-DoS: Ubuntu - 1GB RAM – 2 CPU – 50GB Disk
- Victim: Ubuntu - 1GB RAM – 2 CPU – 50GB Disk
3.2.1.2 Cài đặt hệ thống a Cấu hình mạng
Hình 3-6 Cấu hình interface trên máy của Attacker
Hình 3-7 Cấu hình interface trên máy của Victim
Hình 3-8 Cấu hình interface trên thiết bị Anti-DoS
Hình 3-9 Cấu hình định tuyến trên thiết bị Anti-DoS
- Kiểm tra kết nối giữa hai mạng
Hình 3-10 Attacker đã có thể kết nối tới Victim
+ Loại bỏ gói tin có trường type trong ethernet header nhỏ hơn 0
+ Loại bỏ gói ICMP phân mảnh
+ Loại bỏ gói ICMP có kích thước lớn hơn 1024 byte
+ Loại bỏ gói SYN phân mảnh
Sử dụng chính sách giới hạn số lượng gói tin tối đa mỗi giây mà một địa chỉ IP được phép gửi tới IP trong chính sách
Bảng dưới đây mô tả cấu trúc chính sách có ID 1, giới hạn số gói tin tối đa mỗi giây mà một địa chỉ IP được phép gửi đến thiết bị có địa chỉ IP 10.10.10.10 là
3.2.2 Thử nghiệm phát hiện và chống tấn công DoS
Mô phỏng một cuộc tấn công DoS bằng cách sử dụng công cụ hping3 được cài trên máy của Attacker tấn công vào máy của Victim với các cách thức tấn công khác nhau
Thiết bị Anti-DoS đứng giữa Attacker và Victim đảm nhiệm vai trò bảo vệ thiết bị của Victim khỏi cuộc tấn
- Kịch bản 1: Attacker gửi các gói tin bất thường tới máy của Victim
- Kịch bản 2: Attacker gửi một lượng lớn gói tin trong thời gian ngắn tới máy của Victim
3.2.2.2 Thử nghiệm kịch bản 1 a Cách thức tấn công
Từ máy Attacker tiến hành thực hiện tấn công bằng các lệnh sau
- Gửi các gói ICMP phân mảnh
- Gửi các gói SYN phân mảnh
- Gửi các gói ICMP lớn hơn 1024 byte
# hping3 icmp -d 1024 10.10.10.10 b Kết quả đạt được
- Phát hiện và loại bỏ gói ICMP phân mảnh
Thiết bị đã phát hiện và loại bỏ các gói tin ICMP bị phân mảnh
Hình 3-12 Anti-DoS ngăn chặn các gói ICMP phân mảnh
Do các gói ICMP phân mảnh đã bị loại bỏ nên phía Attacker không thể nhận được phản hồi từ máy Victim (100% loss)
Hình 3-13 Attcker không thể gửi các gói ICMP phân mảnh tới Victim
- Phát hiện và loại bỏ gói SYN phân mảnh
Thiết bị đã phát hiện và loại bỏ các gói tin SYN bị phân mảnh
Hình 3-14 Anti-DoS ngăn chặn các gói SYN phân mảnh
Do các gói SYN phân mảnh đã bị loại bỏ nên phía Attacker không thể nhận được phản hồi từ máy Victim (100% loss)
Hình 3-15 Attcker không thể gửi các gói SYN phân mảnh tới Victim
- Phát hiện và loại bỏ gói ICMP kích thước lớn
Thiết bị đã phát hiện và loại bỏ các gói tin ICMP có kích thước vượt quá quy định
Hình 3-16 Anti-DoS ngăn chặn các gói ICMP có kích thước quá giới hạn
Do các gói ICMP lớn đã bị loại bỏ nên phía Attacker không thể nhận được phản hồi từ máy Victim (100% loss)
Hình 3-17 Attcker không thể gửi các gói ICMP lớn tới Victim
3.2.2.3 Thử nghiệm kịch bản 2 a Cách thức tấn công
Từ máy Attacker thực thi câu lệnh sau để tiến hành tấn công Câu lệnh sẽ gửi 120 gói tin trong 500 micro giây tới máy Victim
Hình 3-18 Attcker gửi một lượng lớn gói tin tới Victim b Kết quả đạt được
Thiết bị Anti-DoS đã phát hiện thiết bị có IP 10.10.30.10 (địa chỉ IP của Attacker) gửi một lượng gói tin vượt quá ngưỡng quy định của thiết bị có địa chỉ IP 10.10.10.10 (địa chỉ IP của Victim)
Hình 3-19 Anti-DoS phát hiện và chặn địa chỉ IP vi phạm chính sách
+ Trong thời gian bị chặn
Trong thời gian này, máy của Attacker không thể tiếp tục gửi các gói tin đến máy của Victim (100% loss)
Hình 3-20 Attacker không thể gửi gói tin đến Victim do bị chặn
+ Sau khi được mở khóa
Vì đã được Anti-DoS mở khóa, máy của Attacker giờ đây có thể tiếp tục gửi các gói tin đến máy của Victim
Hình 3-21 Attacker có thể gửi gói tin đến Victim sau khi hết thời gian chặn
Sau khi được tích hợp thiết bị Anti-DoS, hệ thống đã có thể tránh được một số dạng tấn công DoS cơ bản Cũng như thế có thể nắm được địa chỉ IP của kẻ tấn công và từ đó điều tra sâu hơn để có thể truy tìm ra kẻ chủ mưu và ngăn chặn các mối nguy hại tiềm tàng