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
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)
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; }
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