1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và xây dựng hệ thống firewall trên windows

96 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 96
Dung lượng 1,31 MB

Cấu trúc

  • CHƯƠNG 1:TỐNG QUAN VỀ AN TOÀN MẠNG (12)
    • 1.1. Tìm hiểu về mạng máy tính (12)
      • 1.1.1. Khái niệm mạng máy tính (12)
      • 1.1.2. Mô hình chuẩn hóa (12)
    • 1.2. Kiến trúc mạng (14)
      • 1.2.1. Network Card Driver và Protocol (14)
      • 1.2.2 Network Driver Interface Specification (NDIS) (15)
      • 1.2.3 Transport Driver Interface (TDI) (15)
      • 1.2.4 Phương thức bảo vệ trên mạng (16)
      • 1.2.5 Quản trị môi trường người sử dụng (16)
      • 1.2.6 Quản lý tài nguyên mạng mạng (16)
      • 1.2.7 Quản lý người người sử dụng (17)
    • 1.3 An toàn và an ninh mạng (17)
      • 1.3.1 Khái niệm về an ninh mạng (17)
      • 1.3.2 Nghiên cứu nguy cơ an ninh mạng (18)
      • 1.3.3 Các giải pháp an toàn và an ninh cho hệ thống mạng (24)
  • CHƯƠNG 2: TÌM HIỂU VỀ HỆ THỐNG FIREWALL (31)
    • 2.1. Giới thiệu chung (31)
      • 2.1.1. Định nghĩa (31)
      • 2.1.2. Khả năng của Firewall (32)
      • 2.1.3. Những hạn chế của Firewall (32)
    • 2.2. Các kỹ thuật của Firewall (33)
      • 2.2.1. Kỹ thuật Packet Filtering (33)
      • 2.2.2. Kỹ thuật Proxy (36)
      • 2.2.3. Kỹ thuật kiểm tra trạng thái (Stateful Inspection) (38)
      • 2.2.4. Kỹ thuật NAT (Network Address Translation) (40)
      • 2.2.5. Cổng vòng (Circuit-level Gateway) (42)
    • 2.3. Kiến trúc Firewall (43)
      • 2.3.1. Kiến trúc Single-Box (43)
      • 2.3.2. Kiến trúc Screened Host (44)
      • 2.3.3. Kiến trúc Screened Subnet (45)
      • 2.3.4. Kiến trúc kết hợp (46)
      • 2.3.5. Kiến trúc Firewall cho nội bộ mạng (Internal Firewall) (47)
  • CHƯƠNG 3: CƠ CHẾ XÂY DỰNG FIREWALL TRÊN NDIS (50)
    • 3.1. Tổng quan về Windows Driver (50)
      • 3.1.1. Khái niệm (50)
      • 3.1.2. Kiến trúc phân tầng Driver (51)
      • 3.1.3. Cơ chế làm việc của một driver (52)
    • 3.2. Network Driver (53)
      • 3.2.1. NDIS driver (53)
      • 3.2.2. NDIS Miniport Driver (54)
      • 3.2.3. NDIS Protocol driver (56)
      • 3.2.4. NDIS Intermediate driver (57)
    • 3.3. Cơ chế xây dựng Firewall trên NDIS Intermediate driver (57)
      • 3.3.1. Mối quan hệ giữa Protocol, Miniport và Intermediate driver (58)
      • 3.3.2. Xây dựng một NDIS Intermediate Driver (60)
      • 3.3.3. Quản lý, lọc Packet trong NDIS Intermediate driver (64)
  • CHƯƠNG 4: THIẾT KẾ, XÂY DỰNG, CÀI ĐẶT VÀ KIỂM THỬ HỆ THỐNG NDIS (71)
    • 4.1. Phân tích thiết kế tổng thể (71)
      • 4.1.1. Đánh giá các hệ thống hiện tại (71)
      • 4.1.2. Phát triển một driver base của Microsoft (72)
      • 4.1.3. Nguyên lý hoạt động của hệ thống mới xây dựng (72)
      • 4.1.4. Cơ chế chặn gói tin (73)
      • 4.1.5. Các công cụ được sử dụng để xây dựng chương trình (73)
    • 4.2. Phân tích và thiết kế chương trình (77)
      • 4.2.1. Chức năng thiết lập tập luật (79)
      • 4.2.2. Chức năng xử lý gói tin (82)
      • 4.2.3. Chức năng lọc gói tin (84)
    • 4.3. Triển khai và đánh giá kết quả chương trình (86)
      • 4.3.1. Cài đặt PassThru Driver (87)
      • 4.3.2. Cài đặt ứng dụng trên Usermode - Sản phẩm NDIS-Firewall (89)
      • 4.3.3. Kiểm thử chương trình (89)
      • 4.3.4. Đánh giá kết quả chương trình (92)
  • KẾT LUẬN (94)
  • TÀI LIỆU THAM KHẢO (95)

Nội dung

QUAN VỀ AN TOÀN MẠNG

Tìm hiểu về mạng máy tính

1.1.1 Khái niệm mạng máy tính

Có nhiều khái niệm về mạng máy tính nhưng khái quát nhất có thể hiểu: “Mạng máy tính là một tập hợp các máy tính được nối với nhau bởi đường truyền theo một cấu trúc nào đó và thông qua đó các máy tính trao đổi thông tin qua lại cho nhau” Trong đó đường truyền là hệ thống các thiết bị truyền dẫn có dây hoặc không dây để đưa tín hiệu từ máy tính này sang máy tính khác Các thiết bị truyền dẫn được gọi chung là các thiết bị mạng, chúng bao gồm card mạng, dây cáp truyền tín hiệu, bộ định tuyến, các thiết bị chuyển mạch, các thiết bị truy cập không dây v.v… Để các máy tính có thể truyền thông được với nhau thì chúng phải sử dụng chung một mô hình truyền thông nhất định Phổ biến nhất hiện nay là hai mô hình đã được chuẩn hóa quốc tế đó là mô hình OSI (Open Systems Interconnection) và mô hình SNA (Systems Network Architecture).

Mô hình OSI được tổ chức ISO (The International Standards Organization) đề xuất năm

1971 nhằm tới việc kết nối các sản phẩm của các hãng khác nhau và chuẩn hoá trong các lĩnh vực viễn thông và hệ thống thông tin.

Theo mô hình truyền thông OSI chương trình truyền thông được chia thành 7 tầng Hai tầng đồng mức khi kết nối sẽ sử dụng chung một giao thức OSI sử dụng hai giao thức chính là giao thức có liên kết (Conection-oriented) và không liên kết (Conectionless) Lần lượt bảy tầng từ trên xuống dưới là:

Hình 1.1: Mô hình OSI 7 tầng

 Tầng ứng dụng (Application layer): là tầng quy định giao diện giữa người sử dụng và môi trường OSI, nó cung cấp các phương tiện cho người sử dụng truy cập và sử dụng các dịch vụ của mô hình OSI

 Tầng trình diễn (Presentation layer): tầng này quản lý các yêu cầu bảo mật bằng cách cung cấp các dịch vụ như mã hóa dữ liệu và nén dữ liệu sao cho tối ưu hơn khi truyền trên mạng.

 Tầng phiên (Session layer): là tầng cho phép hai ứng dụng trên 2 máy tính khác nhau thiết lập, dùng và kết thúc một phiên làm việc (session), qui định phía nào sẽ truyền, khi nào và trong bao lâu v.v

 Tầng giao vận (Transport layer): tầng này quan tâm tới việc phát hiện lỗi và phục hồi lỗi, đảm bảo phân phát các thông điệp một các tin cậy Nó cũng tái đóng gói các thông điệp khi cần thiết bằng cách chia các thông điệp dài thành các gói tin nhỏ để truyền đi Dữ liệu của tầng giao vận là các Segment.

 Tầng mạng (Network layer): Có nhiệm vụ chuyển đổi địa chỉ logic và địa chỉ vật lý, đồng thời quản lý các vấn đề lưu thông như: chuyển mạch, chọn đường (routing), kiểm soát sự tắc nghẽn của các gói dữ liệu Dữ liệu của tầng mạng là các Packet.

 Tầng liên kết dữ liệu (Data Link layer): tầng liên kết dữ liệu có nhiệm vụ xác định cơ chế truy nhập thông tin trên mạng, các dạng thức chung trong các gói tin Tiếp đến sẽ đóng gói tin thành các frame Tầng liên kết dữ liệu có nhiệm vụ chuyển các frame giữa các máy tính.

 Tầng vật lý (Physical layer): Có nhiệm vụ cung cấp phương thức truy cập vào đường truyền vật lý để truyền các dòng Bit không có cấu trúc, ngoài ra nó cung cấp các chuẩn về điện, dây cáp, đầu nối, kỹ thuật nối mạch điện, điện áp, tốc độ cáp truyền dẫn, giao diện nối kết và các mức nối kết…

Kiến trúc mạng

Năm 1978, tổ chức chuẩn hóa thế giới OSI (International Organization for Standardization) đã phát triển một mô hình cho công nghệ mạng máy tính được gọi là mô hình tham chiếu kết nối các hệ thống mở (Open System Interconnection Reference Model) gọi tắt là mô hình tham chiếu OSI Mô hình này mô tả luồng dữ liệu trong một mạng, từ các kết nối vật lý của mạng cho tới các ứng dụng dùng cho người dùng cuối.

1.2.1 Network Card Driver và Protocol

Một Network adapter card, tức bảng mạch điều hợp mạng, (đôi khi gọi là network interface card hay vắn tắt là NIC) là một bảng mạch phần cứng được cài đặt trong máy tính để cho phép máy tính hoạt động được trên mạng Network adapter card cung cấp một (hoặc nhiều) cổng để cho cáp mạng được nối vào về mặt vật lý và về mặt vật lý bảng mạch đó sẽ truyền dữ liệu từ máy tính tới cáp mạng và theo chiều ngược lại.

Mỗi máy tính trong mạng cần phải có một trình điều khiển (driver) cho card mạng, đó là một chương trình phần mềm kiểm soát bảng mạch mạng Mỗi trình điều khiển card mạng được cấu hình cụ thể để chạy với một kiểu bảng mạch mạng (network card) nhất định.

