Hàm process phân loại định kỳ các luồng và các kết nối và gọi hàm giới hạn để
quyết định các mức giới hạn thích hợp. Một luồng sẽđược phân loại như một tấn công nếu ít nhất một trong những điều kiện sau là thỏa mãn:
37 • Tỷ lệ TCP smoothed của nó lớn hơn TCPrto
• Tỷ lệ ICMP smoothed của nó lớn hơn ICMPrto
• Lượng kết nối UDP lớn hơn nconn và tỷ lệ lượng gói tin UDP gửi đi trên lượng kết nối UDP là thấp hơn pconn.
• Việc phát hiện phần còn lại không có hiệu lực được dùng và giá trị cực tiểu của truyền thông TCP không có hiệu lực lớn hơn không.
• Việc phát hiện phần còn lại không có hiệu lực được dùng và giá trị cực tiểu của truyền thông ICMP không có hiệu lực là lớn hơn không.
Nếu không điều kiện nào thỏa mãn,luồng sẽ được phân loại là khả nghi nếu lượng phân loại tuân theo liên tiếp của nó thấp hơn khoảng tuân theo hay lượng byte bị
loại bỏ lớn hơn không. Nếu khác,luồng sẽđược phân loại là bình thường.
Một kết nối sẽđược phân loại là nhất thời nếu (1) là một kết nối TCP và ít hơn 3 gói tin được gửi từ thiết lập của nó, hay (2) là một kết nối ICMP và ít hơn 2 gói tin
được gửi từ thiết lập của nó, hay (3) là một kết nối UDP và không có các mẫu mức chương trình. Một kết nối sẽđược phân loại là tốt nếu chính xác một trong những điều kiện sau thỏa mãn:
• Là một kết nối TCP và tỷ suất TCP của nó( tỷ lệ của lượng gói tin được gửi đi và lượng gói tin nhận được) lớn hơn TCPrto
• Là một kết nối ICMP và tỷ suất ICMP của nó lớn hơn ICMPrto . Chú ý rằng các kết nối ICMP hợp lệ sẽđược dùng cho việc phát hiện phần còn lại không có hiệu lực nhưng sẽ không được chèn vào Danh sách kết nối hợp lệ.
• Là kết nối UDP và có mẫu mức chương trình và trong tình trạng có hiệu lực (không lỗi).
Nếu khác, một kết nối sẽ được phân loại là tồi. Tất cả các kết nối TCP và UDP
được phân loại là hợp lệ được chèn vào Danh sách kết nối hợp lệ để phân phối tới module nhân rl thông qua lời gọi ioctl.
Sau khi các kết nối được phân loại,gói tin kết nối và các đặc điểm byte được đặt lại. Kết nối hơn nữa được kiểm tra tình trạng không hoạt động bằng việc so sánh khoảng thời gian hoạt động cuối cùng của nó với Khoảng kết nối tốt không hoạt
động(Good_Inactive_Period) cho các kết nối tốt, hay Khoảng kết nối nhất thời không hoạt động(Transient_Inactive_Period) cho các kết nối nhất thời. Các kết nối tồi không
38
được kiểm tra tình trạng không hoạt động vì chúng cuối cùng sẽđược phân loại là tốt( và tóm lại sau đó không hoạt động) mỗi khi chúng dừng tham gia trong cuộc tấn công. Các kết nối không hoạt động sẽ bị xóa.
3.3 Thành phần giới hạn
Thành phần giới hạn được gọi từ hàm process, sau đó các luồng và kết nối được phân loại. Nó thu được thông tin loại bỏ luồng từ module rl dùng lời gọi ioctl và xác
định các mức giới hạn luồng thích hợp. Các luồng giới hạn được chèn vào Bảng băm
mức giới hạn mà được đánh chỉ mục bởi địa chỉ IP của máy đích bên ngoài và chỉ bao gồm thông tin về mức giới hạn hiện tại. Thành phần của bảng này được phân phối tới module rl dùng các lời gọi ioctl.
Sau khi mức giới hạn được xác định, gói tin luồng và các đặc điểm byte được đặt lại. Một luồng hơn nữa được kiểm tra tình trạng không hoạt động bằng việc so sánh khoảng thời gian hoạt động sau cùng với Khoảng thời gian luồng không hoạt
động(Flow_Inactive_Period) cho các luồng bình thường. Thông tin các luồng tấn công và khả nghi không được kiểm tra tình trạng không hoạt động vì chúng cuối cùng sẽ được phân loại là bình thường sau khi xảy ra không hoạt động. Các luồng không hoạt
động sẽ bị xóa.
3.4 Thành phần quản lý truyền thông
Tiến trình quản lý truyền thông được thực thi với module rl, dùng netfilter hooks. Module rl lưu thông tin về các luồng giới hạn trong bảng băm luồng giới hạn và thông tin về các kết nối tốt trong bảng băm kết nối tốt của nó. Các bảng băm này
được tổ chức giống như các bảng luồng và kết nối trong thành phần theo dõi. Một bản ghi băm luồng bị giới hạn được miêu tả trong hình 16 và bao gồm các trường sau:
Hình 16. Bản ghi bảng băm luồng giới hạn • Lượng byte được gửi
• Lượng byte gửi đi trong các kết nối tốt
39
• Lượng byte bị loại bỏ
• Mức giới hạn hiện tại
• Tải truyền thông tốt được ước lượng
3.4.1 Tiến trình quản lý truyền thông
Quản lý truyền thông được thực thi với từng gói tin đi ra theo cách sau:
• Nếu gói tin spoofed ngẫu nhiên (địa chỉ của nó không trong Bộ địa chỉ quản lý), loại bỏ nó.
• Nếu luồng liên kết không trong Bảng băm luồng giới hạn, chuyển tiếp gói tin.
• Nếu luồng liên kết trong Bảng băm kết nối tốt, chuyển tiếp gói tin và cập nhật
sent good bytes trong bản ghi luồng liên kết trong Bảng băm luồng giới hạn.
• Nếu gói tin là TCP, nó khớp với khoảng dãy số dựđoán và tổng sent predicted bytes,và độ dài gói tin không lớn hơn Mức giới hạn gói tin sớm, chuyển tiếp gói tin và cập nhật sent predicted bytes.
• Nếu tổng sent bytes và độ dài gói tin không lớn hơn mức giới hạn và vẫn đủ
khoảng trống cho đánh giá tải truyền thông tốt với mức giới hạn, chuyển tiếp gói tin và cập nhật sent bytes. Việc đánh giá tải truyền thông tốt được tính toán là giá trị cực đại của sent good bytes trong luồng liên kết, mũ của thời gian.
3.4.2 Các mẫu máy
D-WARD thực hiện dự đoán khoảng dãy số cho các kết nối TCP. Để dự đoán khoảng dãy số, một mẫu được xây dựng cho từng địa chỉ từ bộ địa chỉ quản lý. Mẫu này bao gồm thông tin dãy số từ hai kết nối TCP được kiến tạo gần đây – s1 và s2, tương ứng với khoảng thời gian của chúng t1 và t2 và phân loại máy móc. Việc phân loại được thực thi bằng cách tính toán một dựđoán : sp = predict(s1,t1,t2) và sp phòng
s2 cho các mẫu hệđiều hành khác nhau.
Mẫu Windows OS biểu thị dãy số phụ thuộc là:
Nếu sp là trong WIN_ERROR_MARGIN từ s2 , máy móc được phân loại là Windows. Mẫu Windows chính xác hơn mẫu Linux, vì vậy phân loại này được thực thi đầu tiên.
40
Nếu sp trong LIN_ERROR_MARGIN từ s2, máy móc được phân loại là Linux. Nếu máy mọc không qua kiểm tra Windows hay Linux OS, máy móc được phân loại là “khác”, và không dựđoán nào được thực hiện.
Tiến trình thừa nhận cho các gói tin TCP trong giới hạn là giống với tiến trình thừa nhận cho phân loại máy móc. Thông tin dãy số gần đây( s1 và s2) được cập nhật chỉ từ các kết nối được chèn vào bảng băm kết nối tốt.
3.5 Bắt truyền thông(traffic-sniffing)
Traffic-sniffing được thực thi trong module gst, dùng netfilter hooks. Module gst
đơn giản thu thập một lượng byte định rõ từ gói tin (header và dữ liệu) và lưu chúng trong một bộđệm. Nếu bộđệm tràn, các gói tin sau sẽđược truyền qua không thu thập thông tin.