Tải bản đầy đủ (.docx) (25 trang)

BÀI TẬP LỚN CƠ SỞ AN TOÀN THÔNG TIN Đề tài: TÌM HIỂU VÀ SO SÁNH TÍNH NĂNG CỦA MỘT SỐ IDS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.46 MB, 25 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN

CƠ SỞ AN TỒN THƠNG TIN
Đề tài:

TÌM HIỂU VÀ SO SÁNH TÍNH NĂNG
CỦA MỘT SỐ IDS
Sinh viên thực hiện:

ĐỖ HUY ĐỨC AT150608
NGUYỄN TẤN DŨNG AT150610
Nhóm 15

Giảng viên hướng dẫn:

Nguyễn Mạnh Thắng

1


MỤC LỤC
CHƯƠNG 1: TỔNG QUAN IDS

3

1.1 KHÁI NIỆM IDS/IPS


3

1.2 PHÂN LOẠI IDS

3

1.2.1 PHÂN LOẠI THEO MƠ HÌNH CHỨC NĂNG

3

1.2.2 PHÂN LOẠI THEO PHƯƠNG THỨC HOẠT ĐỘNG

5

1.3 GIỚI THIỆU MỘT SỐ IDS PHỔ BIẾN

6

CHƯƠNG 2: HƯỚNG DẪN SỬ DỤNG SURICATA

8

2.1 GIỚI THIỆU SURICATA

8

2.2 CÀI ĐẶT SURICATA

9


2.2.1 CÀI ĐẶT THƯ VIỆN

9

2.2.2 CÀI ĐẶT MÃ NGUỒN

9

2.3 SURICATA RULES

10

2.3.1 CẤU TRÚC RULES

10

2.3.2 RULE OPTION

11

2.4 CHẾ ĐỘ LÀM VIỆC (RUNMODES)

15

2.5 CẤU HÌNH CHO SURICATA

17

CHƯƠNG 3: THỰC NGHIỆM


18

3.1 CHUẨN BỊ

18

3.2 CÀI ĐẶT

18

3.3 THỬ NGHIỆM DOS.

18

2


CHƯƠNG 1: TỔNG QUAN IDS
1.1 KHÁI NIỆM IDS/IPS
IDS (Intrusion Detection System) là hệ thống phát hiện xâm nhập. Đây là các phần
mềm hoặc công cụ giúp người dùng bảo mật hệ thống và cảnh báo mỗi khi có xâm nhập.
IDS thường là một phần của các hệ thống bảo mật hoặc phần mềm khác, đi kèm với
nhiệm vụ bảo vệ hệ thống thơng tin. Các tính năng quan trọng nhất của IDS bao gồm:
giám sát mạng lưu lượng và các hoạt động nghi ngờ; đưa ra cảnh báo về những điểm bất
thường cho hệ thống và mạng quản trị đơn vị; kết hợp với lửa tường, phần mềm diệt virus
nên một hệ thống hoàn chỉnh bảo mật.
IPS (Intrusion Prevention System) là hệ thống ngăn chặn xâm nhập. Như vậy, IPS bao
gồm IDS cùng hệ thống kiểm soát. Trong khi, IDS chỉ có thể phát hiện và đưa ra các cảnh
báo thì IPS có khả năng ngăn chặn phát tán dựa vào nội dung của các hành vi xâm nhập
tới hệ thống.


1.2 PHÂN LOẠI IDS
1.2.1 PHÂN LOẠI THEO MƠ HÌNH CHỨC NĂNG
Có 2 loại IDS chính :
- Host-based Intrusion Detection System (HIDS) – Một hệ thống có quyền truy cập
trực tiếp vào cả mạng nội bộ và internet, HIDS chụp một 'hình ảnh' của tập tin của
tồn bộ hệ thống và sau đó so sánh nó với một hình ảnh trước đó. Nếu hệ thống tìm
thấy sự khác biệt lớn, chẳng hạn như các tệp bị thiếu, v.v., thì nó ngay lập tức cảnh
báo người quản trị.
-

Network-based Intrusion Detection System (NIDS) - Một hệ thống phân tích lưu
lượng truy cập tồn bộ mạng con, NIDS theo dõi cả lưu lượng truy cập trong và
ngoài, đến và đi từ tất cả các thiết bị của mạng.

HOST-BASED INTRUSION DETECTION SYSTEMS (HIDS)
Host-based Intrusion Detection System (HIDS) sẽ kiểm tra các sự kiện trên máy tính
trong mạng của người dùng thay vì lưu lượng truy cập xung quanh hệ thống. Loại hệ
thống phát hiện xâm nhập này được viết tắt là HIDS và nó chủ yếu hoạt động bằng cách
xem xét dữ liệu trong các tệp quản trị trên máy tính mà nó bảo vệ, các tệp đó bao gồm tệp
nhật ký (log) và tệp cấu hình.
HIDS sẽ sao lưu các tệp cấu hình của người dùng để người dùng có thể khơi phục cài
đặt nếu vi-rút độc hại làm mất an toàn hệ thống của người dùng bằng cách thay đổi thiết
lập của máy tính. Một yếu tố quan trọng khác mà người dùng muốn bảo vệ là quyền truy
cập root trên các nền tảng giống Unix hoặc thay đổi sổ đăng ký trên hệ thống Windows.

