BÁO CÁO NGHIÊN CỨU KHOA HỌC
GIẢI PHÁP AN NINH MẠNG DÙNG SDN
Giáo viên hướng dẫn: TS.Trương Thu Hương
Nhóm sinh viên:
Nguyễn Cao Nguyên – SHSV- K54
Dương Quang Hưng
Nguyễn Quang Phúc
Trần Minh Hưng
Nội dung
Chương 1: Lời mở đầu............................................................................................................................5
Chương 2: Cơ sở lý thuyết......................................................................................................................7
2.1 Tổng quát về mạng LAN...............................................................................................................7
2.2 Một số tấn công phổ biến trong mạng LAN.................................................................................7
2.2.1 Tấn công ARP Spoofing.........................................................................................................7
2.2.2 Tấn công IP Spoofing...........................................................................................................10
2.2.3 Tấn công DHCP Server........................................................................................................13
2.2 Mạng lập trình được (Software Define Network)........................................................................16
2.3 Công nghệ OpenFlow..................................................................................................................17
2.3.2 Kiến trúc openflow...............................................................................................................17
2.4 NetFPGA.....................................................................................................................................21
Chương 3: Thiết kế hệ thống và cài đặt công cụ....................................................................................25
3.1. Sơ đồ khối..................................................................................................................................25
3.2. Bộ điều khiển mạng openflow controller (POX)........................................................................26
3.2.1. Giới thiệu tổng quan............................................................................................................26
3.2.2. Cài đặt và sử dựng...............................................................................................................27
3.3 OpenFlow Switch........................................................................................................................28
3.3.1 Giới thiệu tổng quan.............................................................................................................28
3.3.2 Cài đặt và sử dụng................................................................................................................28
3.4 Các công cụ phát lưu lượng.........................................................................................................30
3.4.1 TCPreplay.............................................................................................................................30
3.4.2 Yersinia................................................................................................................................31
2
Chương 4 : Một số Module quan trọng trong Controller.......................................................................34
4.1 Dhcp Module...............................................................................................................................34
4.2 Security Module..........................................................................................................................34
4.3 Routing Module...........................................................................................................................34
4.4 Sơ đồ tiến trình xử lý bản tin.......................................................................................................35
4.5 Sơ đồ tiến trình DHCP và chống tấn công DHCP.......................................................................36
4.6 Chống tấn công............................................................................................................................36
TÀI LIỆU THAM KHẢO.....................................................................................................................41
3
Danh mục hình vẽ
Hình 1 - Mô tả quá trình ARP...................................................................................................................8
Hình 2 - Mô hình tấn công IP spoofing..................................................................................................11
Hình 3 - Mô hình OpenFlow..................................................................................................................18
Hình 4 - Nền tảng NetFPGA...................................................................................................................22
Hình 5 – Sơ đồ khối...............................................................................................................................25
Hình 6 - Giao diện Yersinia....................................................................................................................32
Hình 7 - Chọn Interface.........................................................................................................................33
Hình 8- Chọn kiểu tấn công...................................................................................................................33
Hình 9 – Tiến trình xử lý bản tin............................................................................................................35
Hình 10 – Chống tần công DHCP...........................................................................................................36
Hình 11 - Lấy địa chỉ IP động từ DHCP Server........................................................................................37
Hình 12 - Bảng cấu hình trên Client.......................................................................................................38
Hình 13 - Bảng lưu thông tin cấp phát IP ứng với từng switch..............................................................38
Hình 14 - Log file khi bị tấn công DHCP Server......................................................................................39
Hình 15 - Nghi ngờ tấn công IP Spoofing và block port.........................................................................39
Hình 16 - Màn hình Wireshark khi xảy ra tấn công, port đã bị block.....................................................40
4
Chương 1: Lời mở đầuNgày nay, cùng với sự phát triển nhanh chóng của các công nghệ tiên tiến, nhu cầu
kết nối và chia sẻ của con người ngày càng gia tăng cả về tốc độ, chất lượng cũng như
tính thuận tiện. Các kiến trúc mạng và các thiết bị mạng cũ đã phần nào để lộ những
nhược điểm như tính cứng ngắc, giá thành cao, thiếu khả năng tích hợp nhiều chức
năng…
Mạng lập trình được hay SDN, là một kiến trúc mạng mới, mà ở đó, các thiết bị
chuyển mạch (Switch, Router…) sẽ được tách ra làm hai phần riêng biệt: mặt phẳng
điều khiển (Control Plane) và mặt phẳng dữ liệu (Data Plane). Control Plane được triển
khai trên các server bên ngoài, chịu trách nhiệm điều khiển việc chuyển tiếp gói tin
cũng như các chức năng tích hợp khác. Data Plane thực hiện việc chuyển tiếp các gói
tin dựa theo lệnh mà Control Plane đưa ra.
SDN sử dụng giao thức OpenFlow để giao tiếp giữa Control Plane và Data Plane.
OpenFlow được bắt đầu phát triển từ năm 2008 tại Đại học Stanford, California, Mỹ.
Với sự ra đời của OpenFlow, việc trao đổi giữa Control Plane và Data Plane đã trở lên
dễ dàng, thuận tiện và chính xác hơn. Nhờ đó, SDN đã bắt đầu được áp dụng để thay
thế cho các kiến trúc mạng thông thường. Thực tế hiện nay SDN đã được triển khai tại
rất nhiều phòng lab ở các trường đại học, các trung tâm nghiên cứu. Các tập đoàn lớn
như Google, HP đã bắt đầu sử dụng kiến trúc SDN trong mạng lõi của mình.
Xuất phát từ thực trạng hiện nay, các thiết bị chuyển mạch trong mạng LAN đi kèm
với các chức năng bảo mật thường có giá thành cao. Hơn thế nữa, việc tích hợp nhiều
chức năng bảo mật một cách mềm dẻo là rất khó khăn trong kiến trúc mạng thông
thường. Nhận thấy khả năng của SDN trong việc giải quyết các vấn đề trên, nhóm sinh
viên chúng em đã chọn đề tài: “Xây dựng hệ thống phát hiện xâm nhập Attack
Detection System (ADS) trong mạng LAN dựa trên kiến trúc SDN”, nhằm phát hiện và
ngăn chặn một số loại hình tấn công cơ bản trong mạng LAN.
5
Trong quá trình thực hiện, do hạn chế về mặt thời gian cũng như kiến thức, nên đề
tài không thể tránh khỏi những thiếu sót. Chúng em mong nhận được sự đóng góp của
thầy cô và các bạn để đề tài được hoàn thiện hơn.
6
Chương 2: Cơ sở lý thuyết
2.1 Tổng quát về mạng LANLAN (viết tắt từ tên tiếng Anh Local Area Network, "mạng máy tính cục bộ") là
một hệ thống mạng dùng để kết nối các máy tính trong một phạm vi nhỏ (nhà ở, phòng
làm việc, trường học, …). Các máy tính trong mạng LAN có thể chia sẻ tài nguyên với
nhau, mà điển hình là chia sẻ tập tin, máy in, máy quét và một số thiết bị khác.
Một mạng LAN tối thiểu cần có máy chủ (server), các thiết bị ghép nối
(Repeater, Hub, Switch, Bridge), máy tính con (client), card mạng (Network Interface
Card – NIC) và dây cáp (cable) để kết nối các máy tính lại với nhau. Trong thời đại
của hệ điều hành MS-DOS, máy chủ mạng LAN thường sử dụng phần mềm Novell
NetWare, tuy nhiên điều này đã trở nên lỗi thời hơn sau khi Windows NT và Windows
for Workgroups xuất hiện. Ngày nay hầu hết máy chủ sử dụng hệ điều hành Windows,
và tốc độ mạng LAN có thể lên đến 10 Mbps, 100 Mbps hay thậm chí là 1 Gbps.
Ngày nay mạng LAN đã trở thành một kiến trúc mạng không thể thiếu trong cấu
trúc hệ thống mạng máy tính. Bên cạnh với những lợi thế, điểm mạnh, mạng LAN
cũng bộc lộ không ít những điểm yếu mà những kẻ tấn công có thể lợi dụng để tấn
công vào mạng. Mặt khác, việc triển khai phòng chống, xử lý những cuộc tấn công
trong mạng LAN trở nên rất phức tạp và khó lòng xử lý triệt để vì những cuộc tấn công
thường xuất phát từ ngay nội bộ trong mạng.
2.2 Một số tấn công phổ biến trong mạng LAN
2.2.1 Tấn công ARP Spoofing
2.2.1.1 Giới thiệu giao thức ARP
Mỗi thiết bị trong hệ thống mạng của chúng ta có ít nhất hai địa chỉ. Một địa chỉ là
Media Access Control (MAC) và một địa chỉ Internet Protocol(IP). Địa chỉ MAC là địa
chỉ của card mạng gắn vào bên trong thiết bị, nó là duy nhất và không hề thay đổi. Địa
chỉ IP có thể thay đổi theo người sử dụng tùy vào môi trường mạng. ARP là một trong
những giao thức của IP, chức năng của nó dùng để định vị một host trong một segment
7
mạng bằng cách phân giải địa chỉ IP ra địa chỉ MAC. ARP thực hiện điều đó thông qua
một tiến trình broadcast gói tin đến tất cả các host trong mạng, gói tin đó chứa địa chỉ
IP của host cần giao tiếp. Các host trong mạng đều nhận được gói tin đó và chỉ duy
nhất host nào có địa chỉ IP trùng với địa chỉ IP trong gói tin mới trả lời lại, còn lại sẽ tự
động drop gói tin.
2.2.1.2 Các gói tin ARP
Host A gửi một ARP Request và nhận được một ARP Reply từ một host B có thực
trong mạng. sau khi tiến trình này hoàn tất, host A sẽ biết host B có MAC như thế nào.
Tiếp theo, host A sẽ lưu lại sự hiểu biết đó lên bộ nhớ của mình gọi là ARP table. ARP
table giúp host A không phải thực hiện ARP Request đến host B một lần nữa.
Hình 1 - Mô tả quá trình ARP
2.2.1.3 Nguyên lý tấn công
Giao thức ARP là rất cần thiết và quan trọng trong hệ thống mạng của chúng ta, tuy
nhiên nó lại không đề cập đến vấn đề xác thực nào cả. Khi một host nhận được gói tin
ARP Reply, nó hoàn toàn tin tưởng và mặc nhiên sử dụng thông tin đó để sử dụng sau
này mà không cần biết thông tin đó có phải trả lời từ một host mà mình mong muốn
hay không. ARP không có cơ chế nào để kiểm tra việc đó cả và trên thực tế một host
có thể chấp nhận gói ARP Reply mà trước đó không cần phải gửi gói tin ARP Request.
8
Lợi dụng điều này, hacker có thể triển khai các phương thức tấn công như: Man In The
Middle, Denial of Service, MAC Flooding…
2.2.1.4 Một số cách tấn công ARP trong mạng LAN
Man in the middle
Giả sử hacker muốn theo dõi host A gởi thông tin gì cho host B. Đầu tiên,
hacker sẽ gởi gói ARP Reply đến host A với nội dung là địa chỉ MAC của hacker và
địa chỉ IP của host B.
Tiếp theo, hacker sẽ gửi gói ARP Reply tới host B với nội dung là MAC của
máy hacker và IP của host A. Như vậy, cả hai host A và host B đều tiếp nhận gói
ARP Reply đó và lưu vào trong ARP table của mình. Đến lúc này, khi host A muốn
gửi thông tin đến host B, nó liền tra vào ARP table thấy đã có sẵn thông tin về địa
chỉ MAC của host B nênsẽ lấy thông tin đó ra sử dụng, nhưng thực chất địa chỉ
MAC đó là của hacker. Đồng thời máy tính của hacker sẽ mở chức năng gọi là IP
Forwading giúp chuyển tải nội dung mà host A gửi qua host B. Host Avà host B
giao tiếp bình thường và không có cảm giác bị qua máy trung gian là máy của
hacker.
Trong trường hợp khác, hacker sẽ nghe lén thông tin từ máy bạn đến Gateway.
Như vậy mọi hành động ra Internet của bạn đều bị hacker ghi lại hết, dẫn đến việc
mất mát các thông tin nhạy cảm.
Denial of service
Cũng vận dụng kỹ thuật trên, hacker tiến hành tấn công bằng cách gởi gói ARP
Reply đến toàn bộ các host trong mạng với nội dung mang theo là địa chỉ IP của
Gateway và địa chỉ MAC không hề tồn tại. Như vậy các host trong mạng tin tưởng rằng
mình đã biết được MAC của Gateway và khi gửi thông tin đến Gateway, kết quả là gửi
đến một nơi hoàn toàn không tồn tại. Đó là điều hacker mong muốn, toàn bộ các host
trong mạng đều không thể đi ra Internet được.
MAC flooding
9
Cách tấn công này cũng dùng kỹ thuật ARP Poisoning mà đối tượng nhắm đến là
Switch. Hacker sẽ gửi những gói ARP Reply giả tạo với số lượng khổng lồ nhằm làm
Switch xử lý không kịp và trở nên quá tải. Khi đó, Switch sẽ không đủ sức thể hiện bản
chất Layer2 của mình nữa mà broadcast gói tin ra toàn bộ các port của mình. Hacker dễ
dàng bắt được toàn bộ thông tin trong mạng của bạn.
2.2.1.5 Một số biện pháp phòng chống
Có một số biện pháp để chống tấn công ARP trong mạng LAN
Khi hệ thống mạng nhỏ ta có thể gán MAC tĩnh cho từng máy. Khi đó địa chỉ IP
và MAC sẽ gắn chặt với nhau, trên từng máy đều có địa chỉ MAC và IP của
từng máy trong mạng nên sẽ không thể xảy ra trường hợp tấn công ARP
Sử dụng chức năng port security trên một số switch hỗ trợ chức năng này, khi
đó trên một port trên switch chỉ cho phép một hoặc một số địa chỉ MAC hợp
pháp. Khi kẻ tấn công dùng MAC không phù hợp, gói tin sẽ không thể đi qua
được port này
Dùng 1 số tool sẵn có để chống ARP spoofing như (WinPcap4 và ArpSpoof,
Xarp2.0, CainAble…)
2.2.2 Tấn công IP Spoofing
2.2.2.1 Giới thiệu chung
IP Spoofing là một kiểu tấn công mà ở đó, attacker sẽ thay đổi địa chỉ nguồn của
packet, có thể bằng một địa chỉ chưa sử dụng, có thể bằng một địa chỉ đang được sử
dụng bởi một host tin cậy nào đó.
10
Hình 2 - Mô hình tấn công IP spoofing
Bằng việc sử dụng IP Spoofing, attacker có thể che dấu đi địa chỉ của bên gửi hoặc
có thể giả dạng là một host khác.
IP Spoofing dựa trên thực tế rằng trong giao tiếp giữa các host ở khoảng cách xa,
packet sẽ được xử lý và định tuyến bởi router. Trong khi đó, các router, khi xử lý và
định tuyến packet, sẽ không quan tâm đến địa chỉ nguồn của packet, mà chỉ quan tâm
đến địa chỉ đích trong IP header. Địa chỉ nguồn chỉ được xét đến khi host nhận (ta tạm
gọi là victim) muốn gửi phản hồi, mà khi đó, victim nhận được packet cũng sẽ không
xác định được địa chỉ nguồn của packet là đúng hay sai. Khi nhận được packet với địa
chỉ nguồn sai, victim sẽ gửi những packet phản hồi theo địa chỉ nguồn trong packet
nhận được. Do đó, attacker cũng sẽ không nhận được các packet phản hồi đó.
2.2.2.2 Các kiểu tấn công IP Spoofing
IP Spoofing thường được sử dụng cùng với một phương thức tấn công nào đó,
khiến cho victim khó có thể nhanh chóng tìm ra được địa chỉ của attacker. Một số
phương thức tấn công thường sử dụng IP Spoofing gồm có:
Man-in-the-middle
11
Với kiểu tấn công này, attacker cố gắng lấy được những packet trong một kết nối
nào đó giữa 2 người sử dụng. Sau đó, có thể sử dụng IP Spoofing cùng với những
công cụ khác để lừa các host đang tham gia kết nối, trở thành điểm đến của các
packet. Từ đó, attacker có thể biết được nội dung trao đổi giữa 2 host.
TCP Syn Flooding
TCP Syn Flooding là một kiểu tấn công DoS (tấn công từ chối dịch vụ). Kiểu tấn
công này lợi dụng phương thức three-way handshake của giao thức TCP để gửi rất
nhiều Syn packet nhưng không gửi Ack packet để thiết lập kết nối. Các Syn packet
được gửi đến victim sẽ được đưa vào backlog. Quá nhiều Syn packet đến mà không
thưc hiện kết nối sẽ làm cho backlog của victim bị đầy, và không thể nhận các kết
nối từ các host khác. Attacker sử dụng IP Spoofing trong TCP Syn Flooding, sẽ
chọn các địa chỉ nguồn một cách ngẫu nhiên, qua đó, sẽ không có Ack packet từ
những host đó, do những host đó không hề gửi Syn packet cho victim.
Smurf Attack
Trong Smurf Attack, attacker sẽ gửi các bản tin ICMP đến một số lượng lớn các
host khác với địa chỉ nguồn của packet là địa chỉ IP của victim. Khi nhận được bản
tin ICMP từ attacker, các host đó sẽ gửi các bản tin ICMP response đến victim. Với
một số lượng lớn các bản tin ICMP response nhận được, thiết bị của victim sẽ hoạt
động chậm lại, xử lý các bản tin cũng như các tác vụ không được nhanh chóng
hoặc thậm chí là bị crash.
2.2.2.3 Các bước thực hiện IP Spoofing
Một phiên tấn công IP Spoofing có thể thực hiện theo các bước sau:
Đầu tiên, attacker sẽ chọn đối tượng mình muốn attacker (victim). Lấy được địa
chỉ IP của victim
12
Tiếp theo đó, attacker sẽ tìm hiểu về các “trust relationship” của victim, qua đó,
sẽ chọn lựa được host có “trust relationship” với victim, chính là host mà
attacker sẽ sử dụng địa chỉ IP để thay thế địa chỉ của mình.
Bằng việc gửi các packet đã được spoof địa chỉ IP nguồn đến victim, attacker sẽ
giả dạng được mình là “trusted host”. Hơn thế nữa, nếu có các công cụ cũng như
các phương thức để tính toán được sequence number trong packet mà victim sẽ
reply, attacker hoàn toàn có thể giả mạo “trusted host” trong toàn bộ phiên kết
nối đó. Để tăng xác suất thành công, attacker sẽ cố gắng thiết lập các kết nối dựa
theo các dịch vụ “address-based authentication”, xác thực dựa theo địa chỉ
(không có user name và password).
Khi đã tiếp cận được victim thông qua phiên kết nối, attacker có thể thực hiện
một số hành động gây hại như gửi mã độc, virus, Trojan, hoặc đánh cắp thông
tin trên thiết bị của victim. Attacker cũng có thể để lại những “backdoor”, để có
thể dễ dàng tiếp cận victim trong tương lại nếu cần thiết.
2.2.3 Tấn công DHCP Server
2.2.3.1 DHCP là gì ?
DHCP (dynamic host configuration protocol): giao thức cấu hình địa chỉ động.
Giao thức cung cấp phương pháp thiết lập các thông số cần thiết cho hoạt động của
mạng TCP/IP giúp giảm khối lượng công việc cho quản trị hệ thống mạng.
DHCP server là một máy chủ có cài đặt dịch vụ DHCP. Nó có chức năng quản lý
sự cấp phát địa chỉ IP động và các dữ liệu cấu hình TCP/IP. Ngoài ra còn có nhiệm vụ
trả lời khi DHCP Client có yêu cầu về hợp đồng thuê bao.
DHCP client là dịch vụ có sẵn trên các máy trạm. Nó dùng để đăng ký, cập nhật
thông tin về địa chỉ IP và các bản ghi DNS cho chính máy trạm đó. DHCP client sẽ gửi
yêu cầu đến DHCP server khi nó cần đến 1 địa chỉ IP và các tham số TCP/IP cần thiết
để làm việc trong mạng nội bộ và trên Internet.
13
2.2.3.2 Chức năng của DHCP Server
Mỗi thiết bị trên mạng cơ sở TCP/IP phải có một địa chỉ IP duy nhất để truy cập
mạng và các tài nguyên của nó. Không có DHCP, cấu hình IP phải được thực hiện một
cách thủ công cho các máy tính mới, các máy tính di chuyển từ mạng con này sang
mạng con khác, và các máy tính được loại bỏ khỏi mạng.
Bằng việc phát triển DHCP trên mạng, toàn bộ tiến trình này được quản lý tự động
và tập trung. DHCP server bảo quản vùng của các địa chỉ IP và giải phóng một địa chỉ
với bất cứ DHCP client có thể khi nó có thể ghi lên mạng. Bởi vì các địa chỉ IP là động
hơn tĩnh, các địa chỉ không còn được trả lại một cách tự động trong sử dụng đối với các
vùng cấp phát lại.
2.2.3.4.Cách thức hoạt động DHCP
B1: máy chạm khởi động với địa chỉ IP rỗng cho phép liên lạc với DHCP Server
bằng giao thức TCP/IP. Nó broadcast một thông điệp DHCP Discover chứa địa
chỉ Mac và tên máy tính để tìm DHCP Server .
B2: nhiều DHCP Server có thể nhận thông điệp và chuẩn bị địa chỉ IP cho máy
trạm, nó gửi thông điệp DHCP offer chứa địa chỉ Maccuar khách hang, địa chỉ
IP offer ,subnet mask , địa chỉ IP của máy chủ và thời gian cho thuê đến các
Client. Địa chỉ offer đước đánh dấu là “reserver “.
B3: khi Client nhận thông điêp DHCP offer và chấp nhận một trong các địa chỉ
IP, Client sẽ gửi thông điệp DHCP Request để yêu cầu IP phù hợp cho DHCP
thích hợp.
B4: cuối cùng DHCP Server khẳng định lại cới client bằng thông điệp DHCP
Acknowledge.
2.2.3.5 Thực hiện tấn công DHCP Server
Tuy có nhiều ưu điểm, nhưng giao thức DHCP hoạt động lại khá đơn giản, suốt quá
trình trao đổi thông điệp giữa DHCP Server và DHCP Client không có sự xác thực hay
kiểm soát truy cập. DHCP Server không thể biết được rằng nó đang liên lạc với một
DHCP Client bất hợp pháp hay không, ngược lại DHCP Client cũng không thể biết
DHCP Server đang liên lạc có hợp pháp không. Như vậy sẽ có hai tình huống xảy ra:
14
Khi DHCP Client là một máy trạm bất hợp pháp:
Khi kẻ tấn công thỏa hiệp thành công với một DHCP Client hợp pháp trong hệ thống
mạng, sau đó thực hiện việc cài đặt, thực thi một chương trình. Chương trình này liên
tục gửi tới DHCP Server các gói tin yêu cầu xin cấp địa chỉ IP với các địa chỉ MAC
nguồn không có thực, cho tới khi dải IP có sẵn trên DHCP Server cạn kiệt vì bị nó thuê
hết. Điều này dẫn tới việc DHCP Server không còn địa chỉ IP nào để cho các DHCP
Client hợp pháp thuê, khiến dịch vụ bị ngưng trệ, các máy trạm khác không thể truy
nhập vào hệ thống mạng để truyền thông với các máy tính trong mạng.
Trường hợp tấn công này chỉ làm cho các máy tính đăng nhập vào hệ thống mạng (sau
khi bị tấn công) không thể sử dụng dịch vụ DHCP, dẫn đến không vào được hệ thống
mạng. Còn các máy trạm khác đã đăng nhập trước đó vẫn hoạt động bình thường.
Đây là kiểu tấn công từ chối dịch vụ DHCP dễ dàng nhất mà kẻ tấn công có thể thực
hiện. Kẻ tấn công chỉ cần rất ít thời gian và băng thông là có thể thực hiện được cuộc
tấn công này.
Khi DHCP Server là một máy chủ bất hợp pháp:
Khi kẻ tấn công phá vỡ được các hàng rào bảo vệ mạng và đoạt được quyền kiểm soát
DHCP Server, nó có thể tạo ra những thay đổi trong cấu hình của DHCP Server theo ý
muốn. Kẻ tấn công có thể tấn công hệ thống mạng theo các cách sau:
- Tấn công DoS hệ thống mạng: Kẻ tấn công thiết lập lại dải IP, subnet mask của
hệ thống để các máy trạm hợp pháp không thể đăng nhập vào hệ thống mạng
được, tạo ra tình trạng DoS trong mạng.
- Tấn công theo kiểu DNS redirect: Kẻ tấn công đổi các thiết lập DNS để chuyển
hướng yêu cầu phân dải tên miền của Client tới các DNS giả mạo, kết quả là
Client có thể bị dẫn dụ tới các website giả mạo được xây dựng nhằm mục đích
đánh cắp thông tin tài khoản của người dùng hoặc website có chứa các mã độc,
virus, trojan... sẽ được tải về máy Client.
- Tấn công theo kiểu Man-in-the-middle: Kẻ tấn công thay đổi Gateway mặc định
trỏ về máy của chúng, để toàn bộ thông tin mà Client gửi ra ngoài hệ thống
15
mạng sẽ được chuyển tới máy này thay vì tới Gateway mặc định thực sự. Sau
khi xem được nội dung thông tin, gói tin sẽ được chuyển tiếp đến Gateway thực
sự của mạng và Client vẫn truyền bình thường với các máy ngoài mạng mà
người dùng không hề biết họ đã để lộ thông tin cho kẻ tấn công.
2.2 Mạng lập trình được (Software Define Network)Các giao thức mạng hiện nay ngày càng được hoàn thiện và hoạt động ổn định.
Mặc dù vậy các giao thức mới vẫn không ngừng được nghiên cứu để đáp ứng với nhu
cầu ngày càng cao của con người. Tuy nhiên có một khó khăn lớn khi nghiên cứu một
giao thức mới là không có một môi trường mạng cụ thể để có thể kiểm nghiệm sự
chính xác, tính đúng đắn và chứng minh nó hiệu quả thật hay không, với các mô hình
mạng hiện tại thì tính khả chuyển và sự mềm dẻo gần như không có vì trong một mô
hình mạng ta không thể tác động để điều khiển các thiết bị như mong muốn.
Như vậy nảy sinh vấn đề là cần một mô hình mạng có tính mềm dẻo và khả chuyển
cao hơn, cho phép thực hiện các thay đổi, tùy biến trong mạng mà không phụ thuộc
vào cấu hình các thiết bị phần cứng đang sử dụng trên đó. Đây chính là mô hình của
mạng lập trình được.
Mạng lập trình được là công nghệ cho phép điều khiển hoạt động của mạng dựa
trên việc điều khiển hoạt động của các switch, sử dụng các ngôn ngữ lập trình và có thể
thường xuyên thay đổi bằng cách nạp các đoạn mã nguồn khác vào thay thế. Công
nghệ mạng lập trình được có lợi thế to lớn mà công nghệ mạng hiện tại không có được.
Đó chính là tính mềm dẻo, khả năng mở rộng và tính linh hoạt của mạng. Công nghệ
mạng hiện nay không cho phép can thiệp vào hoạt động của các thiết bị mạng, hoạt
động của các thiết bị này bị phụ thuộc hoàn toàn vào nhà sản xuất quy định. Chính vì
thế, rất khó cho việc thay thế một giao thức cũ bằng các giao thức mới và thử nghiệm
chúng trên các thiết bị thật. Công nghệ mạng lập trình được thì ngược lại, nó cho phép
người lập trình có thể can thiệp vào hoạt động của thiết bị và qua đó điều khiển thiết bị
hoạt động theo ý muốn. Việc này dễ dàng cho việc nghiên cứu cũng như triển khai các
công nghệ mới vào trong mạng mà không cần thay đổi về phần cứng.
16
Mạng lập trình được chính là một công nghệ mạng mang tính cách mạng và là
tương lai của công nghệ mạng trong thời gian sắp tới.
2.3 Công nghệ OpenFlow
2.3.1 Tổng quan
OpenFlow là một công nghệ mạng lập trình được. OpenFlow có những ưu điểm mà
nền tảng mạng truyền thống như hiện nay không có được:
- OpenFlow cho phép chạy mô phỏng các giao thức trên một mạng mô phỏng
giống như trong thực tế.
- OpenFlow dựa trên nguyên tắc của Ethernet switch, có chứa một bảng lưu trữ
các luồng (OpenFlow Table) và cung cấp danh sách các API để thao tác với
OpenFlow Table.
- OpenFlow cũng là công cụ hữu hiệu để triển khai các mô hình thử nghiệm quy
mô lớn như GENI (Global Environment for Network Innovation).
2.3.2 Kiến trúc openflow
Hình 3 - Mô hình OpenFlow
Kiến trúc chung của OpenFlow (Như Hình 2.2.2 bên trên) gồm hai thành phần
chính: OpenFlow Switch, Controller.
17
a. Thiết bị chuyển mạch (OpenFlow Switch)
Bảng định danh các luồng (Flow Table)
Về mặt ý tưởng, OpenFlow dựa trên thực tế rằng các switch và router đều chứa các
bảng mô tả các luồng trong mạng (Flow Table). Mặc dù Flow Table trên switch, router
hoặc của các hãng khác nhau có thể khác nhau nhưng chúng cùng thực hiện các chức
năng giống nhau là phục vụ cho hoạt động của các ứng dụng. Trên Flow Table có chứa
định nghĩa các luồng thông tin trong mạng (Flow Entry), các Flow Entry chứa các
tham số giúp điều khiển các luồng thông tin đi một cách đúng đắn và hợp lý trong
mạng.
Header Fields Counter Actions
Bảng 1 - Cấu trúc Flow Table entry
Thành phần Header Fields
Header Fields: đây là phần header của flow, phần này chứa các thông tin liên quan tới
địa chỉ đích, địa chỉ nguồn, giao thức đang thực hiện trên flow. Chi tiết các thông tin
như bảng dưới đây:
In Port VLAN ID
Ethernet IP TCP/ UDP
SA DA Type SA DA
Protocol Src port Dst port
Bảng 2 - Các thành phần trong phần Header Fields của Flow Table entry
- In port : cổng flow đi vào switch
- VLAN ID : định danh của VLAN mà switch đang nằm trong
- Ethernet SA/ Ethernet DA : địa chỉ MAC nguồn/ đích
- Ethernet Type : loại gói tin Ethernet
18
- IP SA/ IP DA : địa chỉ IP nguồn/ đích
- IP Protocol : giao thức sử dụng
- TCP/UDP Src port/ TCP/UDP Dst port : cổng nguồn/ đích TCP/UDP
Thành phần Counter
Counter là thành phần thực hiện các chức năng thống kê trên một số yếu tố : theo bảng,
theo flow, theo cổng, theo hàng đợi. Trong phạm vi đồ án, ta chỉ quan tâm tới thống kê
theo flow. Bảng dưới đây mô tả về các trường thông kê theo flow:
Tham số Counter Ý nghĩa Độ dài tham số (Tính theo bit)
Thống kê theo flow
Received Packets Số gói nhận được 64
Received Bytes Số byte nhận được 64
Duration (seconds) Khoảng thời gian nhận tính theo giây 32
Duration (nanoseconds)
Khoảng thời gian nhận tính theo nano giây
32
Bảng 3 - Các thành phần trong trường Counter của Flow Table entry
Thành phần Actions
Actions là trường chứa các mô tả tương tác điều khiển cho các flow. Nhờ có trường
này mà các flow khi tới switch sẽ được xử lý tiếp. Nếu một gói tin không tìm thấy hành
động cần thực hiện tiếp theo thì nó sẽ bị loại bỏ. Có một số hành động như sau:
Tên Actions Ý nghĩa
Chuyển tiếp gói tin( Forward)
ALL Gửi gói tin ra tất cả các interface
19
CONTROLLER Đóng gói và gửi lên controller
LOCAL Gửi gói tin tới các switch cục bộ trong stack
TABLE Áp dụng hành động trong Flow Table
IN-PORT Gửi gói tin ra cổng vào
NORMAL Xử lý gói tin sử dụng đường định tuyến hỗ trợ trên switch
FLOOD Gửi gói tin theo minimum spanning tree mà không quan tâm tới interface đến
Enqueue Chuyển gói tin tới hàng đợi theo cổng
Drop Xóa một Flow Table entry
Modify-field Sửa tham số trong Flow Table entry
Bảng 4 - Một số Actions trong Flow Table entry
Openflow switch
Trong mạng OpenFlow, có một thành phần quan trọng không thể nhắc thiếu là
OpenFlow Switch. Do sự khác biệt cơ bản về phương thức hoạt động giữa kiến trúc
mạng SDN và các kiến trúc mạng truyền thống nên các OpenFlow Switch có kiến trúc
cũng như chức năng khác biệt hơn. Trong phần này, em sẽ giới thiệu về OpenFlow
Switch và những thành phần chính của nó.
OpenFlow Switch có hai loại: thiết bị cứng và thiết bị mềm. Thiết bị mềm là các
thiết bị hỗ trợ chuyển mạch dùng trong việc mô phỏng và giả lập mạng. Có hai loại
chính: OpenFlow Switch và OpenvSwitch.
OpenVSwitch là một loại switch nhiều tầng được xây dựng với mục đích sử dụng
trong những môi trường ảo hóa như điện toán đám mây. OpenVSwitch được xây dựng
để có thể sử dụng trên nhiều nền tảng khác nhau, có thể sử dụng trong các server có
nhiều các mạng hoặc sử dụng trực tiếp trên các switch thương mại. OpenVSwitch cung
20
cấp cho người nhiều tính năng khác nhau để có thể quản lý tốt tài nguyên hệ thống
mạng ảo hóa: hỗ trợ QoS, Firewall, chuẩn 802.Q … và đặc biệt là hỗ trợ giao thức
OpenFlow.
Mặc dù OpenVSwitch có thể hỗ trợ được rất nhiều tính năng nhưng nhược điểm
lớn nhất của OpenVSwitch là được xây dựng bằng phần mềm nên hiệu năng sử dụng
không cao. Do đó, người ta đã phát triển một loại OpenFlow Switch dựa trên nền tảng
NetFPGA để khắc phục nhược điểm trên. Trong đồ án này, để thuận tiện cho việc xây
dựng testbed, em đã sử dụng loại OpenFlow Switch này.
2.4 NetFPGA
NetFPGA là một nền tảng phần cứng giá rẻ, được thiết kế chủ yếu nhằm mục đích
là làm công cụ cho việc giảng dạy và nghiên cứu các thiết kế phần cứng mạng như bộ
định tuyến, bộ chuyển mạch, card mạng... NetFPGA đang được phổ biến một cách
rộng rãi tới các sinh viên, giảng viên và các nhà nghiên cứu và những người quan tâm
tới việc thử nghiệm các ý tưởng mới liên quan đến phần cứng mạng tốc độ cao.
Hình 4 - Nền tảng NetFPGA
Phần cứng:
Cấu trúc phần cứng của NetFPGA bao gồm:
21
- Xilinx VirtexTM-II pro 50
- 4x1 Gbps Ethernet ports sử dụng lõi MAC mềm
- 4.5 Mb SRAM và 64 Mb DDR2
- Một chip FPGA Spartan II dùng để làm khối Control Logic cho PCI
interface
- Kit NetFPGA giao tiếp với máy tính thông qua đường bus PCI.
Phần mềm
Phần mềm ở đây là phần mềm điều khiển NetFPGA, chúng bao gồm hệ điều hành
Linux cho PC, driver cho kit NetFPGA, các phần mềm tạo ra giao diện giữa người
dùng và thiết bị mạng.
Xây dựng bộ chuyển mạch trên nền tảng NetFPGA.
Phần mềm
Đây là một gói phần mềm mã mở của Linux, xây dựng một chuyển mạch
OpenFlow bằng phần mềm và có thể download từ website OpenFlow. Phần mềm
OpenFlow tham khảo được chia làm hai phần: phần không gian người dùng (User-
Space) và phần không gian kernel (Kernel-Space).
Các process trong user-space giao tiếp với bộ điều khiển OpenFlow sử dụng SSL
để mã hóa thông tin. Giao thức OpenFlow chỉ ra định dạng của gói tin giữa chuyển
mạch OpenFlow và bộ điều khiển. Thông tin từ bộ chuyển mạch tới bộ điều khiển có
thể là thông báo một flow mới đến hoặc thông báo update trạng thái các đường link. Và
thông tin từ bộ điều khiển tới bộ chuyển mạch như yêu cầu thêm bớt các flow-entry
được trao đổi giữa các process của không gian người dùng và kernel module thông qua
các lời gọi hệ thống IOCTL.
Kernel module chịu trách nhiệm bảo trì các flow-tables, xử lý gói tin và update các
số liệu thống kê. Mặc định, kernel module của bộ chuyển mạch tham khảo sẽ tạo ra các
flow-table bằng phần mềm và forward các gói tin qua card mạng của máy tính.
22
Kernel module có khả năng mở rộng bằng cách cho phép các module phần cứng
đăng kí các flow-table thêm vào. Các flow-table của phần cứng sẽ có quyền ưu tiên cao
hơn các flow-table của phần mềm. Các nhà phát triển có thể mở rộng hệ thống tham
khảo bằng cách thêm một NetFPGA OpenFlow Kernel Module. Kernel module này sẽ
sử dụng các interface của kernel module tham khảo để kết nối các flow-table của cả
phần cứng và phần mềm lại với nhau.
Khi một gói tin đến kit NetFPGA, nếu gói tin này được so sánh trùng với một flow-
entry đã tồn tại trong flow-table của phần cứng sẽ được forward trong phần cứng với
tốc độ cao. Nếu gói tin không trùng với một flow-entry nào trong flow-table, ví dụ flow
mới, sau đó sẽ gửi tới kernel module và kernel module sẽ forward gói tin tới bộ điều
khiển.
Nếu flow-table của phần cứng đầy, flow-entry mới sẽ được chèn vào flow-table của
phần mềm. Những gói tin tiếp theo thuộc những flow như thế sẽ không được xử lý ở
phần cứng mà sẽ được forward lên phần mềm để xử lý.
Đặc điểm nổi bật của NetFPGA là có khả năng cung cấp cho người sử dụng một
OpenFlow switch có hiệu năng sử dụng lớn với băng thông tối đa trên mỗi cổng có thể
lên tới 1Gbps hoặc 10Gbps tùy theo từng phiên bản. Đặc biệt hơn, trên mỗi Kit đều có
một chip FPGA cung cấp cho các nhà nghiên cứu khả năng tùy biến thay đổi để xây
dựng, tùy biến các nền tảnh khác nhau của OpenFlow switch. Tuy nhiên, phạm vi hoạt
động chủ yếu của NetFPGA là trong môi trường phòng thí nghiệm, chưa có khẳ năng
triển khai trên các mô hình mạng lớn hơn.
Trên OpenFlow Switch, các gói tin đi vào từ một cổng mạng bất qua IC Ethernet,
sau khi được xử lý định tuyến sẽ được đẩy trở ra một cổng mạng khác. Quá trình này
xảy ra liên tục khi có các gói tin đi vào chuyển mạch. Ngoài ra, khối chuyển mạch vẫn
phải xem xét và cập nhật các tín hiệu điều khiển nhận được từ khối điều khiển qua PCI.
Với Tần số làm việc hiện tại là 125 Mhz, chuyển mạch có thể đáp ứng lưu lượng
1Gbps x 2 (chiều) x 4(cổng) = 8Gbps toàn chuyển mạch.
23
24
Chương 3: Thiết kế hệ thống và cài đặt công cụ
3.1. Sơ đồ khối
Hình 5 – Sơ đồ khối
Hệ thống được xây dựng dựa trên sơ đồ của một mạng LAN đơn giản. Pox là nơi
xử lý tập trung, thực hiện chức năng cấp phát địa chỉ IP của DHCP Server, đưa ra các
chính sách về bảo mật cũng như đưa ra các quyết định chuyển tiếp gói tin cho switch.
Trong đồ án này, Controller Pox và OpenFlow Switch sẽ được cài đặt trên các máy
tính với cấu hình cụ thể như sau:
Vi xử lý: Pentium ® Dual Core E6700 @ 3.2 Ghz x 2
Ram: 1.8 GB
HDD: 243.9 GB
Controller Pox sẽ chạy trên hệ điều hành Ubuntu 12.04, còn OpenFlow Switch sẽ
chạy trên hệ điều hành CentOS 6.5
Trên Pox ta sẽ xây dựng các module chức năng, sử dụng ngôn ngữ Python, gồm có
các module:
25
Module DHCP Server
Module Security
Module Routing
Cách xây dựng và chức năng cụ thể của từng module sẽ được đề cập đến ở phần
sau của đồ án.
OpenFlow Switch sẽ kết nối với các client thông qua các port của NetFPGA. Các
client này sẽ được sử dụng như một attacker hay như một victim, tùy thuộc vào từng
trường hợp cụ thể.
3.2. Bộ điều khiển mạng openflow controller (POX)
3.2.1. Giới thiệu tổng quan
Các bộ điều khiển mạng dùng trong mạng OpenFlow gồm có: bộ điều khiển mạng
mặc định, POX, NOX, SNAC (giao diện Web để quản lý các OpenFlow switch),
Beacon (Java).Tuy nhiên bộ điều khiển mạng chính và đáng chú ý nhất là bộ điều
khiển mạng POX .POX là bộ điều khiển mở, phát triển bằng ngôn ngữ Python, cấu trúc
đơn giản, gọn nhẹ, dễ dàng tạo và thêm các module mới.
Mục đích chính của POX gồm có:
Cung cấp một platform cho phép người lập trình, phát triển mạng triển khai các
ý tưởng mới trong lĩnh vực mạng, sử dụng phần cứng thật. Các nhà phát triển
có thể điều khiển tất cả các kết nối trong mạng gồm có: forwarding, routing…
Ngoài ra POX còn điều khiển cả flow-table trong switch.
Cung cấp phần mềm quản lý mạng hữu ích cho các tổng đài (operator), gồm có
việc quản lý tập trung cho tất cả các switch trong mạng, điều khiển truy nhập
của người dùng.
Phương thức hoạt động của POX:
26
POX chạy riêng rẽ trên một máy và quản lý việc chuyển tiếp các bản tin giữa
nhiều switch khác nhau. Trong quá trình mô phỏng, giả lập POX được chạy
trên cùng một máy với đồ hình mạng được tạo ra bởi Mininet.
POX cung cấp các giao diện lập trình giúp cho nhà phát triển sử dụng dễ dàng
lấy được thông tin về sự kiện trong mạng, can thiệp vào lưu lượng, điều khiển
các quyết định chuyển mạch của switch và tạo được lưu lượng.
Khi có flow mới xuất hiện trọng mạng, các gói đầu tiên sẽ được gửi đến bộ điều
khiển mạng POX, tại đây có thể thực hiện được: quyết định xem khi nào sẽ
chuyển tiếp các gói đi trong mạng, định tuyến cho gói tin, thu thập các thông tin
thống kê, chỉnh sửa được gói trong flow đó hoặc có thể xem thêm được về các
gói khác trong cùng flow để thu thập được thêm nhiều thông tin.
POX đơn thuần chỉ là một platform, việc điều khiển mạng được thực hiện bởi các
phần tử chức năng trong POX gọi là POX component, mỗi component thực thi một
chức năng riêng biệt như định tuyến, chuyển mạch, xác thực...Có thể chạy một lúc
nhiều POX component với các chức năng điều khiển khác nhau làm cho việc điều
khiển và quản lý mạng trở nên hoàn hảo hơn. Các ứng dụng trong bộ điều khiển mạng
POX có thể kết hợp với nhận biết các sự kiện trong mạng (network event), can thiệp
vào lưu lượng trong mạng, điều khiển định tuyến của các switch và tạo ra lưu lượng.
3.2.2. Cài đặt và sử dựng
Cài đặt
Tải bộ cài đặt POX, sao chép sang thư mục mong muốn sẽ phát triển các ứng dụng
trên POX.
Sử dụng
Có thể sử dụng các module sẵn có trong các thư mục của POX. Để phát triển
module mới, tạo một file .py trong thư mục tương ứng. Để chạy một module, ta dùng
cửa sổ dòng lệnh, di chuyển vào thư mục POX. Sau đó, dùng câu lệnh: ./pox.py <tên
thư mục chứa module>.<tên module>
27
3.3 OpenFlow Switch
3.3.1 Giới thiệu tổng quan
Như đã giới thiệu ở muc 2.2.2 về các loại OpenFlow Switch, để tăng hiệu năng sử
dụng so với các OpenflowVSwitch, trong đồ án này em sẽ cấu hình các Openflow
Switch dựa trên nên tảng NetFPGA.
3.3.2 Cài đặt và sử dụng
3.3.2.1 Cài đặt
Sử dụng một PC chạy hệ điều hành CentOS 6.5 có gắn card NetFPGA để tạo thành
OpenFlow Switch. Các câu lệnh để tiến hành cài đặt các gói NetFPGA và Openflow
Switch gồm có:
Install NetFPGA Driver
# rpm-Uhv http://netfpga.org/yum/el5/RPMS/noarch/netfpga-repo-1-
1_CentOS5.noarch.rpm
# yum install –y netfpga-base
# yum install -y netfpga-openflow_switch
# cd ~/netfpga/
# make
# make install
# reboot
Install OpenFlow
# yum –y install git aotomake pkgconfig libtool gcc
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz
# tar xvzf autoconf-2.63.tar.gz
# cd autoconf-2.63
# ./configure - - prefix=/usr
# make && make install
# cd
28
# git clone git://gitosis.standford.edu/openflow.git
# cd openflow
# git checkout –b 1.0.0-netfpga origin/dev/tyabe/1.0.0-netfpga
# ./boot.sh
# cd openflow/hw-lib/nf2
# wget http://openflow.org/downloads/netfpga/openflow_switch.bit.100_3.tar.gz
# tar xfvz openflow_switch.bit.100_3.tar.gz
# cd openflow
# ./configure – enable-hw-lib=nf2
# make && make install
Nếu không có lỗi xảy ra thì việc cài đặt đã hoàn tất, nếu có lỗi xảy ra cần xóa bỏ
các file đã tải về và tiến hành cài đặt lại như bên trên. Như vậy, quá trình cài đặt
OpenFlow Switch đã hoàn tất và sẵn sàng sử dụng.
3.3.2.2 Sử dụng
Switch và Pox sẽ được kết nối thông qua cổng Ethernet của các PC, với các địa chỉ
thuộc cùng một dải mạng. Trong đồ án này, Pox được gán địa chỉ 192.168.68.200/24,
còn địa chỉ của Switch là 192.168.68.202/24. Các câu lệnh thực hiện kết nối
# cpci_reprogram/cpci_reprogram.pl –all
# cd /openflow/hw_lib/nf2
# nf_download opwnflow_switch.bit
# ./udatapath/ofdatapath –detach punix: /var/run/dp0 –d 000000000024 –I
nf2c0,nf2c1,nf2c2,nf2c3
# ./seachan/ofprotocol unix: /var/run/dp0 tcp: 192.168.68.200
Trên màn hình terminal sẽ xuất hiện thông báo “connected”. Như vậy, Pox với
Switch đã được kết nối thành công.
29
3.4 Các công cụ phát lưu lượng
3.4.1 TCPreplay
3.4.1.1 Giới thiệu chung
TCPreplay là một công cụ phát lưu lượng, cho phép người dùng khả năng chỉnh
sửa và phát lại các loại lưu lượng trong định dạng pcap. TCPreplay có khả năng phân
loại lưu lượng thuộc client hay server, chỉnh sửa một số field trong header của packet
và cuối cùng là khả năng phát lại các loại lưu lượng vào mạng internet hoặc qua một số
thiết bị mạng như router, switch, firewall…
TCPreplay gồm các công cụ sau:
Tcpprep: xử lý các file pcap qua đó cho phép phân loại gói tin được gửi từ client
hay server. Tạo ra các cache files để tcpreplay và tcprewrite sử dụng.
Tcprewrite: Chỉnh sửa header của packet.
Tcpreplay: phát lại các packet với tốc độ tùy ý vào mạng internet.
Tcplieplay: cho phép phát các gói tin tcp vào mạng internet trong một kết nối
TCP (three-way handshake được thiết lập)
Tcpreplay-edit: có chức năng tương tự như tcprewrite và tcpreplay (không
khuyến cáo sử dụng)
Tcpbridge: được sử dụng để kết nối 2 network segments với nhau
Tcpcapinfo: phân tích các bug của tcprewrite cũng như các gói tin pcap bị hỏng
Để cài đặt tcpreplay trên hệ điều hành Ubuntu 12.04 ta sử dụng câu lệnh:
$ sudo apt-get install tcpreplay
TCPreplay chạy trên hệ điều hành Ubuntu 12.04 là phiên bản 3.4.3. Các tài liệu về
tcpreplay có thể được tìm thêm tại trang chủ của phần mềm ở địa chỉ:
http://tcpreplay.synfin.net/
Ta sẽ sử dụng TCPreplay để phát các loại lưu lượng sẵn có.
30
3.4.1.2 TCPreplay
TCPreplay cho phép phát lại các file lượng định dạng pcap với nhiều tốc độ khác
nhau. Một vài ví dụ như
$ tcpreplay --intf1=eth0 sample.pcap
Câu lệnh trên cho phép phát lại file sample.pcap với tốc độ mặc định qua
interface Ethernet.
$ tcpreplay --topspeed --intf1=eth0 sample.pcap
Phát file sample.pcap với tốc độ nhanh nhất có thể, tân dụng tối đa đường
truyền.
$ tcpreplay --mbps=10.0 --intf1=eth0 sample.pcap
Phát packet với tốc độ 10 Mbps
$ tcpreplay --multiplier=7.3 --intf1=eth0 sample.pcap
Phát packet với tốc độ gấp 7.3 lần tốc độ ban đầu
$ tcpreplay --pps=25 --intf1=eth0 sample.pcap
Phát 25 packet trên 1 giây
$ tcpreplay --loop=10 --intf1=eth0 sample.pcap
Phát lặp lại packet 10 lần. Để phát lặp lại vô số lần cho đến khi bị ngắt, ta sử
dụng tham số 0
3.4.2 Yersinia
3.4.2.1 Giới thiệu chung
Yersinia là một công cụ mạng, được thiết kế để lợi dụng các kẽ hở của các giao
thức mạng hiện nay. Yersinia được sử dụng để phân tích và kiểm thử các hệ
thống mạng đang vận hành, từ đó có thể tìm ra các lỗ hổng mà hệ thống đó đang gặp
phải.
Các giao thức mà Yersinia khả năng tận dụng được các điểm yếu gồm có:
Spanning Tree Protocol (STP)
Cisco Discovery Protocol (CDP)
Dynamic Trunking Protocol (DTP)
31
Dynamic Host Configuration Protocol (DHCP)
Hot Standby Router Protocol (HSRP)
IEEE 802.1Q
IEEE 802.1X
Inter-Switch Link Protocol (ISL)
VLAN Trunking Protocol (VTP)
Để cài đặt Yersinia 0.7.1 trên hệ điều hành Ubuntu 12.04 ta sử dụng câu lệnh:$ sudo apt-get install Yersinia
3.4.2.2 Flood of DHCP Discover
Trong Testbed đang được sử dụng, attacker sẽ sử dụng Yersinia để phát một số
lượng rất lớn các packet DHCP Discover, qua đó có thể làm cạn kiệt số lượng địa chỉ
IP của DHCP Server
Khởi chạy Yersinia GUI, sử dụng câu lệnh: $ sudo Yersinia –G
Hình 6 - Giao diện Yersinia
Để có thể thực hiện DHCP Discover Flood, ta tiến hành các bước sau:
Chọn Interface sử dụng để phát các packet. Click vào nút interface, chọn eth0
để sử dụng cổng Ethernet
32
Hình 7 - Chọn Interface
Click vào nút Launch Attack để thực hiện tấn công. Ở đây, ta chọn tab DHCP
và chọn DHCP Discover Message
Hình 8- Chọn kiểu tấn công
Chọn Ok. Yersinia sẽ tự động phát rất nhiều các gói tin DHCP Discover với địa
chỉ MAC nguồn được random, thông qua cổng Ethernet.
33
Chương 4 : Một số Module quan trọng trong ControllerViệc điều khiển hệ thống toàn mạng thông qua bộ điều khiển trung tâm Controller
giúp người quản trị viên giám sát, điều khiển, và thi hành những chính sách của mình
một cách nhanh chóng, mềm dẻo.
Dựa vào những ưu điểm nổi bật của SDN cũng như Openflow nhóm chúng em đã
quyết định triển khai một số cách phòng ngừa tấn công trong mạng Lan.
4.1 Dhcp ModuleKhi máy tính(Client) kết nối vào hệ thống mạng được cấu hình lấy địa chỉ IP
động, client sẽ tự động gửi bản tin DHCP discover để rò tìm Server, và xin cấp những thông tin cần thiết. DHCP Controller sẽ luôn lắng nghe những liên kết này, khi có 1 bản tin DHCP bất kỳ tới, DHCP Controller sẽ bắt, phân tích thông tin, xử lý, và đóng gói trả lại 1 bản tin DHCP Reply tương ứng tới máy Client.
Mọi quá trình xử lý DHCP đều tuân theo tiêu chuẩn quốc tế đã được RFC 2131 thông qua.
4.2 Security ModuleLợi dụng sơ hở của cơ chế cấp phát Ip trên DHCP Server, kẻ tấn công gửi hàng
loạt bản tin DHCP discover đến Server với những địa chỉ MAC khác nhau, khi nhận được DHCP discover, Server sẽ dành 1 địa chỉ trong pool tạo sẵn của mình để cấp phát cho IP. Vậy khi pool tài nguyên đã cạn tạm thời, những người dùng hợp phát sẽ không nhận được địa chỉ IP. Kẻ tấn công đã thành công trong việc thực hiện Deny of service.
Để chống lại điều này, Controller sẽ có 1 bảng binding_table lưu những địa chỉ Mac ứng với DHCP_discover đến port . Khi nhận được bản tin DHCP_request đến(người dùng hợp phát) sẽ xóa Mac tương ứng trong bảng Binding_Table. Khi số lượng Mac (bơ vơ) lớn hơn giới hạn cho phép (nghi ngờ tấn công DHCP Server) POX sẽ gửi lệnh xuống block port tương ứng.
4.3 Routing ModuleBộ định tuyến trong mạng đơn thuần chỉ là tìm đường đi cho gói tin thông qua
đường đi của bản tin ARP đã tìm đường trước đó. Controller sẽ lưu tuyến đường vào cơ sở dữ liệu của nó, và chèn những flow entry thích hợp xuống switch phục vụ cho quá trình chuyển tiếp gói tin tiếp theo.
34
4.4 Sơ đồ tiến trình xử lý bản tin
Hình 9 – Tiến trình xử lý bản tin
35
4.5 Sơ đồ tiến trình DHCP và chống tấn công DHCP
Hình 10 – Chống tần công DHCP
4.6 Chống tấn công4.6.1 Chống tấn công DHCP:
Lợi dụng sơ hở của cơ chế cấp phát Ip trên DHCP Server, kẻ tấn công gửi hàng loạt bản tin DHCP discover đến Server với những địa chỉ MAC khác nhau, khi nhận được DHCP discover, Server sẽ dành 1 địa chỉ trong pool tạo sẵn của mình để cấp phát cho IP. Vậy khi pool tài nguyên đã cạn tạm thời, những người dùng hợp phát sẽ không nhận được địa chỉ IP. Kẻ tấn công đã thành công trong việc thực hiện Deny of service.
36
Để chống lại điều này, Controller sẽ có 1 bảng binding_table lưu những địa chỉ Mac ứng với DHCP_discover đến port . Khi nhận được bản tin DHCP_request đến(người dùng hợp phát) sẽ xóa Mac tương ứng trong bảng Binding_Table. Khi số lượng Mac(bơ vơ) lớn hơn giới hạn cho phép (nghi ngờ tấn công DHCP Server) POX sẽ gửi lệnh xuống block port tương ứng.
4.6.2 Chống tấn công ARP Spoofing và IP Spoofing:
Bằng việc kiểm soát được đã cấp phát IP cho Mac nào trên port và switch nào –dựa trên bảng manager_ip lưu thông tin dưới dạng (dpid, port): (mac, ip). Controller dễ dàng phát hiện ra gói tin nào có nội dung không đúng, đưa ra cảnh báo và block port tương ứng trên switch.
4.7 Một số hình ảnh trong quá trình thực hiện
Hình 11 - Lấy địa chỉ IP động từ DHCP Server
37
Hình 12 - Bảng cấu hình trên Client
Hình 13 - Bảng lưu thông tin cấp phát IP ứng với từng switch
38
Hình 14 - Log file khi bị tấn công DHCP Server
Hình 15 - Nghi ngờ tấn công IP Spoofing và block port
39
Hình 16 - Màn hình Wireshark khi xảy ra tấn công, port đã bị block
40
TÀI LIỆU THAM KHẢO
41