Cùng với các bảng mạch mạng và trình điều khiển bảng mạch mạng, một máy tính mạng cũng cần phải có một trình điều khiển giao thức (protocol driver) mà đôi khi gọi là một giao thức giao vận hay chỉ vắn tắt là giao thức Trình điều khiển giao thức thực hiện công việc giữa phần mềm mạng ở mức trên (giống như trạm làm việc và máy chủ) và card mạng. Giao thức đóng gói dữ liệu cần gửi đi trên mạng theo cách mà máy tính ở nơi nhận có thể hiểu được Qui trình kết hợp một trình điều khiển giao thức với một card mạng tương ứng và thiết lập một kênh truyền thông giữa hai thứ đó gọi là kết gắn (binding) Để hai máy tính truyền thông với nhau trên một mạng, chúng phải dùng cùng một giao thức.Đôi khi một máy tính được cấu hình để dùng nhiều giao thức Trong trường hợp này, hai máy tính chỉ cần một giao thức chung là có thể truyền thông được với nhau Trong một số mạng, mỗi trình điều khiển card mạng và giao thức của máy tính là một phần mềm riêng.Trong một số mạng khác thì chỉ một phần mềm gọi là monolithic protocol stack thực hiện các chức năng của cả trình điều khiển network adapter card và giao thức.

Windows NT Server sử dụng hai chuẩn là NDIS (Network Driver Interface Specification) và TDI (Transport Driver Interface) NDIS là chuẩn cung cấp cho việc nói chuyện giữa card mạng (network card) và các giao thức (protocol) mạng được dùng NDIS cho phép sử dụng nhiều giao thức mạng trên cùng một card mạng Mặc định Windows NT Server được cung cấp sử dụng bốn giao thức đó là NetBEUI (NetBIOS Extended User Interface), TCP/IP, Microsoft NWLINK và Data Link Control TDI cung cấp khả năng nói chuyện giữa các giao thức mạng với các phần mềm mạng mức trên (như Server và Redirector).

1.2.2 Network Driver Interface Specification (NDIS)

Như trên đã nói NDIS cung cấp sự liên lạc giữa các giao thức mạng với card mạng Bất cứ trạm làm việc nào (sử dụng hệ điều hành Windows NT Workstation) đều có thể các trình điều khiển điều khiển card mạng được cung cấp nội tại trong Windows NT Server Trong trường hợp phải sử dụng một loại card mạng khác, tức là phải cần trình điều khiển cho card mạng không có sẵn trong Windows NT, NDIS vẫn có thể sử dụng đa giao thức mạng trên card mạng này.

Khi máy tính sử dụng đa giao thức mạng, các gói tin dữ liệu sẽ được chuyển đi thông qua giao thức mạng thứ nhất (giao thức này được gọi là primary protocol), nếu không được máy tính sẽ sử dụng tiếp giao thức thứ hai và cứ thế tiếp tục Trên mỗi máy tính được cài đặt Windows NT, mỗi một giao thức mạng được đặt sử dụng trên một card mạng cần phải được đặt một giá trị gọi là LAN adapter number trên card mạng đó.

TDI là giao diện giữa tầng phiên (Session) và tầng giao vận (Transport) TDI được xây dựng với mục đích cho phép tầng giao vận có thể làm việc với các chương trình thuộc tầng trên (ví dụ như Server và Redirector) sử dụng chung một giao diện Khi Server và

Redirector tạo một lời gọi tới tầng giao vận, nó sẽ sử dụng giao diện TDI để thực hiện lời gọi này và do vậy nó không cần biết cụ thể giao thức tầng giao vận sẽ được sử dụng

Windows NT sử dụng TDI nhằm mục đích đảm bảo rằng các hệ thống sử dụng các giao thức khác nhau, thậm chí cả các Server và Redirector được viết bởi các hãng khác nhau (Third parties) có thể làm việc được với Windows NT.

Sử dụng TDI đã làm cho Windows NT khắc phục nhược điểm của sản phẩm LAN manager 2.x đó là trong khi Windows NT không hạn chế số lượng các trạm làm việc nối vào Server thì LAN manager 2.x lại hạn chế ở con số 254 trạm làm việc

Có một trường hợp ngoại lệ, cho dù TDI là chuẩn giao diện giữa tầng giao vận và các tầng mức trên song riêng đối với NetBIOS các trình điều khiển và các DLLs được sử dụng để thực hiện nhiệm vụ này

1.2.4 Phương thức bảo vệ trên mạng

Cơ sở của sự bảo vệ và quản trị tập trung trong môi trường Windows NT Server là domain. Một domain là một nhóm các Server cài đặt hệ điều hành Windows NT Server chứa cùng một tập hợp các User accounts Do vậy thông tin về một User mới chỉ cần nhập tại một Server bất kỳ nhưng đều cho phép các Server khác trong domain nhận ra.

Trust Relationship nối các domain với nhau, điều này có nghĩa là người sử dụng chỉ cần có account trong một domain có thể truy cập tới các thực thể trên toàn mạng

1.2.5 Quản trị môi trường người sử dụng

Trong hệ điều hành mạng Windows NT Server có nhiều cách để quản lý môi trường người sử dụng Phương pháp được sử dụng nhiều nhất để quản lý môi trường người sử dụng đó là thông qua các User profile Một profile là một tệp phục vụ như một bản chụp nhanh của môi trường làm việc hiện thời của người sử dụng (User desktop environment) Với các profile có thể hạn chế khả năng của người sử dụng, thay đổi các tham số được đặt tại trạm làm việc riêng của họ Phương pháp thứ hai để quản lý đó là sử dụng lập các logon script cho các User Nếu mỗi một User có một logon script thì có nghĩa là script sẽ được chạy bất cứ khi nào User này logon vào hệ thống tại bất cứ trạm làm việc nào trên mạng Script có thể là một tệp tin dạng lô (batch file) chứa đựng các câu lệnh của hệ điều hành hoặc các chương trình chạy.

An toàn và an ninh mạng

Với tốc độ phát triển như vũ bão thì Internet đang ngày càng trở nên quan trọng hơn Lượng thông tin trên Internet càng ngày càng nhiều hơn và mức độ quan trọng cũng theo đó mà tăng lên Chính vì nguồn tài nguyên quý giá đó mà giờ đây Internet đã trở thành mục tiêu tấn công của một loại tội phạm mới là tội phạm tin học. Để ngăn chặn được các cuộc tấn công của tội phạm tin học chúng ta phải xây dựng một hệ thống bảo mật mạng chặt chẽ An ninh mạng là điều không thể thể thiếu đối với mỗi cá nhân, mỗi tổ chức muốn bảo vệ nguồn tài nguyên, tài sản của mình.

1.3.1 Khái niệm về an ninh mạng

Có thể hiểu một cách ngắn gọn “An ninh trên một hệ thống mạng là sự bảo đảm không cho ai làm cái mà mạng đó không muốn làm trên hệ thống mạng đó” An ninh mạng nhằm bảo vệ tài nguyên của hệ thống mạng bao gồm:

 Dịch vụ mạng đó đang cung cấp.

 Các thông tin quan trọng, mà mạng đó đang lưu trữ hay cần chuyển.

 Các tài nguyên phần cứng và phần mềm.

Nhìn từ một phía khác thì vấn đề an ninh - an toàn hệ thống mạng còn được thể hiện qua tính bảo mật (Confidentiality), tính toàn vẹn (Integrity), tính sẵn dùng (Availability) của các tài nguyên về phần cứng, phần mềm, dữ liệu và các dịch vụ của hệ thống mạng.

 Tính bảo mật: tức là bảo đảm tài nguyên mạng không bị tiếp xúc, bị sử dụng bởi những người không có thẩm quyền

 Tính toàn vẹn: đảm bảo không có việc sử dụng và sửa đổi nếu không được phép, ví dụ như lấy hay sửa đổi dữ liệu, cũng như thay đổi cấu hình hệ thống bởi những người không được phép hoặc không có quyền Thông tin lưu hay truyền trên mạng và các tệp cấu hình hệ thống luôn được đảm bảo giữ toàn vẹn Chúng chỉ được sử dụng và được sửa đổi bởi những người chủ của nó hay được cho phép.

 Tính sẵn dùng: tài nguyên trên mạng luôn được đảm bảo không thể bị chiếm giữ bởi người không có quyền Các tài nguyên đó luôn sẵn sàng phục vụ những người được phép sử dụng Những người có quyền có thể dùng bất cứ khi nào, bất cứ lúc nào. Thuộc tính này rất quan trọng, nhất là trong các dịch vụ mạng phục vụ (đặt vé máy bay, ngân hàng, tư vấn…)

 Tính xác thực: thực hiện xác định một người dùng được quyền dùng một tài nguyên nào đó như thông tin hay tài nguyên phần mềm và phần cứng trên mạng Việc xác thực thường kết hợp với sự cho phép, hay từ chối phục vụ Xác thực thường dùng là mật khẩu (password) hay căn cước của người dùng như vân tay hay các dấu hiệu đặc dụng

1.3.2 Nghiên cứu nguy cơ an ninh mạng

1.3.2.1 Truy nhập bất hợp pháp (unauthorized access)

Mặc dù truy nhập bất hợp pháp không thuộc một kiểu tấn công cụ thể nào nhưng chúng được biết như là một kiểu tấn công thường xuyên nhất trong các mạng ngày nay.

Một người nào đó muốn tấn công brute-force một Telnet Login trước hết anh ta phải có được dòng nhắc lệnh Telnet từ hệ thống, nghĩa là cần phải có kết nối tới cổng Telnet Lúc này trên màn hình sẽ xuất hiện dòng thông báo “Bạn phải có quyền sử dụng nguyên này”. Nếu người này tiếp tục cố gắng truy nhập thì hành động đó trở thành bất hợp pháp Kiểu tấn công này có thể xuất phát từ bên trong hoặc từ bên ngoài mạng.

Muốn loại bỏ tấn công này thì cần phải ngăn chặn năng hacker sử dụng giao thức truy nhập bất hợp pháp vào hệ thống Ví dụ cần ngăn chặn hacker truy nhập cổng Telnet trên server. Bằng cách sử dụng Firewall đóng cổng 23, chỉ mở đối với một số địa chỉ cho phép.

1.3.2.2 Dò tìm gói tin (Packet sniffer)

Dùng một phần mềm ứng dụng và một card mạng (card mạng này hoạt động ở chế độ hỗn tạp - promiscuous mode, nó sẽ gửi tất cả các gói tin nhận được từ kết nối vật lý tới phần mềm ứng dụng để xử lý) để lấy tất cả các gói tin gửi qua một đoạn mạng.