3


HIDS sẽ không thể chặn những thay đổi này, nhưng nó sẽ có thể thơng báo cho người

dùng nếu có bất kỳ quyền truy cập nào như vậy xảy ra.
NETWORK-BASED INTRUSION DETECTION (NIDS)
Network-based Intrusion Detection System (NIDS) còn được gọi là hệ thống phát
hiện xâm nhập mạng hoặc IDS mạng, kiểm tra lưu lượng trên mạng của người dùng. Như
vậy, một NIDS điển hình phải bao gồm một bộ dị tìm gói để thu thập lưu lượng mạng để
phân tích.
Cơng cụ phân tích của NIDS thường dựa trên quy tắc và có thể được sửa đổi bằng
cách thêm các quy tắc của riêng người dùng. Với nhiều NIDS, nhà cung cấp hệ thống
hoặc cộng đồng người dùng, sẽ cung cấp các quy tắc cho người dùng và người dùng chỉ
có thể nhập các quy tắc đó vào q trình triển khai của mình. Khi người dùng đã quen với
cú pháp quy tắc của NIDS đã chọn, người dùng sẽ có thể tạo quy tắc của riêng mình.
Với việc thu thập lưu lượng truy cập, người dùng không muốn tất cả lưu lượng truy
cập của toàn bộ hệ thống vào các tệp nhật kí. Bởi vì như vây người dùng sẽ khơng thể
phân tích tất cả dữ liệu đó. Vì vậy, các quy tắc phân tích trong NIDS cũng tạo ra việc thu
thập dữ liệu có chọn lọc. Ví dụ: nếu người dùng có quy tắc cho một loại lưu lượng HTTP
đáng lo ngại, NIDS của người dùng chỉ nên chọn và lưu trữ các gói HTTP hiển thị các đặc
điểm đó.
Thơng thường, NIDS được cài đặt trên một phần cứng chuyên dụng. Các giải pháp
doanh nghiệp trả phí cao cấp đi kèm như một phần của bộ mạng với phần mềm được tải
sẵn trên đó. Tuy nhiên, người dùng khơng phải trả nhiều tiền cho phần cứng chuyên dụng.
NIDS yêu cầu một mơ-đun cảm biến để nhận lưu lượng, vì vậy người dùng có thể tải nó
vào một bộ phân tích mạng LAN hoặc người dùng có thể chọn phân bổ một máy tính để
chạy tác vụ. Tuy nhiên, hãy đảm bảo rằng thiết bị mà người dùng chọn cho nhiệm vụ có
đủ tốc độ xung nhịp để khơng làm chậm mạng của người dùng.

4


Hình 1.1: Mơ hình mạng HIDS và NIDS
SO SÁNH SỰ KHÁC GIỮA IDS/IPS VÀ FIREWALL

Sau khi đã tìm hiểu các khái niệm cách hoạt động hay mơ hình của IDS/IPS trong hệ
thống. Dưới đây là sự khác nhau IDS/IPS và firewall:
Cả IDS và IPS đều là các hệ thống dựa trên dữ liệu những mối đe dọa. IDS cần quản
trị viên xem xét những mối nguy được cảnh báo, còn IPS có thể tự ngăn chặn các mối
nguy này.
Về phía FIREWALL, thường được cấu hình để chặn tất cả truy cập, sau đó người
dùng sẽ cài đặt để cho phép một số loại truy cập nhất định. Trong khi đó, cách thức làm
việc của IPS và IDS hoàn toàn ngược lại, cho phép tất cả các truy cập và chỉ cảnh báo
hoặc chặn một số truy cập cụ thể. Vì vậy, tốt nhất người dùng nên sử dụng kết hợp
FIREWALL với IPS hoặc IDS.
Dưới đây là 1 số ưu nhược điểm của IDS:
- Ưu điểm: Thích hợp sử dụng để thu thập số liệu, bằng chứng phục vụ công tác điều
tra và ứng cứu sự cố. Đem đến cái nhìn bao quát, toàn diện về toàn bộ hệ thống mạng,
là cơng cụ thích hợp phục vụ việc kiểm tra các sự cố trong hệ thống mạng.
- Nhược điểm: Cần được cấu hình hợp lý, nếu khơng sẽ gây ra tình trạng báo động
nhầm. Khả năng phân tích traffic mã hóa tương đối thấp. Chi phí phát triển và vận
5


