You are on page 1of 13

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

KHOA AN TOÀN THÔNG TIN

BÀI 6:

Cài đặt cấu hình HIDS/NIDS

Giảng viên : Đinh Trường Duy


Sinh viên thực hiện :Nguyễn Văn Quân
Mã sinh viên : B21DCAT157
Khóa : 2021 – 2026

Hà Nội, tháng 03 năm 2023


Mục Lục
A. Mục đích thực hiện ................................................................ 3
B. Tìm hiểu lý thuyết .................................................................. 3
1. 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. ................................................................. 3
2. 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
C. Nội dung thực hành ................................................................ 9
1. Chuẩn bị môi trường:........................................................... 9
2. Các bước thực hiện: ............................................................. 9
D:Kết Luận.............................................................................. 13
1. Cài đặt thành công Snort ................................................... 13
2. 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 ............................................................................. 13
3. Thành công 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 ................................................... 13
4. 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 .................................................. 13
5. 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 .......................................................... 13
A. Mục đích thực hiện
- 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.

B. Tìm hiểu lý thuyết


1. 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.
a) Hệ thống phát hiện xâm nhập IDS.
- Hệ thống phát hiện xâm nhập IDS là một hệ thống giám sát lưu lượng
mạng nhằm phát hiện hiện tượng bất thường, các hoạt động trái xâm nhập phép
và hệ thống. IDS có thể phân biệt được những tấn công từ bên trong (nội bộ) hay
tấn công từ bên ngoài (từ các tin tặc).
- IDS phát hiện dựa trên các dấu hiệu đặc biệt về các nguy cơ đã biết (giống
như cách các phần mềm diệt virus dựa vào các dấu hiệu đặc biệt để phát hiện và
diệt virus) hay dựa trên so sánh lưu thông mạng hiện tại với baseline (thông số đo
đạt chuẩn của hệ thống có thể chấp nhận được ngay tại thời điểm hiện tại) để tìm
ra các dấu hiệu khác thường.
- Tính năng quan trọng nhất của hệ thống phát hiện xâm nhập – IDS là:
+ Giám sát lưu lượng mạng và các hoạt động khả nghi.
+ Cảnh báo về tình trạng mạng cho hệ thống và nhà quản trị.
+ Kết hợp với các hệ thống giám sát, tường lửa, diệt virus tạo thành
một hệ thống bảo mật hoàn chỉnh.
- Phân loại:
+ Dựa trên phạm vi giám sát:
● Network-based IDS (NIDS): Là những IDS giám sát trên
toàn bộ mạng. Nguồn thông tin chủ yếu của NIDS là các gói dữ liệu
đang lưu thông trên mạng. NIDS thường được lắp đặt tại ngõ vào
của mạng, có thể đứng trước hoặc sau tường lửa
● Host-based IDS (HIDS): Là những IDS giám sát hoạt động
của từng máy tính riêng biệt. Do vậy, nguồn thông tin chủ yếu của
HIDS ngòai lưu lượng dữ liệu đến và đi từ máy chủ còn có hệ thống
dữ liệu nhật ký hệ thống (system log) và kiểm tra hệ thống (system
audit).
+ Dựa trên kỹ thuật phát hiện:
● Signature-based IDS: Signature-based IDS phát hiện xâm
nhập dựa trên dấu hiệu của hành vi xâm nhập, thông qua phân tích
lưu lượng mạng và log hệ thống. Kỹ thuật này đòi hỏi phải duy trì
một cơ sở dữ liệu về các dấu hiệu xâm nhập (signature database), và
cơ sở dữ liệu này phải được cập nhật thường xuyên mỗi khi có một
hình thức hoặc kỹ thuật xâm nhập mới.
● Anomaly-based IDS: phát hiện xâm nhập bằng cách so sánh
(mang tính thống kê) các hành vi hiện tại với hoạt động bình thường
của hệ thống để phát hiện các bất thường (anomaly) có thể là dấu
hiệu của xâm nhập. Ví dụ, trong điều kiện bình thường, lưu lượng
trên một giao tiếp mạng của server là vào khỏang 25% băng thông
cực đại của giao tiếp. Nếu tại một thời điểm nào đó, lưu lượng này
đột ngột tăng lên đến 50% hoặc hơn nữa, thì có thể giả định rằng
server đang bị tấn công DoS. Để hoạt động chính xác, các IDS loại
này phải thực hiện một quá trình “học”, tức là giám sát hoạt động
của hệ thống trong điều kiện bình thường để ghi nhận các thông số
hoạt động, đây là cơ sở để phát hiện các bất thường về sau.
2. 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...
a) Snort
- Snort được hoạt động theo mô hình mã nguồn mở (open-source) sử dụng
các luật được gọi là rules có thể do Snort hoặc người dùng cung cấp. Do đó, người
dùng có thể tự viết ra các luật từ đó có thể cá nhân hóa phương thức phát hiện và
xử lý các mối đe dọa.
- Snort có khả năng phân tích lưu lượng truy cập trong thời gian thực và
phân tích truy cập gói tin (real-time traffic analysis and packet logging) thông qua
IP (internet-protocol), phân tích và tìm kiếm các giao thức.
- Snort còn có khả năng phát hiện xâm nhập và các cuộc tấn công có thể
bao gồm các hành vi quét hệ thống (Operating System Fingerprinting attemp),
quét cổng port, tấn công DDOS, ...
- Snort có thể được cài đặt để chạy ở 3 chế độ chính:
+ Sniffer Mode: Snort sẽ đọc tiêu đề và nội dung của các gói tin
trong và ghi nó ra console
+ Packet Logger Mode: Khác với Sniffer Mode, Snort sẽ ghi các
thông tin và một file log được lưu ở trong máy host
+ Network Intrusion Detection System Mode: Snort sẽ giám sát,
phân tích các giao thức trong network và so sánh với các tạo luật được viết
do người dùng để cảnh báo hoặc ngăn chặn
- Cấu trúc của Snort gồm 5 module, mỗi phần có một chức năng riêng:

+ Module giải mã gói tin (Packet Decoder).


+ Module tiền xử lý (Preprocessor Module).
+ Module phát hiện (Detection Engine Module).
+ Module log và cảnh báo (Alerts/ Logging Module).
+ Module kết xuất thông tin (Output Module)
- Cơ chế hoạt động:
+ 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.
b) 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ý 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.

- OSSEC được thiết ké theo mô hình client – server, gồm 2 thành phần
chính là OSSEC server và OSSEC agent:
+ OSSEC SERVER:
● Đây là phần trung tâm và quan trọng nhất của OSSEC.
Server là nơi lưu trữ dữ liệu. Tất cả các luật, bộ giải mã (decoder)
cũng được lưu trữ trên server.
● Server còn đảm nhận nhiệm vụ quản lý các agent. Các
agent kết nối với máy chủ trên cổng 1514 hoặc 514, giao thức
UDP. Kết nối với cổng này phải được cho phép để các agent kết
nối với manager.
● Nhiệm vụ quan trọng nhất của server là phân tích các log
nhận được từ các agent hay agentless (gọi chung là client) và xuất
ra các cảnh báo. Các cảnh báo này có thể xuất ra cho các các công
cụ xử lý log như Logstash, Elastic Search để hiển thị cho người
quản trị bằng Kibana, lưu trữ trong cơ sở dữ liệu.
+ OSSEC Agent:
● Agent (đầy đủ là installable agent) là một chương trình
nhỏ, hoặc tập hợp các chương trình, được cài đặt trên các hệ thống
được giám sát.
● Agent sẽ thu thập thông tin và gửi cho manager để phân
tích và so sánh. Một số thông tin được thu thập trong thời gian
thực, những thông tin khác theo định kỳ.
● Agent có một bộ nhớ rất nhỏ và sử dụng rất ít CPU, không
ảnh hưởng đến việc sử dụng của hệ thống. Server cấu hình cho các
agent. Các agent được cài đặt trên các host và chúng gửi lại các log
cho server thông qua giao thức thông điệp được mã hóa OSSEC.
● Các modul chức năng của agent là: giám sát host, kiểm tra
tính toàn vện file trên máy host mà nó được cài, phát hiện rootkit
trên máy host, đọc các log và gửi các log cho server.
● Agentless là tính năng hỗ trợ cho các thiết bị không cài đặt
được agent theo cách bình thường như router, switch, tường lửa.
Nó có chức năng như agent. Agentless kết nối để gửi thông điệp,
log cho manager bằng các phương thức RPC.
- Ưu điểm của HIDS có một số điểm cải tiến hơn so với NIDS:
+ Phù hợp với môi trường dữ liệu mã hóa ngày càng phổ biến.
HIDS có khả năng đọc được các dữ liệu (log) được mã hóa tại server
nhận.
+ Thích hợp trong các mạng được chuyển đổi nơi mà chỉ có máy
chủ lưu trữ cuối cùng mới có thể nhìn thấy lưu lượng truy cập.
+ Theo dõi được các tiến trình sử dụng của người dùng tại máy
chủ.
+ Có khả năng phát hiện và phản ứng với thời gian thực.
+ Xác minh khả năng của một cuộc tấn công. NIDS thường đưa ra
một cảnh báo sớm, còn HID có khả năng xác minh xem một cuộc tấn
công hay xâm nhập trái phép có khả năng thành công hay thất bại.
+ Khắc phục các cuộc tấn công mà NIDS không thể cảnh báo được
như tấn công phân mảnh hay ghép nối phiên. Vì những lý do như vậy mà
OSSEC được phát triển theo HIDS chứ không phải NIDS.
- Các tính năng nổi bật của OSSEC là:
+ Theo dõi và phân tích các log
+ Kiểm tra tính toàn vẹn của file
+ Giám sát Registry
+ Phát hiện Rootkit
+ Phản ứng chủ động