Thực ra chức năng của Sniffer để giúp người quản trị mạng trong công việc phân tích lưu lượng và gỡ rối mạng Tuy nhiên do nhiều ứng dụng truyền dữ liệu qua mạng dưới dạng thông tin không mã hoá (như các dịch vụ Telnet, FTP, SMTP, POP3…) nên Sniffer đã trở thành công cụ hữu hiệu để có thể lấy thông tin nhạy cảm như password và username khi truyền qua mạng bằng những dịch vụ trên

Trên thực tế rất nhiều người sử dụng chỉ dùng duy nhất một password cho tất cả các account, nên nếu thông tin nhận thực gửi qua mạng dưới dạng không mã hoá bị hacker lấy được thì họ có thể truy nhập vào các thông tin nhạy cảm khác Trường hợp xấu nhất, nếu một hacker có được account người dùng mức hệ thống họ có thể sử dụng nó để tạo ra một account mới để sử dụng cho lần truy nhập sau ở bất kỳ thời điểm nào.

1.3.2.3 Giả mạo địa chỉ IP (IP spoofing)

Trong kiểu tấn công này hacker sẽ sử dụng (giả mạo) một địa chỉ IP hợp pháp (địa chỉ này có thể là địa chỉ IP thuộc một khoảng địa chỉ IP của mạng, hoặc nó là một địa chỉ IP bên ngoài mạng nhưng được phép truy nhập vào để lấy thông tin hoặc sử dụng tài nguyên mạng.

Giả mạo địa chỉ IP chỉ là một công cụ làm bàn đạp cho các tấn công mạng khác Ví dụ: trước khi tấn công DoS, hacker sẽ giả mạo địa chỉ để che đậy tung tích của mình.

Phương pháp hiệu quả nhất để loại bỏ giả mạo địa chỉ IP là dùng thêm một phương pháp nhận thực khác ngoài phương pháp nhận thực dựa trên địa chỉ IP (có thể dùng thêm nhận thực mã hoá).

1.3.2.4 Tấn công từ chối dịch vụ (Denial of Service – DoS)

TÌM HIỂU VỀ HỆ THỐNG FIREWALL

Giới thiệu chung

Firewall là một kỹ thuật được tích hợp vào hệ thống mạng nhằm ngăn cản những gì bất hợp pháp đi ra và vào mạng Hệ thống Firewall thường bao gồm cả phần cứng và phần mềm Firewall thường được dùng theo phương thức ngăn chặn hay tạo các luật đối với các địa chỉ khác nhau.

Hình 2.1: Firewall bảo vệ hệ thống mạng.

Hoạt động của một hệ thống Firewall về cơ bản đảm bảo các chức năng sau:

 Ngăn chặn các truy nhập bất hợp pháp từ ngoài vào trong hệ thống cần bảo vệ.

 Hạn chế các truy nhập từ trong hệ thống ra ngoài.

Xây dựng Firewall là một biện pháp khá hữu hiệu, nó cho phép bảo vệ và kiểm soát hầu hết các dịch vụ, do đó được áp dụng phổ biến nhất trong các biện pháp bảo vệ mạng Thông thường, một hệ thống Firewall là một cổng (gateway) giữa mạng nội bộ giao tiếp với mạng bên ngoài và ngược lại Để Firewall làm việc được hiệu quả, tất cả các thông tin được trao đổi từ trong ra ngoài và ngược lại đều phải được kiểm soát bởi Firewall

Những khả năng của Firewall có thể làm đối với một hệ thống mạng bao gồm:

 Firewall đóng vai trò một chốt chặn, mọi dòng thông tin đi vào hay đi ra một mạng nội bộ đều được nó kiểm soát Hoạt động của nó theo các chính sách an toàn đã được cài đặt

 Nhiều dịch vụ mà người sử dụng mong muốn vốn có những chỗ không an toàn. Firewall chỉ cho đi qua sau khi đã kiểm nhận và được phép Firewall có thể cấu hình đa dạng, nhiều mức khác nhau, do đó Firewall có thể bảo đảm thích hợp cho một chính sách an toàn đã chọn.

 Firewall có thể ghi nhận lại các giao tiếp với Internet rất hiệu quả Mọi luồng thông tin vào hay ra mạng nội bộ đều qua Firewall, do đó nó cung cấp một vị trí tốt nhất để tập hợp những thông tin về hệ thống và mạng đã dùng và lạm dụng Ghi nhận điều gì xảy ra trong giao tiếp giữa mạng nội bộ và bên ngoài Những thông tin đó rất quí giá cho những người có trách nhiệm quản lý

 Firewall có thể hạn chế sự đổ vỡ của hệ thống bên trong Nó có thể tách một phần trong mạng nội bộ với phần khác trong mạng nội bộ Do đó hạn chế được những nguy hiểm xảy ra hơn

2.1.3 Những hạn chế của Firewall

Ngoài những khả năng trên thì Firewall có những hạn chế nhất định sau:

 Firewall không thể bảo vệ trước những kẻ phá hoại từ bên trong Đánh cắp dữ liệu, làm hư hỏng phần cứng và phần mềm hay thay đổi chương trình mà không cần đến gần Firewall

 Firewall không thể bảo vệ chống lại những kết nối không qua nó Thí dụ như dịch vụ quay số trực tiếp cho một người sử dụng truy cập bên trong mạng nội bộ, có ý nghĩa như mở thêm một cửa sau cho nó Đây là vấn đề con người chứ không phải vấn đề kỹ thuật.

 Firewall không thể bảo vệ chống lại những mối đe dọa mới phát sinh vì nó không thể tự động bảo vệ trước những mối đe dọa mới phát sinh, do đó khi có những vấn đề mới cần cấu hình lại cho Firewall

 Firewall không thể bảo vệ chống lại virus Firewall hầu hết chỉ xem xét địa chỉ nơi gửi, nơi đến, số cổng của gói tin chứ không xem xét chi tiết phần dữ liệu Chống virus bằng Firewall là vấn đề không khả thi, vì hầu hết các virus được ẩn trong dữ liệu.

Các kỹ thuật của Firewall

Các kỹ thuật hay các thành phần sẽ được tích hợp trên một hệ thống Firewall, chúng là nhưng điểm mấu chốt bảo vệ hệ thống, bảo vệ nguồn tài nguyên của người sử dụng Một Firewall được cài đặt trên một hệ thống mạng có thể được có một hoặc nhiều kỹ thuật được tích hợp trên đó, mỗi một kỹ thuật lại có những lợi thế và bất lợi riêng Việc sử dụng, như thế nào phụ thuộc hoàn cảnh, kinh phí, yêu cầu về độ an toàn của hệ thống v.v

Packet Filtering là một kỹ thuật kiểm soát, định các gói giữa hệ thống trong và hệ thống ngoài nhưng chúng sẽ được thực hiện một cách có chọn lọc Chúng cho phép hay cấm các

Packet đi ra hoặc đi vào dựa vào một chính sách bảo mật đã được thiết lập từ trước bởi người quản trị hoặc được thiết lập bởi một hệ thống IPS Loại router được sử dụng trong Firewall để làm Packet Filtering được xem như là một Screening router.

Hình 2.2: Screening Router sử dụng kỹ thuật Packet Filtering 2.2.1.1 Nguyên lý hoạt động

Các sản phẩm Packet Filtering hiện nay chỉ có thể lọc các Packet dựa trên header của

Packet và thông tin Packet từ interface card nào (mỗi Packet gồm 2 phần: header và data) Tóm lại việc lọc chỉ dựa trên thông tin điều khiển, tức là các thông tin trong header.Với công nghệ hiện nay chưa có khả năng lọc các Packet dựa vào nội dung

Mỗi Packet có một tập các thông tin ở đầu (hay được gọi là header), một số thông tin chính như:

 Địa chỉ IP nơi gửi

 Địa chỉ IP nơi đến

 Giao thức (Protocol) TCP hoặc UDP hoặc ICMP v.v

 Số hiệu cổng (Port) TCP hoặc UDP của nơi gửi

 Số hiệu cổng (Port) TCP hoặc UDP của nơi đến

 Kiểu thông báo của ICMP

Sau đây là một vài ví dụ về cách mà ta có thể sử dụng chương trình của một screening router để chọn lọc và định tuyến cho các gói tin.

Khóa tất cả các kết nối vào hệ thống từ các mạng bên ngoài, trừ những kết nối cho giao thức SMTP (vì thế nên người sử dụng mới có thể nhận được email khi truy nhập vào Mail server của nhà cung cấp dịch vụ).

Chỉ cho phép một số dịch vụ như email hay FTP, nhưng cần thiết phải khóa các dịch vụ mang tính bất trắc cao như dịch vụ TFTP, X Window System, RPC (remote procedure call)

Không cho phép bất kỳ một gói tin nào xuất phát từ mạng microsoft.com được kết nối với mạng trong thì các gói tin xuất phát từ mạng này sẽ không bao giờ đến được mạng trong. Để có thể hiểu được hoạt động của Packet Filtering, ta hãy thử tìm hiểu sự khác nhau cơ bản giữa một router bình thường (ordinary router) và một screening router.

 Một router bình thường hay quan sát vào địa chỉ đích (destination address) của mỗi một gói tin và tìm con đường tốt nhất mà nó có thể biết được để gửi gói tin ấy đến được đích Sự quyết định về việc điều khiển hướng đi của một gói tin là phụ thuộc hoàn toàn vào bản thân điểm đích của gói tin đó Ở đây có 2 khả năng có thể xảy ra: router có thể biết được cách để gửi gói tin đến đích và nó sẽ thực hiện rất tốt, hoặc ngược lại nó không biết cách nào để có thể gửi gói tin đến đích được thì gói tin đó sẽ quay trở lại thông qua giao thức ICMP kèm theo một thông điệp “destination unreachable” tới nguồn của nó.

 Trong khi đó một Screening router lại có một sự khác biệt nhỏ, nó sẽ quan sát gói tin một cách chi tiết Sau đó nó sẽ quyết định xem gói tin này có được gửi đến đích hay không Việc quyết định này hoàn toàn là do chính sách bảo mật của người quản trị mạng đó qui định, một Screening router hoàn toàn có thể thay đổi cấu hình theo mong muốn.

2.2.1.2 Chức năng của Packet Filtering

Dạng đơn giản nhất mà một Filtering router có thể thực hiện là việc lọc các Packet dựa tên địa chỉ Khả năng lọc Packet theo dạng này có thể được dùng để cho phép một số máy nào đó ở bên ngoài có thể trao đổi dữ liệu với một số máy nào đó ở trong mạng cần bảo vệ Với những đặc điểm tính chất trên, một router tích hợp kỹ thuật Packet Filtering có thể thực hiện những công việc sau:

 Tạo ra một vị trí chiến lược tại một điểm và có thể bảo vệ toàn bộ mạng.

 Gửi Packet đến nơi nhận đã biết.

 Xoá Packet mà không thông báo lại nơi gửi.

 Từ chối chuyển tiếp Packet và thông báo lỗi đến người gửi.

 Ghi nhận lại thông tin về Packet

 Bảo vệ được những dạng đánh lừa thông tin trong Packet (Ví dụ: những Packet xuất phát từ Internet (bên ngoài) mà có địa chỉ máy gửi lại là địa chỉ máy ở trong mạng mạng bảo vệ).

Những router phức tạp hơn có thể có thêm các chức năng sau:

 Thay đổi thông tin Packet (chức năng làm NAT)

 Gửi Packet đến nơi nhận khác hơn là nơi nhận đã biết (proxy server, chức năng cân bằng tải)

 Thay đổi quy tắc lọc (ngăn cấm tất cả thông tin từ một nơi đã gửi đến các Packet có hại)

Hiện nay các dịch vụ Internet đều có một số hiệu cổng cho nó (ví dụ trong giao thức TCP cổng 23 sẽ được mở cho dịch vụ kết nối Telnet), do đó các router dễ dàng cho phép hoặc ngăn chặn thông qua số hiệu cổng thích hợp.

Ngoài việc xem thông tin trong header của Packet, router còn có thể kiểm tra dữ liệu trong Packet (hệ thống lọc thông minh) và kiểm tra các Packet có đúng định dạng, đúng kích thước hay không Điều này giúp người sử dụng có thể ngăn chặn được một số sự tấn công từ chối dịch vụ trên các Packet dị dạng

2.2.1.3 Ưu điểm của Packet Filtering Đa số các hệ thống Firewall đều sử dụng bộ lọc Packet Một trong những ưu điểm của phư- ơng pháp dùng bộ lọc Packet là chi phí thấp vì cơ chế lọc Packet đã được bao gồm trong mỗi thiết bị router

Kiến trúc Firewall

Kiến trúc của Firewall được chia ra thành nhiều loại, mỗi loại có những lợi thế và bất lợi riêng Việc thiết lập, cài đặt một kiến trúc Firewall phụ thuộc vào hệ thống mạng, kinh phí, yêu cầu về độ an toàn v.v Một Firewall có thể tuân theo một trong những kiến trúc sau:

Là kiến trúc Firewall đơn giản nhất, nó đơn giản bao gồm một đối tượng hoạt động như một Firewall Nhìn chung điểm mạnh của kiến trúc này là nó cung cấp một điểm, tại đó sẽ tập trung các chính sách bảo mật để bảo vệ hệ thống, chi phí thấp Tuy nhiên đó cũng chính là điểm bất lợi, hệ thống bảo vệ sẽ rất yếu vì không có sự can thiệp theo chiều sâu.

Một ví dụ điển hình cho kiến trúc này là: Một mạng sử dụng Screening Router để bảo vệ hệ thống của mình Đây là một hệ thống có chi phí thấp sử dụng một Router để kết nối với một hệ thống bên ngoài Trên Router này có thể tích hợp một cơ cấu lọc gói tin (Packet Filtering), nó có thể cho phép hoặc từ chối một gói tin thông qua địa chỉ, hoặc một giao thức thông qua số hiệu cổng

Screening router sẽ thích hợp ở những nơi:

 Một mạng đã được bảo vệ ở mức cao hơn.

 Số giao thức được sử dụng là có giới hạn và những giao thức đó là không quá phức tạp, rắc rối.

 Một hệ thống đơn giản và không yêu cầu độ bảo mật cao.

2.3.1.2 Kiến trúc Dual-Homed Host

Firewall kiến trúc kiểu Dual-Homed Host được xây dựng trên máy tính Dual-Homed Host. Một máy tính được gọi là Dual-Homed Host phải có ít nhất hai card mạng nối với ít nhất hai mạng khác nhau và như vậy nó có thể cài đặt router mềm ở giữa các mạng này.

Hình 2.7: Kiến trúc Dual-Homed Host

Khi xây dựng Firewall kiểu Dual-Homed Host cần phải hủy chức năng routing, để mạng bên ngoài Firewall (Internet) có thể giao tiếp với Dual-Homed Host và mạng bên trong Firewall (Internal) cũng có thể giao tiếp với Dual-Homed Host, nhưng hai mạng này không thể giao tiếp trực tiếp với nhau.

Dual-Homed Host cho phép kiểm soát thông tin vào ra ở mức độ rất cao Tuy nhiên nó làm tiêu tốn rất nhiều tài nguyên, vì nó làm việc với từng kết nối chứ không phải lọc các Packet. Dual-Homed Host không thích hợp cho hệ thống trao đổi thông tin nhiều như Packet Filtering

Ngược lại với Dual-Homed Host, Screened Host cung cấp dịch vụ từ một host, host này chỉ được gắn vào mạng nội bộ sử dụng một router riêng biệt Kiến trúc sẽ cung cấp một cơ cấu lọc các Packet, được đặt trong một Screening Router và để xử lý các thao tác riêng không an toàn trong các dịch vụ, người ta cấu trúc thêm Bastion host Bastion host được cài đặt sao cho nó là hệ thống duy nhất thuộc mạng nội bộ chấp nhận các host bên ngoài mở kết nối và chỉ cho phép một số kết nối nhất định.

Hình 2.8: Kiến trúc Screened Host

Mọi hệ thống bên ngoài cố truy xuất mạng nội bộ hoặc các dịch vụ đều phải kết nối với bastion host, như vậy bastion host phải là host có độ an toàn cần được duy trì ở mức cao.

Screened Subnet được mở rộng từ kiến trúc Screened host bằng cách thêm vào một tầng an toàn gọi là mạng ngoại vi (perimeter network), nhằm cô lập mạng nội bộ ra với mạng bên ngoài và cô lập Bastion host bằng cách đặt chúng trên mạng ngoại vi, nhằm tránh sự lây lan khi Bastion host bị tổn thương

Hình 2.9: Kiến trúc Screened Subnet

Kiểu đơn giản nhất của Screened Subnet là có hai Screening router Trong đó một Router kết nối mạng ngoại vi với mạng bên ngoài, một router nằm giữa mạng ngoại vi và mạng nội bộ

Với kiểu kiến trúc này, những kẻ tấn công phải qua đi qua hai router, ngay cả khi bằng cách nào đó chúng tấn công được vào Bastion host, chúng cũng phải qua router thứ 2 mới vào được bên trong Cả 2 router này đều có thể cái đặt Packet Filtering:

 Router ngoài (Exterior Router): có nhiệm vụ bảo vệ mạng ngoại vi và mạng nội bộ từ Internet Trên Router này chỉ cần thiết lập Packet Filtering đặc biệt cần thiết đủ để bảo vệ các Bastion host và Interior Router.

 Router trong (Interior Router): có nhiệm vụ bảo vệ mạng nội bộ từ Internet và mạng ngoại vi, nó có chức năng Packet Filtering và có thể nhằm làm giảm số lượng máy có thể bị tấn công khi Bastion host bị tổn thương.

Ngoài ra có thể cài đặt proxy server trên Bastion host, điều này cho phép các máy tính trong mạng nội bộ truy cập mạng bên ngoài một cách gián tiếp.

Từ các kiến trúc chung đã nêu trên người ta có thể tổ hợp thành các kiểu kiến trúc đa dạng hơn tuy nhiên không phải sự kết hợp nào cũng mang lại kết quả tốt, ngoài ra cũng còn phụ thuộc vào ngân sách và chính sách an toàn của tổ chức

Người ta có thể tổ hợp thành các kiểu kiến trúc sau:

2.3.4.1 Sử dụng nhiều bastion host (Multiple Bastion Hosts)

CƠ CHẾ XÂY DỰNG FIREWALL TRÊN NDIS

Tổng quan về Windows Driver

Hệ điều hành quản lý và làm việc với các thiết bị ngoại vi thông qua một phần mềm chuyên dụng gọi là trình điều khiển (hay driver) Một thiết bị sẽ tương thích với hệ điều hành khi nó có trình điều khiển dành cho hệ điều hành đó

Phần này sẽ tập trung nghiên cứu về kiến trúc và cách thức làm việc của driver Để hiểu được vị trí, vai trò chức năng của nó, cần xem xét các thành phần hệ thống của Windows:

Hình 3.1: Tổng quan về các thành phần hệ thống của Windows

Như sơ đồ trên, một hệ điều hành Windows bao gồm các thành phần trên Kernel-mode và các thành phần trên User-mode.

 User-mode drivers và các ứng dụng có thể sử dụng các thường trình (routine) đã được định nghĩa trong Win32API Các hàm API có thể gọi, can thiệp và sử dụng các thường trình, tài nguyên trên Kernel-mode.

 Các thành phần trên Kernel sẽ cung cấp các thường trình, Kernel-mode driver có thể được sử dụng các thường trình này để hỗ trợ, điều khiển vào/ra, cấu hình, Plug and play, quản lý điện năng, quản lý bộ nhớ v.v

3.1.2 Kiến trúc phân tầng Driver

Hệ điều hành Windows đưa ra một kiến trúc “phân tầng” driver Mọi thiết bị được phục vụ bởi một chuỗi các driver, hay được gọi là “driver stack”

Sơ đồ dưới đây thể hiện một “driver stack” cho một thiết bị nào đó (tuy nhiên trên thực tế, chỉ một số nhỏ driver stack là chứa đầy đủ tất cả các tầng)

Hình 3.2: Kiến trúc phân tấng Driver

Trong sơ đồ trên, phía trên cùng của stack là một Application (ứng dụng) Các ứng dụng này điều khiển các yêu cầu từ người sử dụng và các ứng dụng khác ngoài ra nó gọi các hàm API hoặc các routine có sẵn trong User-mode client driver.

 Một User-mode client driver có thể sử dụng các routine có sẵn hoặc các hàmWIN32 API để thực hiện các yêu cầu từ ứng dụng User-mode client driver thực thi giống như một thư viện liên kết động (DLL) Máy in hỗ trợ các điều khiển có thể thực hiện trên User-mode, tuy nhiên các thiết bị lưu trữ, mạng v.v thì chỉ có thể được hoạt động trên Kernel-mode

 Kernel-mode client driver sẽ định nghĩa các routine để thực hiện các yêu cầu từ

 Một Device class và Miniclass driver là một cặp, nó hỗ trợ hầu hết những đặc tả của thiết bị Miniclass driver điều khiển những hoạt động của các thiết bị đặc biệt Ví dụ: battery class driver hỗ chợ các hoạt động chung của Pin máy tính, trong khi miniclass driver quản lý các thiết bị UPS Các Device class được hỗ trợ bởi Microsoft là chính trong khi các miniclass driver thì được hỗ trợ bởi các nhà sản xuất thiết bị ngoại vi.

 Port driver hỗ trợ cho quá trình vào ra, mọi stack driver cho các thiết bị lưu trữ đều cần đến Port driver Miniport driver điều khiển vào ra hỗ trợ cho port driver Trong phần lớn các thiết bị, Port driver được hỗ trợ bởi hệ điều hành còn miniport driver được hỗ trợ bởi các nhà sản xuất thiết bị ngoại vi.

 Dưới cùng của stack là Hardware bus driver, bus driver có nhiệm vụ phát hiện một thiết bị, nó là một phần của hệ điều hành và người phát triển không cần can thiệp.

3.1.3 Cơ chế làm việc của một driver

Trước khi tìm hiểu một driver làm việc như thế nào ta sẽ tìm hiểu cách thức làm việc của một ứng dụng, ví dụ một chương trình HELLO được viết như sau: int main(int argc, char* argv[])

Giống như chương trình HELLO, một driver cũng có một file thực thi, đó là các file hệ thống (đuôi sys), nó cũng sử dụng các routine, các thư viện liên kết động tại kernel, các lớp driver hoặc cá thư viện hỗ trợ khác Một file driver cũng có các biểu tượng gỡ rối và tài nguyên dữ liệu.

Tuy nhiên một driver không chứa một chương trình chính, thay vào đó nó chứa một tập hợp các thường trình con (subroutine) Những thường trình con này sẽ được hệ thống gọi vào những thời điểm thích hợp để thực hiện các tác vụ.

Người sử dụng cắm thiết bị vào máy, hệ thống sẽ tải driver đó vào bộ nhớ ảo và gọi routine DriverEntry Routine này khởi tạo các cấu trúc dữ liệu Driver khác nhau và chuẩn bị môi trường cho tất cả những thành phần Driver còn lại.Tiếp đó trình quản lý các thiết bị “Plug and Play” sẽ gọi routine AddDevice để đăng ký thiết bị với hệ thống.

Khi hệ điều hành hoặc ứng dụng muốn điều khiển thiết bị, hoặc thực hiện các yêu cầu vào ra, nó gửi yêu cầu, hệ thống sẽ tạo ra các IRP và chuyển xuống dưới Các subroutine phía dưới sẽ thực hiện các yêu cầu và trả giá trị về cho hệ điều hành hoặc ứng dụng.

Network Driver

Hệ điều hành Windows hỗ trợ một số loại Kernel-mode network driver Phần dưới đây nêu ra cấu trúc của Network driver, cách viết và sử dụng chúng.

Microsoft® Windows 2000 và các phiên bản sau nó hỗ trợ 4 loại Kernel-mode network driver, bao gồm:

 Miniport drivers Là driver dùng đển quản lý NIC card và hỗ trợ giao tiếp với các driver ở mức cao hơn.

 Intermediate drivers: Giao tiếp với protocol driver là driver ở mức trên và miniport driver ở mức dưới

 Protocol drivers: một là một upper-level protocol driver thực thi một giao diện TDI, hoặc có một giao diện đặc tả ứng dụng Biên bên trên của nó cung cấp các dịch vụ cho người sử dụng mạng Ở phía biên bên dưới, protocol driver cung cấp các giao tiếp để chuyển và nhận các gói tin tới từ driver kế tiếp ở phía dưới.

 Filter-hook driver: Một filter hook driver được sử dụng để lọc các Packet Loại driver này mở rộng của trình điều khiển IP filter, là cơ chế lọc IP được cung cấp bởi hệ điều hành.

Thư viện NDIS (Network Driver Interface Specification) trừu tượng hoá các thiết bị phần cứng của mạng Nó đưa ra các đặc tả cho việc giao tiếp giữa các tầng driver NDIS cũng lưu trữ các thông tin, trạng thái, các tham số, trỏ hàm và các thông số hệ thống khác NDIS cung cấp các servive để bảo trì, vận hành và phát triển miniport driver và protocol driver.

Hình vẽ sau thể hiện sơ đồ tổng quan của NDIS:

Hình 3.3: Sơ đồ tổng quan của NDIS

Từ sơ đồ trên, có thể thấy NDIS hỗ trợ các loại network driver sau:

Một NDIS miniport driver (hay có thể gọi tắt là miniport driver) là một phần của NDIS, nó có 2 chức năng chính:

 Quản lý card mạng, gửi và nhận các dữ liệu qua NIC

 Giao tiếp với các driver ở phía trên là intermediate driver và protocol driver

Hình 3.4: Miniport Driver trong NDIS

Hoạt động của Miniport driver được hỗ trợ bởi NDIS, thư viện NDIS hỗ trợ các hàm

NdisXxx Miniport sẽ sử dụng các hàm này và xuất ra các hàm MiniportXxx, các hàm này lại được NDIS gọi với tư cách là một driver ở phía trên như Protocol driver hay Intermediate driver.

Khi một transport driver có một Packet muốn truyền đi nó sẽ gọi một hàm NdisXxx nào đó. Hàm NdisXxx này sẽ gọi hàm MiniportXxx đã đươc định nghĩa sẵn để chuyển các gói tin đó xuống miniport Tại đây miniport driver sẽ chuyển các gói tin này tới NIC bằng cách gọi một hàm NdisXxx tương ứng trong thư viện NDIS.

Tương tự khi NIC nhận được một gói tin địa chỉ và muốn chuyển nó lên trên Nó có thể sẽ gửi một ngắt cứng, để yêu cầu và gói tin này sẽ được chuyển sang quyền quản lý của NDIS. Khi đó NDIS sẽ thông báo cho miniport driver bằng cách gọi các hàm MiniportXxx, hàm này sẽ nhận gói tin tới

Các hàm MiniportXxx có thể tham khảo trong bộ DDK của Microsoft

Có thể lấy ví dụ một hàm MiniportInitialize:

Hàm này được dùng để thiết lập một NIC hoặc một virtual NIC để phục vụ cho quá trình vào và ra mạng, yêu cầu tất cả các tài nguyên cần thiết tới NIC là có trong registry.

Trong các hàm MiniportXxx trong bộ DDK thì bắt buộc phải có các hàm sau:

Các hàm MiniportXxx Chức năng

MiniportInitialize: Để khởi tạo, thiết lập một NIC hay một virtual NIC

MiniportQueryInformation Dùng để lấy thông tin, khả năng trạng thái v.v

MiniportTransferData: Dùng để truyền và nhận các Packet

MiniportSetInformation Thay đổi trạng thái, thông tin v.v

MiniportShutdown Dùng với mục đích phục hồi, trong trường hợp hệ thống bị lỗi

Bảng các hàm MiniportXxx bắt buộc có khi thiết lập Miniport

NDIS miniport driver và các upper-layer driver sử dụng chung thư viện NDIS để giao tiếp với nhau bằng các hàm NdisXxx Miniport cũng sử dụng các hàm NdisXxx khi chúng cần nguồn tài nguyên của hệ thống như là spin lock hay bộ nhớ buffer Các hàm NdisXxx này sẽ phục vụ được các request của miniport driver.

Thư viện Ndis được đóng gói trong Ndis.sys, nó tương tự như một thư viện liên kết động. Các hàm trong thư viện được khai báo trong Ndis.h

NDIS Protocol driver là driver mức cao nhất trong NDIS Protocol driver phân vùng tạo Packet, copy dữ liệu từ một ứng dụng cần gửi vào các Packet và gửi các Packet này tới driver ở mức dưới hơn Một transport protocol driver truyền nhận dữ liệu tới một ứng dụng khác thích hợp.

Tại cạnh phía dưới của nó, một protocol driver giao tiếp với IM driver và miniport driver. Protocol driver gọi các hàm NdisXxx để gửi các Packet, đọc và thiết lập thông tin cho driver ở phía dưới và sử dụng các dịch vụ của hệ điều hành Một protocol có các hàm ProtocolXxx, NDIS sẽ sử dụng các hàm Protocol Xxx này để giao tiếp với các driver ở mức dưới, các hàm ProtocolXxx có thể tham khảo thêm trong bộ help DDK của Microsoft.

Tại cạnh phía trên, một transport protocol driver có các giao diện riêng với các driver ở mức cao hơn trong protocol stack

Khi thiết lập Protocol driver thì các hàm ProtocolXxx bắt buộc phải có là:

Các hàm ProtocolXxx Chức năng

Hàm này được NDIS gọi khi yêu cầu protocol thiết lập các nối kết tới một miniport hay một virtual miniport.

Hàm này được NDIS gọi khi đóng một kết nối tới miniport hay một virtual miniport và phân chia lại tài nguyên mạng

ProtocolOpenAdapterComplete Hàm này được dùng để hoàn tất thao tác kết nối, nó được sử dụng sau hàm NdisOpenAdapter

Hàm này được sử dụng để hoàn tất thao tác đóng kết nối, nó được sử dụng sau hàm NdisCloseAdapter

ProtocolReceive NDIS sẽ gọi hàm này khi nhận được các gói tin, hàm này sẽ sử dụng hàm disTransFerData của thư viện Ndis để nhận gói tin.

Bảng các hàm ProtocolXxx bắt buộc có khi thiết lập Protocol

NDIS Intermediate driver được tích hợp từ phiên bản Ndis 4.0 Nó nằm giữa một driver ở mức trên là protocol driver và một miniport driver Một số ứng dụng cần tích hợp intermediate driver như:

 Lọc dữ liệu, thiết lập các cơ chế bảo mật mạng.

 Chuyển đổi phương tiện (media) giữa các giao thức và miniport, nó quản lý các phương tiện không được hỗ trợ của trình điều khiển truyền tải.

 Giải quyết vấn đề cân bằng tải.

 Thống kê và kiểm soát các thông tin mạng.

Hình 3.5: Tầng NDIS Intermediate Driver Được tích hợp vào phía bên trên của Miniport Driver

Tạo ra một “Virtual miniport” hay “Virtual Adapter” Virtual miniport này không điều khiển thiết bị vật lý một cách trực tiếp mà nó thông qua miniport driver.

Có 2 loại NDIS IM driver

Cơ chế xây dựng Firewall trên NDIS Intermediate driver

Để nghiên cứu cách tích hợp một Firewall trên IM driver, trước tiên ta sẽ nghiên cứu kiến trúc của nó, cách cài đặt một NDIS IM trong stack NDIS driver:

3.3.1 Mối quan hệ giữa Protocol, Miniport và Intermediate driver

Miniport driver và Protocol driver giao tiếp với nhau bằng một chuẩn giao diện NDIS. NDIS intermediate driver gồm có một giao diện protocol driver tại cạnh dưới của nó và một giao diện miniport driver tại cạnh phía trên

 Giao diện protocol driver của Intermediate driver cho phép nó có thể giao tiếp với miniport driver ở phía dưới

 Giao diện miniport driver của Intermediate driver này cho phép nó có thể giao tiếp với protocol driver ở phía trên

Mối quan hệ giữa miniport driver, protocol driver, intermediate driver và NDIS được thể hiện trong hình vẽ dưới đây:

Hình 3.6: Mối quan hệ giữa NDIS, Miniport Driver và Protocol Driver

Một intermediate driver có thể được gọi là một virtual miniport Một virtual miniport không thể điều khiển vào ra cho các thiết bị vật lý Đây là một tầng trung gian, thông qua miniport driver để giao tiếp với NIC Nó cũng thông qua Protocol driver để giao tiếp với các giao thức.

Kết nối giữa Intermediate driver và các driver khác (trên và dưới) được gọi là các kết nối ngoài NDIS sẽ điều khiển các kết nối đó Phía bên trên của nó là một protocol driver, hoặc cũng có thể là một intermediate driver khác Phía dưới cũng tương tự thường là một miniport driver, nhưng cũng có thể là một intermediate driver khác.

Tuy nhiên cạnh dưới của virtual miniport và cạnh trên của intermediate driver protocol không dùng các kết nối ngoài Thay vào đó, nó sử dụng các kết nối trong, kết nối này không được điều khiển bởi NDIS: Hình vẽ sau thể hiện mối quan hệ kết nối trong intermediate driver:

Mô hình kết nối của NDIS Intermediate driver:

Hình 3.7: Kết nối trong và kết nối ngoài trong NDIS IM driver

Với cấu trúc như trên, nếu như ngắt kết nối giữa NDIS protocol driver và NIC driver và tạo ra sự kết nối giữa 3 thành phần kể trên thì tại vị trí này một IM Driver không nhưng có thể xem các gói dữ liệu được gửi và nhận bởi các giao thức mà còn có thể thao tác, điều khiển, thay đổi các gói tin này, cụ thể là:

 Cho phép hoặc từ chối một gói tin đi qua (Trường hợp Firewall)

 Sắp xếp hoặc trì hoãn.

 Định tuyến các gói tin. Đó là cơ chế để xây dựng một Firewall trên NDIS, cụ thể các bước xây dựng xin phép được trình bày một cách rõ ràng trong phần dưới đây:

3.3.2 Xây dựng một NDIS Intermediate Driver

Giống như các driver khác thì cũng phải sử dụng một hàm DriverEntry để đăng ký driver theo đúng quy cách, trong hàm này ta sử dụng:

1 - NdisMInitializeWrapper: Đăng ký khởi tạo miniport và lấy handle của Ndis

2 - NdisIMRegisterLayeredMiniport: để đăng ký các hàm MiniportXxx (là những hàm mà Ndis sẽ gọi để giao tiếp với miniport ví dụ MiniportInitialize, MiniportQueryInformation v.v )

3 - NdisRegisterProtocol: để đăng ký các hàm ProtocolXxx (dùng để giao tiếp với protocol ví dụ như: OpenAdapterCompleteHandler, ReceiveCompleteHandler v.v…)

4 - NdisIMAssociateMiniport: để thông báo cho NDIS biết về sự kết hợp của

Ngoài ra còn sử dụng NdisMRegisterUnloadHandler để đăng ký một unload handler và unload handler này sẽ được gọi khi unload một IM Driver

3.3.2.1 Lấy Handle của NDIS wrap

Một Intermediate driver hay một driver khác của NIC bắt buộc phải sử dụng hàm

NdisMInitializeWrapper trước khi nó gọi bất kỳ một hàm NdisXxx nào Thông thường nó được gọi đầu tiên và trong hàm DriverEntry nó thông báo cho NDIS rằng sẽ đăng ký một miniport driver Hàm NdisMInitializeWrapper trả về handle của Ndis wrap

3.3.2.2 Đăng ký một IM Miniport driver:

Bằng cách sử dụng hàm NdisIMRegisterLayeredMiniport

1 Khởi tạo NDIS_MINIPORT_CHARACTERISTICS

Sử dụng hàm NdisZeroMemory() để khởi tạo

NdisZeroMemory(&MChars, sizeof(NDIS_MINIPORT_CHARACTERISTICS));

2 Thiết lập các MiniportXxx Function:

MChars.MajorNdisVersion = PASSTHRU_MAJOR_NDIS_VERSION;

MChars.MinorNdisVersion = PASSTHRU_MINOR_NDIS_VERSION;

Các miniport driver sử dụng các hàm này để liên lạc trong NDIS với các layer phía bên trên. NDIS sẽ gọi các hàm này khi liên lạc, NDIS sẽ gọi với tư cách của protocol driver

Cần chú ý ở đây việc khởi tạo: MChars.InitializeHandler = MPInitialize;

Khởi tạo bằng cách gọi hàm MPInitialize gồm có các bước sau đây:

 Lấy device context pAdapt = NdisIMGetDeviceContext(MiniportAdapterHandle);

 Lưu miniport handle pAdapt->MiniportHandle = MiniportAdapterHandle;

 Thiết lập các thuộc tính

NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT|

NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT|

NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND,

 Thêm Adapt này vào danh sách adapter (pAdaptList – sử dụng một danh sách liên kết để chứa)

NdisAcquireSpinLock(&GlobalLock); pAdapt->Next = pAdaptList; pAdaptList = pAdapt;

 Tạo các IOCTL control code:

DispatchTable[IRP_MJ_CREATE] = DevOpen;

DispatchTable[IRP_MJ_CLEANUP] = DevCleanup;

DispatchTable[IRP_MJ_CLOSE] = DevClose;

DispatchTable[IRP_MJ_DEVICE_CONTROL] = DevIoControl;

3 và cuối cùng là đăng ký Miniport này

Khi đăng ký các hàm MiniportXxx điều rất quan trọng là cần đăng ký một hàm để có thể nhận các Packet từ layer phía trên xử lý và gửi các Packet đó xuống layer phía dưới, đây sẽ là điểm mấu chốt quan trọng Mọi gói tin muốn chuyển lên trên đều phải qua hàm này Tại đây ta sẽ thiết lập cơ chế bảo mật, thực hiện các hàm lọc gói tin, bảo đảm những gói tin hợp lệ mới cho đi qua, Drop hoặc Forward những gói tin không hợp lệ v.v

Lúc đăng ký IM miniport driver ta cần khai báo một hàm Send Packet sau:

Hàm MPSendPackets là một hàm bắt buộc trong NDIS Miniport, hàm này sẽ quyết định có nhận một Packet hay không, nếu có thể nó sẽ chuyển gói tin đó xuống tầng phía dưới.

PtReceivePacket chạy ở mức ngắt IRQL = DISPATCH_LEVEL

3.3.2.3 Đăng ký một IM protocol driver

Bằng cách sử dụng hàm NdisRegisterProtocol, cụ thể các bước như sau:

1 Khởi tạo NDIS_MINIPORT_CHARACTERISTICS

Sử dụng hàm NdisZeroMemory() để khởi tạo

NdisZeroMemory(&MChars, sizeof(NDIS_MINIPORT_CHARACTERISTICS));

2 Thiết lập các MiniportXxx Function:

PChars.MajorNdisVersion = PASSTHRU_PROT_MAJOR_NDIS_VERSION;

PChars.MinorNdisVersion = PASSTHRU_PROT_MINOR_NDIS_VERSION;

NdisInitUnicodeString(&Name, L"Passthru"); // Protocol name

&PChars, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));

