You are on page 1of 19

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA AN TOÀN THÔNG TIN

HỌC PHẦN: THỰC TẬP CƠ SỞ


BÁO CÁO BÀI THỰC HÀNH SỐ 6:
Cài đặt, cấu hình HIDS/NIDS

Họ và tên sinh viên: Chu Văn Phúc


Mã số sinh viên: B20DCAT140
Lớp: D20CQAT04-B
Họ và tên giảng viên: Nguyễn Ngọc Điệp

Hà Nội: 03/2023
Mục lục
1. Mục đích:...................................................................................................................2
2. Nội dung thực hành:..................................................................................................2
2.1. Tìm hiểu lý thuyết:..............................................................................................2
a) Tìm hiểu khái quát về các hệ thống phát hiện tấn công, xâm nhập, phân loại
các hệ thống phát hiện xâm nhập, các kỹ thuật phát hiện xâm nhập:..................2
b) Tìm hiểu về kiến trúc và tính năng của một số hệ thống phát hiện tấn công,
xâm nhập, như: Snort, Suricata, Zeek, OSSEC, Wazuh........................................4
2.2. Một số tài liệu tham khảo:..................................................................................8
2.3. Chuẩn bị môi trường và công cụ:......................................................................8
2.4. Các bước thực hiện:............................................................................................8
 Bước 1: Chuẩn bị các máy tính như mô tả trong mục 2.2. Máy Kali Linux được
đổi tên thành <ChuVanPhuc-B20DCAT140>-Kali và máy cài Snort thành
<ChuVanPhuc-B20DCAT140>-Snort. Các máy có địa chỉ IP và kết nối mạng LAN.8
 Bước 2: Tải, cài đặt Snort và chạy thử Snort. Kiểm tra log của Snort để đảm bảo
Snort hoạt động bình thường.....................................................................................11
 Bước 3: Tạo các luật Snort để phát hiện 3 dạng rà quét, tấn công hệ thống ở
file /etc/snort/rules/local.rules:..................................................................................12
 Bước 4: thực thi tấn công và phát hiện sử dụng Snort:.......................................14
2.5. Kết quả cần đạt:................................................................................................18

1
1. Mục đích:
 Luyện tập việc cài đặt và vận hành các hệ thống phát hiện xâm nhập cho host
(HIDS) và cho mạng (NIDS).
 Luyện tập việc tạo và chỉnh sửa các luật phát hiện tấn công, xâm nhập cho các hệ
thống phát hiện xâm nhập thông dụng.
2. Nội dung thực hành:
2.1. Tìm hiểu lý thuyết:
a) Tìm hiểu khái quát về các hệ thống phát hiện tấn công, xâm nhập, phân
loại các hệ thống phát hiện xâm nhập, các kỹ thuật phát hiện xâm nhập:

 Khái quát: Các hệ thống phát hiện, ngăn chặn tấn công, xâm nhập
(IDS/IPS) là một lớp phòng vệ quan trọng trong các lớp giải pháp đảm bảo
an toàn cho hệ thống thông tin và mạng theo mô hình phòng thủ có chiều
sâu (defence in depth). IDS (Intrusion Detection System) là hệ thống phát
hiện tấn công, xâm nhập và IPS (Intrusion Prevention System) là hệ thống
ngăn chặn tấn công, xâm nhập. Các hệ thống IDS/IPS có thể được đặt trước
hoặc sau tường lửa trong mô hình mạng, tùy theo mục đích sử dụng. Hình
5.18 cung cấp vị trí các hệ thống IDS và IPS trong sơ đồ mạng, trong đó
IDS thường được kết nối vào bộ switch phía sau tường lửa, còn IPS được
ghép vào giữa đường truyền từ cổng mạng, phía sau tường lửa.
o Nhiệm vụ chính của các hệ thống IDS/IPS bao gồm:
 Giám sát lưu lượng mạng hoặc các hành vi trên một hệ thống để
nhận dạng các dấu hiệu của tấn công, xâm nhập

2
 Khi phát hiện các hành vi tấn công, xâm nhập, thì ghi logs các hành
vi này cho phân tích bổ sung sau này
 Ngăn chặn hoặc dừng các hành vi tấn công, xâm nhập.
 Gửi thông báo cho người quản trị về các các hành vi tấn công, xâm