hành hệ thống tương đối cao. Ngoài ra, khi triển khai IDS, người dùng cần chú ý đến
những tiêu chí như: xác định công nghệ IDS; xác định thành phần; cài đặt cấu hình an
tồn và phù hợp cho IDS; xác định vị trí hợp lý lắp đặt IDS; xây dựng các cơ chế
quản lý, tổ chức; ngăn chặn tối đa các cảnh báo nhầm và những bất tiện không đáng
có từ sự cố này.Với những thơng tin bài viết cung cấp, hi vọng người dùng đã hiểu
được phần nào IDS là gì, nắm được phân loại một số dạng IDS cũng như điểm mạnh
và điểm yếu của IDS. Trong thời đại công nghệ số hiện nay, trang bị một IDS cho
doanh nghiệp là điều cấp thiết và thiết thực, để bảo vệ chính doanh nghiệp của người
dùng khỏi những nguy cơ tiềm ẩn trên hệ thống.
1.2.2 PHÂN LOẠI THEO PHƯƠNG THỨC HOẠT ĐỘNG
Hầu hết các IDS đều sử dụng hai chế độ hoạt động, cịn một số có thể chỉ sử dụng

một trong hai cách. Sau đây là phân loại IDS theo phương cách hoạt động:
- Signature-based IDS
- Anomaly-based IDS
SIGNATURE-BASED IDS
Signature-based IDS (phát hiện dựa trện chữ kí) đây là phương pháp dựa trên chữ ký
(Signature) xem xét checksums và xác thực các thông điệp. Các phương pháp phát hiện
dựa trên chữ ký cũng có thể được áp dụng bởi NIDS cũng như HIDS. HIDS sẽ xem xét
các tệp nhật ký và cấu hình cho bất kỳ bản viết lại bất ngờ nào, trong khi NIDS sẽ xem
xét các checkums trong các gói được chụp lại và tính tồn vẹn xác thực tin nhắn của các
hệ thống như SHA1.
NIDS có thể bao gồm một cơ sở dữ liệu chữ ký mà các gói được biết đến là nguồn
hoạt động độc hại mang theo. May mắn thay, hacker không ở máy tính của họ để bẻ khóa
mật khẩu hoặc truy cập vào user root. Thay vào đó, họ sử dụng các quy trình tự động
được cung cấp bởi các cơng cụ hacker nổi tiếng. Các cơng cụ này có xu hướng tạo ra các
chữ ký lưu lượng truy cập giống nhau mỗi lần vì các chương trình máy tính lặp đi lặp lại
các cấu trúc tương tự thay vì tạo ra các biến thể ngẫu nhiên.
ANOMALY-BASED IDS
Anomaly-based IDS (Phát hiện dựa trên sự khác thường) tìm kiếm các mơ hình hoạt
động bất ngờ hoặc bất thường. Danh mục này cũng có thể được thực hiện bởi cả hệ thống
phát hiện xâm nhập dựa trên máy chủ và mạng. Trong trường hợp HIDS, một sự bất
thường có thể là các nỗ lực đăng nhập thất bại lặp đi lặp lại hoặc hoạt động bất thường
trên các cổng của thiết bị.
Trong trường hợp của NIDS, cách tiếp cận bất thường đòi hỏi phải thiết lập một
đường cơ sở của hành vi để tạo ra một tình huống tiêu chuẩn mà các mơ hình lưu thơng
đang diễn ra có thể được so sánh. Một loạt các mơ hình lưu thơng được coi là chấp nhận
được và khi lưu lượng truy cập thời gian thực hiện tại di chuyển ra khỏi phạm vi đó, một
cảnh báo bất thường được gửi.

6



1.3 GIỚI THIỆU MỘT SỐ IDS PHỔ BIẾN
Các nhà sản xuất phần mềm IDS tập trung vào các hệ điều hành giống Unix. Một số
sản xuất mã của họ theo tiêu chuẩn POSIX. Vì hệ điều hành Mac OS của Mac OS X và
macOS dựa trên Unix, các hệ điều hành này được phục vụ cho việc sử dụng IDS tốt hơn
nhiều so với Windows. Dưới đây là liệt kê một số công cụ IDS với mỗi hệ điều hành có
thể được cài đặt:
IDS

NIDS/HID
S

Unix

Linux

Windows Mac OS

SolarWinds Security Event
Manager

Cả hai

Khơng

Khơn
g




Khơng

CrowdStrike Falcon

HIDS









Snort

NIDS







Khơng

OSSEC

HIDS










ManageEngine EventLog Analyzer

HIDS









Suricata

NIDS










Zeek

NIDS





Khơng



Sagan

Cả hai





Khơng



Security Onion

Cả hai










AIDE

HIDS





Khơng



Open WIPS-NG

NIDS

Khơng



Khơng


Khơng