Cần chú ý ở đây là hàm PtBindAdapter, đây là hàm mà NDIS dùng để yêu cầu driver kết nối với một miniport hay một virtual miniport ở phía dưới

Khi NIC là available, NDIS sẽ gọi hàm ProtocolBindAdapter để kết nối các giao thức với NIC, khi remove một NIC thì NDIS sẽ gọi hàm ProtocolUnbindAdapter để hủy mối quan hệ với nó:

DeviceName ở đây có thể là NIC hoặc một miniport của NIC hoặc một virtual miniport.

NDIS sẽ chuyển một handle trong biến BindContext để mô tả adapter context cho việc kết nối SystemSpecific1 là đường dẫn registry, chứa thông tin đặc tả về adapter Một protocol sẽ gọi hàm NdisCloseAdapter từ hàm ProtocolUnbindAdapter để hủy kết nối với miniport driver

Khi đăng ký các hàm ProtocolXxx điều rất quan trọng là cần đăng ký một hàm để có thể nhận các Packet từ layer phía dưới xử lý và chuyển nó lên layer phía trên, đây sẽ là điểm mấu chốt quan trọng, mọi gói tin muốn chuyển lên trên đều phải qua hàm này Tại đây ta sẽ thiết lập cơ chế bảo mật, thực hiện các hàm lọc gói tin, bảo đảm những gói tin hợp lệ mới cho đi qua, Drop hoặc Forward những gói tin không hợp lệ v.v

