CHƯƠNG IV : THIẾT KẾ CHƯƠNG TRÌNH

Một phần của tài liệu đề tài “xây dựng phần mềm chặn bắt và phân tích các đặc trưng của gói tin hỗ trợ xử lý cảnh báo xâm nhập và bảo vệ thông tin máy tính trong mạng LAN” (Trang 51 - 64)

IV.1. Phân tích hệ thống

Như chúng ta đã biết về kỹ thuật truyền tin trên mạng máy tính. Dữ liệu được phân thành các gói tin và được chuyển liên tiếp giữa các nút trong mạng để tới đích. Trong một mạng LAN(Local Area Network)(ở đây chúng ta chỉ xem xét chi tiết về mạng hình sao, là loại mạng được sử dụng phổ biến hiện nay) dữ liệu được truyền theo kiểu quảng bá. Các máy tính nhận gói tin, kiểm tra địa chỉ nguồn, đích để xác định xem gói tin đó có dành cho mình hay không, sau đó xử lý các gói tin thích hợp. Như vậy, mỗi máy tính trong mạng sẽ nhận được toàn bộ các thông tin trao đổi của các máy khác, nhưng chỉ các thông tin thích hợp là được xử lý.

Hình 4.1. Mô hình truyền tin trong mạng cục bộ

IV.1.2.Mục tiêu của hệ thống

Giải quyết vấn đề chặn bắt, phân tích gói tin để quản lý, giám sát hoạt động của mạng máy tính cục bộ.

Hỗ trợ và giúp đỡ người sử dụng, các quản trị viên hệ thống mạng máy tính giám sát được tình hình hoạt động của mạng một cách chi tiết và cụ thể.

Máy nguồn

Gói tin

Các máy tính trong mạng

Xây dựng hệ thống bảo vệ máy tính cá nhân và mạng máy tính, trong đó tập trung vào cảnh báo trên mạng, xử lý trên máy tính cá nhân.

IV.1.3.Các chức năng của hệ thống

• Quản trị trạng thái mạng máy tính online bao gồm :

+ Theo dõi lưu lượng gói tin trao đổi trên mạng, đánh giá tổng lưu lượng mạng.

+ Tự động xây dựng sơ đồ logic mạng theo các truy cập các dịch vụ do máy chủ trong mạng cung cấp.

+ Theo dõi truy cập của các máy vào các máy chủ dịch vụ trong mạng, bao gồm cả các máy Online và các máy Offline, theo dõi truy cập của các máy trong mạng ra ngoài mạng. + Theo dõi tập hợp các máy đang hoạt động trong mạng (các máy đang online). Dựa trên thời điểm trao đổi các gói tin của máy đó.

+ Theo dõi và mô tả chi tiết lưu lượng trao đổi dữ liệu của 1 máy bất kỳ trong mạng, đưa ra các báo cáo tổng hợp về lưu lượng trao đổi của 1 máy trong mạng, của 1 cặp máy bất kỳ trong mạng.

+ Theo dõi và mô tả chi tiết hoạt động truy cập trên các cổng dịch vụ của các máy chủ trong mạng, mô tả cụ thể đến từng máy trong mạng.

+ Thống kê lưu lượng trao đổi của các máy tính trong mạng, tự động đánh giá và phân loại các phiên trao đổi dữ liệu giữa các máy trong mạng.

• Hỗ trợ cảnh báo tấn công: Tự động cảnh báo các truy cập các truy cập có lưu lượng vượt giá trị ngưỡng cho người quản trị biết, để người quản trị có thể cấu hình Firewall của mạng xử lý thích hợp.

+ Mức 1: báo hiệu xanh – bình thường

+ Mức 2: báo hiệu vàng – không bình thường + Mức 3: báo động đỏ – nguy hiểm

• Bảo vệ hệ thống máy tính kết nối mạng :

+ Xây dựng phần mềm lọc gói tin ở mức thấp hỗ trợ tự động bảo vệ máy cài chương trình khỏi các mối truy cập nguy hiểm từ bên ngoài mạng vào. Việc bảo vệ chỉ bao gồm việc lọc gói tin theo địa chỉ, số hiệu cổng dịch vụ, giao thức ( ICMP, UDP, TCP).