Bảng 1.1: Danh sách một số công cụ IDS với hệ điều hành sử dụng
SNORT
Snort được phát triển và tạo ra bởi Sisco, là công cụ mã nguồn mở và khơng có GUI,
mặc dù rất nhiều công cụ nguồn mở khác đã được tạo ra để giúp đỡ, chẳng hạn như BASE
và Sguil. Các công cụ này cung cấp giao diện web để truy vấn và phân tích các cảnh báo
đến từ Snort IDS. Snort với tuổi thọ sản phẩm lâu dài nên vì thế có cộng đồng lớn và đưa
ra rất nhiều giải pháp hỗ trợ ngoài ra hộ trợ nhiều giao diện quản trị. Dưới đây là một số
tính năng nổi bật của Snort:
- Thiết kế theo mơ-đun xử lí
- Sử dụng cấu hình đơn giản vì có những cấu hình sẵn
- Hỗ trợ plugin framework (hơn 200 plugin)
- Tự động tạo tài liệu tham khảo
- Cấu hình cho bộ nhớ có thể mở rộng thêm
7


-

Phân tích quy tắc và cú pháp
Tuy nhiên dưới đây cũng là 1 số nhược điểm của Snort:

-

Rất phức tạp, ngay cả với các quy tắc được định cấu hình sẵn, u cầu có kiến thức
chun mơn sâu để hiểu rõ.
Quá tin cậy vào cộng đồng để được hỗ trợ, đôi khi sẽ không thể phát hiện ra những
cuộc tấn công mới.


SURICATA
Mặc dù kiến trúc của Suricata khác với Snort, nhưng nó hoạt động giống như Snort và
có thể sử dụng các chữ ký giống nhau. Dưới đây là một số tính năng đáng chú ý của
Suricata:
-

-

-

Multi-Threaded: Snort chạy với một luồng duy nhất có nghĩa là nó chỉ có thể sử dụng
một CPU (core) tại một thời điểm. Suricata có thể chạy nhiều luồng để nó có thể tận
dụng tất cả các CPU mà người dùng có sẵn.
Xây dựng tăng tốc phần cứng: Người dùng có thể sử dụng card đồ họa để kiểm tra
lưu lượng mạng.
Trích xuất tệp: Nếu phát hiện trên lưu lượng có tải xuống phần mềm độc hại. Người
dùng có thể chụp nó ngay từ Suricata và có thể phân tích nó.
LuaJIT - Nó cũng là một cơng cụ kịch bản có thể được sử dụng với thơng tin từ các
gói được kiểm tra bởi Suricata. Điều này làm cho việc kết hợp phức tạp thậm chí cịn
dễ dàng hơn và người dùng thậm chí có thể đạt được hiệu quả bằng cách kết hợp
nhiều quy tắc vào một kịch bản.
Khả năng thu thập log tốt: Suricata có thể lấy và ghi lại những thứ như chứng chỉ TLS
/ SSL,yêu cầu HTTP, yêu cầu DNS.
Nhược điểm và hạn chế của Suricata:

-

Là một công cụ mã nguồn mở tuy nhiên khơng có cộng đồng lớn như các cơng cụ
như Snort hoặc Zeek
Tập lệnh tích hợp có thể khó sử dụng yêu cầu có hiểu biết.


OSSEC
OSSEC chạy trên hầu hết các hệ điều hành lớn và bao gồm quản lý dựa trên
client/server và kiến trúc ghi nhật ký, điều này rất quan trọng trong hệ thống HIDS. Vì
HIDS có thể bị xâm phạm cùng một lúc hệ điều hành, điều quan trọng là thông tin bảo
mật và pháp y rời khỏi máy chủ và được lưu trữ ở nơi khác càng sớm càng tốt để tránh bất
kỳ loại giả mạo hoặc làm xáo trộn nào có thể ngăn chặn phát hiện. Kiến trúc client/server
của OSSEC kết hợp chiến lược này bằng cách cung cấp cảnh báo và nhật ký đến một máy
chủ tập trung, nơi phân tích và thơng báo có thể xảy ra ngay cả khi hệ thống máy chủ bị
ngoại tuyến hoặc bị xâm phạm. Một lợi thế khác của kiến trúc client/server là khả năng
8


quản lý tập trung các đại lý từ một máy chủ duy nhất. Vì việc triển khai có thể dao động
từ một đến hàng ngàn cài đặt, khả năng thực hiện các thay đổi toàn cầu từ máy chủ trung
tâm là rất quan trọng đối với sự tỉnh táo của quản trị viên. Việc cài đặt OSSEC cực kỳ nhẹ
(trình cài đặt dưới 1MB) và phần lớn phân tích thực sự xảy ra trên máy chủ có nghĩa là rất
ít CPU được OSSEC tiêu thụ trên máy. OSSEC cũng có khả năng gửi nhật ký hệ điều
hành đến máy chủ để phân tích và lưu trữ, điều này đặc biệt hữu ích trên các máy
Windows khơng có cơ chế ghi nhật ký gốc và đa nền tảng.
Ưu điểm của OSSEC:
-

Hoàn tồn miễn phí và mã nguồn mở
Sử dụng tổng kiểm tra để xác minh tính tồn vẹn của nhật ký và tệp
Hỗ trợ giám sát tài khoản gốc trên hệ thống Unix/Linux
Hỗ trợ cộng đồng mạnh mẽ cung cấp các mẫu mới và hồ sơ quét
Nhược điểm và hạn chế OSSEC:

-


Để nhận được các thông tin đáng tin cậy trên cộng đồng để được hỗ trợ túy nhiễn có
thể trả phí để nhận được hỗ trợ.
Có thể sử dụng các tính năng báo cáo và hình ảnh hóa tốt hơn

9


CHƯƠNG 2: HƯỚNG DẪN SỬ DỤNG SURICATA
2.1 GIỚI THIỆU SURICATA
Suricata là mã nguồn mở và được sở hữu bởi một tổ chức phi lợi nhuận do cộng đồng
điều hành, Open Information Security Foundation (OISF). Nó là một cơng cụ giám sát an
ninh mạng đồng thời vừa là IDS và IPS. Suricata và Snort có sử dụng rules tương đồng
nhau, tuy nhiên Snort chỉ chạy với 1 luồng duy nhất điều này có nghĩa là nó chỉ sử dụng
một CPU tại một thời điểm. Với Suricata, nó có chức năng chọn chạy đa luồng, chính vì
thế nó có thể tận dụng tất cả CPU sẵn có, có lẽ đây chính là tính năng nổi trội và cái tiến
hơn của Suricata.
Suricata dử dụng chữ kĩ (signatures) để kích hoạt và đưa ra các cảnh báo, vì thế ta cần
thêm và cập nhật chữ kí trước khi chạy Suricata. Chữ kí trong Suricata cịn được biết đến
là rules và nó chứa trong các tệp các bộ quy tắc.

2.2 CÀI ĐẶT SURICATA
2.2.1 CÀI ĐẶT THƯ VIỆN
Suricata sẽ cần một số thư viện để biên dịch và phát triển chúng. Theo mặc định,
Suricata hoạt động như một IDS, tuy nhiên để nó có thể sử dụng chức năng như IPS sẽ
cần phải cài thêm một số gói vào hệ thống. Dưới đây là một số câu lệnh để cài đặt thư
viện:
Tối thiểu:
apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \
libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \

make libmagic-dev libjansson libjansson-dev
Dùng tích hợp IDS iptables/nftables:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 \
libnetfilter-log-dev libnetfilter-log1 \
libnfnetlink-dev libnfnetlink0
2.2.2 CÀI ĐẶT MÃ NGUỒN
Đầu tiên, ta sẽ tải phiên bản mới nhất hiện tại Suricata là 6.0.3 tại trang chủ chính
thức bằng câu lệnh sau:
wget />Sau khi đã tải xong, giải nén tệp nén bằng câu lệnh sau:
tar -xvzf suricata-6.0.3.tar.gz

10


Tiếp theo, ta sẽ thực hiện chọn thư mục cho Suricata theo câu lệnh dưới đây (bước
này có thể khơng thực hiện vì mặc định Suricat được cài đặt trong /usr/local/bin cấu hình
mặc định /usr/local/etc/suricata và log được mặc định /usr/local/var/log/suricata):
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc
--localstatedir=/var
Cuối cùng, cài đặt suricata bằng câu lệnh sau:
make
make install
Hoặc để đơn giản các bước chúng ta có thể cài đặt gói suricata với phiên bản mới nhất
và các thư mục để với đường dẫn mặc định bằng câu lệnh dưới đây:
sudo apt install suricata jq
Sau khi hồn tất q trình tải và cài đặt Suricata, trong q trình sử dụng ta có thể sử
dụng một số tùy chọn sau:
-V : Hiện thị phiên bản của Suricata
-c <đường dẫn>: Đường dẫn tới file configuration
-T : Kiểm tra cấu hình

-r <đường dẫn> : Đọc file pcap ở chế độ ngoại tuyến. Nếu đường dẫn là thư mục
tất cả các tệp trong đó sẽ được xử lí theo thứ tự thời gian để duy truy trạng thái sử lý
luồng với thời gian thực.
-i <Interface> : lựa chọn này ta sẽ nhập tên card mạng được cấu hình để bắt
gói tin trong file configuration.
-q : Chạy nội tuyến hàng đợi NFQUEUE với số id. Có thể sử dụng tùy chọn
này nhiều lần, dùng tronh chế độ IPS.
-S <*.rules> : chọn 1 tệp chữ kí, tệp này chạy riêng với tệp được cấu hình
trong file configuration.
-s <*.rules> : chọn 1 tệp chữ kí, tệp này tải lên cùng với tệp được cấu hình
trong file configuration.
--runmode <runmode> : tùy chọn này dùng để ghi đề runmode trong file
configuration. Có 3 chế độ là workers, autofp và single. Phần này sẽ làm rõ ở nội
dung những phần sau.

11