Lúc đăng ký IM protocol driver ta cần khai báo một hàm Receive Packet sau:

Hàm PtReceivePacket là một hàm bắt buộc trong NDIS protocol, hàm này sẽ quyết định có nhận một Packet hay không, nếu được nó sẽ chuyển gói tin đó lên tầng phía trên.

PtReceivePacket chạy ở mức ngắt IRQL = DISPATCH_LEVEL

3.3.2.4 Kết nối miniport và protocol

THIẾT KẾ, XÂY DỰNG, CÀI ĐẶT VÀ KIỂM THỬ HỆ THỐNG NDIS

Phân tích thiết kế tổng thể

Mục tiêu hướng tới là xây dựng một chốt chặn Firewall đặt tại NDIS intermediate driver để kiểm soát lượng thông tin đi ra và đi vào mạng, với cơ sở đó hệ thống được xây dựng trên mô hình sau đây:

Hình 4.1: Chốt chặn IM NDIS Firewall kiểm soát thông tin đi ra vào mạng

4.1.1 Đánh giá các hệ thống hiện tại

Các hệ thống Firewall phần lớn là các sản phẩm thương mại như Symantec thì giá cả để mua được bộ các công cụ bảo mật của họ thường là tương đối cao, không phù hợp với điều kiện kinh tế của người dùng tại Việt Nam Những phần mềm mã nguồn mở thường có nhiều lỗi, phức tạp trong việc thực thi.