C. Nội dung thực hành


1. Chuẩn bị môi trường:
- Máy ảo Ubuntu version 22.10 có địa chỉ IP: 192.168.0.111
- Máy ảo Kali linux có địa chỉ IP: 192.168.0.112
- Bộ phần mềm Snort tải tại https://www.snort.org/downloads
2. Các bước thực hiện:
- Tiến hành cập nhật và nâng cấp các package của Ubuntu
- Tiến hành cài đặt Snort bằng cách sử dụng lệnh apt-get: sudo apt-get -y
install Snort. Kiểm tra cài đặt thành Snort bằng câu lệnh: snort -V
- Kiểm tra log của Snort:

- 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:
a) 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: alert icmp any any -> $HOME_NET any (msg:
“B21DCAT157-NguyenVanQuan-Snort phát hiện có các gói Ping gửi
đến.”; sid:10000001; rev:001;)
b) 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: alert tcp any any -> $HOME_NET 80 (msg:
“B21DCAT157-NguyenVanQuan-Snort phát hiện có các gói tin rà quét
trên cổng 80; sid: 10000002; rev:001;)
c) 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: alert tcp any any -> $HOME_NET 80 (flags: S; msg:"
B21DCAT157-NguyenVanQuan-Snort phát hiện đang bị tấn công TCP
SYN Flood."; sid: 10000003; detection_filter:track by_dst, count 20,
seconds 10; flow:stateless; rev:001;)
- Thực thi tấn công và phát hiện sử dụng Snort:
+ 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.
+ 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 192.168.0.111). 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.
+ 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 192.168.0.111). 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.

(Ảnh bao gồm cả ngày thực hiện )

D:Kết Luận
1. Cài đặt thành công Snort
2. 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
3. Thành công 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
4. Thành công 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
5. Thành công 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

You might also like