nhập đã phát hiện được.
o Về cơ bản IPS và IDS giống nhau về chức năng giám sát lưu lượng
mạng hoặc các sự kiện trong hệ thống. Tuy nhiên, IPS thường được đặt
giữa đường truyền thông và có thể chủ động ngăn chặn các tấn công,
xâm nhập bị phát hiện. Trong khi đó, IDS thường được kết nối vào các
bộ định tuyến, switch, card mạng và chủ yếu làm nhiệm vụ giám sát và
cảnh bảo, không có khả năng chủ động ngăn chặn tấn công, xâm nhập.
 Phân loại:

3
o Có 2 phương pháp phân loại chính các hệ thống IDS và IPS, gồm (1)
phân loại theo nguồn dữ liệu và (2) phân loại theo phương pháp phân
tích dữ liệu. Theo nguồn dữ liệu, có 2 loại hệ thống phát hiện xâm nhập:
 Hệ thống phát hiện xâm nhập mạng (NIDS – Network-based IDS):
NIDS phân tích lưu lượng mạng để phát hiện tấn công, xâm nhập
cho cả mạng hoặc một phần mạng.
 Hệ thống phát hiện xâm nhập cho host (HIDS – Host-based IDS):
HIDS phân tích các sự kiện xảy ra trong hệ thống/dịch vụ để phát
hiện tấn công, xâm nhập cho hệ thống đó. Hình 5.20 minh họa một
sơ đồ mạng, trong đó sử dụng NIDS để giám sát lưu lượng tại cổng
mạng và HIDS để giám sát các host thông qua các IDS agent. Một
trạm quản lý (Management station) được thiết lập để thu nhập các
thông tin từ các NIDS và HIDS để xử lý và đưa ra quyết định cuối
cùng.
o Theo phương pháp phân tích dữ liệu, có 2 kỹ thuật phân tích chính, gồm
(1) phát hiện xâm nhập dựa trên chữ ký, hoặc phát hiện sự lạm dụng
(Signature-based / misuse intrusion detection) và (2) phát hiện xâm
nhập dựa trên các bất thường (Anomaly intrusion detection).
b) Tìm hiểu về kiến trúc và tính năng của một số hệ thống phát hiện tấn
công, xâm nhập, như: Snort, Suricata, Zeek, OSSEC, Wazuh...
 Phát hiện xâm nhập dựa trên chữ ký:
o Phát hiện xâm nhập dựa trên chữ ký trước hết cần xây dựng cơ sở dữ
liệu các chữ ký, hoặc các dấu hiệu của các loại tấn công, xâm nhập đã