Xét về cơ chế hoạt động của các hệ thống Firewall trước đây và chỉ xét trên Windows thì việc xây dựng Firewall có thể được tích hợp trên nhiều thành phần hệ thống khác nhau,nhiều layer khác nhau trong kiến trúc mạng như sau: (theo www.ntndis.com)

 Winsock Layered Service Provider (LSP).

Tuy nhiên các sản phẩm hiện nay chủ yếu hoạt động trên User-mode hoặc TDI Với hệ thống mới hoạt động trên NDIS sẽ thiết lập một Firewall đặt sâu xuống layer phía thấp, vì vậy đảm bảo an toàn và độ tin cậy cao hơn.

Qua đó chương trình mới xây dựng - NDIS-Firewall là một công cụ bảo mật hỗ trợ cho người dùng trong mạng Các chức năng chính của chương trình gồm có:

 Bắt gói tin, phân tích gói tin, kiểm soát thông tin đi vào và đi ra hệ thống mạng.

 Chặn gói tin tại NDIS Intermediate driver chặn gói tin dựa trên địa chỉ IP, địa chỉ cổng và chặn giao thức.

 Xây dựng Môđune giúp người dùng thiết lập các chính sách bảo mật, phụ thuộc vào yêu cầu và mục đích.

4.1.2 Phát triển một driver base của Microsoft

