Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Intrusion Detection System (IDS)

IDS là một giải pháp giám sát chủ động để phát hiện các hoạt động/mẫu
hành vi độc hại, các sự cố bất thường và hành vi vi phạm chính sách. Nó có nhiệm
vụ tạo ra cảnh báo cho mỗi sự kiện đáng ngờ.

Có hai loại hệ thống IDS:

• Hệ thống Phát hiện Xâm nhập Mạng (NIDS): NIDS giám sát luồng dữ liệu
từ các vùng khác nhau của mạng. Mục tiêu là điều tra lưu lượng trên toàn bộ mạng
con. Nếu một chữ ký được xác định, một cảnh báo sẽ được tạo ra.

• Hệ thống Phát hiện Xâm nhập Dựa trên Máy chủ (HIDS) - HIDS giám sát
luồng dữ liệu từ một thiết bị đầu cuối duy nhất. Mục tiêu là điều tra lưu lượng trên
một thiết bị cụ thể. Nếu một chữ ký được xác định, một cảnh báo sẽ được tạo ra.

Kỹ thuật IDS

Có ba kỹ thuật phát hiện và ngăn chặn chính được sử dụng trong các giải
pháp IDS:

Kỹ thuật Phương pháp


Kỹ thuật này dựa vào các quy tắc xác định các mẫu cụ thể của hành
Signature-
vi độc hại đã biết. Mô hình này giúp phát hiện các mối đe dọa đã
Based
biết.
Kỹ thuật này nhận dạng các mối đe dọa mới với các mẫu mới mà
không phù hợp với các chữ ký đã biết. Mô hình so sánh giữa hành vi
Behaviour-
đã biết/bình thường và hành vi chưa biết/không bình thường. Mô
Based
hình này giúp phát hiện các mối đe dọa trước đây chưa biết hoặc
mới.
Kỹ thuật này so sánh các hoạt động đã phát hiện với cấu hình hệ
Policy-
thống và chính sách bảo mật. Mô hình này giúp phát hiện hành vi vi
Based
phạm chính sách.

Phân biệt IDS và IPS

 IDS có thể nhận biết các mối đe dọa nhưng cần sự trợ giúp từ người dùng để
ngăn chặn chúng.
 IPS có thể nhận biết và chặn các mối đe dọa mà không cần sự trợ giúp nhiều
từ người dùng tại thời điểm phát hiện.

Các khả năng của Snort:

• Phân tích lưu lượng trực tiếp

• Nhận diện tấn công và các cuộc khảo sát

• Ghi log gói tin

• Phân tích giao thức

• Cảnh báo theo thời gian thực

• Modules và plugins

• Các tiền xử lý

• Hỗ trợ đa nền tảng. (Linux, Ubuntu, Windows)

Snort có ba mô hình sử dụng chính:

• Chế độ Sniffer - Đọc các gói tin IP và hiển thị chúng trong ứng dụng console.

• Chế độ Packet Logger - Ghi log tất cả các gói tin IP (gửi và nhận) đi qua
mạng.

• Chế độ NIDS (Hệ thống Phát hiện Xâm nhập Mạng) và NIPS (Hệ thống Ngăn
chặn Xâm nhập Mạng) - Ghi log/loại bỏ các gói tin được xem là độc hại dựa trên
các quy tắc do người dùng xác định.

IDS SNORT là một hệ thống Phát hiện xâm nhập mạng (NIDS) dựa trên luật
nguồn mở. Nó được phát triển và tiếp tục được duy trì bởi Martin Roesch, các nhà
đóng góp nguồn mở và nhóm Cisco Talos.

DEMO WITH IDS SNORT:

Đầu tiên, xác nhận SNORT đã được cài đặt chưa:


Xác minh file configuration:

Ở đây, "-T" được sử dụng để kiểm tra cấu hình, và "-c" được sử dụng để xác
định tệp cấu hình (snort.conf). Lưu ý rằng có thể sử dụng một tệp cấu hình bổ sung
bằng cách chỉ định nó với "-c".

Tệp cấu hình là một tệp quản lý toàn diện của Snort. Các quy tắc, plugin, cơ
chế phát hiện, hành động mặc định và cài đặt đầu ra được xác định ở đây. Có thể
có nhiều tệp cấu hình cho các mục đích và trường hợp khác nhau, nhưng chỉ có thể
sử dụng một tệp cấu hình trong thời gian chạy.

Lưu ý rằng mỗi khi bắt đầu Snort, nó sẽ tự động hiển thị banner mặc định và
thông tin ban đầu về cấu hình. Ngăn chặn điều này bằng cách sử dụng tham số "-
q".

Tham số Mô tả
-V / --version Tham số này cung cấp thông tin về phiên bản của Snort.
-c Xác định tệp cấu hình.
-T Tham số tự kiểm tra Snort, có thể kiểm tra cài đặt với tham số này.
Chế độ yên lặng ngăn Snort hiển thị banner mặc định và thông tin
-q
ban đầu về cài đặt của bạn.

Chế độ IDS/IPS giúp quản lý lưu lượng dựa trên các quy tắc do người dùng
xác định.

Các tham số của chế độ NIDS:

Tham số Mô tả
-c Xác định tệp cấu hình.
-T Kiểm tra tệp cấu hình.
-N Tắt chức năng ghi log.
-D Chế độ nền.
Chế độ cảnh báo;

full: Chế độ cảnh báo đầy đủ, cung cấp tất cả thông tin có thể về
cảnh báo. Đây cũng là chế độ mặc định, khi sử dụng -A mà không
chỉ định chế độ nào, Snort sử dụng chế độ này.

fast: Chế độ hiển thị nhanh thông báo cảnh báo, đánh dấu thời gian,
-A địa chỉ IP nguồn và đích, số hiệu cổng.

console: Cung cấp cảnh báo nhanh trên màn hình console.

cmg: Kiểu CMG, chi tiết tiêu đề cơ bản với nội dung dữ liệu
(payload) dưới dạng hex và văn bản.

none: Tắt chức năng cảnh báo.

Khi bắt đầu chạy chế độ IDS/IPS, cần sử dụng các quy tắc (rules). Các quy
tắc này được lưu trữ trong đường dẫn: "/etc/snort/rules/custom.rules". (Với
custom.rules là file do người dùng tạo ra).

Các thao tác thực hiện với rule:

Thêm file .rules đã được tạo vào file snort.conf:


Truy cập file custom.rules để chỉnh sửa:

Thêm rule vào file custom.rules:

IDS với tham số "-A"


Trong phần này, chỉ có các tham số "console" và "cmg" cung cấp thông tin
cảnh báo trên màn hình console. Không thể phân biệt sự khác nhau giữa các chế độ
cảnh báo còn lại thông qua terminal. Sự khác biệt có thể được nhận biết thông qua
các tệp ghi được tạo ra với định dạng log.

IDS với tham số "-A console"

Chế độ console cung cấp cảnh báo kiểu nhanh trên màn hình console. Bắt
đầu phiên Snort trong chế độ cảnh báo console (-A console) bằng lệnh sau:

sudo snort -c /etc/snort/snort.conf -A console

Khi lưu lượng được tạo ra, Snort sẽ bắt đầu tạo cảnh báo dựa trên bộ quy tắc
được xác định trong tệp cấu hình.

Tiến hành ping từ terminal của Windows 11:


Lưu ý, kiểm tra địa chỉ IP của máy đang thực hiện IDS bằng câu lệnh
ifconfig.

Thông tin về truy cập được hiển thị như sau:

IDS với tham số "-A cmg"

