Yêu cầu thực tiễn

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cải tiến tập luật trong hệ thống giám sát an ninh mạng 04 (Trang 51)

Đối với hệ thống GSNAM hoạt động độc lập hay phân tán, đều có các ƣu điểm và nhƣợc điểm riêng, nhƣng có một đặc điểm chung và ảnh hƣởng lớn đến cả hai hệ thống đó chính là khả năng phân tích, nhận dạng nhật ký hệ thống đa dạng. Khả năng này giúp cho hệ thống GSANM có thể phân tích đƣợc nhiều loại nhật ký hệ thống hơn. Tuy nhiên, vấn đề đặt ra ở đây là liệu hệ thống GSANM có khả năng phân tích tất cả các loại nhật ký hệ thống đƣợc thu thập đƣợc hay khơng?

Trên thực tế, hệ thống GSANM có thể hiểu và phân tích nhật ký hệ thống một cách nhanh chóng theo thời gian thực. Điều này có thể thực hiện đƣợc là do hệ thống GSANM đã định nghĩa trƣớc các loại nhật ký hệ thống cũng nhƣ các trƣờng dữ liệu. Do đó, khi nhật ký hệ thống đƣợc gửi về hệ thống GSANM sẽ xử lý rất nhanh chóng bằng cách khai báo các định dạng tƣơng ứng và đẩy vào các trƣờng dữ liệu đã đƣợc định dạng sẵn. Vậy đối với các loại nhật ký hệ thống chƣa đƣợc đinh dạng sẵn hay chƣa có khn mẫu nào trong hệ thống thì phải xử lý nhƣ thế nào? Đó là một yêu cầu đƣợc đặt ra để giải quyết các yếu điểm còn tồn tại trong hệ thống GSANM.

Hiện tại, hệ thống GASANM gần nhƣ hỗ trợ hầu hết các thiết bị cũng nhƣ ứng dụng, nhƣng vẫn còn một phần lớn thiết vị và ứng dụng hệ thống vẫn chƣa hỗ trợ đặc biệt là các phiên bản mới của các ứng dụng hay các sản phẩm mã nguồn mở. VD: NGINX hay các phiên bản IIS 8.0, 8.5, … Đối với các loại nhật ký hệ thống này, khi cấu hình gửi nhật ký hệ thống về hệ thống GSANM thì gần nhƣ các trƣờng thơng tin chỉ hiển thị biểu tƣợng ―unknow‖ mà khơng phân biệt đƣợc đó là sự kiện gì. Do vậy mục tiêu hƣớng đến là nghiên cứu tìm hiểu phƣơng pháp xác định, định dạng các loại nhật ký hệ thống chƣa hỗ trợ để bổ sung xử lý các nhật ký hệ thống mới cho hệ thống GSANM.

Bên cạnh đó, hệ thống GSANM hoạt động dựa trên việc xử lý hai nguồn sự kiện an ninh chính, đó là thu thập các sự kiện và thu thập các luồng dữ liệu trong mạng. Hầu hết các cảnh báo thu đƣợc đều là các cảnh báo từ các thiết bị an ninh hoặc ứng dụng an ninh đƣa ra, và đƣợc hệ thống GSANM thu thập và đƣa ra cảnh báo dƣới dạng súc tích, dễ hiểu hơn, cịn bản thân hệ thống GSANM cũng chƣa đƣợc bổ sung các tập luật một các đầy đủ để năng cao hiệu quả của hệ thống GSANM. Trong trƣờng hợp hệ thống mạng đƣợc bảo vệ bằng hệ thống GSANM nhƣng khơng có các thiết bị an ninh thì hệ thống GSANM gần nhƣ khơng đƣa ra đƣợc nhiều cảnh báo an ninh đối với hệ thống đó. Để giải quyết vấn đề này, đòi hỏi ngƣời quản trị phải tạo ra các tập luật mới bổ sung vào hệ thống GSANM nhằm giúp hệ thống phát hiện, cảnh báo các tấn cơng có thể xảy ra đối với hệ thống đƣợc giám sát.