Driver của hệ thống mới xây dựng được phát triển từ driver PassThru của Microsoft. PassThru là một ví dụ về Network driver trong bộ DDK của Microsoft.

Các Môđun đã có sẵn trong PassThru bao gồm:

 Tạo ra một driver layer ở giữa, kết nối Miniport và Protocol

 Packet stacking: Cho phép một IM driver bắt các gói tin đi qua protocol và miniport.

 Drop Packet: PassThru driver trong ví dụ của Microsoft cho phép hủy bỏ tất cả các gói tin đi từ miniport tới protocol và ngược lại, tuy nhiên không cho phép hoạt động theo các luật định trước.

Từ các Môđune có sẵn của PassThru, xây dựng ra một Firewall, một chốt chặn gói tin đặt ngay trên card mạng, kiểm soát, đảm bảo an ninh cho hệ thống mạng cần bảo vệ.

4.1.3 Nguyên lý hoạt động của hệ thống mới xây dựng

Khi nói đến việc lưu thông dữ liệu giữa các mạng với nhau thông qua Firewall thì điều đó có nghĩa rằng Firewall hoạt động chặt chẽ với giao thức TCI/IP Vì giao thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các ứng dụng trên mạng, hay nói chính xác hơn là các dịch vụ chạy trên các giao thức (Telnet, SMTP, DNS, SMNP, NFS ) thành các gói dữ liệu (data pakets) rồi gán cho các paket này những địa chỉ để có thể nhận dạng, tái lập lại ở đích cần gửi đến, do đó các loại Firewall cũng liên quan rất nhiều đến các Packet và những con số địa chỉ của chúng.

Bộ lọc Packet cho phép hay từ chối mỗi Packet mà nó nhận được, nó kiểm tra toàn bộ đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thoả mãn một trong số các luật lệ của lọc Packet hay không Các luật lệ lọc Packet này là dựa trên các thông tin ở đầu mỗi Packet. Trong chương trình này quy tắc lọc dựa trên 4 trường:

Các trường này thuộc phần TCP Header và IP Header (Cấu trúc của TCP Header và IP Header đã được nói rõ trong phần III của đồ án) Nếu luật lệ lọc Packet được thỏa mãn thì Packet được chuyển qua Firewall Nếu không Packet sẽ bị bỏ đi Nhờ vậy mà Firewall có thể ngăn cản được các kết nối vào các máy chủ hoặc mạng nào đó được xác định hoặc khoá việc truy cập vào hệ thống mạng nội bộ từ những địa chỉ không cho phép Hơn nữa, việc kiểm soát các cổng làm cho Firewall có khả năng chỉ cho phép một số loại kết nối nhất định vào các loại máy chủ nào đó, hoặc chỉ có những dịch vụ nào đó (Telnet, SMTP, FTP ) được phép mới được sử dụng trên hệ thống mạng cục bộ.

4.1.4 Cơ chế chặn gói tin

Cơ chế chặn gói tin của hệ thống mới xây dựng là hoạt động trên tầng NDIS, tầng NDIS là một tầng trung chuyển, nó hoạt động ở tầng vật lý, datalink và network

Trong NDIS, ta xây dựng một layer driver Layer driver là một tầng trung chuyển đặt tại datalink, gọi là NDIS intermediate driver NDIS Intermediate driver là một layer mới được Microsoft đưa vào NDIS từ phiên bản NDIS 4.0 tức là từ Windows 2000 Nó thực chất là 2 lớp driver, 2 lớp driver này sẽ quản lý việc gửi và nhận gói tin đi từ card mạng lên các giao thức phía trên Tại đây có các tiến trình xử lý gói tin nhận và gói tin gửi Trong các tiến trình này ta sẽ thiết lập cơ chế đọc và filter Packet Đế thiết lập các luật ta sẽ xây dựng một chương trình trên ứng dụng Windows Chương trình này sẽ gửi các luật xuống phía kernel thông qua cơ chế vào ra IObuffer.

4.1.5 Các công cụ được sử dụng để xây dựng chương trình

Với mục tiêu là xây dựng một Firewall cho hệ thống Windows, hệ điều hành được sử dụng là hệ điều hành Windows, đây là một hệ điều hành phổ biến nhất hiện nay, là hệ điều hành mạng với nhiều chương trình nguồn và các ứng dụng mạng v.v Các công cụ được sử dụng để phát triển đề tài gồm có:

 Windows Driver Development Kit: Công cụ để phát triển Driver của Microsoft.

 Compuware DriverStudio: Công cụ Debug Driver của Compuware.

 Microsoft Visual C++: Công cụ lập trình của Microsoft.

 Một số Môđune sử dụng thư viện WINPCAP.

Về giao diện chương trình có sử dụng bộ ICON của hệ điều hành MAC Các công cụ trên sẽ được giới thiệu chi tiết ở phần dưới đây:

The Microsoft Windows Driver Development Kit (DDK) cung cấp một môi trường phát triển để tạo các Driver cho thiết bị hoạt động trên hệ điều hành Windows DDK cung cấp các công cụ, thư viện, các hàm Driver đặc biệt được sử dụng để phát triển các Driver chế độ Kernel.

Thêm vào đó, để phát triển Driver đòi hỏi phải kết hợp thêm Microsoft Visual C++ 5.x hoặc 6.x, Professional hoặc Enterprise edition Đối với môi trường phát triển Driver trên Windows thì phần mềm DDK là phổ biến nhất và được nhiều nhà lập trình Driver lựa chọn. Tuy nhiên để viết được một Driver tốt thì cần thiết phải hiểu rõ không những về thiết bị cần viết Driver mà còn cả hệ điều hành mà Driver đó chạy.

Phân tích và thiết kế chương trình

Ta có biểu đồ phân cấp chức năng của chương trình như sau:

Hình 4.2: Biểu đồ phân cấp chức năng hệ thống NDIS-Firewall

Qua biểu đồ phân cấp chức năng ta thấy chương trình gồm có bốn mô đun là:

1 Xử lý gói tin: mô đun này có nhiệm vụ bắt các gói tin chạy qua cạc mạng, phân tích nó và lưu một số thông tin vào cơ sở dữ liệu.

2 Packet Filter: Chặn gói tin dựa vào địa chỉ IP, địa chỉ cổng, giao thức được sử dụng.

Hoạt động dựa trên bộ luật được thiết lập.

3 Thiết lập luật: Thiết lập các chính sách bảo mật cho hệ thống, tạo giao diện cho người sử dụng bao gồm các thao tác thêm xóa sửa tập luật, kiểm tra tính hợ lệ của luật, ngoài ra có mô đun chạy ngầm nhằm gửi tập luật xuống driver phía dưới.

4 Nhật ký: Báo cáo thống kê, tổng kết v.v

Lược đồ cấu trúc chương trình:

Hình 4.3: Lược đồ cấu trúc chương trình

4.2.1 Chức năng thiết lập tập luật

Sơ đồ khối hoạt động của chức năng thiết lập tập luật như sau:

Hình 4.3: Sơ đồ khối chức năng thiết lập tập luật

(1) Môđun tạo tập luật bởi người sử dụng hay một hệ thống IPS nào đó Chức năng thêm luật được người sử dụng thông qua một chương trình ứng dụng giao diện đồ họa Hoặc thiết đầu vào của hệ thống filter chính là đầu ra của một hệ thống phát hiện xâm nhập - IPS, khi đó dữ liệu được đọc từ File xuất của hệ thống IPS.

Thiết lập định dạng tập luật:

Bảng Mặc định trong cơ chế thiết lập luật:

Trường Giá trị Hành động

0.0.0.0 Chặn tất cả địa chỉ

0 Chặn tất cả giao thức

0 Chặn tất cả cổng nguồn

Bảng mặc định cơ chế thiết lập luật

Luật chặn theo địa chỉ: chặn theo địa chỉ IP không quan tâm tới giá trị cổng và giao thức sử dụng, thiết lập luật:

Luật chặn theo giao thức: chặn theo giao thức sử dụng, thiết lập luật:

Luật chặn theo cổng: chặn theo cổng, đầu vào do người nhập hoặc do một hệ thống PortScan, thiết lập luật:

Luật kết hợp: kết hợp các luật chặn trên, có thể tạo ra các bộ luật khác nhau tùy theo từng trường hợp, thiết lập luật:

(2) Môđun kiểm tra luật: Đảm bảo sự chính xác luật theo định đúng định dạng dạng, để có gửi nó tới driver phía dưới kernel:

(3) Môđun sắp xếp luật (để sử dụng cho giải thuật tìm kiêm nhị phân dưới Kernel), ở đây sử dụng giải thuật Quick Sort, trong chương trình sử dụng hàm qsort() của thư viện C++.

Trước tiên là lấy điều khiển driver.

