Việc triển khai D-WARD giúp cho nhanh chóng phát hiện và ngăn
chăn một cuộc tấn công ngay khi cuộc tấn công được kẻtấn công nhen nhóm. Chúng
ta đã đưa ra một sốkịch bản đểkiểm tra hệthống gần giống với thực tế và thu được
một số kết quả cũng như thống kê của các kịch bản đó.
57 trang |
Chia sẻ: lylyngoc | Lượt xem: 2532 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Triển khai các hệ thống d-Wardtheo mô hình mạng các node hàng xóm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
7. Các ứng dụng chat
Chúng ta so sánh các mục được chọn với các đặc điểm từ trang web của Hội hợp
tác phân tích dữ liệu Internet (CAIDA) chỉ ra 25 ứng dụng hàng đầu (không quan tâm
tới giao thức giao vận tầng dưới). Chỉ có ít ứng dụng UDP trong top 25 này vì UDP
19
chiếm một phần nhỏ của tất cả giao vận mạng (khoảng 3%). Tất cả đều trong danh
sách các ứng dụng UDP được chọn của chúng ta.
Với mỗi ứng dụng dựa vào UDP, D-WARD thiết kế các mẫu thích hợp dưới đây
nhưng trong phạm vi của khóa luận, chúng ta chỉ miêu tả ba mẫu cần thiết:
Dịch vụ tên miền (DNS): DNS có thể được thực thi trên TCP hoặc UDP, nhưng
UDP là phổ biến hơn. Dưới sự hoạt động bình thường, giao vận kết nối DNS sẽ đưa ra
tỷ lệ 1:1 của các gói tin gửi đi tới các gói tin nhận được. Nếu gói tin đáp ứng mất, máy
khách DNS lặp lại yêu cầu của nó tới máy chủ khác trước khi cố thử cùng máy chủ.
Khoảng truyền lại là giữa 2 đến 5 giây, và kích cỡ thông điệp là 46 tới 512 byte (
không bao gồm tiêu đề của UDP và IP). Các gói tin DNS được nhận ra dựa vào trường
ứng dụng trong tiêu đề IP mà mang giá trị 17, và dựa vào một cổng số 53 trong tiêu đề
UDP. Các gói tin yêu cầu và đáp ứng được nhận ra dựa vào bit đầu tiên của byte thứ 3
trong tiêu đề DNS, là 0 cho gói tin yêu cầu, 1 cho gói tin đáp ứng. Một mẫu kết nối
DNS hợp lệ được xác định bởi máy trạng thái hữu hạn trong hình 9. Kết nối bắt đầu từ
NO_STATE. Khi một yêu cầu DNS được gửi tới host bên ngoài, kết nối đi tới trạng tái
DNS_REQ và khi một trả lời được nhận, kết nối đi tới trạng thái DNS_REP. Kết nối
có thể chứa nhiều yêu cầu lặp chỉ nếu tần số của chúng thấp hơn DNS_EXPIRY,mà
được thiết lập 1 giây. Bất kỳ vi phạm mẫu mang kết nối tới trạng thái ERROR, mà dẫn
tới sự phân loại xấu.
Hình 9: Máy trạng thái hữu hạn DNS
Giao thức thời gian mạng (NTP). Trong NTP, có ba phương thức hay mẫu liên
kết chính trong một hệ thống có thể đồng bộ với các host khác: chế độ máy khách, chế
độ máy khách đa phát hay phát tỏa, va chế độ hoạt động đối xứng. Trong chế độ máy
20
khách, một host thăm dò một hay nhiều host để nhận được thời gian hiện tại, và xử lý
các đáp lại là nhận được. Trong chế độ đa phát và phát tỏa,một host không thăm dò.
Thay vào đó, nó nghe các gói tin NTP mà phát tỏa hay đa phát qua mạng cục bộ.
Trong chế độ hoạt động đối xứng, một host thăm dò các host khác và đáp ứng lại các
thăm dò từ các host này. Thêm vào đó, các host giữ thông tin liên quan tới thời gian về
các host mà chúng truyền thông với. Do đó, có ba mẫu kết nối UDP có thể cho NTP.
Dưới sự hoạt động bình thường, giao vận kết nối NTP sẽ đưa ra tỷ lệ 1:1 của các gói
tin gửi đi với gói tin nhận được. Nếu các gói tin đáp ứng bị mất, máy khách NTP lặp
lại các yêu cầu của nó tới máy chủ khác trước khi cố thử cùng máy chủ. Khoảng thăm
dò trong dải từ 64 tới 1024 giây. Kích cỡ thông điệp từ 44 tới 56 byte. D-WARD chỉ
thiết kế và thực thi các mẫu kết nối máy khách NTP. Một mẫu kết nối NTP hợp lệ
được định nghĩa bởi một máy trạng thái hữa hạn thể hiện trong hình 10. Kết nối bắt
đầu từ NO_STATE. Khi một yêu cầu NTP được gửi tới một host bên ngoài, kết nối sẽ
chuyển sang trạng thái NTP_SENT, và khi một đáp ứng nhận được, kết nối đi tới trạng
thái NTP_REC. Kết nối có thể chứa nhiều yêu cầu lặp lại chỉ nếu tần số của chúng
thấp hơn NTP_EXPIRY, được thiết lập cho 60 giây. Bất kỳ vi phạm mẫu đưa kết nối
tới trạng thái ERROR, mà dẫn tới phân loại xấu.
Hình 10: Máy trạng thái hữu hạn NTP
Luồng đa phương tiện: Các chương trình ứng dụng phổ biến nhất dùng luồng
audio và video là RealPlayer, Windows Media Player, Quick-time và luồng mp3
shoutcast. Quicktime và RealPlayer dùng giao thức giao vận thời gian thực (Real-time
Transport Protocol – RTP) trên UDP cho việc phân phối dữ liệu và giao thức luồng
thời gian thực (Realtime Streaming Protocol – RTSP) trên TCP cho việc điều khiển.
21
Windows Media Player dùng giao thức Microsoft Media Server (MMS) – giao thức
luồng mạng độc quyền của Microsoft trên TCP và UDP mà bao gồm cả hai việc phân
phối dữ liệu và các cơ chế điều khiển. D-WARD chỉ cung cấp các mẫu cho các ứng
dụng luồng đa phương tiện mà dùng RTP và RTSP. Luồng dữ liệu được gửi từ máy
chủ tới máy khách trong phần nhỏ, tương ứng với các gói tin RTP đặt cách nhau, kích
cỡ khoảng từ 12 đến 72 byte. Cứ vài gói tin RTP nhận được, máy khách gửi một gói
tin RTP trở lại máy chủ. Giao vận RTSP được gửi thông qua TCP ở thời điểm bắt đầu
phiên và mỗi khoảng 1 tới 2 giây để phân phối các thông báo về điều kiện phiên. D-
WARD mô hình các kết nối luồng media hợp lệ bằng sự tương quan trạng thái của
giao vận kết nối RTP và RTSP, và bằng dùng một máy trạng thái hữu hạn luồng media
thể hiện ở hình 11. Khi một gói tin RTP được gửi hay nhận, D-WARD kiểm tra để
thấy kết nối RTSP liên quan tồn tại. Kết nối RTSP được định vị bằng việc tìm một kết
nối với cùng máy nguồn và địa chỉ IP đích như kết nối RTP, và số cổng bên ngoài là
554, là số cổng của RTSP. Nếu kết nối RTSP tồn tại và không quá cũ(nó được kích
hoạt trong RTSP_ACTIVE giây cuối cùng, hiện tại thiết lập giá trị 5), kết nối RTP đi
tới trạng thái STREAMing. Nếu không nó đi tới trạng thái ERROR. Khi phân loại kết
nối được thực hiện, các kết nối RTP trong trạng thái STREAMING cũng sẽ được kiểm
tra tỷ lệ cao của gói tin RTP gửi đi so với nhận lại. Nếu tỷ lệ này thấp hơn RTPrto ( hiện
tại thiết lập là 20), kết nối RTP sẽ được phân loại là tốt. Nếu tỷ lệ cao hơn RTPrto hay
kết nối trong trạng thái ERROR, nó sẽ được phân loại là xấu. Bằng việc thực hiện
kiểm tra trực tiếp, chúng ta quan sát được các máy chủ luồng media sẽ tiếp tục phát
sinh giao vận RTP hướng về máy khách trong trường hợp thiếu các gói RTP và RTCP
ngược ( có thể xảy ra trong trường hợp tấn công DdoS). Như vậy trạng thái được bắt
bởi D-WARD là không hợp lệ, và kết nối sẽ được phân loại là xấu.
22
Hình 11: Máy trạng thái hữu hạn luồng dữ liệu
2.5.3. Phân loại gói tin đầu tiên
Một vấn đề khó khăn mà D-WARD đối mặt trong việc phân loại kết nối là vấn đề
phân loại kết nối dựa vào gói tin đi ra đầu tiên. Vấn đề xảy ra khi một kết nối cố gắng
bắt đầu trong cuộc tấn công. Gói tin đi ra đầu tiên được thấy bởi D-WARD không thể
được công nhận là hợp lệ, do các mẫu kết nối hợp lệ yêu cầu nhiều dữ liệu hơn để thực
hiện phân loại. Vì thế kết nối này sẽ được xem như là nhất thời và truyền thông của nó
sẽ chịu mức giới hạn. Trong mức giới hạn, các gói tin đầu tiên sẽ thua trong việc cạnh
tranh chống lại truyền thông tấn công, và sẽ bị loại bỏ. Việc loại bỏ các gói tin đầu tiên
trong một kết nối có thể có thể gây ra chán trong việc thiết lập kết nối (nhất là trường
hợp kết nối TCP) và kết quả là dịch vụ tồi tới các kết nối mới trong cuộc tấn công. Hậu
quả như thế là không có truyền thông kết nối mới được phép truyền qua trong cuộc tấn
công.
Ví dụ dưới đây, miêu tả trong hình 12, minh họa sự khốc liệt của việc phân loại
gói tin đầu tiên: Một thiết lập kết nối TCP trong khi một cuộc tấn công phát tràn SYN
TCP.
23
Hình 12: Một kết nối TCP mới được khởi tạo trong cuộc tấn công
Mạng nguồn NetS được bảo vệ bởi D-WARD. Một phát tràn SYN TCP dùng lừa
đảo subnet được phát sinh từ host phá rối A tới máy nạn nhân V. D-WARD phát hiện
ra cuộc tấn công này và đặt một mức giới hạn trong luồng đi ra từ NetS tới V. Các máy
khách hợp lệ C1 và C2 trước đã kiến tạo kết nối tới V, và những kết nối này được nhận
biết như hợp lệ và được bảo vệ từ mức giới hạn. Trong cuộc tấn công,máy khách hợp
lệ C3 cố gắng kết nối tới máy nạn nhân V. D-WARD theo dõi vô số gói tin của cuộc
tấn công SYN TCP và một gói tin SYN TCP hợp lệ. Không có thông tin trong gói tin
mà kẻ tấn công ko thể lừa đảo. Chỉ có sự khác nhau giữa hai gói tin loại này là cách
đối xử trong tương lai: máy khách hợp lệ sẽ hoàn thành quá trình bắt tay ba bước và
tiếp tục phát sinh truyền thông trong kết nối, trong khi kẻ tấn công không thể. Bởi vậy,
hai loại gói tin này không thể phân biệt được bởi D-WARD. Cả một kết nối hợp lệ lẫn
cả tất cả các kết nối tấn công sẽ được phân loại như là nhất thời và sẽ phải chịu mức
giới hạn. Trong mức giới hạn, truyền thông tấn công hầu như chiến thắng, kết quả gói
tin TCP SYN hợp lệ bị loại bỏ. Vấn đề này thực sự dữ dội hơn thế, vì không chỉ các
gói tin đầu tiên mà tất cả các gói tin trong các kết nối mới sẽ hầu như bị loại bỏ cho tới
khi Khoảng theo dõi kết nối hết hạn và kết nối được làm cho có hiệu lực.
Có vài chiến lược để cải thiện tình huống này:
Áp dụng triển khai cookie SYN TCP bởi máy nạn nhân: Tấn công phát tràn
SYN TCP có thể được xử lý thành công ở tỷ lệ rất cao bằng việc dùng các cookie SYN
TCP. Giải pháp này xử lý vấn đề kết nối half-open bằng thay thế tình trạng máy chủ
bới thông tin mã hóa. Các cookie SYN là chọn lựa riêng biệt của dãy số khởi tạo TCP
24
bởi máy chủ. Trong sự đáp ứng lại một gói tin SYN TCP, máy chủ chọn dãy số khởi
tạo của nó như là một hàm của: thời gian khi yêu cầu nhận được,kích cỡ segment lớn
nhất của máy chủ(MSS), một hàm bí mật được lựa chọn bởi máy chủ của địa chỉ IP
máy khách và số cổng, địa chỉ IP máy chủ và số cổng, và thời gian. Lựa chọn này của
dãy số tuân theo với các yêu cầu cơ bản của TCP mà các dãy số tăng chậm; dãy số
khởi tạo của máy chủ tăng hơi nhanh hơn dãy số khởi tạo của máy khách. Một máy
chủ gửi một SYN ACK với một dãy số khởi tạo được chọn, nhưng không lưu thành
một bản ghi trong hàng đợi kết nối của nó. Khi máy chủ nhận một ACK hoàn thành
quá trình bắt tay ba bước, nó kiểm tra hàm bí mật làm việc trong thời gian gần đây, và
rồi xây dựng lại mục hàng đợi kết nối từ MSS được mã hóa. D-WARD có thể giả định
việc dùng cookie của SYN TCP bởi máy nạn nhân và luôn chuyển các gói SYN TCP.
Không may, nhiều host không triển khai cookie SYN TCP, vì vậy D-WARD sẽ bị
hỏng để bảo vệ các host từ cuộc tấn công phát tràn SYN TCP. Do đó, giải pháp này
không giải quyết vấn đề các gói tin đi ra sau trong kết nối này có thể đến trước khi kết
nối hợp lệ. Các gói tin này sẽ phải chịu mức giới hạn và có thể bị loại bỏ.
Các kết nối Proxy TCP: D-WARD có thể lựa chọn để xử lý các cuộc tấn công
SYN TCP bằng cách chính nó triển khai cookie SYN TCP và thực hiện quá trình bắt
tay ba bước thay cho máy nạn nhân. Giải pháp này được đưa ra bởi nhiều hệ thống
phòng thủ. Một hệ thống phòng thủ phân ra các gói tin SYN TCP và các trả lời, thay
cho máy chủ, dùng cookie SYN TCP. Mỗi khi máy khách hoàn thành quá trình bắt tay
ba bước,hệ thống phòng thủ kết nối TCP SYN tới máy chủ và biểu diễn như máy
khách để hoàn thành thiết lập kết nối. Vấn đề nảy sinh vì mỗi bên phải chọn một dãy
số khởi tạo trong gói tin của mình. Do vậy,dãy số khởi tạo của máy chủ được chọn đầu
tiên bởi hệ thống phòng thủ (trong tên máy chủ) sẽ không khớp với dãy số khởi tạo
được chọn bởi máy chủ. Hệ thống phòng thủ không thể thay đổi thông tin dãy số của
mỗi bên. Với 2 lựa chọn: (1) proxy hoàn thành kết nối, viết lại các dãy số thích hợp,
hay (2) loại bỏ kết nối bằng việc gửi một gói tin RST tới máy khách, nhớ rằng nó hợp
lệ để thử lại các gói tin SYN TCP của nó được cho phép đến máy chủ trực tiếp. Vì cố
thử một kết nối phải được khởi tạo bằng chương trình, một kết nối loại bỏ là một lựa
chọn xấu. Do đó, phần lớn các hệ thống phòng thủ chọn để proxy hoàn thành kết nối
TCP. Lựa chọn này sẽ đặt gánh nặng lớn cho D-WARD từ đó nó sẽ phải giữ nhiều
trạng thái kết nối hơn và điều chỉnh mỗi gói tin của các kết nối hợp lệ trong cuộc tấn
công.
25
Đưa vào các điều chỉnh tới TCP để chỉ rõ ISN mong muốn. Một giải pháp có
thể để proxy chỉ thực hiện quá trình bắt tay ba bước và không hoàn thành kết nối sẽ bổ
sung một lựa chọn mới tới giao thức TCP – ISN mong muốn. Lựa chọn này sẽ được
dùng bởi hệ thống phòng thủ trong gói tin SYN TCP nối lại, yêu cầu máy chủ lựa chọn
một giá trị cụ thể dãy số khởi tạo của nó. Sự điều chỉnh này sẽ yêu cầu giai thức TCP
thay đổi ở tất cả máy chủ trong mạng nguồn và sẽ mở đầu nhiều vấn đề an ninh.
Lặp lại các kết nối half-open. D-WARD có thể khởi tạo chuyển tất cả các gói
SYN TCP, nhưng giữ vết của các kết nối half-open. Nếu chúng không hoàn thành
trong một khoảng thời gian cố định, D-WARD có thể phát ra một gói RST tới máy
chủ,giải phóng tài nguyên của nó. Giải pháp này cũng được đưa ra bởi nhiều hệ thống
phòng thủ. Hạn chế của nó là D-WARD sẽ phải giữ trạng thái của các kết nối half-
open, do đó chính nó trở thành một nạn nhân tiềm tàng của các cuộc tấn công từ chối
dịch vụ.
Gạt bỏ ngẫu nhiên các gói tin lừa đảo. Kỹ thuật dự đoán giá trị cho rằng hệ
thống phòng thủ có thể biết hay dự đoán đúng một khoảng giá trị hợp lệ cho các
trường tiêu đề của TCP hay IP trong các gói tin kết nối đầu tiên (Khoảng giá trị tiên
đoán). Chức năng dự đoán phải đủ chính xác để mà các gói tin hợp lệ sẽ luôn được tìm
ra và làm cho có hiệu lực. Khoảng giá trị dự đoán phải tương đối nhỏ để các gói tin mà
các giá trị tiêu đề lừa đảo ngẫu nhiên có một khả năng thấp để làm cho có hiệu lực như
hợp lệ. D-WARD dùng kỹ thuật dự đoán giá trị để chấp nhận các gói tin hợp lệ ở khởi
đầu kết nối TCP. Một kẻ tấn công lén lút vẫn có thể học được khoảng giá trị dự đoán
và lừa đảo thích hợp các gói tin của họ để bảo đảm rằng họ sẽ được nhận ra như là hợp
lệ. Để chống lại việc này, D-WARD đưa ra mức giới hạn gói tin sớm không đổi riêng
biệt mà ghép vào các gói tin mà khớp với khoảng giá trị dự báo. Kết quả toàn bộ là
truyền thông của các máy khách hợp lệ sẽ nhận dịch vụ tốt trong một cuộc tấn công
phát tràn SYN TCP lén lút. Vì truyền thông tấn công lén lút vẫn phải chịu mức giới
hạn với mức giới hạn gói tin sớm, kẻ tấn công không thể lạm dụng kỹ thuật dự đoán
giá trị để thực hiện các cuộc tấn công thành công. Vì vậy, kỹ thuật dự đoán giá trị cải
thiện đáng kể trạng thái trong trường hợp tấn công spoofed ngẫu nhiên, và không làm
nó tồi hơn trong trường hợp tấn công lén lút.
2.6. Thành phần giới hạn
Thành phần mức giới hạn điều chỉnh giá trị giới hạn mọi Khoảng theo dõi luồng.
Nó đảm nhận phân loại các kết quả từ thành phần theo dõi và lịch sử trạng thái luồng
26
từ thành phần quản lý truyền thông và đưa ra một giá trị giới hạn cho mỗi luồng hoạt
động.
Lịch sử trạng thái luồng được biểu lộ qua hai thước đo: lượng byte của luồng
truyền thông được chuyển tới máy nạn nhân - Bsent, và lượng byte của luồng truyền
thông bị loại bỏ do mức giới hạn - Bdropped. Cả hai giá trị được đo trong Khoảng theo
dõi luồng. Chúng cùng nhau định nghĩa Hệ số tuân theo luồng – một đơn vị đo một
luồng tuân theo một mức giới hạn phải chịu như thế nào. Hệ số tuân theo luồng được
tính toán như sau:
Hệ số tuân theo luồng có giá trị trong khoảng từ 0 đến 1, giá trị cao xác định việc
tuân theo cao với mức giới hạn phải chịu.
2.6.1. Giảm theo luật số mũ
Khi luồng được phân loại như một luồng tấn công trong lần đầu tiên sau một
khoảng lầu bình thường, mức của nó bị giới hạn một phần mức gửi đi vi pham. Độ lớn
của phần được chỉ rõ bởi tham số cấu hình fdec.
Sự phân loại của một luồng như một cuộc tấn công giới hạn mức giới hạn hơn
nữa, áp dụng giảm theo luật số mũ dựa vào công thức:
Mà rl là mức giới hạn hiện tai. Hệ số tuân theo luồng – fcf – miêu tả mức độ cư
xử xấu của luồng, và định nghĩa sự giới hạn của mức giới hạn. Các luồng có cư xử tệ
(fcf<=1) là giới hạn nhanh chóng tới mức rất thấp,sự giới hạn này dần dần cho các
luồng tốt hơn(fcf ~ 1). Mức giới hạn thấp nhất có thể phải chịu được định nghĩa bởi
tham số cấu hình MinRate, vì vậy ít nhất một gói tin có thể đến đích và gây nên việc
phục hồi lại.
2.6.2 Tăng tuyến tính
Khi tín hiệu phát hiện tấn công trở thành âm, luồng liên kêts sẽ bị phân loại như
là khả nghi, ở điểm nào đó cơ chế khôi phục được gây nên. Quá trình khôi phục lại
được chia thành khôi phục lại chậm và khôi phục lại nhanh. Trong quá trình khôi phục
27
lại châm,một luồng bị trừng phạt cho việc bị phân loại như một luồng tấn công bởi
tăng tuyến tinh trong mức cho phép dựa vào công thức:
Tốc độ khôi phục được xác định bởi tham số rateinc và thời gian của quá trình
khôi phục chậm được xác định bởi khoảng tuân theo.
2.6.3 Tăng theo hàm số mũ
Khi luồng được phân loại là bình thường, quá trình khôi phục nhanh được tạo
nên. Trong quá trình khôi phục nhanh, tỷ lệ tăng theo hàm số mũ dựa vào công thức:
Tốc độ khôi phục được xác định bởi tham số finc , và tỷ lệ tăng được giới hạn bởi
tham số cấu hình MaxRate. Ngay khi mức giới hạn trở nên lớn hơn MaxRate, quá trình
khôi phục đã kết thúc, và mức giới hạn được xóa bỏ.
Hình 13 miêu tả các giá trị giới hạn và các kết quả phân loại cho một luồng mẫu
Hình 13: Các giá trị giới hạn và sự phân loại cho một luồng mẫu
28
2.7. Thành phần quản lý truyền thông
Thành phần quản lý truyền thông nhận thông tin giới hạn luồng định kỳ từ
thành phần giới hạn (mọi Khoảng theo dõi luồng) và thông tin phân loại kết nối từ
thành phần theo dõi (mọi Khoảng theo dõi kết nối). Nó dùng thông tin này để đưa ra
một quyết định có chuyển tiếp hay loại bỏ từng gói tin đi ra theo cách sau:
• Nếu gói tin thuộc một luồng không bị giới hạn, chuyển tiếp nó, hoặc
• Nếu gói tin thuộc một luồng tốt, chuyển tiếp nó, hoặc
• Nếu gói tin là TCP và dãy số của nó khớp với giá trị dự đoán và Mức giới hạn
gói tin sớm cho luồng không bị hết, chuyển tiếp nó, hoặc
• Nếu mức giới hạn luồng không bị hết, chuyển tiếp gói tin, hoặc
• Loại bỏ gói tin
Ưu điểm của D-WARD
• D-WARD là một hệ thống phòng thủ DdoS được triển khai ở mạng source-
end.
• D-WARD được cài đặt tại bộ định tuyến nguồn để phụ vụ như một gateway
giữa mạng được triển khai( mạng nguồn) và phần còn lại của Internet.
• D-WARD là một hệ thống phản hồi ngược tự cấu hình, nên D-WARD có thể
tự động cấu hình không cần việc cấu hình bằng tay của người quản trị.
• D-WARD phát hiện và ngăn cản một cách rất hiệu quả các cuộc tấn công đi ra
từ các mạng được triển khai.
• D-WARD cung cấp dịch vụ tốt tới các giao dịch hợp lệ giữa mạng được triển
khai và máy nạn nhân trong khi cuộc tấn công đang diễn ra.
• D-WARD có thể hợp nhất nó với các cơ chế phòng thủ khác ( như COSSACK
hay DefCOM) để cung cấp sự đáp ứng có lựa chọn.
Nhược điểm của D-WARD
• D-WARD chỉ phát hiện và ngăn chặn các cuộc tấn công bắt nguồn từ mạng
được triển khai, do vậy các mạng không được triển khai thì vẫn thực hiện thành
công cuộc tấn công.
29
• Các hệ thống được triển khai trong mạng không truyền thông với nhau để tạo
nên sự hiệu quả trong việc phát hiện và ngăn cản các cuộc tấn công trong mạng.
• D-WARD chỉ phát hiện và ngăn chặn được các cuộc tấn công phát sinh từ
mạng nguồn mà nó được triển khai nên yêu cầu triển khai ở mức lớn(bao phủ
phần lớn các mạng nguồn) thì mới đạt được hiệu quả mong muốn.
Tổng kết
Trong chương 2 này, khóa luận đã giới thiệu chi tiết về chức năng và kiến trúc
của hệ thống phòng thủ D-WARD. Khóa luận cũng cho biết chức năng của từng thành
phần và mối quan hệ lẫn nhau giữa các thành phần D-WARD để xây dựng một hệ
thống phòng thủ DDoS hiệu quả mà cho phép phát hiện và ngăn chặn các cuộc tấn
công DDoS đi ra từ mạng nguồn đồng thời cung cấp dịch vụ tốt cho các giao dịch hợp
lệ giữa mạng được triển khai và máy nạn nhân trong khi cuộc tấn công đang diễn ra.
30
Chương 3. Cơ sở lý thuyết của kiến trúc triển khai và mở rộng D-WARD
D-WARD được thực thi trong một bộ định tuyến Linux hoặc là trong một bộ
định tuyến IXP. Nhưng trong khóa luận này, chúng ta chỉ đề cập đến sự thực thi của hệ
thống D-WARD trên bộ định tuyến Linux bao gồm 2 phần: mức người dùng của thành
phần giám sát và giới hạn, mức nhân của thành phần quản lý truyền thông. Việc phân
chia chức năng giữa người dùng và mức nhân xuất hiện sau hai phiên bản trước của D-
WARD được điều chỉnh để đạt được việc thực hiện tốt hơn và dễ dàng triển khai hơn.
D-WARD 1.0
D-WARD 1.0 được thực thi hoàn toàn ở mức người dùng. Do thành phần quản
lý truyền thông cần truy cập trực tiếp các gói tin bằng bộ định tuyến để thực hiện quyết
định chuyển tiếp hay loại bỏ, các gói tin cần bắt trong lúc chúng đi qua nhân và được
sao chép tới mức người dùng. Việc này được thực hiện dung chức năng IP_queue
trong nhân Linux và sự xếp hàng gói tin userspace.
Netfilter cung cấp một cơ chế cho việc đưa các gói tin đi ra ngăn xếp cho việc
xếp hàng với userspace, rồi nhận các gói tin này trở lại nhân với một quyết định chỉ rõ
với các gói tin (ACCEPT hay DROP). Những gói tin này có thể được điều chỉnh trong
userspace trước được đẩy trở lại nhân. Với mỗi giao thức được hỗ trợ, một module
nhân được gọi là bộ xử lý hàng đợi có thể đăng ký với netfilter để thực hiện các cơ chế
của truyền gói tin từ và tới userspace. Bộ xử lý hàng đợi chuẩn cho Ipv4 là ip_queue.
Nó cung cấp như một module thực nghiệm với nhân 2.4, và dùng một socket Netlink
cho truyền thông nhân/userspace.
Mỗi khi được xử lý (được xem xét và/hay được điều chỉnh), các gói tin trả loại
khoảng nhân với quyết định: NF_ACCEPT để chấp nhận gói tin hay NF_DROP để âm
thầm xóa bỏ gói tin. Thông tin chi tiết về chức năng IP_queue có thể thu được bằng
cách xem các trang hướng dẫn libipq.
IP_queue cung cấp tất cả chức năng cần thiết cho thành phần quản lý truyền
thông. Tuy nhiên, sao chép các gói tin(tiêu đề và dữ liệu) để userspace thêm một phần
đầu lớn để trở thành tới hạn như mức gói tin tăng lên. D-WARD 1.0 có thể xử lý tới
hơn 1000 gói tin mỗi giây, vì vậy ngăn cấm các kiểm tra tấn công D-WARD thực tế.
Quyết định đưa ra là di chuyển chức năng quản lý truyền thông vào khoảng nhân.
D-WARD 2.0
31
D-WARD 2.0 thực thi thành phần quản lý truyền thông trong nhân và thành phần
theo dõi và giới hạn ở mức người dùng. Truyền thông giữa hai phần đạt được bằng
việc dùng các lệnh gọi hệ thống.
Thành phần giới hạn được thực thi như một nhân có thể tải được. Ở mức nhân,
việc bắt gói tin đạt được bằng việc dùng netfilter hooks. Netfilter là một nền tảng cho
việc packet mangling, ngoài giao diện socket Berkeley bình thường. Mỗi giao thức xử
lý gói tin (như Ipv4 hay Ipv6) định nghĩa là các “hook” mà là các điểm hoàn toàn xác
định trong sự giao nhau của một gói tin của ngăn xếp giao thức đó. Để một gói tin đạt
được mỗi điểm này, giao thức sẽ gọi nền tẳng netfilter với số lượng gói tin và hook.
Các module nhân có thể đăng ký để nhận các hook của các điểm này. Khi một gói tin
được truyền tới nền tảng netfilter (với việc chạm trán một trong các hook), netfilter
kiểm tra thấy nếu ai đó đã đăng ký cho giao thức đó và hook. Nếu như vậy, mỗi
mudule nhân được đăng ký làm cho một thay đổi tới kiểm tra (và có thể biến đổi) gói
tin theo thứ tự mà chúng đã đăng ký hook. Lúc xử lý, module nhân có thể loại bỏ gói
tin (trả về NF_DROP tới nền tảng), cho phép nó truyền qua (trả lại NF_ACCEPT), cho
biết netfilter quên về gói tin (trả về NF_STOLEN), hỏi netfilter để xếp hàng gói tin cho
userspace (trả về NF_QUEUE) hay lặp lại hook này (trả về NF_REPEAT). Một phần
của chức năng này được dùng trong D-WARD 1.0 thông qua các quy tắc iptables để
phân các gói tin ra và gửi chúng tới userspace.
Các module mức người dùng (thành phần theo dõi và giới hạn) phân phối Danh
sách kết nối hợp lệ và Các quy tắc giới hạn tới nhân bằng dùng các lệnh hệ thống mới
thêm vào. Module theo dõi nhận các đặc điểm gói tin bằng một mã điều chỉnh
tcpdump. Tcpdump dùng Bộ lọc gói tin Berkeley (Berkeley Packet Filter) và thư viện
pcap để bắt tiêu đề (và một phần nội dung) của các gói tin khớp với phép lọc đưa ra.
Thành phần theo dõi điều chỉnh mã để thông tin không được in nhưng thay vào đó
được truyền vào hàm xử lý các đặc điểm.
D-WARD 2.0 có thể xử lý mức gói tin cao (hơn 10000 gói tin trên giây) nhưng
nó có các giới hạn sau. Tiện ích libpcap sao chép tiêu đề gói tin (và nội dung) trên cơ
sở từng gói tin. Việc này chịu phí tổn điều khiển mà trở nên tới hạn nếu mức gói tin
tăng lên. Mức gói tin cao hơn 1000 gói tin, libpcap không thể bắt thông tin trong tất cả
các gói tin truyền qua. Trong khi D-WARD vẫn hoạt động, đây có khả năng mà việc
mất mát thông tin sẽ bao gồm thông tin gói tin hợp lệ và ảnh hưởng tới việc thực thi D-
WARD. Giới hạn khác là dễ dàng triển khai. Vì D-WARD 2.0 thêm các lệnh gọi hệ
thống mới tới nhân Linux, nó yêu cầu điều chỉnh nhân cho việc triển khai – một cam
32
kết khó khăn mà có thể rất dài và phức tạp. Ngoài ra, việc thêm các lệnh gọi hệ thống
mới hay điều chỉnh của một cái cũ là lỗ hổng an ninh trong nhân Linux và bị cấm
trong vài phiên bản.
D-WARD 3.0
D-WARD 3.0 thực thi thành phần quản lý truyền thông bên trong nhân và thành
phần theo dõi và thành phần giới hạn ở mức người dùng, giống D-WARD 2.0. Tuy
nhiên, truyền thông giữa hai phần đạt được bằng dùng các lệnh ioctl. Việc này cho
phép truyền thông hai chiều dễ dàng giữa người dùng và các tiến trình nhân và một
quá trình thiết lập liền mạch. Thiết lập yêu cầu rằng hai thiết bị được tạo ra:
Thiết bị dward dùng cho truyền thông hai chiều giữa thành phần theo dõi và
thành phần giới hạn ở một bên, và thành phần quản lý truyền thông ở bên kia, và
Thiết bị sniff dùng cho đánh hơi (sniff) thông tin gói tin và phân phối nó tới
thành phần theo dõi.
Các tiến trình nhân thu thập thông tin cần thiết và lưu nó, trong khi các thành
phần theo dõi và giới hạn thực thi các lời gọi ioctl để kéo về thông tin này khi cần.
Phần sau sẽ cung cấp miêu tả chi tiết về kiến trúc này. Thêm tiêu chuẩn gói tin đang
đánh hơi đặc chế cho phép thu thập các đặc điểm một cách hiệu quả và sao chép tới
userspace, do vậy cung cấp hỗ trợ cho mức gói tin cao.
D-WARD 3.1
D-WARD 3.1 thêm hai phương tiện quan trọng mà tác động đến sự thực thi hệ
thống:
Dự đoán dãy số khởi tạo. Các phiên bản 1.0, 2.0 và 3.0 không bao gồm kỹ thuật
dự đoán giá trị. Các phiên bản đó loại bỏ các gói tin kết nối mới trong cuộc tấn công,
và sự thực thi của chúng phụ thuộc trực tiếp vào tần số của các khởi tạo kết nối và độ
dài kết nối. Để giải quyết vấn đề này, kỹ thuật dự đoán dãy số khởi tạo được phát triển
và thực thi trong D-WARD 3.1, đây là phiên bản hiện tại của tiêu chuẩn D-WARD.
Các mẫu kết nối UDP hợp lệ. Các mẫu kết nối UDP hợp lệ được thực thi chỉ
trong D-WARD 3.1. Các phiên bản sớm hơn có thể gây ra thêm nguy hiểm trong
truyền thông UDP hợp lệ.
33
3.1. Kiến trúc thực thi của D-WARD 3.1
Kiến trúc của việc thực thi D-WARD 3.1 được thể hiện trong hình 14 . Các hình
oval với đường thẳng miêu tả các tiến trình song song trong D-WARD. Các hình oval
với đường nét đứt miêu tả các thiết bị tạo ra truyền thông giữa các tiến trình người
dùng và nhân. Các đường nét đứt nhanh với mũi tên minh họa các lời gọi ioctl để
thuận tiện cho trao đổi giữa tiến trình người dùng và tiến trình nhân thông qua thiết bị
được tạo. Các hình vuông nhỏ ở dưới các hình oval miêu tả các tiến trình nhân chỉ ra
thứ tự mà các tiến trình đó được đăng ký nghe hook netfilter chuyển tiếp. Vì vậy, các
gói tin truyền qua (và được xử lý) đầu tiên bởi module gst và cuối cùng bởi module rl.
Hình chữ nhật nét đứt chỉ ra nhóm các tiến trình và dữ liệu với ba thành phần D-
WARD : theo dõi, giới hạn và quản lý truyền thông.
Hình 14. Kiến trúc thực thi của D-WARD 3.1
3.2. Thành phần theo dõi
Thành phần theo dõi lưu các đặc điểm luồng và kết nối trong các bảng băm, cho
việc truy cập nhanh.
3.2.1. Bảng băm luồng
34
Bảng băm luồng được đánh chỉ mục bởi địa chỉ IP của máy đích bên ngoài và
bao gồm các trường sau:
• lượng gói tin gửi đi và nhận cho từng giao thức (TCP, ICMP, UDP, khác và
tổng).
• lượng byte gửi đi và nhận cho từng giao thức (TCP, ICMP, UDP, khác và
tổng).
• lượng byte bị loại bỏ.
• tỷ lệ gói tin TCP smoothed ( lượng gửi đi chia cho lượng gói tin nhận được).
• tỷ lệ gói tin ICMP smoothed (lượng gửi đi chia cho lượng gói tin nhận được).
• khoảng thời gian của lần reset sau cùng.
• khoảng thời gian của hoạt động sau cùng (một gói tin được gửi hay nhận).
• sự phân loại luồng.
• lượng kết nối hợp lệ của giao thức UDP.
• giá trị cực tiểu của truyền thông không có hiệu lực với từng gói tin (chỉ cho
TCP và ICMP) trong cửa sổ cho trước.
• lượng phân loại khả nghi liên tiếp gần đây.
Các trường này được miêu tả trong hình 15 (các trường được tô đậm không được
biểu diễn trong cấu trúc, e.g,., bộ đếm kết nối kích hoạt chỉ cho các đặc điểm UDP)
Hình 15. Bảng bản ghi luồng
35
3.2.2 Bảng băm kết nối
Bảng băm kết nối được đánh chỉ số bằng khóa bao gồm các địa chỉ IP và các
cổng của các host cục bộ và bên ngoài. Một bản ghi bảng kết nối bao gồm các trường
sau:
• Lượng gói tin gửi đi và nhận được
• Lượng byte gửi đi và nhận được
• Giao thức kết nối (TCP,UDP,ICMP hay khác )
• Khoảng thời gian của lần reset sau cùng
• Khoảng thời gian của hoạt động sau cùng( một gói tin gửi đi hay nhận được)
• Phân loại kết nối
• Tình trạng ứng dụng ( cho kết nối UDP)
• Sự kết thúc tình trạng ứng dụng
• cờ hiệu biểu thị đây là một kết nối mới
Vì kích cỡ bảng băm nhỏ hơn nhiều lượng thực thể có thể, một vài thực thể sẽ
xung đột trong quá trình chèn. Các bảng băm dùng băm kép (double hashing) để giảm
xác suất xung đột. Băm kép dùng hai hàm: h1(x) và h2(x) để tính toán chỉ mục cho một
khóa x cho trước. Chỉ mục đầu tiên sẽ được truy cập để tính toán : index = h1(x). Nếu
xung đột xảy ra, các chỉ mục sau được tính toán như index =h1(x) + trial *h2(x), ở đây
trial biểu thị lượng xung đột được bắt gặp cho đến bây giờ. Ý tưởng của giải pháp này
là nếu hai mục băm ra cùng giá trị của h1, chúng sẽ có các giá trị khác nhau của h2 .
Các chỉ mục băm luồng được tính toán dùng các hàm băm sau:
Các chỉ mục băm kết nối được tính toán dùng các hàm băm sau:
36
Để tránh một tìm kiếm rộng cho mục trong các bảng băm (hay cho khe trống để
chèn mục) lượng thử được giới hạn tới ba. Nếu sau ba lần thử một mục (hay khe trống)
không tìm thấy, tìm kiếm (hay chèn thêm) bị hủy bỏ. Sự tối ưu này tăng hiệu quả một
cách đáng kể trong khi không gây ra mất mát thông tin lớn. Do vậy các truy cập băm
xảy ra khi mỗi gói tin truyền qua, giảm tổng phí truy cập băm cải thiện thực thi lớn.
Việc tràn băm được kiểm tra ở thời gian chèn bản ghi. Nếu bảng băm gần đầy
(90%), một thao tác xóa khẩn cấp sẽ được gọi để làm trống khoảng không cho bản ghi
mới. Trong thao tác xóa khẩn cấp, mỗi bản ghi được xem xét để quyết định nó có thể
bị xóa không. Nếu, sau lần truyền đầu tiên, việc chiếm giữ bảng băm không giảm dưới
Rehash_load_factor_high(đây là một tham số cấu hình, thường thiết lập ở 75%), các
việc truyền sau được khởi tạo bằng tiêu chuẩn lỏng lẻo cho việc xóa bản ghi. Tiêu
chuẩn sau được dùng để quyết định một bản ghi có bị xóa không:
• Cho một bản ghi luồng: xóa bản ghi nếu lượng gói tin gửi đi ít hơn SP và
lượng byte gửi đi nhỏ hơn SB. SP và SB là nhân gấp đôi trong mỗi lần truyền
qua.
• Cho một bản ghi kết nối: Xóa bản ghi nếu lượng gói tin gửi đi ít hơn SP và
lượng byte gửi di nhỏ hơn SB và kết nối được phân loại là nhất thời. SP và SB
được nhân gấp đôi trong mỗi lần truyền qua.
Vì nhiều lý do thực hiện, không băm lại được chấp nhận, và việc cấp phát bộ nhớ
động được triển khai chỉ khi cần thiết.
3.2.3 Thu thập thông tin gói tin
Tiến trình get_packet_info yêu cầu liên tục thông tin gói tin từ module nhân gst.
Tuy nhiên, vì nhiều lý do thực hiện, tác động của việc sao chép dữ liệu giữa nhân và
userspace được giảm đến mức tối thiểu. Bởi vậy, thông tin gói tin chỉ được sao chép
khi bộ nhớ đệm của nhân hơn 1/3 đầy hay sau khi một lượng yêu cầu sao chép (một
giá trị của 1000 được chọn theo kinh nghiệm) bị từ chối. Khi get_packet_info nhận dữ
liệu gói tin, nó phân tích thông tin trong từng gói tin và cập nhật các thực thể tương
ứng trong bảng băm luồng và kết nối.
3.2.4 Phân loại luồng và kết nối
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
• Lượng byte gửi đi vì chúng khớp với khoảng dãy số dự đoán
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.
Mẫu Linux OS biểu thị dãy số phụ thuộc là :
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.
3.6 Triển khai các hệ thống D-WARD trên mạng các node hàng xóm
3.6.1 Vấn đề đặt ra
Trong khi khiển khai hệ thống D-WARD chúng ta nhận thấy rằng các hệ thống
D-WARD không truyền thông với nhau, do vậy các hệ thống D-WARD chỉ phát hiện
và ngăn chặn các cuộc tấn công đi ta từ mạng nguồn mà hệ thống D-WARD được triển
khai. Vì hệ thống D-WARD là hệ thống phòng thủ DDoS source-end nên các bộ định
tuyến mà D-WARD được cài đặt và triển khai trên đường đi từ mạng nguồn đến mạng
đích sẽ không thực hiện việc phân loại để phát hiện và ngăn chặn các cuộc tấn công tới
máy nạn nhân. Giả thiết của vấn đề đặt ra là:
Hệ thống D-WARD sử dụng mức TCPrto, ICMPrto,….(số kết nối tối đa cho phép)
tương ứng với các giao thức tầng giao vận được sử dụng để xác định phân loại luồng
và kết nối từ mạng nguồn đến máy nạn nhân. Nếu một luồng và kết nối vượt ngưỡng
thì được phân loại là tấn công, nếu không thì luồng và kết nối được phân loại không
phải là tấn công và được truyền tới máy nạn nhân. Nhưng do cuộc tấn công DDoS là
một cuộc tấn công phân tán và sử dụng một lượng lớn máy agent thuộc nhiều mạng
khác nhau nên máy nạn nhân vẫn phải chịu khả năng tấn công do chịu một lượng lớn
các yêu cầu.
Để giải quyết vấn đề này, chúng ta sẽ xây dựng các hệ thống D-WARD theo mô
hình mạng các node hàng xóm. Và các hệ thống D-WARD này sẽ truyền thông với
nhau về các thông tin về luồng từ một mạng nguồn tới một đích cho trước.
41
3.6.2 Ý tưởng giải quyết vấn đề
Ý tưởng là khi bộ định tuyến trên đường đi từ mạng nguồn đến mạng đích có lưu
một bảng các node hàng xóm gồm địa chỉ IP của bộ định tuyến hàng xóm của nó và
một số nguyên R (là số bước đi từ bộ định tuyến trung gian đó đến bộ định tuyến của
mạng nguồn). Các địa chỉ IP của các bộ định tuyến hàng xóm có thể có một vài node
hàng xóm ở xa. Khi bộ định tuyến này nhận được gói tin từ mạng nguồn gửi đến mạng
đích, bộ định tuyến sẽ đọc được địa chỉ IP nguồn và đích của gói tin thông qua chương
trình get_packet_info.c trong hệ thống D-WARD. Dựa vào địa chỉ IP nguồn, IP đích
và bảng các hàng xóm, bộ định tuyến sẽ gửi yêu cầu tới bộ định tuyến của mạng nguồn
để yêu cầu bộ định tuyến của mạng nguồn, khi nhận được yêu cầu bộ định tuyến của
mạng nguồn gửi cho tỷ số xác xuất của luồng đó. Khi nhận được các tỷ số mà các bộ
định tuyến ở mạng nguồn gửi trả lại thì bộ định tuyến sẽ tổng kết tỷ số để phân loại
luồng đó có phải là tấn công không, nếu tấn công thì sẽ tiến hành đưa ra các mức giới
hạn với luồng đó để ngăn chặn cuộc tấn công. Để thực hiện được tốt thì ta sẽ cho các
bộ định tuyến gửi các yêu cầu thu thập tỷ số xác suất này lặp lại sau một khoảng thời
gian tuân theo(compliance time).
3.6.3 Cơ sở thực hiện
• Khi gói tin đi qua bộ định tuyến thì bộ định tuyến sẽ đóng vai trò máy
khách gửi yêu cầu tới bộ định tuyến của mạng nguồn ( đóng vai trò
máy chủ), cả hai chạy theo giao thức TCP. Máy khách gửi yêu cầu là
địa chỉ IP của máy nạn nhân và R tương ứng với máy chủ. Bộ định
tuyến sẽ lưu bảng các node hàng xóm trước.
• Khi máy chủ nhận được yêu cầu từ phía máy khách, máy chủ sẽ gửi tỷ
lệ xác suất ratio của luồng phát sinh từ mạng nguồn đến máy nạn nhân.
Máy chủ sử dụng hàm trong D-WARD.
• Khi máy khách nhận được trả lời từ phía máy khách thì máy khách sẽ
tổng hợp lại các tỷ lệ xác suất nhận được từ các mạng nguồn khác nhau
có luồng tới máy nạn nhân. Và máy khách sẽ tính toán tỷ lệ xác suất
một cách hợp lý theo công thức
ratio = (ratio1 + ratio2 + ……. + ration)/n
Ở đây, ratio là tỷ lệ xác suất tổng hợp.
ratio1, ratio2, …., ration là tỷ lệ xác suất tương ứng với các mạng nguồn 1, 2,….,n.
42
Hình 17. Mô hình mạng và bảng địa chỉ hàng xóm
Tổng kết
Chương 3 này cung cấp thông tin về các phiên bản của D-WARD và kiến trúc
triển khai của D-WARD 3.1, cũng như kiến trúc triển khai các thành phần của D-
WARD 3.1. Ngoài ra, chương này cũng miêu tả cấu trúc của bảng băm luồng, bảng
băm kết nối,….để hiểu hơn cơ chế hoạt động của D-WARD.
43
Chương 4. Cài đặt và kết quả thu được
4.1. Cài đặt thực nghiệm
4.1.1. Mô hình thực thi
Hình 18. Mô hình thực thi
4.1.2. Biên dịch và chạy D-WARD
Chúng ta sẽ biên dịch và chạy D-WARD tại tương ứng với hình 14. Đầu tiên,
chúng ta có thể tải mã nguồn của D-WARD với phiên bản mới nhất tại trang
. Rồi, chúng ta giải nén mã nguồn trước khi biên
dịch nó. Hệ điều hành được dùng ở đây để biên dịch mã nguồn là Redhat 8.0(nhân
2.4.18) vì mã nguồn này dùng thư viện lập trình của nhân 2.4. Trong hệ điều hành này,
chúng ta phải cài đặt trình biên dịch gcc và môi trường của J2SE(JDK,JRE) cho mục
đích biên dịch. Mã nguồn D-WARD bao gồm module ứng dụng và nhân. Module ứng
dụng sẽ thực thi việc phát hiện các cuộc tấn công và tính toán các mức giới hạn trong
khi module nhân sẽ tiến hành quản lý truyền thông. Sau khi building mã nguồn, bạn có
thể tìm thấy hai module “gst.o” và “rl.o” mà có thể được tải tới module nhân. Module
44
“rl.o” sẽ thiết lập các mức giới hạn tới truyền thông đi ra, và với module “gst.o”
chúng ta có thể bắt các gói tin trên đường truyền và phân tích thông tin tiêu đề.
Biên dịch D-WARD như thế nào?
Chúng ta quan tâm về hai file “makefile” và “kernel/makefile”. Chúng ta có thể
thay đổi file cấu hình một cách hiệu quả trong hai file “prefix.config” và
“dward.config”
Thực thi ba dòng lệnh trong thư mục dward
make depend
make
make install
Tạo một thiết vị D-WARD
Chạy hai dòng lệnh sau:
mknod /dev/dward c 146 0
mknod /dev/dward c 147 0
Cài đặt module nhân
Chạy hai dòng lệnh sau:
insmod kernel/gst.o plen=20
insmod kernel/rl.o drop=1 mark=255 LOCAL_ADDRESS=x.x.x.x
LOCAL_MASK=y
(với x.x.x.x là địa chỉ cục bộ và y là mask cục bộ của mạng)
Chạy D-WARD như thế nào?
Sau khi chúng ta hoàn thành quá trình biên dịch, chúng ta có thể chạy chương
trình D-WARD. Các tài liệu về D-WARD có thể đọc được bằng câu lệnh man sử dụng
lệnh “man dward” trong môi trường dòng lệnh. Cú pháp:
45
4.2 Kết quả
Thí nghiệm của chỉ được thực hiện với 2 loại tấn công là ICMP và TCP. Và sau
đây là một số kết quả thu được:
• Kết quả của thí nghiệm với gói tin ICMP và TCP
o Một số hình ảnh về file debug và stats
Hình 19: File debug/class.txt
File class.txt lưu lại các phân loại luồng và kết nối của hệ thống bao gồm: địa chỉ
IP nguồn: cổng nguồn, IP đích: cổng đích, số gói tin gửi, số gói tin trả lời, phân loại
luồng/kết nối.
Hình 20: File rlstats.txt
File rlstats.txt là file lưu lại giá trị giới hạn băng thông cho một luồng. Ở hình
trên đó là luồng tới host đích 10.0.0.254.
o Với gói tin TCP:
46
Hình 21:File conn.txt
File conn.txt ghi lại thông tin như các kết nối được đưa vào bảng băm kết nối. Và
chúng sẽ bị reset ngay sau khi chúng được phân loại.
Cũng tương tự như ICMP chúng ta cũng các file phân loại kết nối, thống kê giới
hạn băng thông ở trong các thư mục debug và stats. Chúng lần lượt là những file:
class.txt, rlstats.txt, stats.txt…
4.3 Đánh giá về việc triển khai mở rộng
Ưu điểm:
Hệ thống khắc phục được điểm yếu của D-WARD khi triển khai một cách riêng
lẻ. Đó là kết hợp khả năng đánh giá phân loại từ các router nguồn triển khai D-WARD
khác. Cuối cùng có thể đưa ra được một phân loại chính xác hơn cho luồng và kết nối
đi ra từ hệ thống của mình.
Hiệu năng của hệ thống sẽ được tăng lên rõ rệt. Trong một mạng có thể xảy ra
cùng lúc nhiều host cùng truy cập vào một dịch vụ nào đó trên mạng nhưng chưa chắc
đó là luồng tấn công. Nếu không kết hợp để đánh giá thông qua server cơ sở dữ liệu thì
rất có thể D-WARD sẽ giới hạn băng thông và ngăn cản truy cập tới dịch vụ đó. Điều
này làm giảm hiệu năng của hệ thống. Nhưng khi triển khai mô hình này, nó sẽ giải
quyết vấn đề nêu trên một cách tốt hơn.
47
Hạn chế:
Yêu cầu sự hợp tác của nhiều nhà quản lý router nguồn. Điều này thường rất khó
đạt được vì mỗi nơi đều sử dụng những chính sách về bảo mật và phòng chống tấn
công khác nhau.
Tổng kết
Chương 4 của khóa luận đã cho chúng ta biết cách để biên dịch và chạy D-
WARD, và việc cài đặt thực nghiệm việc kết nối các hệ thống D-WARD theo mô hình
mạng các node ngang hàng, kết quả thu được của việc cài đặt. Đồng thời chương này
cũng đưa ra những đánh giá về việc cài đặt thực nghiệm đó.
48
Chương 5 Kết luận
Theo thống kê thường niên về tội phạm công nghệ cao của FBI năm 2009 (2009
CSI/FBI Computer Crime and Security Survey) thì số lượng các cuộc tấn công DDoS
đang có chiều hướng gia tang từ 21% năm 2008 lên tới 29% vào năm 2009. Các hệ
thống của các cơ quan hành chính, tổ chức kinh tế cần phải hoạt động một cách thường
xuyên và chịu áp lực lớn từ việc truy cập của người dùng, sẽ là mục tiêu của các cuộc
tấn công DdoS. Do vậy trong khóa luận này, chúng ta đã chỉ ra các vấn đề liên quan
việc triển khai hệ thống phòng chống DdoS source-end là D-WARD và mở rộng triển
khai các hệ thống D-WARD theo mô hình mạng các node ngang hàng. Khóa luận cung
cấp một cái nhìn tổng quan trong phòng chống tấn công từ chối dịch vụ, và tấn công từ
chối dịch vụ phân tán. Đó là hiệu quả của việc triển khai hệ thống phòng chống tại
nguồn là rẻ và khả năng phát hiện và ngăn chặn các cuộc tấn công đi ra từ mạng nguồn
là cao hơn hẳn. Việc triển khai D-WARD giúp cho nhanh chóng phát hiện và ngăn
chăn một cuộc tấn công ngay khi cuộc tấn công được kẻ tấn công nhen nhóm. Chúng
ta đã đưa ra một số kịch bản để kiểm tra hệ thống gần giống với thực tế và thu được
một số kết quả cũng như thống kê của các kịch bản đó. Cuối cùng, chúng ta đã thảo
luận về việc triển khai các hệ thống D-WARD theo mô hình mạng các node ngang
hàng. Bằng cách cho các hệ thống D-WARD truyền thông với nhau để thực hiện việc
tính toán và phân loại luồng một cách chính xác để việc phân loại trở nên hiệu quả
hơn.
Tuy đã có nhiều cố gắng nhưng khóa luận vẫn còn gặp phải nhiều vấn đề chưa
giải quyết được. Chính vì vậy, trong tương lai, chúng tôi sẽ cố gắng để có thể triển
khai một hệ thống hoàn thiện, thử nghiệm và đánh giá kỹ lưỡng hơn việc triển khai các
hệ thống D-WARD theo mô hình mạng các node hàng xóm trên thực tế.
49
TÀI LIỆU THAM KHẢO
[1] Document in Linux Redhat 8.0 kernel 2.4.18
[2]Denial of service attack
[3] D-WARD, DDoS and Three Network Administrative Domains
[4] Jelena Mikovic, D-WARD: Source-end Defence Against Distributed Denial-
of-Service Attacks, Ph.D. Thesis.
[5] Jelena Mikovic, G.Prier and P.Reiher, Attacking DdoS at the source,
Proceedings of ICNP 2002, Paris – Prance, November 2002.
[6] Jelena Mikovic, G.Prier and P.Reiher, A Taxonomy of DdoS Attacks and
DdoS Defense Mechanisms – UCLA CSD Technical Report no. 020018.
[7] Jelena Mikovic, G.Prier and P.Reiher, Source Router Approach to DdoS
Defense – UCLA CSD Technical Report no. 010042.
[8]Jelena Mirkovic, Sven Dietrich, David Dittrich, Peter Reiher. Internet Denial
of Service: Attack and Defense Mechanism. Prentice Hall PTR, December 30,
2004.
[9] Katerina Argyraki, David R.Cheriton. Active Internet Traffic Filtering: Real-
Time Response to Denial of Service Attacks.
[10] K.Park and H. Lee. On the Effectiveness of Route-Based Packet Filtering for
Distributed DoS Attack Prevention in Power-Law Internets. In Proceedings of
ACM SIGCOMM 2001, August 2001.
[11] SYN cookies
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- TRIỂN KHAI CÁC HỆ THỐNG D-WARDTHEO MÔ HÌNH MẠNG CÁC NODE HÀNG XÓM.pdf