4
biết. Hầu hết các chữ ký, dấu hiệu được nhận dạng và mã hóa thủ công
và dạng biểu diễn thường gặp là các luật phát hiện (Detection rule).
o Bước tiếp theo là sử dụng cơ sở dữ liệu các chữ ký để giám sát các hành
vi của hệ thống, hoặc mạng, và cảnh báo nếu phát hiện chữ ký của tấn
công, xâm nhập. Ưu điểm lớn nhất của phát hiện xâm nhập dựa trên chữ
ký là có khả năng phát hiện các tấn công, xâm nhập đã biết một cách
hiệu quả. Ngoài ra, phương pháp này cho tốc độ xử lý cao, đồng thời
yêu cầu tài nguyên tính toán tương đối thấp. Nhờ vậy, các hệ thống phát
hiện xâm nhập dựa trên chữ ký được ứng dụng rộng rãi trong thực tế.
Tuy nhiên, nhược điểm chính của phương pháp này là không có khả
năng phát hiện các tấn công, xâm nhập mới, do chữ ký của chúng chưa
tồn tại trong cơ sở dữ liệu các chữ ký. Hơn nữa, nó cũng đòi hỏi nhiều
công sức xây dựng và cập nhật cơ sở dữ liệu chữ ký, dấu hiệu của các
tấn công, xâm nhập.
o Phát hiện xâm nhập dựa trên bất thường dựa trên giả thiết: các hành vi
tấn công, xâm nhập thường có quan hệ chặt chẽ với các hành vi bất
thường. Quá trình xây dựng và triển khai một hệ thống phát hiện xâm
nhập dựa trên bất thường gồm 2 giai đoạn: (1) huấn luyện và (2) phát
hiện. Trong giai đoạn huấn luyện, hồ sơ (profile) của đối tượng trong
chế độ làm việc bình thường được xây dựng. Để thực hiện giai đoạn
huấn luyện này, cần giám sát đối tượng trong một khoảng thời gian đủ
dài để thu thập được đầy đủ dữ liệu mô tả các hành vi của đối tượng
trong điều kiện bình thường làm dữ liệu huấn luyện. Tiếp theo, thực
hiện huấn luyện dữ liệu để xây dựng mô hình phát hiện, hay hồ sơ của
đối tượng. Trong giai đoạn phát hiện, thực hiện giám sát hành vi hiện tại
của hệ thống và cảnh báo nếu có khác biệt rõ nét giữa hành vi hiện tại
và các hành vi lưu trong hồ sơ của đối tượng.
o Ưu điểm của phát hiện xâm nhập dựa trên bất thường là có tiềm năng
phát hiện các loại tấn công, xâm nhập mới mà không yêu cầu biết trước
thông tin về chúng. Tuy nhiên, phương pháp này có tỷ lệ cảnh báo sai
tương đối cao so với phương pháp phát hiện dựa trên chữ ký. Điều này
làm giảm khả năng ứng dụng thực tế của phát hiện xâm nhập dựa trên
bất thường. Ngoài ra, nó cũng tiêu tốn nhiều tài nguyên hệ thống cho
việc xây dựng hồ sơ đối tượng và phân tích hành vi hiện tại.
 Snort: Snort là phần mềm IDS được phát triển bởi Martin Roesh dưới dạng
mã nguồn mở. Snort ban đầu được xây dựng trên nền Unix nhưng sau đó
phát triển sang các nền tảng khác. Snort được đánh giá rất cao về khả năng
phát hiện xâm nhập. Tuy snort miễn phí nhưng nó lại có rất nhiều tính năng
tuyệt vời. Với kiến trúc kiểu module, người dùng có thể tự tăng cường tính
năng cho hệ thống Snort của mình. Snort có thể chạy trên nhiều hệ thống
5
như Windows, Linux, OpenBSD, FreeBSD, Solaris … Bên cạnh việc có thể
hoạt động như một ứng dụng bắt gói tin thông thường, Snort còn được cấu
hình để chạy như một NIDS.
o Kiến trúc của Snort: Snort bao gồm 5 modul.
 Module giải mã gói tin.
 Module tiền xử lý.
 Module phát hiện.
 Module log và cảnh báo.
 Module kết xuất thông tin.

Khi Snort hoạt động, nó sẽ lắng nghe tất cả các gói tin nào di chuyển
qua nó. Các gói tin sau khi bị bắt sẽ được đưa vào module giải mã. Tiếp
theo sẽ vào module tiền xử lý và rồi module phát hiện. Tại đây tùy vào
việc có phát hiện được xâm nhập hay không mà gói tin có thể bỏ qua để
lưu thông tin tiếp hoặc đưa vào module Log và cảnh báo để xử lý. Khi
các cảnh báo được xác định, Module kết xuất thông tin sẽ thực hiện việc
đưa ra cảnh báo theo đúng định dạng mong muốn.
o Module giải mã gói tin:
 Module giải mã gói tin bắt mọi gói tin trên mạng lưu thông qua hệ
thống. Bắt các gói dữ liệu các nhau của tầng network (Ethernet,
SLIP, PPP….). Một gói tin sau khi được giải mã sẽ được đưa tiếp
vào module tiền xử lý. Module tiền xử lý: Thực hiện 3 nhiệm vụ
chính.
 Kết hợp lại các gói tin: Khi một dữ liệu lớn được gửi đi, thông tin sẽ
không đóng gói toàn bộ vào một gói tin mà thực hiện phân mảnh,
chia thành nhiều gói tin rồi mới gửi đi. Khi Snort nhận được các gói
tin này, nó phải thực hiện kết nối lại để có gói tin ban đầu. Module
tiền xử lý giúp Agent có thể hiểu được các phiên làm việc khác
nhau.
o Giải mã và chuẩn hóa giao thức (decode/normalize): công việc phát hiện
xâm nhập dựa trên dấu hiệu nhận dạng nhiều khi thất bại khi kiểm tra