Với PassThru là tên driver, sau khi đã khởi tạo, truy vấn các kết nối từ driver, thì có thể gửi thiết lập các luật Firewall.

(5) Môđun gửi luật tới driver, sơ đồ hoạt động:

Chức năng gửi luật tới Passthu driver, đầu vào: Tên Adapter và mảng chứa tập luật:

4.2.2 Chức năng xử lý gói tin

Chức năng quản lý gói tin được lập trình sử dụng thư viện WinPcap, chức năng này cho phép người sử dụng kiểm tra thông tin đi ra đi vào mạng, giúp người quản trị mạng trong công việc phân tích lưu lượng và gỡ rối mạng Đồng thời kiểm tra sự đúng đắn trong quá trình hoạt động của Firewall, việc phân tích gói tin dựa hoàn toàn vào phần header, bao gồm

IP Header và TCP header, cấu trúc IP Header và TCP Header được trình bày trong chương

3, mục 3.3.3 “Quản lý, lọc Packet trong NDIS Intermediate Driver"

Sơ đồ hoạt động chức năng của chức năng xử lý gói tin:

Hình 4.4: Sơ đồ hoạt động chức năng xử lý gói tin Đọc thông tin Header, bao gồm các giá trị Source Address, Destination address, Source port, Destination port và Protocol Trong cấu trúc gói tin:

Ta có bảng giá trị đọc tương ứng, số byte và offset trong gói tin:

Giá trị cần đọc Offset Số byte

Bảng thông tin đọc Packet

4.2.3 Chức năng lọc gói tin

Chức năng Packet Filter hoạt động trên Kernel Đầu vào là tập luật và Packet header, đầu ra là giá trị trả về cho phép gói tin đi qua hay bị drop trước khi đi lên các giao thức, cách thức hoạt động của nó đã được trình bày trong chương 3, phần 3.1.2 “Quản lý lọc Packet trong NDIS Intermediate driver”.

Sơ đồ khối hoạt động:

Hình 4.5: Sơ đồ hoạt động chức năng chặn gói tin Ở đây ta chỉ phân tích chức năng tìm kiếm so sánh luật Chức năng này được sử dụng khi không sử dụng các luật kết hợp, đảm bảo nhanh tốc độ tìm kiếm.

Chức năng tìm kiếm gồm 2 phần:

 Sử dụng giải thuật Quick sort sắp xếp các luật theo thứ tự tăng dần của địa chỉ IP hoặc địa chỉ cổng Ở đây ta sử dụng hàm qsort() có sẵn trong thư viện.

 Sử dụng giải thuật tìm kiếm nhị phân (Binary search) để tìm địa chỉ gói tin nhận được có trong tập luật không Sử dụng cây tìm kiếm nhị phân: Trong cây tìm kiếm nhị phân các nút con phía bên trái nhỏ hơn các nút con phía bên phải và nút cha, nút con bên phải lớn hơn nút con bên trái và nút cha:

Hình 4.6: Cây nhị phân tìm kiếm

Thuật toán tìm kiếm cây nhị phân như sau:

 Gốc là điểm tìm kiếm bắt đầu.

 Dữ liệu cây nhị phân được so sánh với dữ liệu cần tìm.

 Nếu dữ liệu cây nhị phân bằng dữ liệu cần tìm, việc tìm kiếm thành công.

 Nếu dữ liệu cây nhị phân lớn hơn dữ liệu cần tìm thì các nút bên trái cây nhị phân được tìm và so sánh.

 Nếu dữ liệu cây nhị phân nhỏ hơn dữ liệu cần tìm thì các nút bên phải trái cây nhị phân được tìm và so sánh.

 Nếu không tìm thấy nút nào việc tìm kiếm là không thành công.

Triển khai và đánh giá kết quả chương trình

Sau khi đã thiết kế xong chương trình, giai đoạn tiếp theo là triển khai và đánh giá kết quả, trước hết là quá trình cài đặt, quá trình cài đặt bao gồm 2 giai đoạn:

 Kiểm thử đánh giá kết quả chương trình.

Các bước thực hiện như sau:

 Chọn Properties trong biểu tượng Network connection

Hình 4.7: Cài đặt PassThru Driver (1)

 Tìm tới thư mục chứa driver

Hình 4.8: Cài đặt PassThru Driver (2)

 Bấm Open, tiếp tục bỏ qua các Warning của Windows để hoàn tất sự cài đặt.

Sau khi hoàn tất PassThru driver sẽ hoạt động trên Windows như một Services và trên Kernel như một Adapter.

Hình 4.9: Cài đặt PassThru Driver (3)

4.3.2 Cài đặt ứng dụng trên Usermode - Sản phẩm NDIS-Firewall

NDIS-Firewall đã được trình bày ở trên, chỉ là sản phẩm phụ trợ cho Firewall đặt phía dưới, để gửi các luật người sử dụng xuống, để có thể gửi xuống đúng cần cấu hình, chọn Adapter nhận luật:

Giao diện chức năng thiết lập luật trên User - mode:

4.3.3 Kiểm thử chương trình Điều kiện kiểm thử:

 Máy tính cấu hình: Dual core, 1,6 GhZ, RAM 1GB.

 Hệ điều hành sử dụng: Windows XP services pack 2.

 Trình duyệt: Internet Explorer version 6.

 Đánh giá trạng thái bảo mật: Thấp.

Chức năng xử lý gói tin, kiểm soát lưu lượng mạng: Các phần mềm được sử dụng để so sánh gồm có:

 ShowTraf: Phần mềm kiểm soát lưu lượng mạng, sử dụng thư viện WINPCAP, hoạt động cùng trên cùng một tầng với hệ thống đang xây dựng.

 IPMON: Phần mềm kiểm soát lưu lượng, sử dụng WinSock, hoạt động ở tầng trên với hệ thống đang xây dựng.

Kết quả so sánh giữa NDIS-Firewall và IPMON:

IPMON: hiển thị 4 gói ICMP nhận được.

NDIS-Firewall: hiển thị 4 gói ICMP gửi đi và 4 gói ICMP nhận được

Duyệt Web site www.microsoft.com

IPMON: nhận được: 75 gói sử dụng giao thức TCP, không bắt gói tin TCP gửi đi, gửi đi 11 gói sử dụng giao thức UDP

NDIS-Firewall: Nhận được 75, gửi 30 gói sử dụng giao thức TCP, gửi đi 11 gói sử dụng giao thức UDP

Download tập tin kích thước 66.73KB

Sử dụng chương trình download IDM

IPMON: Nhận 54 gói sử dụng giao thức TCP và 3 gói không rõ định dạng.

NDIS-Firewall: Gửi 13 gói sử dụng giao thức TCP, nhận 51 gói sử dụng giao thức TCP

Chat (Yahoo) gửi- nhận 4 message nội dung như nhau

Kết quả giống nhau về các gói tin nhận, tuy nhiên IP MON không hiển thị gói tin gửi đi NDIS-Firewall hiển thị đầy đủ.

Bảng kiểm thử: So sánhchức năng xử lý gói tin giữa NDIS-Firewall và IPMON

Kết quả so sánh giữa NDIS-Firewall và ShowTraf:

Hành động kiểm thử NDIS-Firewall và ShowTraf

Giống nhau: Hiển thị 4 gói ICMP gửi đi và 4 gói

Duyệt Web site www.microsoft.com

Giống nhau: Nhận 72, gửi 30 gói sử dụng giao thức TCP, gửi đi 11 gói sử dụng giao thức UDP

Download tập tin kích thước

Sử dụng chương trình download IDM

Giống nhau: Gửi 13 gói sử dụng giao thức TCP, nhận 51 gói sử dụng giao thức TCP

Messager) gửi và nhận 4 message nội dung như nhau

Giống nhau: cùng gửi 6 gói tin và nhận 4 gói tin sử dụng giao thức TCP, cổng 5050

Bảng kiểm thử: So sánh chức năng xử lý gói tin giữa NDIS-Firewall và ShowTraf

Chức năng chặn gói tin: sử dụng phương pháp đánh giá, dựa vào tập luật đầu vào thử nghiệm, lập bảng:

Thiết lập tập luật thử nghiệm Kết quả mong muốn Kết quả đạt được

199.181.132.150 Chặn tất cả liên lạc Chính xác

207.46.255.60 Chặn tất cả liên lạc Chính xác

Không duyệt web được, Ping có trả lời Chính xác

Luật cấm giao thức ICMP Không Ping được mọi địa chỉ Chính xác

Luật cấm cổng 5050 Không sử dụng được

Luật cấm cổng 80 Không duyệt Web được Chính xác

Luật cấm cổng 21 Thống báo kết nối FTP lỗi Chính xác

Luật cấm cổng 23, giao thức

Bảng kiểm thử: Kiểm thử chức năng chặn gói tin 4.3.3.2 Kiểm thử phi chức năng

Sử dụng download và duyệt Web với số lượng file lớn và số lượng web duyêt lớn:

Số địa chỉ kiểm soát được

Số cổng kiểm soát được

80 30 33 161 Chương trình hoạt động hơi chậm.

150 40 44 310 Chương trình hoạt động chậm, list hiển

Manager thị mất chức năng scroll.

Bảng kiểm thử: Kiểm thử sức căng

 Kiểm thử tính tương thích trên các hệ điều hành:

XP SP1 Windows XP SP2

Kết quả Không thể cài đặt

1/5 trường hợp có lỗi trong quá trình cài đặt, máy tính bị dump, khởi động lại hoạt động bình thường.

Bảng kiểm thử: Kiểm thử tính tương thích

4.3.4 Đánh giá kết quả chương trình

Mục tiêu đặt ra Kết quả đạt được

Xây dựng một Firewall loại

Packet Filtering hoạt động trên

Hoàn thành chương trình, hoạt động tốt trên các hệ Windows 2000 trở về sau.

Có khả năng chống tấn công

DoS, ngập lụt Ping, chặn các gói tin không mong muốn, bảo vệ máy tính khỏi sự xâm nhập trái phép. Đạt được các yêu cầu của một Firewall dạngPacket Filtering, các chức năng đã đặt ra từ trước phụ thuộc vào người quản trị hệ thống,chưa có cơ chế bảo vệ chống xâm xập, chỉ cung cấp một phần thông tin để phát hiện xâm nhập.Phần mềm phải đảm bảo nhỏ để Kết quả thử nghiệm cho thấy phần mềm chiếm có thể chạy nền và thường trú bộ nhớ

Ngày đăng: 19/06/2023, 11:03

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w