2.3 SURICATA RULES
2.3.1 CẤU TRÚC RULES
Như đã giới thiệu phần đầu, chữ kí trong Suricata là vơ cùng quan trọng, nó là cơ sở
để xác định giúp người giám sát đưa ra cho mình “phán đốn” về thơng tin nhận được.
Sau đây là cấu trúc của 1 rule/signature được định dạng như sau:
- Action: Xác định hành vi sẽ thực hiện nếu mà trùng khớp signature.
- Header: Gồm có tên giao thức, địa chỉ IP, port và hướng của rule.
- Rule option: Gồm nhiều thành phần xác định nên rule.
Dưới đây là 1 ví dụ cụ thể :
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY curl
User-Agent Outbound"; flow:established,to_server; content:"curl/"; nocase;
http_user_agent; depth:5;

reference:url,www.useragentstring.com/pages/useragentstring.php;
classtype:attempted-recon; sid:2013028; rev:4; metadata:created_at 2011_06_14,
updated_at 2020_04_22;)
Trong ví dụ này, action có chữ màu đỏ, header có chữ màu xanh lá cây và rule option
có chữ màu xanh dương.
ACTION
Cung cấp một số hành động sau:
- Alert : Đưa ra 1 thơng báo.
- Pass : Ngừng kiểm tra thêm gói.
- Drop : hủy và đưa ra cảnh báo về gói tin.
- Reject : thông báo lỗi đến người gửi và không đính kèm RST/ICMP cho gói tin.
- Rejectsrc : giống như reject nhưng chỉ từ chối
- Rejectdst : thông báo lỗi đến người gửi và kèm RST/ICMP cho gói tin.
- Rejectboth : thông báo lỗi đến người gửi và kèm RST/ICMP cho cả 2 phía.
Lựa chọn drop và reject sử dụng cho mode IPS
PROTOCOL
Là từ khóa cho biết signature liên quan đến giao thức nào như các giao thức hoạt
động tầng 4 mơ hình OSI như tcp, udp, icmp, ip. Hay thâm chí các giao thức ở tầng 7 như
http, ftp, ssh, dns, smb, …
IP(NGUỒN VÀ ĐÍCH)
Phần trước mũi tên là IP nguồn, sau mũi tên là IP đích có thể biểu diễn ở cả 2 dạng
IPv4 và IPv6. Ngoài việc có thể chọn giá trị IP ta có thể sử dụng biến $HOME_NET và
$EXTERNAL_NET được cấu hình trong file .yaml để làm giá trị.
12


PORT(NGUỒN VÀ ĐÍCH)
Tương tự như ip phần trước mũi tên là port nguồn và sau mũi tên là port đích
HƯỚNG CỦA GĨI TIN
Được kí hiệu là mũi tên có chiều từ trái sang phải ->. Tức là những gói tin có hướng

trùng với rule thì sẽ được so sánh để xem có khớp với rule hay khơng. Ngồi ra, một số
rule có thể khớp với cả 2 phía ta có thể sử dụng < >. Tuy nhiên trong quá trình viết rule
khuyến cáo khơng nên sử dụng kí hiệu này vì dễ làm q trình giám sát trở nên khó khăn
hơn.
2.3.2 RULE OPTION
Gồm các từ khóa và các giá trị gán với từ khóa tưng ứng và ngăn cách chúng bởi các
dấu chấm phẩy, trong phần tiếp theo sẽ giới thiệu và một số từ khóa và cơng dụng của
chúng sau.
TỪ KHĨA THƠNG THƯỜNG
Những từ khóa này khơng làm ảnh hưởng đến quá trình so khớp kiểm tra signature
của Suricata, chúng ảnh hướng đến cách Suricata đưa ra cảnh báo cho các sự kiện
a.
Msg (message)
Từ khóa này cung cấp thơng tin cho người đọc về cảnh báo.
Định dạng cho msg:
msg:"ET POLICY curl User-Agent Outbound"
b.
SID (signature ID)
Từ khóa sid cung cấp cho signature một chữ kí riêng cho nó và phân biệt với các
signature khác. Ví dụ :
sid:2013028;
c.
Rev (revision)
Đó là từ khóa đi kèm với sid, người ta quy ước viết rev sau sid. Rev đại diện cho
phiên bản của chữ kí, nếu như chữ kí bị thay đổi(cập nhật, sửa đổi) thì người viết ra
signature tăng giá trị của rev thêm 1. Ví dụ:
rev:2;
d.
Classtype
Đây là từ khóa phân loại quy tắc và đưa ra mức cảnh báo cho người dùng.

Ví dụ:
Class type

Alert

Priority

web-application-attack

Web Application
Attack

1

13


not-suspicious

Not Suspicious Traffic

3

classtype: not-suspicious;
e.

Reference
Từ khóa reference cung cấp thơng tin về signature. Có thể sử dụng nhiều từ khóa
reference. Ví dụ:
reference:CVE-2014-1234 ;

