Các kết quả nghiên cứu, so sánh ở Chương 1 và Chương 2 đã cho thấy PFSense là một hệ thống tích hợp mạnh mẽ, miễn phí, hỗ trợ nhiều tính năng quản lý truy cập trong đó tính năng quản lý cấp phát địa chỉ động DHCP có nhiều ưu điểm hơn so với những giải pháp sử dụng các sản phẩm thương mại, mã nguồn mở khác. Tuy vậy nó cũng tồn tại những nhƣợc điểm khiến cho việc quản lý cấp phát địa chỉ tốn nhiều thời gian công sức của người quản trị do vậy nội dung chương này đề xuất phương án triển khai hệ thống tường lửa trên nền tảng của PFSense và xây dựng công cụ PFSenseMan bổ trợ cho tính năng DHCP của PFSense nhằm tối ƣu hóa công tác quản lý truy cập.
3.1 Bài toán quản lý người dùng thông qua cấp phát địa chỉ IP
Kiểm soát cấp phát địa chỉ IP động cho người sử dụng đầu cuối là một use case phổ biến trong các hệ thống mạng. Ngày nay tính năng DHCP càng ngày càng hữu dụng và đƣợc tích hợp trong rất nhiều các thiết bị, hệ thống khác nhau nhƣ trên các access point, switch layer 3, các hệ điều hành server... Việc cấp phát địa chỉ động ngoài ý nghĩa là tạo ra sự tiện dụng, tính trong suốt, nhất quán đối với người sử dụng PFSense còn tích hợp vào đó tính năng MAC filter và các VLAN ID nhằm nâng cao hiệu quả bảo mật, tạo ra một hệ thống quản lý đồng nhất trong mối tương quan với các chức năng khác của tường lửa.
Bài toán quản lý người sử dụng được đặt ra như sau:
Quản lý và cấp phép cho nhân viên của tổ chức A quyền truy cập đến hệ thống mạng của tổ chức A.
Nhân viên của đơn vị X trong tổ chức A phải tuân thủ thiết lập các chính sách truy cập tài nguyên của đơn vị X.
Để đáp ứng yêu cầu quản lý trên, PFSense cung cấp tính năng quản lý MAC Address của DHCP. Cụ thể là, muốn X được sử dụng mạng, người quản trị thêm MAC address của X vào cấu hình PFSense với một địa chỉ IP tương ứng và thiết lập các luật truy cập theo nhóm các địa chỉ IP.
3.2 Tổng quan về công cụ PFSenseMan
Để tăng hiệu quả của việc thiết lập cấu hình khi lượng thông tin người dùng quản lý và quy hoạch là lớn, PFSenseMan không thực hiện thay đổi cầu hình cho từng các hạng mục thông tin mà thực hiện thay đổi cấu hình theo “mớ”
(batch). Về mặt kỹ thuật, có thể xem PFSenseMan là một công cụ phần mềm xử lý dữ liệu XML với các tính năng:
Chuyển đổi định dạng qua lại giữa XML và XLS (định dạng của Microsoft Excel)
Trích lọc dữ liệu XML: PFSenseMan xử lý và trích lọc các dữ liệu liên quan đến cấu hình DHCP và MAC Filter từ hệ thống các file cấu hình nguồn của PFSense.
Bộ kiểm tra (validator) cấu hình PFSense: Có khả năng kiểm tra và tự động loại bỏ các thông tin lỗi dữ liệu hoặc trùng lặp. Cụ thể các khả năng kiểm tra lỗi của PFSenseMan đƣợc tóm tắt trong bảng 3.1
STT Tính năng Mô tả
1 Kiểm tra tính hợp lệ của địa chỉ MAC
Điều kiện thỏa mãn là:
Cấu trúc: xx:yy:zz:kk:mm:nn (x,y,z,k,m,n) {0..9, a..f}
2 Kiểm tra tính hợp lệ của địa chỉ IP
Điều kiện thỏa mãn là:
Cấu trúc: x.y.z.k (x,y,z,k) { 0..254}
3 Kiểm tra tính hợp lệ của địa chỉ IP khi đƣa vào từng VLAN
Điều kiện thỏa mãn là:
Ví dụ: VLAN 192.171.x.y với subnet 19 thì khi thêm địa chỉ IP có cấu trúc z.k.m.n thì z=192, k=171 còn m { 0..64}, n { 0..254}
4 Kiểm tra, tự động loại bỏ địa chỉ MAC trùng lặp khi thêm mới một batch
Khi thêm vào một batch nếu phát hiện có địa chỉ MAC đã có trong ds tự động loại bỏ việc thêm vào và có cảnh báo.
5 Kiểm tra, tự động loại bỏ địa chỉ IP trùng lặp khi thêm mới một batch
Khi thêm vào một batch nếu phát hiện có địa chỉ IP đã có trong ds tự động loại bỏ việc thêm vào và có cảnh báo.
Bảng 3.1: Bảng các tính năng trong bộ kiểm tra của PFSenseMan
Để đáp ứng yêu cầu quản lý trên, PFSense cung cấp tính năng quản lý MAC Address của DHCP. Cụ thể là, muốn X đƣợc sử dụng mạng, Administrator thêm MAC address của X vào cấu hình PFSense với một địa chỉ IP tương ứng và thiết lập các luật truy cập theo nhóm các địa chỉ IP.
3.3 Phân tích tệp cấu hình của hệ thống firewall PFSense
Tệp cấu hình của hệ thống firewall PFSense đƣợc xây dựng dựa trên chuẩn XML và đƣợc kết xuất trong một tệp tin duy nhất, việc kết xuất này giúp cho việc sao lưu, khôi phục hệ thống một cách dễ dàng. Các thẻ được định nghĩa trong tệp tin cấu hình đƣợc tổ chức, sắp xếp theo một trật tự nhất định do vậy có thể sử dụng các công cụ để phân tích, tác động thay đổi mà không làm mất tính cấu trúc của tệp tin cấu hình. Việc thao tác backup và restore đối với các tệp tin cấu hình này trong PFSense rất dễ dàng với giao diện WebGUI.
Các kỹ thuật liên quan đến XML
XSL: XSL là ngôn ngữ đánh dấu định nghĩa minh hoạ các phương pháp để hiển thị tài liệu XML trên Web. Tài liệu XML chỉ miêu tả cấu trúc của nội dung. XSL chỉ ra cách hiển thị của một lớp tài liệu XML, thông qua miêu tả các trường hợp của một lớp được thay đổi thành tài liệu XML; Được sử dụng để định dạng từ vựng. Nghĩa là, XSL cho phép XML tạo thành nội dung từ cách hiển thị. XSL chứa đựng 2 phần: Một là ngôn ngữ chuyển đổi tài liệu XML và một là từ vựng XML cho chỉ định dấu hiệu định dạng.
XLST: Kiểu kỹ thuật bảng có thể chuyển đổi tài liệu là XLST (XSL Transformation). Nó là một trường hợp con của kỹ thuật XSL, nó hỗ trợ đầy đủ việc chuyển đổi của tài liệu XML sang các dạng định dạng khác, giống nhƣ HTML hoặc các kiểu tài liệu XML khác. Lý do để đƣa ra dạng khác XSLT từ XML là do tài liệu XML có thể dễ dàng hiển thị định dạng cho người sử dụng bằng việc chuyển đổi tài liệu XML mà không cần ngôn ngữ định dạng.
XQuery: XQuery là ngôn ngữ truy vấn của XML, đƣợc thiết kế để áp dụng rộng rãi cho tất cả các kiểu dữ liệu nguồn của XML; Nhƣ cấu trúc và cấu trúc chung tài liệu, quan hệ cơ sở dữ liệu và kho dữ liệu. XQuery sử dụng XPath cho biểu thức đường dẫn. Hơn nữa XQuery còn cung cấp các đặc trưng như lọc tài liệu, kết nối nhiều nguồn dữ liệu và nhóm nội dung.
XUpdate là ngôn ngữ cập nhật, nó cung cấp khả năng cập nhật dễ dàng nhƣ chèn, sửa, xoá dữ liệu trong tài liệu XML. Ngôn ngữ XUpdate là mạnh, giống nhƣ hợp khuôn dạng tài liệu XML và sử dụng XPath để lựa chọn các phần tử cũng nhƣ xử lý các điều kiện.
SOAP: Là một giao thức đơn giản để chuyển đổi thông tin trong môi trường phân tán. Nó là một giao thức chuẩn XML và bao gồm 3 phần; Thứ nhất là là tổng quan định nghĩa khung làm việc để miêu tả nội dung của thông điệp và làm thế nào để xử lý chúng; Hai là thiết đặt các luật mã hoá cho các trường hợp của định nghĩa kiểu dữ liệu tương ứng; Ba là quy ước cho thủ tục truy cập từ xa đƣợc gọi là phản hồi. SOAP sử dụng XML và HTML hoặc là SMTP để truy cập các dịch vụ.
Qua nghiên cứu cấu trúc và đặc điểm của ngôn ngữ XML tác giả nhận thấy có thể xây dựng một công cụ tự động tác động trực tiếp vào tệp cấu hình của hệ thống PFSense thực hiện việc thêm, sửa, xóa các trường thông tin để giải quyết bài toán quản lý truy cập mạng thông qua việc gán định danh địa chỉ IP đến từng thiết bị của người sử dụng.
3.4 Thiết kế kiến trúc công cụ PFSenseMan
Thiết kế xây dựng công cụ PFSenseMan được thực hiện bắt đầu từ bước xác định các yếu tố Input và Output cho công cụ PFSenseMan.
Input:
Tệp cấu hình gốc (định dạng XML) backup từ hệ thống PFSense
Tệp lưu trữ cấu trúc và thông tin danh sách người sử dụng được định nghĩa trước.
Output:
Tệp cấu hình (định dạng XML) có cấu trúc các thẻ đƣợc định nghĩa và sắp xếp theo chuẩn của PFSense với các bản ghi đã thay đổi để có thể Restore vào hệ thống PFSense.
Tệp lưu trữ cấu trúc thông tin người sử dụng (định dạng Excel) cho phép quản trị viên dễ dàng thay đổi thông tin của người sử dụng phù hợp với các luật truy xuất tài nguyên.
3.4.1 Kiến trúc tổng thể của công cụ PFSenseMan
Kiến trúc tổng thể cho công cụ PFSenseMan đƣợc mô tả nhƣ hình 3.1
Hình 3.1: Biểu đồ kiến trúc tổng thể công cụ PFSenseMan
PFSense: Hệ thống tích hợp PFSense
PFSense Data Base adapter: Cơ sở dữ liệu hệ thống PFSense đƣợc lưu trữ dưới dịnh dạng XML
Converter module: Chuyển đổi cơ sở dữ liệu XML dựa vào các Templates
Templates: Các file mẫu định dạng cấu trúc các thẻ XML dùng để hỗ trợ công đoạn phân tích cấu trúc dữ liệu PFSense, các file excel mẫu dùng để lưu cấu trúc thông tin người sử dụng
Web application server: Công cụ PFSenseMan đƣợc xây dựng trên ngôn ngữ ASP.Net và triển khai trên nền tảng Windows Internet Information Services (IIS) 6.0 Manager
Presentation Module: Lớp trình diễn dạng Web Form trên nền tảng Web Browser (ID, FireFox, Chrome, vân vân)
3.4.2 Biểu đồ use case tổng quát
Việc xây dựng biểu đồ use case là một bước quan trọng trong việc thiết kế công cụ PFSenseMan. Trong các biểu đồ (hình 3.2) dưới đây mô hình hóa quá trình tương tác giữa các tác nhân với công cụ PFSenseMan, các kiểu phụ thuộc giữa các ca sử dụng và mối tương quan của chúng.
uc Use Case Tong Quat
PFSenseMan
Nguoi Quan Tri
QL DHCP
QL Aliases
QL Cau hinh Xuat du lieu
Ho tro
PFSense
ôincludeằ
ôincludeằ
Hình 3.2: Biểu đồ use case tổng quát của công cụ PFSenseMan
Biểu đồ use casa tổng quát của PFSenseMan gồm có 5 use case và 2 tác nhân chính nhƣ hình 3.2:
Use case Quản lý DHCP dùng để import dữ liệu từ tệp cấu hình DHCP gốc của PFSense vào PFSenseMan.
Use case Quản lý Aliases dùng để import dữ liệu từ tệp cấu hình Aliases gốc của PFSense vào PFSenseMan.
Use case Quản lý cấu hình cho phép người quản trị thực hiện các thao tác cơ bản như thêm, sửa, xóa thông tin người sử dụng theo mớ trong cơ sở dữ liệu XML DHCP hoặc Aliases.
Use case Xuất dữ liệu cho phép người quản trị trích lọc dữ liệu ra các định dạng như XML để restore vào hệ thống PFSense hoặc XLS để lưu trữ, xử lý theo mớ dữ liệu người sử dụng.
3.4.3 Biểu đồ tuần tự
Biểu đồ tuần tự nhằm mục đích phân tích chi tiết các thao tác cơ bản của người quản trị trong việc thêm, sửa, xóa thông tin người sử dụng theo các ca sử dụng khác nhau.
Công cụ PFSenseMan có nhiều biểu đồ tuần tự khác nhau nhƣ:
Biểu đồ tuần tự thêm mới nhóm người sử dụng trong quản lý DHCP tham khảo phụ lục 3
Biểu đồ tuần tự thêm mới nhóm người sử dụng trong quản lý Aliases tham khảo phụ lục 4
Biểu đồ tuần tự loại bỏ nhóm người sử dụng trong quản lý DHCP.
Biểu đồ tuần tự loại bỏ nhóm người sử dụng trong quản lý Aliases.
Vân vân 3.4.4 Biểu đồ lớp
Biểu đồ lớp nhằm xây dựng các lớp truy cập trong công cụ PFSenseMan, nó đóng vai trò quan trọng trong việc thiết kế các lớp, các hàm dùng chung trong quá trình thiết kế.
Hình 3.3: Biểu đồ lớp tổng quát của công cụ PFSenseMan
Việc xây dựng các hàm kiểm tra đóng một vai trò rất quan trọng trong quá trình thiết kế công cụ PFSenseMan. Các hàm kiểm tra giúp cho quá trình thay đổi tệp cấu hình đảm bảo tính toàn vẹn về dữ liệu, đáp ứng yêu cầu kết quả đầu ra là một tệp cấu hình đƣợc hệ thống PFSense chấp nhận, không có xung đột gây ra lỗi trên hệ thống. Ngoài ra còn một số hàm kiểm tra nhằm mở rộng khả năng quản lý mà PFSense trước đó không cung cấp như việc chấp nhận từ hai địa chỉ MAC có chung một địa chỉ IP gây ra lỗi xung đột đối với người sử dụng.
Hàm kiểm tra địa chỉ ip có tồn tại trong VLAN
private bool CheckExistIp(int iZone, string sIp) Kết quả
True: Nếu địa chỉ Ip đã tồn trong VLAN False: Nếu địa chỉ Ip không nằm trong VLAN
Nếu địa chỉ Ip đã tồn tại trong VLAN, chương trình hiển thị giao diện và thông báo cho người sử dụng
Hàm kiểm tra địa chỉ MAC có đúng định dạng
private bool CheckTypeMac(string sMac) Kết quả
True: Nếu địa chỉ MAC đúng định dạng False: Nếu địa chỉ MAC không đúng định dạng
Nếu địa chỉ MAC không đúng địnhg dạng, chương trình hiển thị giao diện và thông báo cho người sử dụng
Hàm kiểm tra địa chỉ MAC có tồn tại trong VLAN
private bool CheckExistMac(int iZone, string sMac) Kết quả
True: Nếu địa chỉ MAC đã tồn tại trong VLAN False: Nếu địa chỉ MAC không tồn tại trong VLAN
Nếu địa chỉ MAC không tồn tại trong vùng, chương trình hiển thị giao diện và thông báo cho người sử dụng
Hàm kiểm tra địa chỉ Ip có thỏa mãn điều kiện của VLAN không
private bool CheckIpOnZone(int iZone, string sIp) Kết quả
True: Nếu địa chỉ Ip thỏa mãn điều kiện của VLAN False: Nếu địa chỉ Ip không thỏa mãn điều kiện của VLAN
Nếu địa chỉ Ip không thỏa mãn điều kiện, chương trình hiển thị giao diện và thông báo cho người sử dụng
3.5 Xây dựng các bản mẫu (Templates) chung
Do đặc điểm của hệ thống PFSense ở mỗi phiên bản khác nhau thì các thẻ trong tệp cấu hình XML khác nhau cả về số lƣợng và tên. Do vậy việc xây dựng các Templates nhằm mục đích tạo các mẫu sao cho công cụ dễ dàng chuyển đổi phù hợp với từng phiên bản khác nhau của PFSense, làm cơ sở xây dựng cho công cụ PFSenseMan khả năng thêm, sửa, xóa theo mớ.
Ví dụ về thẻ <LAN>: là VLAN ID mặc định của hệ thống PFSense khi cài đặt mới, đó là một thẻ quan trọng để thông qua đó người quản trị cấu hình hệ thống truy cập vào PFSense từ máy tính khác qua giao diện GUI của PFSense.
Cấu trúc của thẻ <LAN> nhƣ trong Hình 3.4
Hình 3.4: Cấu trúc thẻ <LAN> trong PFSense version 2.1
Để xây dựng các Templates này chúng tôi đã thực hiện việc phân tích tệp cấu hình gốc của PFSense theo phương pháp “thử kiểm tra sự thay đổi”. Phương pháp đó gồm các bước:
Bước 1: Ghi nhận cấu trúc, giá trị các thẻ trong tệp cấu hình của PFSense tại một thời điểm.
Bước 2: Thay đổi từng giá trị trực tiếp liên quan đến việc cấu hình truy cập mạng cho vài người sử dụng.
Bước 3: Kiểm tra sự thay đổi cấu trúc, giá trị các thẻ trong tệp cấu hình của PFSense tại thời điểm sau khi thay đổi.
Bước 4: Ghi nhận sự thay đổi và phân tích tính lặp của cấu trúc, giá trị các thẻ trong tệp cấu hình của PFSense, từ đó xây dựng các Template XML mẫu bằng cách thêm các biến vào Template mẫu (Hình 3.5).
Bước 5: Trích lọc thông tin, xây dựng Template XLS mẫu để người quản trị dễ dàng thay đổi quyền truy cập bằng cách thay đổi địa chỉ IP dễ dàng, hàng loạt bằng công cụ Micosoft Excel.
Cùng với việc phân tích đặc điểm của từng nhóm người sử dụng khác nhau trong hệ thống mạng của Học viện Cảnh sát nhân dân. Bằng phương pháp trên chúng tôi xác định đƣợc cấu trúc của 4 Template quan trọng cho công cụ PFSenseMan đó là:
Cấu trúc Template <LAN> (Hình 3.5)
Cấu trúc Template <OTP> (Hình 3.6)
Hình 3.6: Cấu trúc <OTP> template
Cấu trúc Template <Alias> (Hình 3.7)
Hình 3.6: Cấu trúc <OTP> template
Cấu trúc Template <STATICMAP> (Hình 3.8)
Hình 3.8: Cấu trúc <STATICMAP> template
Cấu trúc Template Thông tin người sử dụng (Hình 3.9)
Cấu trúc Template này nhằm mục đích xây dựng cấu trúc dữ liệu đầu vào, đầu ra trong tệp tin excel bao gồm: MACAddr, IPAddr, Description có thể mở rộng thêm các thành phần khác nhƣ DNSServer, Getway… nhằm mục đích xây dựng các luật truy cập đến tài nguyên trong hệ thống mạng theo quy định của người quản trị hệ thống.
MacAdr IPAddr Description
3C:97:0E:33:74:D6 192.179.1.100 D380701 50:46:5D:2F:20:53 192.179.1.101 D380702 54:53:ED:AC:9D:D9 192.179.1.102 D380704 00:FF:1E:F3:14:FB 192.179.1.103 D380715 54:53:ED:2D:7D:DE 192.179.1.104 D380044 10:BF:48:31:B3:72 192.179.1.105 D380265 E0:DB:55:83:37:3E 192.179.1.106 D380261 E0:DB:55:85:DF:80 192.179.1.107 D380352 3C:97:0E:2E:9B:6F 192.179.1.108 D380386 00:16:D4:9E:84:24 192.179.1.109 D380133 B8:70:F4:37:A7:30 192.179.1.110 D380355 B8:88:E3:A4:81:E2 192.179.1.111 D380531 78:84:3C:90:FF:17 192.179.1.112 D380183 E8:03:9A:9C:BA:69 192.179.1.113 D380180
Hình 3.9: Cấu trúc template thông tin người sử dụng