Từ bƣớc cài đặt cho đến lúc cấu hình hồn thành, Adaptive Log Exporter có khả năng gửi nhật ký hệ thống của các ứng dụng hoặc thiết bị chạy trên môi trƣờng Windows với các tùy chọn cho các dạng nhật ký hệ thống nhƣ: Secutiry log, DNS log, … để gửi nhật ký hệ thống về máy chủ đƣợc ngƣời quản trị khai báo. Ứng dụng này có khả năng gửi nhật ký hệ thống từ bất kỳ một file nhật ký hệ thống nào về máy chủ đƣợc khai báo ở phần tab Destination. Đối với môi trƣờng Linux ngƣời quản trị có thể cấu hình đơn giản hơn bằng cách mở file: /etc/syslog.conf và thêm vào dòng lệnh gửi
nhật ký hệ thống về máy chủ thu thập: authpriv. * @<IP máy chủ thu
Dạng thứ hai đó là trƣờng hợp ngƣời quản trị khơng cài đặt đƣợc các dịch vụ lên các thiết bị hay máy chủ. Đối với trƣờng hợp này hầu hết trên các thiết bị hoặc máy chủ này đều hỗ trợ việc forward log về một máy chủ thu thập nhật ký hệ thống. Vì vậy, để thu thập nhật ký hệ thống ngƣời quản trị chỉ cần cấu hình theo yêu cầu của nhà cung cấp dịch vụ.
VD: Cấu hình gửi nhật ký hệ thống của Checkpoint đƣợc thực hiện theo các bƣớc phía dƣới:
Bƣớc 1: Tại giao diện dòng lệnh của Checkpoint gõ lệnh expert Bƣớc 2: Nhập mật khẩu đƣợc yêu cầu
Bƣớc 3: Mở file: /etc/rc.d/rc3.d/S99local
Bƣớc 4: Thêm dòng lệnh ―$FWDIR/bin/fw log -ftn | /usr/bin/logger –p‖
<facility>.<priority> > /dev/null 2>&1 & Trong đó:
<facility> là Syslog facility. VD: local3.
<priority> là Syslog priority. VD: info.
VD:
$FWDIR/bin/fw log -ftn | /usr/bin/logger -p local3.info > /dev/null 2>&1 &
Bƣớc 5: Ghi và đóng file lại. Bƣớc 6: Mở file syslog.conf .
Bƣớc 7: Thêm dòng lệnh: <facility>.<priority> <TAB><TAB>@<host>
Trong đó:
<facility> là syslog facility VD: local3 giống với giá trị trong bƣớc 4.
<priority> là syslog priority VD: info or notice giống với giá trị
trong bƣớc 4.
<TAB> sử dụng phím TAB.
<host> địa chỉ mà log đƣợc gửi về.
Bƣớc 8: Ghi và đóng file.
Bƣớc 9: Tùy thuộc vào hệ thống đang sử dụng mà ngƣời quản trị có thể sử
dụng các lệnh để khởi động lại syslog nhƣ sau:
Linux: service syslog restart
Solaris: /etc/init.d/syslog start
Bƣớc 10: Cuối cùng sử dụng lệnh:
nohup $FWDIR/bin/fw log -ftn | /usr/bin/logger –p <facility>.<priority> > /dev/null 2>&1 &
<facility> là Syslog facility VD: local3 giống với giá trị trong bƣớc
4.
<priority> là Syslog priorityVD info giống với giá trị trong bƣớc 4.
Nhƣ vậy qua 10 bƣớc trên log của Checkpoint đã đƣợc cấu hình để gửi về máy chủ đã đƣợc khai báo địa chỉ IP ở bƣớc 7.
Dạng thứ 3 đó là ngƣời quản trị cung cấp Username và Password cho máy chủ thu thập nhật ký hệ thống để hệ thống GSANM tự động đăng nhập vào máy chủ lấy nhật ký hệ thống. Trƣờng hợp này thƣờng đƣợc sử dụng trên mơi trƣờng Windows. Các dịch vụ cần có để thực hiện đƣợc việc này đó là:
o Remote procedure Call (RPC)
o Remote procedure Call (RPC) locator
o RPC Endpoint Mapper
o Remote Registry
o Server
o Mở các cổng: 139 TCP, 445 TCP.
3.2.2.2 Trích xuất các trƣờng thông tin quan trọng từ nguồn nhật ký hệ thống ban đầu
Việc tiếp theo cần làm đối với nguồn nhật ký hệ thống đƣợc gửi về hệ thống GSANM đó là trích xuất các trƣờng thơng tin quan trọng để hiển thị lên hệ thống GSANM cũng nhƣ để tạo các luật thông qua nội dung các trƣờng này. Để thực hiện đƣợc việc này, cần có một định dạng chung cho các loại nhật ký hệ thống.
Từ nguồn nhật ký hệ thống ban đầu, ngƣời quản trị sẽ sử dụng ngôn ngữ Regular Expression để xác định các trƣờng dữ liệu quan trọng và đƣa giá trị các trƣờng đó vào định dạng mẫu cho từng loại nhật ký hệ thống. Về cơ bản, Regular Expression là một mẫu mô tả một lƣợng văn bản (text) xác định. Regular Expression sử dụng biểu thức và nguyên tắc đã đƣợc định nghĩa nhằm phân tích sự trùng khớp của một tập các chuỗi nào đó [14].
Sau đó, ngƣời quản trị sẽ cập nhật định dạng mới vào hệ thống nhằm phân tích các nhật ký hệ thống mới này. Định dạng mẫu cho từng loại nhật ký hệ thống là một file XML với các nhãn là trƣờng giá trị quan trọng mà ngƣời quản trị cần phải xác định. Định dạng mẫu trong hình 3.3 dƣới đây đƣợc hãng IBM hỗ trợ để bổ sung các nhật ký hệ thống mới chƣa đƣợc định dạng trong hệ thống GSANM.
<?xml version="1.0" encoding="UTF-8"?>
<device-extension xmlns="event_parsing/device_extension">
<!-- Do not remove the "allEventNames" value -->
<pattern id="allEventNames" xmlns=""><![CDATA[(.*)]]></pattern>
<!-- Everything below this line can be modified -->
<pattern id="EventName" xmlns=""><![CDATA[]]></pattern> <pattern id="EventCategory" xmlns=""><![CDATA[]]></pattern>
<pattern id="SourceIp" xmlns=""><![CDATA[]]></pattern> <pattern id="SourcePort" xmlns=""><![CDATA[]]></pattern> <pattern id="SourceIpPreNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="SourceIpPostNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="SourceMAC" xmlns=""><![CDATA[]]></pattern>
<pattern id="SourcePortPreNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="SourcePortPostNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationIp" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationPort" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationIpPreNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationIpPostNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationPortPreNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationPortPostNAT" xmlns=""><![CDATA[]]></pattern> <pattern id="DestinationMAC" xmlns=""><![CDATA[]]></pattern>
<pattern id="DeviceTime" xmlns=""><![CDATA[]]></pattern> <pattern id="Protocol" case-insensitive="true"
xmlns=""><![CDATA[]]></pattern>
<pattern id="UserName" xmlns=""><![CDATA[]]></pattern> <pattern id="HostName" xmlns=""><![CDATA[]]></pattern> <pattern id="GroupName" xmlns=""><![CDATA[]]></pattern> <pattern id="NetBIOSName" xmlns=""><![CDATA[]]></pattern>
<match-group order="1" description="Log Source Extension" xmlns=""> <matcher field="EventName" order="1" pattern-id="EventName" capture-group="1"
enable-substitutions="false"/>
<matcher field="EventCategory" order="1" pattern-id="EventCategory" capture-
group="1"/>
<matcher field="SourceIp" order="1" pattern-id="SourceIp" capture-group="1" /> <matcher field="SourcePort" order="1" pattern-id="SourcePort" capture-group="1" /> <matcher field="SourceIpPreNAT" order="1" pattern-id="SourceIpPreNAT" capture-
group="1" />
<matcher field="SourceIpPostNAT" order="1" pattern-id="SourceIpPostNAT" capture-
group="1" />
<matcher field="SourceMAC" order="1" pattern-id="SourceMAC" capture-group="1" /> <matcher field="SourcePortPreNAT" order="1" pattern-id="SourcePortPreNAT" capture-
group="1" />
<matcher field="SourcePortPostNAT" order="1" pattern-id="SourcePortPostNAT"
capture-group="1" />
<matcher field="DestinationIp" order="1" pattern-id="DestinationIp" capture-
group="1" />
<matcher field="DestinationPort" order="1" pattern-id="DestinationPort" capture-
group="1" />
<matcher field="DestinationIpPreNAT" order="1" pattern-id="DestinationIpPreNAT"
capture-group="1" />
<matcher field="DestinationIpPostNAT" order="1" pattern-id="DestinationIpPostNAT"
capture-group="1" />
<matcher field="DestinationPortPreNAT" order="1" pattern-
id="DestinationPortPreNAT" capture-group="1" />
<matcher field="DestinationPortPostNAT" order="1" pattern-
id="DestinationPortPostNAT" capture-group="1" />
<matcher field="DestinationMAC" order="1" pattern-id="DestinationMAC" capture-
group="1" />
<matcher field="DeviceTime" order="1" pattern-id="DeviceTime" capture-group="1" /> <matcher field="Protocol" order="1" pattern-id="Protocol" capture-group="1" /> <matcher field="UserName" order="1" pattern-id="UserName" capture-group="1" /> <matcher field="HostName" order="1" pattern-id="HostName" capture-group="1" /> <matcher field="GroupName" order="1" pattern-id="GroupName" capture-group="1" /> <matcher field="NetBIOSName" order="1" pattern-id="NetBIOSName" capture-group="1"
/>
<event-match-multiple pattern-id="allEventNames" capture-group-index="1" device-
event-category="unknown" send-identity="OverrideAndNeverSend" />
</match-group> </device-extension>