Chế độ cmg cung cấp chi tiết tiêu đề cơ bản với phần payload trong định
dạng hex và văn bản. Bắt đầu phiên Snort trong chế độ cảnh báo cmg (-A cmg)
bằng lệnh sau:

sudo snort -c /etc/snort/snort.conf -A cmg

Tương tự đối với chế độ console, ta được kết quả:


So sánh đầu ra console và cmg, ta thấy rằng, chế độ console cung cấp các
thông tin tiêu đề cơ bản và quy tắc còn chế độ cmg cung cấp các chi tiết đầy đủ về
gói tin cùng với thông tin quy tắc.

IDS sử dụng file quy tắc mà không thông qua file config

Sử dụng Snort trong chế độ này sẽ giúp kiểm tra các quy tắc do người dùng
tạo ra. Tuy nhiên, nó sẽ cung cấp hiệu năng thấp hơn.
Cấu trúc cơ bản của 1 SNORT rule:
Mỗi quy tắc cần có một loại hành động, giao thức, địa chỉ IP nguồn và đích,
cổng nguồn và đích và một tùy chọn.

Quy tắc không thể được xử lý mà không có tiêu đề. Tuy nhiên, rất khó để
phát hiện các cuộc tấn công phức tạp mà không sử dụng các tùy chọn quy tắc.

 alert: Tạo ra cảnh báo và ghi lại gói tin.


 log: Ghi lại gói tin.
Hành
 drop: Chặn và ghi lại gói tin.
động
 reject: Chặn gói tin, ghi lại và chấm dứt phiên gói tin.

Tham số giao thức xác định loại giao thức được lọc cho quy tắc.

Lưu ý rằng Snort2 chỉ hỗ trợ bốn giao thức (IP, TCP, UDP và ICMP) trong các
Giao quy tắc. Tuy nhiên, có thể phát hiện các luồng ứng dụng bằng cách sử dụng số
thức cổng và các tùy chọn. Ví dụ, nếu muốn phát hiện lưu lượng FTP, không thể sử
dụng từ khóa FTP trong trường giao thức mà phải lọc lưu lượng FTP bằng cách
kiểm tra lưu lượng TCP trên cổng 21.