IV.1.4.Các yếu tố kĩ thuật

 Lý thuyết mạng máy tính và các hệ thống mở : ta tập trung vào mô hình OSI 7 tầng của một mạng đầy đủ, xác định môi trường làm việc để chặn bắt các gói tin trong mạng.

 Kỹ thuật chặn bắt gói tin trong môi trường hệ điều hành Windows. Tìm hiểu các thư viện sẵn có hỗ trợ bắt gói tin mà điển hình là thư viện WinPcap.

 Phân tích các gói tin trên mạng trên cơ sở các họ giao thức sẵn có, lấy ra các thông tin cơ bản về gói tin và lưu vào cơ sở dữ liệu.  Kiến trúc mạng của hệ điều hành Windows, phân lớp quản lý gói

tin của hệ điều hành Windows, từ đó lựa chọn và đưa ra giải pháp lọc gói tin ở mức thấp trong hệ điều hành Windows.

 Kỹ thuật lập trình mạng trong môi trường hệ điều hành Windows, kỹ thuật lập trình Driver trong môi trường Windows.

IV.1.5.Một số yêu cầu đối với hệ thống

+Phần cứng : Xây dựng hệ thống để phục vụ các đối tượng là các máy tính cá nhân truy cập mạng máy tính. Vì thế yêu cầu phấn cứng đối với các (adsbygoogle = window.adsbygoogle || []).push({});

máy tính cài đặt hệ thống chỉ cần có : phần cứng của máy tính cài đặt và sử dụng được hệ điều hành Windows.

+Môi trường phát triển, môi trường sử dụng : Môi trường phát triển phần mềm là môi trường Visual Studio của Microsoft, xây dựng Driver chặn bắt gói tin trong môi trường Windows DDK.Môi trường sử dụng phần mềm là các hệ điều hành Windows của Microsoft thuộc họ Windows 9X/2K/XP/.NET.

+Cơ sở dữ liệu ghi nhận gói tin : Các gói tin bắt được sẽ được phân tích và lưu vào cơ sở dữ liệu các thông tin cần thiết. Cơ sở dữ liệu sử dụng là cơ sở dữ liệu Access với điều khiển truy nhập qua ADO.

+Cơ chế hoạt động : sau khi cài đặt và đưa vào sử dụng, chương trình hoạt động theo cơ chế thường chú, việc ghi nhận gói tin đến / đi vào cơ sở dữ liệu được thực hiện tự động. Các chức năng của chương trình liên tục truy vấn cơ sở dữ liệu dữ liệu mới này để đưa ra các hiển thị trực quan, sinh động, và chính xác cho người sử dụng quan sát. Bên cạnh đó chương trình có thể hoạt động ở chế độ thường chú, đưa cả chương trình về hoạt động ở dạng tiến trình, việc này sẽ làm giảm các xử lý liên quan đến giao diện, làm tăng tốc độ của hệ thống và sẽ làm giảm ảnh hưởng( chiếm dụng bộ nhớ) của chương trình đối với bộ nhớ chung của hệ điều hành.

+Ngôn ngữ sử dụng: trong quá trình xây dựng hệ thống, em chủ yếu sử dụng ngôn ngữ Visual C++6.0 cùng các thư viện dựng sẵn hỗ trợ bắt gói tin mức thấp (được cung cấp miễn phí tại website: Http://www/polito.it).

IV.2.Thiết kế hệ thống

IV.2.1. Sơ đồ chức năng của hệ thống

IV.2.2.Thiết kế cơ sở dữ liệu :

Các bảng cơ sở dữ liệu chính

a)Host

Tên trường kiểu dữ liệu kích thước giải thích

MAC Text 12 Địa chỉ MAC

IP Text 16 Địa chỉ IP

Name Text 24 Tên máy

IsServer Logical 1 Server hay máy trạm

IsOnline Logical 1 Trạng thái Online

IpRange Text 36 Khoảng IP

b)Ports

Tên trường Kiểu dữ liệu kích thước giải thích

Port Text 5 Số hiệu cổng

Description Text 50 Tên dịch vụ

c)Service

Tên trường kiểu dữ liệu kích thước Giải thích

HostMAC Text 12 Địa chỉ MAC của máy chủ

Port Text 5 Cổng dịch vụ

Description Text 50 Mô tả dịch vụ

Tên trường kiểu dữ liệu kích thước giải thích

port Text 5 Số hiệu cổng đặt ngưỡng

Ngưỡng1 Number 4 nguỡng 1 (bình thường - xanh)

Ngưỡng2 Number 4 nguỡng 2 (Báo động vàng) (adsbygoogle = window.adsbygoogle || []).push({});

Ngưỡng3 Number 4 nguỡng 3 (Báo động đỏ)

e)Traffic

Tên trường kiểu dữ liệu kích thước giải thích

Time Number 4 Thời gian ghi nhận gói tin

srcip Text 16 Địa chỉ IP nguồn

srcMAC Text 12 Địa chỉ MAC nguồn