reference:url,www.useragentstring.com/pages/useragentstring.php;
f.
Priority
Priority là từ khóa có giá trị từ 1-255, thông thường hay sử dụng từ 1-4. Trong
Suricata priority 1 là có giá trị cao nhất. Những signature có priority cao hơn sẽ được ưu
tiên kiêm tra trước. Ví dụ:
priority:1;
TỪ KHĨA VỀ PAYLOAD
Payload là từ khóa giúp kiếm tra nội dung payload của 1 gói tin trong đường truyền
tải. Người dùng có thể tìm kiếm từ khóa mà những gói tin chứa trong payload.
Dưới đây chúng ta cùng tìm hiểu từ khóa content, đây là từ khóa vơ cùng quan
trọng đối với signature. Nó so khớp từng byte với giá trị mà cần phải so sánh, có thể
khớp với tất cả kí tự, từ chữ thường đến chữ hoa và các kí hiệu đặc biệt. Từ khóa content
có cú pháp như sau:
content: “ nội dung cần khớp”;
Với nhiều chương trình máy tính kí hiệu 0x00 có thể coi như 1 dạng biểu diễn nhị
phân, với Suricata ta kí hiệu như sau |00|. Ví dụ:
|61 61| : aa
Dưới đây là 1 số ví dụ khi sử dụng giá trị với từ khóa content:
content:”http|3A|//”; có nghĩa content lọc theo payload là http://
content:”NICK”;
Khi sử dụng từ khóa content nó xem xét tồn bộ payload xem có những từ khóa nào
khớp với giá trị mà chứ kí đang tìm kiếm khơng. Nó cố gắng tìm kiếm trùng khớp tất các
byte dữ liệu trong payload để đưa ra giá trị đúng. Và nó phân biệt chữ hoa và chữ thường.
Cùng xét ví dụ dưới đây:

14


Hình 2.1: Minh họa cách hoạt động từ khóa content

Để bộ trợ cho từ khóa content ngồi ra cịn một số từ khóa khác như:
- Nocase: khơng phân biệt chữ hoa chữ thường.
- Depth: Số bít giá trị content từ đầu payload đến giá trị được chỉ định.
- Startswith: Kiểm tra giá trị content có ở vị trí bắt đầu hay không, không cần truyền
đối số.
- Endswith: kiếm tra giá trị content có ở cuối vùng đệm hay khơng, khơng cần truyền
đối số.
- Offset: kiểm tra content bắt đầu ở vị trí bit nào trong payload.
- Distance: kiểm tra khoảng cách giữa các bit của 2 content, trả về giá trị đúng nếu
khoảng cách này lớn hơn hoặc bằng với giá trị được kiểm tra.
Chỉ có 1 content được sử dụng cho 1 signature, nếu như có nhiều content Suricata sử
dụng content mạnh nhất. Có nghĩa là content được chọn sẽ là content dài nhất, có độ bao
phủ lớn nhất. Xét ví dụ sau:
content:”User-Agent |3A|”;
content:”badness”; distance:0;
Với ví dụ này ta thấy User-Agent |3A| sẽ ln được khớp với signature vì nó dài hơn
Babness, nên nó sẽ ln bị bỏ qua. Tuy nhiên để Suricata sử dụng cả từ khóa
“fast_pattern” nó sẽ kết hợp cả 2 content này như 1 điều kiện cần và đủ.
content:”User-Agent |3A|”;
content:”badness”; distance:0; fast_pattern;

15


TỪ KHĨA VỀ FLOW
Flow là từ khóa so khớp hướng của luồng dữ liệu. Điều này giúp ta biết được gói tin
được đến từ client hay server hay là trạng thái của gói tin.
Dưới đây là 1 số giá trị dành cho từ khóa flow:
- to_client = from_server : gói tin được gửi từ server đến client.
- to_server = from_client : gói tin được gửi từ client đến server.

- established : đã thiết lập kết nối.
- not_ established : chưa thiết lập kết nối.
- stateless: tất cả các gói mà trạng thái gói tin khơng phải là established.
- only_stream : các gói tin đã được lắp ráp và được phát hiện bởi các stream engine.
- no_stream : các gói tin phân mảnh và được phát hiện bởi các stream engine.
Tuy nhiên việc xác định gói tin đã thiết lập kết nối hay chưa dựa vào từng giao thức.
Đối với TCP việc đã xác nhận 2 gói tin đã thiết lập trạng thái kết nối là sau khi hồn thành
q trình bắt tay 3 bước. Cịn đối với UDP kết nói coi là thiết lập nếu có lưu lượng từ cả 2
phía
QUẢN LÍ RULES VỚI SURICATA
Theo mặc định Suricata sử dụng bộ chữ kí tại thư mục có đường dẫn:
/etc/suricata/rules/suricata.rules
Nếu như muốn thêm các quy tắc có thể thêm vào file suricata.rules hoặc sẽ tạo riêng
cho mình 1 tệp chữ kí với định dạng là file đi .rules. Sau đó thêm đường dẫn vào file
config là suricata.yaml :
Cập nhật lại suricta để load lại bộ chữ kí mới được thêm bằng câu lệnh:
suricata-update
Để khởi động suricata dùng câu lệnh sau:
suricata –c /etc/suricata/suricata.yaml –i enss33
Log của suricata được mặc định lưu tại /var/log/suricata/fast.log