alert icmp 192.168.1.56 any <> any any  (msg: "ICMP Packet Found";
sid: 100001; rev:1;)
Lọc IP
Quy tắc này sẽ tạo cảnh báo cho mỗi gói ICMP bắt nguồn từ địa chỉ IP
192.168.1.56.
alert icmp 192.168.1.0/24 any <> any any  (msg: "ICMP Packet
Found"; sid: 100001; rev:1;)
Lọc 1 dải IP
Quy tắc này sẽ tạo cảnh báo cho mỗi gói ICMP bắt nguồn từ mạng con
192.168.1.0/24.
alert icmp [192.168.1.0/24, 10.1.1.0/24] any <> any any  (msg: "ICMP
Lọc nhiều dải Packet Found"; sid: 100001; rev:1;)
IP Quy tắc này sẽ tạo cảnh báo cho mỗi gói ICMP bắt nguồn từ các mạng
con 192.168.1.0/24 và 10.1.1.0/24.
Toán tử "negation operator" được sử dụng để loại trừ các địa chỉ và
cổng cụ thể. Toán tử phủ định được biểu thị bằng "!".
Loại trừ địa alert icmp !192.168.1.0/24 any <> any any  (msg: "ICMP Packet
chỉ/dải IP: Found"; sid: 100001; rev:1;)
Quy tắc này sẽ tạo cảnh báo cho mỗi gói ICMP không bắt nguồn từ
mạng con 192.168.1.0/24.
Lọc cổng alert tcp !192.168.1.0/24 21 <> any any  (msg: "ICMP Packet Found";
sid: 100001; rev:1;)
Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP bắt nguồn từ cổng 21.
alert tcp !192.168.1.0/24 !21 <> any any  (msg: "ICMP Packet Found";
sid: 100001; rev:1;)
Loại trừ 1 cổng
Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP không bắt nguồn từ cổng
21.
alert tcp !192.168.1.0/24 1:1024 <> any any  (msg: "ICMP Packet
Lọc 1 dải cổng Found"; sid: 100001; rev:1;)
(Loại 1) Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP bắt nguồn từ các cổng
trong khoảng từ 1 đến 1024.
alert icmp any :1024 <> any any  (msg: "ICMP Packet Found"; sid:
Lọc 1 dải cổng 100001; rev:1;)
(Loại 2) Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP bắt nguồn từ các cổng
nhỏ hơn hoặc bằng 1024.
alert icmp any 1024: <> any any (msg: "ICMP Packet Found"; sid:
Lọc 1 dải cổng 100001; rev:1;)
(Loại 3) Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP bắt nguồn từ một cổng
nguồn lớn hơn hoặc bằng 1024.
alert icmp any 80,1024: <> any any (msg: "ICMP Packet Found"; sid:
Lọc 1 dải cổng 100001; rev:1;)
(Loại 4) Quy tắc này sẽ tạo cảnh báo cho mỗi gói TCP bắt nguồn từ cổng nguồn
80 và lớn hơn hoặc bằng 1024.

Toán tử hướng chỉ định luồng lưu lượng mà Snort sẽ lọc. Phía trái của quy
tắc hiển thị nguồn, và phía phải hiển thị đích.

• -> Luồng từ nguồn đến đích.

• <> Luồng hai chiều.

Có ba tùy chọn quy tắc chính trong Snort:


• Tùy chọn Quy tắc chung - Các tùy chọn quy tắc cơ bản cho Snort.

• Tùy chọn Quy tắc dữ liệu Payload - Các tùy chọn quy tắc giúp điều tra dữ
liệu Payload. Các tùy chọn này hữu ích để phát hiện các mẫu dữ liệu Payload cụ
thể.

• Tùy chọn Quy tắc không Payload - Các tùy chọn quy tắc tập trung vào dữ
liệu không phải Payload. Các tùy chọn này sẽ giúp tạo ra các mẫu cụ thể và xác
định các vấn đề mạng.

Tùy chọn quy tắc chung (General Rule Options)

Trường thông báo (message) là một phần cơ bản và định danh nhanh
của quy tắc. Khi quy tắc được kích hoạt, phần thông báo sẽ xuất hiện
Msg
trong cửa sổ console hoặc log. Thông thường, phần thông báo là một
dòng mô tả tóm tắt sự kiện.
SID (Snort rule ID) là một phạm vi đã được định nghĩa trước cho các
quy tắc và mỗi quy tắc phải có một SID theo đúng định dạng. Dưới đây
là ba phạm vi khác nhau cho các SID:

• <100: Các quy tắc đã được dành trước

Sid • 100-999,999: Quy tắc đi kèm với bản cài đặt.

• >=1,000,000: Quy tắc được tạo bởi người dùng.

Tóm lại, các quy tắc mà chúng ta sẽ tạo ra nên có SID lớn hơn
100.000.000. Một điểm quan trọng khác là SID không được trùng lặp
và mỗi ID phải là duy nhất.
Mỗi quy tắc có thể có thông tin bổ sung hoặc tham chiếu để giải thích
mục đích của quy tắc hoặc mẫu mối đe dọa. Đó có thể là một mã
Reference Common Vulnerabilities and Exposures (CVE) hoặc thông tin bên
ngoài. Có tham chiếu cho các quy tắc luôn giúp các nhà phân tích
trong quá trình điều tra cảnh báo và sự cố.
Rev Các quy tắc Snort có thể được chỉnh sửa và cập nhật để cải thiện hiệu
suất và hiệu quả. Tùy chọn Rev giúp các nhà phân tích có thông tin về
phiên bản sửa đổi của mỗi quy tắc. Do đó, sẽ dễ dàng hiểu được các cải
tiến của quy tắc. Mỗi quy tắc có số rev duy nhất của nó và không có
tính năng sao lưu tự động cho lịch sử quy tắc. Các nhà phân tích nên tự
lưu trữ lịch sử quy tắc. Tùy chọn Rev chỉ là một chỉ số cho biết quy tắc
đã được sửa đổi bao nhiêu lần.

alert icmp any any <> any any (msg: "ICMP Packet Found"; sid:


100001; reference:cve,CVE-XXXX; rev:1;)

Tùy chọn quy tắc phát hiện Payload (Payload Detection Rule Options)

Dữ liệu payload. Nó tìm kiếm dữ liệu payload cụ thể theo định


dạng ASCII, HEX hoặc cả hai. Có thể sử dụng tùy chọn này nhiều
lần trong một quy tắc duy nhất. Tuy nhiên, càng tạo nhiều tính
năng khớp mẫu cụ thể, việc điều tra một gói tin càng mất thời gian.
Các quy tắc sau sẽ tạo ra cảnh báo cho mỗi gói tin HTTP chứa từ
Content khóa "GET". Tùy chọn này phân biệt chữ hoa chữ thường!

• Chế độ ASCII - alert tcp any any <> any 80 (msg: "GET Request
Found"; content:"GET"; sid: 100001; rev:1;)

• Chế độ HEX - alert tcp any any <> any 80 (msg: "GET Request
Found"; content:"|47 45 54|"; sid: 100001; rev:1;)
Tắt tính nhạy cảm với chữ hoa chữ thường. Được sử dụng để tăng
cường việc tìm kiếm nội dung.
Nocase
alert tcp any any <> any 80  (msg: "GET Request Found";
content:"GET"; nocase; sid: 100001; rev:1;)
Ưu tiên tìm kiếm nội dung để tăng tốc quá trình tìm kiếm payload.
Mặc định, Snort sử dụng nội dung lớn nhất và đánh giá nó với các
quy tắc. Tùy chọn "fast_pattern" giúp bạn chọn kết quả khớp gói
tin ban đầu với giá trị cụ thể để điều tra tiếp. Tùy chọn này luôn
hoạt động không phân biệt chữ hoa chữ thường và chỉ được sử
dụng một lần trong mỗi quy tắc. Lưu ý rằng tùy chọn này là bắt
Fast_pattern buộc khi sử dụng nhiều tùy chọn "content". Quy tắc sau có hai tùy
chọn content, và tùy chọn fast_pattern cho biết cho Snort sử dụng
tùy chọn content đầu tiên (trong trường hợp này là "GET") cho kết
quả khớp gói tin ban đầu.

alert tcp any any <> any 80  (msg: "GET Request Found";
content:"GET"; fast_pattern; content:"www";  sid:100001; rev:1;)
Tùy chọn quy tắc không phát hiện Payload (Non-Payload Detection Rule
Options).

Các tùy chọn này sẽ giúp tạo ra các mẫu cụ thể và xác định các vấn đề mạng.

Lọc trường id của IP.


ID alert tcp any any <> any any (msg: "ID TEST"; id:123456; sid: 100001;
rev:1;)
Lọc các cờ TCP

 F - FIN
 S - SYN
 R - RST
Flags  P - PSH
 A - ACK
 U - URG

alert tcp any any <> any any (msg: "FLAG TEST"; flags:S;  sid: 100001;
rev:1;)
Lọc kích thước payload gói tin.

 dsize:min<>max;
 dsize:>100
Dsize
 dsize:<100

alert ip any any <> any any (msg: "SEQ TEST"; dsize:100<>300;  sid:
100001; rev:1;)
Lọc địa chỉ IP nguồn và đích để phát hiện trùng lặp.
Samei
alert ip any any <> any any (msg: "SAME-IP TEST";  sameip; sid:
p
100001; rev:1;)

You might also like