6
các giao thức có dữ liệu có thể được biểu diễn dưới nhiều dạng khác
nhau. Phát hiện các xâm nhập bất thường (nonrule/anormal): xử lý các
xâm nhập không thể hoặc rất khó phát hiện bằng các luật thông thường.
o Module phát hiện:
 Đây là module quan trọng nhất, nó chịu trách nhiệm phát hiện các
dấu hiệu xâm nhập. Module phát hiện sử dụng các luật được định
nghĩa trước để so sánh với dữ liệu thu thập được, từ đó xác định xem
có xâm nhập xảy ra hay không.
 Một vấn đề quan trọng đối với module phát hiện và vấn đề thời gian
xử lý gói tin: một IDS thường nhận rất nhiều gói tin và bản thân nó
cũng có rất nhiều luật xử lý. Khi lưu lượng mạng quá lớn có thể xảy
ra việc bỏ sót hoặc không phản hồi đúng lúc. Khả năng xử lý của
module phát hiện phụ thuộc vào nhiều yếu tố: số lượng các luật, tốc
độ hệ thống, băng thông mạng.
 Một module phát hiện có khả năng tách các phần của gói tin ra và áp
dụng luật lên từng phần của gói tin:
+ IP header.
+ Header ở tầng transport: TCP, UDP.
+ Header ở tầng application: DNS, HTTP, FTP …
+ Phần tải của gói tin.
o Module log và cảnh báo: Tùy thuộc vào module phát hiện có nhận dạng
được xâm nhập hay không mà gói tin có thể bị ghi log hay đưa ra cảnh
báo. Các file log là các file dữ liệu có thể ghi dưới nhiều định dạng khác
nhau.
 Suricata: Suricata là giải pháp IDS/IPS mã nguồn mở hiệu quả cho các hệ
thống mạng chưa được đầu tư các giải pháp IDS/IPS thương mại. Nó được
xây dựng từ các thành phần khác nhau và khả năng hoạt động của nó tùy
thuộc vào cách thức cấu hình, cài đặt cho hệ thống. Ở chế độ mặc định
được xem là cơ chế hoạt động tương đối tối ưu cho việc phát hiện các dạng
tấn công mạng.
 Zeek: Zeek được trình bày như một công cụ để hỗ trợ quản lý ứng phó sự
cố an ninh . Nó hoạt động bằng cách bổ sung dựa trên chữ ký các công cụ
để tìm và theo dõi các sự kiện mạng phức tạp. Nó được đặc trưng bằng cách
cung cấp phản hồi nhanh, ngoài việc sử dụng nhiều luồng và giao thức. Nó
không chỉ giúp xác định các sự kiện bảo mật, mà còn nhằm mục đích tạo
điều kiện khắc phục sự cố.
 OSSEC: OSSEC là hệ thống phát hiện xâm nhập dựa trên host (HIDS) dựa
trên log mã nguồn mở, miễn phí, đa nền tảng có thể mở rộng và có nhiều cơ
chế bảo mật khác nhau. OSSEC có thể phát hiện xâm nhập bằng cả chữ ký

7
hoặc dấu hiệu bất thường. Các dấu hiệu bình thường và bất thường được
mô tả trong bộ luật của OSSEC. OSSEC có một công cụ phân tích và tương
quan mạnh mẽ, tích hợp giám sát và phân tích log, kiểm tra tính toàn vẹn
của file, kiểm tra registry của Windows, thực thi chính sách tập trung, giám
sát chính sách, phát hiện rootkit, cảnh báo thời gian thực và phản ứng một
cách chủ động cuộc tấn công đang diễn ra. Các hành động này cũng có thể
được định nghĩa trước bằng luật trong OSSEC để OSSEC hoạt động theo ý
muốn của người quản trị. Ngoài việc được triển khai như một HIDS, nó
thường được sử dụng như một công cụ phân tích log, theo dõi và phân tích
các bản ghi lại, IDS, các máy chủ Web và các bản ghi xác thực. OSSEC
chạy trên hầu hết các hệ điều hành, bao gồm Linux, OpenBSD, FreeBSD,
Mac OS X, Sun Solaris và Microsoft Windows. OSSEC còn có thể được
tích hợp trong trong các hệ thống bảo mật lớn hơn là SIEM (Security
information and event management). OSSEC chỉ có thể cài đặt trên
Windows với tư cách là một agent.
2.2. Một số tài liệu tham khảo:
 Chương 5, Giáo trình Cơ sở an toàn thông tin, Học viện Công nghệ BVCT,