2.4 CHẾ ĐỘ LÀM VIỆC (RUNMODES)
Suricata được xây dựng hoạt động dựa trên các threads, thread-modules và hàng đợi.
Thread giống như tiến trình(process) trên máy tính, Như đã nói Suricata có thể chạy đa
luồng nên sẽ có nhiều thread chạy cùng lúc. Thread-module giống như các chức năng như
module phát hiện, module giải mã,… Một gói tin có thể được sử lí bởi nhiều luồng, gói
tin sẽ được chuyển đến luồng kế tiếp thông qua hàng đợi. Chế độ làm việc của Suricata là
điều chỉnh cách hoạt động của threads, thread-module và hàng đợi. Như đã nói ở phần
trên Suricata có 3 chế độ làm việc là single, worker và autofp.


16


Chế độ làm việc worker, card NIC giúp các gói tin được cân bằng tải trước khi vào các
threads để xử lí, sau đó các gói tin được đóng gói vào trong đường ống và được các
module xử lí. Hiện tại, chế độ làm việc của worker đêm lại hiệu năng và hiệu quả tốt nhất.
Trong trường hợp sử lí file PCAP hay đang làm việc với chế độ IPS, chế độ làm việc
autofp được sử dụng. Ở đây sẽ có 1 hoặc nhiều luồng bắt gói tin, các gói tin được bắt sẽ
được giải mã. Sau đó các gói tin sẽ được chuyển xuống các luồng làm việc tương tự như
chế độ worker.
Cuối cùng với chế độ làm việc single nó hoạt động tương tự như woker tuy nhiên có chỉ
có 1 thread duy nhất làm việc.

Hình 2.2 : Chế độ làm việc worker

17


Hình 2.3: Chế độ làm việc autofp

18


Hình 2.5: Chế độ làm việc single

2.5 CẤU HÌNH CHO SURICATA
Thực hiện cấu hình cấu hình cho Suricata với đường dẫn /etc/suricata/suricata.yaml.
Sau đây là 1 số nhưng thông số cần thiết khi cài đặt:
$HOME_NET: địa chỉ, dải IP mà muốn giám sát.
$EXTERNAL_NET: địa chỉ hoặc các dải địa chỉ phía ngoài internet.


19


Chọn dường dẫn cho log

Chọn card mạng bắt các gói tin

Có thể chọn chạy Suricata với chế độ user

Thiết lập mức ưu tiên các hành động, tuy nhiên có thể không thiết lập

Thêm đường dẫn signature cho Suricata tham chiếu khi hoạt động:

CHƯƠNG 3: THỰC NGHIỆM
3.1 CHUẨN BỊ
Dùng 2 máy dùng hệ điều hành Kali, dùng phần mềm giả lập với VMware với cấu
hình card mạng như mơ hình dưới đây:
Tên máy

Card mạng

IP

IDS

VMnet0

192.168.10.1


Attack

VMnet0

192.168.10.2

Bảng 3.1: Cấu hình IP của mơ hình thực nghiệm

20


Hình 3.1: Sơ đồ mơ hình IDS thực nghiệm

3.2 CÀI ĐẶT

Hình 3.2: Cài đặt một số thư viện cần dùng cho Suricata

21


Hình 3.3: Cài đặt Suricat
Tạo 1 file chữ kí tại có tên là csattt.rules tại đường dẫn /etc/suricata/rules/

Hình 3.4: Tạo chữ kí
Sau đây config file suricata.yaml:

Hình 3.5: Set địa chỉ $HOME_NET và $EXTERNAL_NET
22



Hình 3.6: Chọn đường dẫn và cấu hình log

Hình 3.7: Cấu hình card mạng bắt gói tin

Hình 3.8: Chọn đường dẫn signature để Suricata tham chiếu
Giờ thử khởi động Suricata với câu lệnh dưới đây:
23


Hình 3.9: Khởi động Suricata mode IDS

3.3 THỬ NGHIỆM DOS.
Trên máy attack ta cài tool dos slowloris:
git clone />Thực hiện dos với mục tiêu là máy server 192.168.10.1

Hình 3.10: Sử dụng tool DoS slowloris trên máy tấn công
Trên IDS lúc này kiểm tra log, đã phát hiện ra tấn cơng:

Hình 3.11: Log IDS thu được

24


TÀI LIỆU THAM KHẢO
[1]

/>
[2]

/>

[3]
[4]

/> />
PHÂN CHIA CƠNG VIỆC

Họ tên

Cơng việc

Đỗ Huy Đức

Nghiên cứu chương 1 và làm powerpoint.

Nguyễn Tấn Dũng

Nghiên cứu sản phẩm IDS suricata, thực hiện
demo và thuyết trình.

25


×