Nhƣ đã đề cập tại chƣơng II, các kỹ thuật tấn công vào ứng dụng web, và các tấn công vƣợt qua tƣờng lửa ứng dụng Web ngày nay có xu hƣớng gia tăng, do vậy mục tiêu đặt ra là phải tạo ra một số tập luật để phát hiện các dạng tấn công vào ứng web phổ biến dựa trên nhật ký hệ thống của ứng dụng web. Để giải quyết đƣợc bài toán này ngƣời quản trị hệ thống phải dựa trên các nguồn nhật ký hệ thống sẵn có của hệ thống. Do vậy việc định dạng các nhật ký hệ thống mới là điều hết sức cần thiết và quan trọng đối với một thệ thống GSANM.

3.2 Giải pháp trích xuất các trƣờng thơng tin quan trọng từ nhật ký hệ thống hệ thống

3.2.1 Mơ hình chung

Hình 3.1: Mơ hình trích xuất các trƣờng thơng tin quan trọng từ nhật ký hệ thống Mơ hình chung cho q trình trích xuất các trƣờng thơng tin quan trọng gồm có các bƣớc nhƣ sau:

 Thu thập nguồn nhật ký hệ thống: Đây là bƣớc đầu tiên cần thực hiện vì bƣớc này cung cấp nguồn dữ liệu ban đầu. Bƣớc này thực hiện thu thập tất cả nhật ký hệ thống cần phân tích, theo dõi. Có nhiều phƣơng pháp để thực hiện cơng việc này, tuy nhiên điều này còn phụ thuộc vào từng thiết bị và ứng dụng cụ thể.

 Xác định các trƣờng thông tin quan trọng và các chuỗi regex để lọc thông tin: Sau khi đã thu thập đƣợc nhật ký hệ thống, bƣớc tiếp theo là tiến hành phân tích, xác định các trƣờng thơng tin quan trọng ban đầu, sau đó tạo các chuỗi lọc các trƣờng thơng tin này bằng biểu thức chính quy Regular Expression.

 Tạo định dạng nhật ký hệ thống mới và cập nhật vào hệ thống: Sau khi đã có đầy đủ thông tin các trƣờng cần lấy và định dạng các trƣờng này bằng biểu thức chính quy Regex, ngƣời quản trị cần tiến hành đƣa các chuỗi này vào file định dạng mẫu XML đây là định dạng mẫu chung cho các loại nhật ký hệ thống. Sau đó ngƣời quản trị thực hiện loại bỏ các trƣờng khơng quan trọng hoặc khơng có dữ liệu và sắp xếp để lọc dữ liệu theo định dạng mẫu này. Cuối cùng ngƣời quản trị thêm định dạng mới này vào hệ thống GSANM.

3.2.2 Các bƣớc thực hiện

Có một số cách để ngƣời quản trị có thể thu thập nhật ký hệ thống nhƣ sau:

 Ngƣời quản trị có thể cài các agent lên trên các máy tính, máy chủ cần thu thập nhật ký hệ thống để dịch vụ này gửi nhật ký hệ thống về hệ thống GSANM. Đối với trƣờng hợp này, ngƣời quản trị có thể thực hiện trên cả hai môi trƣờng Linux và Windows. Ngồi ra, mơi trƣờng Linux cịn có cơ chế chủ động gửi nhật ký hệ thống về một host bất kỳ, chỉ cần ngƣời quản trị thực hiện khai báo host.

Đối với môi trƣờng Windows ngƣời quản trị có thể cài đặt ứng dụng Adaptive Log Exporter để gửi nhật ký hệ thống về cho hệ thống GSANM. Adative Log Exporter là một ứng dụng độc lập chạy trên mơi trƣờng Windows có khả năng thu thập nhật ký hệ thống từ các máy tính hoặc thiết bị chạy trên môi trƣờng Windows và chuyển tiếp các nhật ký hệ thống này về cho Event Collector. [13]

Hình 3.2: Giao diện của Adaptive Log Exporter

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>

Hình 3.3: Định dạng mẫu chung của log