2020.
 Suricata: https://suricata.io/documentation/
 Snort: https://www.snort.org/#documents
 OSSEC: https://www.ossec.net/docs/
 Wazuh: https://documentation.wazuh.com/current/index.html
2.3. Chuẩn bị môi trường và công cụ:
 01 máy tính (máy thật hoặc máy ảo) chạy Linux với RAM tối thiểu 2GB,
10GB đĩa cứng có kết nối mạng (LAN hoặc Internet).
 01 máy tính (máy thật hoặc máy ảo) chạy Kali Linux (bản 2021 trở lên)
 Bộ phần mềm Snort tải tại https://www.snort.org/downloads
2.4. Các bước thực hiện:
 Bước 1: Chuẩn bị các máy tính như mô tả trong mục 2.2. Máy Kali Linux được
đổi tên thành <ChuVanPhuc-B20DCAT140>-Kali và máy cài Snort thành
<ChuVanPhuc-B20DCAT140>-Snort. Các máy có địa chỉ IP và kết nối mạng
LAN.

8
9
10
 Bước 2: Tải, cài đặt Snort và chạy thử Snort. Kiểm tra log của Snort để đảm
bảo Snort hoạt động bình thường.
o Dùng lệnh sudo apt install snort để cài đặt snort.

o Kiểm tra snort cài đặt thành công chưa.

11
o Kiểm tra snort đang hoạt động hay không.

 Bước 3: Tạo các luật Snort để phát hiện 3 dạng rà quét, tấn công hệ thống ở file
/etc/snort/rules/local.rules:

o Phát hiện các gói tin ping từ bất kỳ một máy nào gửi đến máy chạy Snort.
Hiển thị thông điệp khi phát hiện: <ChuVanPhuc-B20DCAT140>-Snort
phát hiện có các gói Ping gửi đến.”

12
o Phát hiện các gói tin rà quét từ bất kỳ một máy nào gửi đến máy chạy Snort
trên cổng 80. Hiển thị thông điệp khi phát hiện: <ChuVanPhuc-
B20DCAT140>-Snort phát hiện có các gói tin rà quét trên cổng 80.”

o Phát hiện tấn công TCP SYN Flood từ bất kỳ một máy nào gửi đến máy
chạy Snort. Hiển thị thông điệp khi phát hiện: “<ChuVanPhuc-
B20DCAT140>-Snort phát hiện đang bị tấn công TCP SYN Flood.”

13
 Bước 4: thực thi tấn công và phát hiện sử dụng Snort:

o Từ máy Kali, sử dụng lệnh ping để ping máy Snort. Trên máy Snort kiểm
tra kết quả phát hiện trên giao diện terminal hoặc log của Snort.

14
o Từ máy Kali, sử dụng công cụ nmap để rà quét máy Snort (dùng lệnh:
nmap -sV -p80 - A <địa chỉ IP máy Snort>). Trên máy Snort kiểm tra kết
quả phát hiện trên giao diện terminal hoặc log của Snort.

15
o Từ máy Kali, sử dụng công cụ hping3 để tấn công TCP SYN Flood máy
Snort (dùng lệnh: hping3 -c 15000 -d 120 -S -w 64 -p 80 --flood --rand-
source <địa chỉ IP máy Snort>). Trên máy Snort kiểm tra kết quả phát hiện
trên giao diện terminal hoặc log của Snort.

16
17
2.5. Kết quả cần đạt:
 Hệ thống phát hiện xâm nhập Snort hoạt động ổn định.
 Các luật mới được tạo và lưu vào trong file luật của Snort.
 Snort phát hiện thành công các rà quét tấn công kể trên (hiển thị trên giao diện
terminal hoặc log của Snort).

18

You might also like