desIP Text 16 Địa chỉ IP đích

desMAC Text 12 Địa chỉ MAC đích

desport Text 5 Cổng đích

totalpacket Number 4 Tổng số gói tin

totalsize Number 4 Tổng kích thước

average Number 4 Lưu lượng trung bình

IV.2.3.Phương pháp xây dựng chương trình

Trong xây dựng chương trình trải qua các bước chính sau :  Xác định sự cần thiết và tính thực tiễn của chương trình.

 Nghiên cứu cơ sở lý thuyết của vấn đề quản lý, giám sát và theo dõi mạng máy tính, thông qua việc giám sát các gói trên mạng.

 Xác định môi trường hoạt động của môi trường

 Triển khai xây dựng chương trình theo các yêu cầu đã nêu, bằng các công cụ lập trình trên Windows điển hình là Visual C++ 6.0 và trình biên dịch DDK trong môi trường Windows9X/ 2K/ XP/ .NET.

 Tiến hành thử nghiệm chương trình trong mạng cục bộ của Học Viện KTQS( mạng QSNet).

 Đánh giá tính khả dụng của chương trình trong điều kiện cụ thể. Từ đó có những điều chỉnh thích hợp.

IV.2.4. Các module quan trọng a)Modul lọc gói tin

static HRESULT __Packet_Handler__(IPktXPacket* pPacket,DWORD dwParam);

static void ShowNetworkAdapter(IPktXAdapterPtr& pAdapter); static void PrintHead(IPktXPacket* pPacket);

static void PrintData(IPktXPacket* pPacket);

static void PrintStats(IPktXAdapterPtr& pAdapter); int main(int argc, char* argv[])

{

#define MT_APARTMENT #ifdef MT_APARTMENT CoInitializeEx(NULL,COINIT_MULTITHREADED); #else CoInitialize(NULL); #endif IPktXPacketXPtr pPktX(__uuidof(PacketX)); LONG lCount= IPktXAdapterCollectionPtr(pPktX->GetAdapters())->GetCount(); for (int i=0; i < lCount; i++)

{ IPktXAdapterPtr pAdapter = IPktXAdapterCollectionPtr(pPktX->GetAdapters())->GetItem(i+1); if (pAdapter->GetIsGood()) { _bstr_t bstrtDesciption = pAdapter->GetDescription(); printf("(%d) %s\n",i+1,(char*)bstrtDesciption); } }

pPktX->PutAdapter(NULL);

while (pPktX->GetAdapter() == NULL) { char buffer[256]; printf("Choose adapter#"); try { pPktX->PutAdapter(IPktXAdapterCollectionPtr( pPktX->GetAdapters())->GetItem(atoi(gets(buffer)))); } catch ( _com_error& ) {} } IPktXAdapterPtr(pPktX->GetAdapter())->PutBuffSize(256*1024); // 256 KB IPktXAdapterPtr(pPktX->GetAdapter())->PutBuffMinToCopy(0); IPktXAdapterPtr( pPktX->GetAdapter())->PutHWFilter(PktXPacketTypePromiscuous); IPktXAdapterPtr( pPktX->GetAdapter())->PutMode(PktXModeCapture); IPktXPacketSinkPtr pSink(__uuidof(PacketSink)); pSink->CallBackOnPacket((DWORD) __Packet_Handler__,(DWORD)0); pSink->Advise(pPktX); pPktX->Start(); #ifdef MT_APARTMENT Sleep(60000); #else MSG msg; while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg);

pPktX->Stop(); pSink->Unadvise(pPktX); PrintStats(IPktXAdapterPtr(pPktX->GetAdapter())); pSink = NULL; pPktX = NULL; CoUninitialize(); return 0; } (adsbygoogle = window.adsbygoogle || []).push({});

b)Modul đáp ứng sự kiện OnPacket

static HRESULT __Packet_Handler__(IPktXPacket* pPacket,DWORD dwParam) { PrintHead(pPacket); PrintData(pPacket); return 0; }

IV.2.5. Một số giao diện chính của chương trình a)Biểu đồ lưu lượng

b)Quản lý giao dịch

Hình 4.3. Quản lý giao dịch

c)Quản trị các dịch vụ

Hình 4.4. Quản trị các dịch vụ

Hình 4.5. Ngăn chặn xâm nhập

Một phần của tài liệu đề tài “xây dựng phần mềm chặn bắt và phân tích các đặc trưng của gói tin hỗ trợ xử lý cảnh báo xâm nhập và bảo vệ thông tin máy tính trong mạng LAN” (Trang 51 - 64)