Tùy thuộc vào từng loại nhật ký hệ thống mà nhãn của trƣờng dữ liệu có thể đƣợc xác định và trích xuất. Tuy nhiên, khơng phải tất các các trƣờng này đều có thể đƣợc trích xuất, có nghĩa là một số nhật ký hệ thống chứa giá trị tƣơng ứng với các nhãn trên, và một số nhật ký hệ thống có thể khơng chứa các giá trị tƣơng ứng với các nhãn đó. Do vậy, để xác định một loại nhật ký hệ thống mới ngƣời quản trị sẽ thực hiện một số bƣớc cơ bản sau:

Bƣớc 1: Xác định nhãn thông tin quan trọng

Các thiết bị an ninh hoặc ứng dụng trong hệ thống GSANM cung cấp nhiều dạng nhật ký hệ thống khác nhau. VD: Đối với nhật ký hệ thống Firewall có các loại nhật ký hệ thống nhƣ Access, Deny, Drop, … Sau đây là một ví dụ về nguồn nhật ký hệ thống chƣa đƣợc định dạng.

<13>Aug 3 14:32:58 SERVER FTP: Connection closed <SessionID=58616793, Listener=198.147.12.43:21, Client=172.25.254.27:27515><Command=start> <11>Aug 3 14:32:44 SERVER SSH: No User. Possible reasons: Invalid username, invalid license, error while accessing user database <SessionID=29634951, Listener=198.147.12.43:22, Client=172.25.254.27:8077, User=infosec> <14>Aug 3 14:28:17 SERVER FTP: SendResponse: An existing connection was forcibly closed by the remote host <SessionID=19346180, Listener=198.147.12.43:21,

Client=172.25.254.27:19971><Command=QUIT, Error=10054> <13>Aug 3 12:10:00 SERVER SSH: Completed password Authentication. User logged in <Host=usftp.discovery.com, SessionID=41272593, Listener=198.147.12.43:22, Client=50.58.39.77:63163, User=ussidecoder> 4>Aug 3 12:10:01 SERVER SSH: Client closed connection <Host=usftp.discovery.com, SessionID=41272593, Listener=198.147.12.43:22, Client=50.58.39.77:63163, User=ussidecoder> <13>Aug 3 13:01:36 SERVER FTP: <Host=usftp.discovery.com, SessionID=62734836, Listener=198.147.12.43:21, Client=172.30.31.81:11632, User=netcaptioning><Command=STOR, Parameters=144356.040.01.285A.txt><Filename=\\us\shared\usftp\private\n etca ptioning\Offline Files\Hub\144356.040.01.285A.txt, FileSize=51648 bytes, TransferTime=1078 ms>

Khi đọc nhật ký hệ thống trên ngƣời quản trị có thể hiểu đƣợc các một số thơng tin quan trọng với các nhãn nhƣ User, Command, File name, …. Sau đây là bảng các nhãn thông tin quan trọng mà ngƣời quản trị thƣờng phải xác định để đƣa vào định dạng mẫu.

Thuộc tính Mô tả

Event Name Đằng sau thông tin bắt đầu phiên nhƣ ―SSH‖, sau thông tin ―Command‖

Source IP Giá trị trong nguồn nhật ký hệ thống tại vị trí nhãn―Client=‖ Source Port Giá trị đứng sau địa chỉ IP nguồn đƣợc phân cách bằng dấu ―:‖ Destination IP Giá trị trong nguồn nhật ký hệ thống tại vị trí nhãn ―Listener=‖

Destination Port

Giá trị đứng sau địa chỉ IP đích đƣợc phân cách bằng dấu ―:‖

Username Giá trị trong ngồn nhật ký hệ thống tại vị trí nhãn ―User=‖ Hostname Giá trị trong nguồn nhật ký hệ thống tại vị trí nhãn ―Host=‖

Bảng 3.1: Nhãn thơng tin quan trọng

Các giá trị thông tin trên rất quan trọng và hữu dụng cho hệ thống GSNAM bởi vì đó là các thơng tin cơ bản khi ngƣời quản trị cần điều tra hoặc phát hiện các tấn công. Các thông tin trên cho phép ngƣời quản trị xác định nguồn đích và sự kiện xảy ra giữa hai máy chủ, các cổng của máy đích và máy nguồn cũng nhƣ địa chỉ IP của các máy đó, thơng tin ngƣời dùng, ....

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cải tiến tập luật trong hệ thống giám sát an ninh mạng 04 (Trang 51)