





























Preview text:
    lOMoARcPSD|208 990 13  lOMoARcPSD|208 990 13                        MỤC LỤC  MỞ ĐẦU 
Chương 1: TỔNG QUAN VỀ HỆ THỐNG IDS 
1.1. Giới thiệu hệ thống IDS 
1.2. Kiến trúc, chức năng và quy trình hoạt động của IDS 
1.2.1. Các thành phần của IDS  1.2.2. Chức năng 
1.2.3. Quy trình hoạt động của IDS  1.3. Phân loại IDS 
1.3.1. Network based IDS - NIDS  1.3.2. Host based IDS - HIDS 
1.4. Những loại tấn công thường gặp và IDS tương ứng 
1.4.1. Tấn công từ chối dịch vụ Denial of Services 
1.4.2. Quét và thăm dò (Scanning và Probe) 
1.4.3. Tấn công vào mật khẩu (Password attack) 
1.4.4. Chiếm đặc quyền (Privilege-grabbing) 
1.4.5. Cài đặt mã nguy hiểm (Hostile code insertion) 
1.4.6. Hành động phá hoại trên máy móc (Cyber vandalism) 
1.4.7. Tấn công hạ tầng bảo mật (Security infrastructure attack) 
Chương 2: NGHIÊN CỨU ỨNG DỤNG IDS SNORT 
2.1. Giới thiệu về Snort 
2.2. Vị trí của Snort trong hệ thống mạng  2.3.Kiến trúc của Snort 
2.3.1.Module giải mã gói tin  2.3.2.Module tiền xử lý  2.3.3.Module phát hiện 
2.3.4.Module log và cảnh báo 
2.3.5.Module kết xuất thông tin  2.4.Bộ luật của Snort  2.4.1.Giới thiệu 
2.4.2.Cấu trúc luật của Snort  2.4.3.Phần tiêu đề  2.4.4.Phần tùy chọn 
Chương 3: Cài đặt cấu hình và triển khai hệ thống phát hiện xâm nhập IDS Snort 
3.1 Cài đặt cấu hình Snort 
3.2 Triển khai hệ thống phát hiện xâm nhập IDS Snort          lOMoARcPSD|208 990 13    MỞ ĐẦU   
Chương 1: TỔNG QUAN VỀ HỆ THỐNG IDS   
1.1. Giới thiệu hệ thống 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 ra hiện tượng bất thường, các hoạt động trái phép xâm nhập vào hệ 
thống. IDS có thể phân biệt được các cuộc tấn công từ nội bộ hay tấn công từ bên  ngoài. 
IDS phát hiện dựa trên các dấu hiệu đặc biệt về nguy cơ đã biết (giống như 
cách phần mềm diệt virus 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ố chuẩn của hệ thống có thể chấp nhận được) để 
tìm ra các dấu hiệu bất thường. 
Một hệ thống IDS cần phải thỏa mãn những yêu cầu: 
● Tính chính xác (Accuracy): IDS không được coi những hành động thông 
thường trong môi trường hệ thống là những hành động bất thường hay lạm  dụng 
● Hiệu năng (Performance): Hiệu năng của IDS phải đủ để phát hiện xâm nhập 
trái phép trong thời gian thực 
● Tính trọn vẹn (Completeness): IDS không được bỏ qua một xâm nhập trái 
phép nào. Đây là một điều kiện khó thỏa mãn được . 
● Chịu lỗi (Fault Tolerance): bản thân IDS cũng phải có khả năng chống lại tấn  công 
● Khả năng mở rộng (Scalability): IDS phải có khả năng xử lý trong trạng thái 
xấu nhất là không bỏ sót thông tin nào. Yên cầu này liên quan tới hệ thống 
mà các sự kiện trong tương lai đến từ nhiều nguồn tài nguyên với số lượng 
host nhỏ. Với sự phát triển nhanh và mạnh của mạng máy tính, hệ thống có 
thể bị quá tải bởi sự tăng trưởng của số lượng sự kiện. 
1.2. Kiến trúc, chức năng và quy trình hoạt động của IDS 
1.2.1. Các thành phần của IDS 
IDS bao gồm các thành phần chính: thành phần thu thập gói tin (information 
collection), thành phần phân tích gói tin (Detection), thành phần phản hồi 
(response) nếu gói tin đó được phát hiện là một cuộc tấn công. 
Thành phần phân tích gói tin là quan trọng nhất và ở thành phần này bộ cảm 
biến đóng vai trò quyết định. Bộ cảm biến tích hợp với thành phần là sưu tập dữ 
liệu và một bộ tạo sự kiến. Cách sưu tập này được xác định bởi chính sách tạo sự          lOMoARcPSD|208 990 13 
kiện để định nghĩa chế độ lọc thông tin sự kiện. Vai trò của bộ cảm biến là dùng để 
lọc thông tin và loại bỏ dữ liệu không tương thích đạt được từ các sự kiện liên quan 
với hệ thống bảo vệ, vì vậy có thể phát hiện được các hành động nghi ngờ. Bộ 
phân tích sử dụng cơ sở dữ liệu chính sách phát hiện cho mục này. Ngoài ra còn có 
các thành phần: dấu hiệu tấn công, profile hành vi thông thường, các tham số cần 
thiết. Thêm vào đó, cơ sở dữ liệu giữa các tham số cấu hình, gồm các chế độ truyền 
thông với module đáp trả. Bộ cảm biến cũng có sơ sở dữ liệu của riêng nó.  1.2.2. Chức năng 
Chức năng quan trọng nhất của IDS là: 
● Giám sát: giám sát lưu lượng mạng các hoạt động bất thường và các hoạt  động khả nghi 
● Cảnh báo: Khi đã biết được các hoạt động bất thường của một truy cập nào 
đó, IDS sẽ đưa ra cảnh báo về hệ thống cho người quản trị 
● Bảo vệ: Dùng những thiết lập mặc định và những cấu hình từ nhà quản trị 
mà có những hành động chống lại kẻ xâm nhập 
Chức năng mở rộng của IDS: 
- Phân biệt các cuộc tấn công từ trong hoặc từ bên ngoài: nó có thể 
phân biệt được đâu là những truy cập hợp lệ (hoặc không hợp lệ) từ 
bên trong và đâu là cuộc tấn công từ bên ngoài 
- Phát hiện: dựa vào so sánh lưu lượng mạng hiện tại với baseline, IDS 
có thể phát hiện ra những dấu hiệu bất thường và đưa ra các cảnh báo 
và bảo vệ ban đầu cho hệ thống 
1.2.3. Quy trình hoạt động của IDS 
- Một host tạo ra một gói tin mạng: 
- Các cảm biến trong mạng đọc các gói tin trong khoảng thời gian trước khi 
nó được gửi ra khỏi mạng cục bộ (cảm biến này cần phải được đặt sao cho 
nó có thể đọc tất cả các gói tin). 
- Chương trình phát hiện nằm trong bộ cảm biến kiểm tra xem có gói tin nào 
có dấu hiệu vi phạm hay không. Khi có dấu hiệu vi phạm thì một cảnh báo 
sẽ được tạo ra và gửi đến giao diện điều khiển. 
- Khi giao diện điều khiển lệnh nhận được cảnh báo nó sẽ gửi thông báo cho 
một người hoặc một nhóm đã được chỉ định từ trước (thông qua email, cửa          lOMoARcPSD|208 990 13 
sổ popup, trang web v.v…). 
- Phản hồi được khởi tạo theo quy định ứng với dấu hiệu xâm nhập này. 
- Các cảnh báo được lưu lại để tham khảo trong tương lai (trên địa chỉ cục bộ 
hoặc trên cơ sở dữ liệu). 
- Một báo cáo tóm tắt về chi tiết của sự cố được tạo ra. 
- Cảnh báo được so sánh với các dữ liệu khác để xác định xem đây có phải là 
cuộc tấn công hay không.  ● Ư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 hành hệ thống tương đối cao.  1.3. Phân loại IDS 
Hệ thống IDS được chia làm 2 loại cơ bản: 
Network-based IDS (NIDS): sử dụng dữ liệu trên toàn bộ lưu thông 
mạng cùng dữ liệu kiểm tra từ một hoặc một vài máy trạm để phát hiện xâm nhập 
Host-based IDS (HIDS): sử dụng dữ liệu kiểm tra từ một máy trạm đơn 
để phát hiện xâm nhập  Ngoài ra còn có: 
Signature-Based: Đây là các IDS hoạt động dựa trên chữ ký, giám sát các 
gói tin trên mạng tương tự như cách phần mềm diệt virus hoạt động. Tuy nhiên 
Signature-Based có thể không phát hiện được những mối đe dọa mới, khi chữ ký 
để nhận biết nó chưa được IDS cập nhật. 
Anomaly-Based: IDS này được sử dụng để phát hiện mối đe dọa dựa trên 
sự bất thường. Anomaly-Based sẽ giám sát traffic mạng và so sánh với baseline đã 
được thiết lập từ trước. Baseline sẽ xác định đâu là mức bình thường của mạng và 
cảnh báo cho quản trị viên mạng hoặc người dùng khi phát hiện traffic truy cập bất 
thường hoặc khác biệt so với baseline. 
Passive: Đây là IDS thụ động chỉ phát hiện và cảnh báo. Khi phát hiện          lOMoARcPSD|208 990 13 
traffic đáng ngờ hoặc độc hại, nó sẽ tạo và gửi cảnh báo đến các nhà quản trị hoặc 
người dùng. Những hành động sau đó sẽ phụ thuộc vào người quản trị. 
Reactive: Loại IDS này ngoài nhiệm vụ như IDS Passive, nó còn thực 
hiện những hành động đã được thiết lập sẵn để phản ứng lại các mối đe dọa một 
cách nhanh chóng, ví như: chặn nguồn truy cập, khóa IP. 
1.3.1. Network based IDS - NIDS 
Hệ thống IDS dựa trên mạng sẽ kiểm tra các giao tiếp trên mạng với thời 
gian thực (real-time). Nó kiểm tra các giao tiếp, quét header của các gói tin, và có 
thể kiểm tra nội dung của các gói đó để phát hiện ra các đoạn mã nguy hiểm hay 
các dạng tấn công khác nhau. Một Network-Based IDS hoạt động tin cậy trong 
việc kiểm tra, phát hiện các dạng tấn công trên mạng, ví dụ như dựa vào băng 
thông (bandwidth-based) của tấn công Denied of Service (DoS).  *Ưu điểm: 
- Quản lý được cả một network segment (gồm nhiều host) 
- Trong suốt với người sử dụng lẫn kẻ tấn công 
- Cài đặt và bảo trì đơn giản, không ảnh hưởng tới mạng 
- Tránh DOS ảnh hưởng tới một host nào đó 
- Có khả năng xác định lỗi ở tầng Network  - Độc lập với OS  *Nhược điểm: 
- Có thể xảy ra trường hợp báo động giả 
- Không thể phân tích các dữ liệu đã được mã hóa (VD: SSL, SSH, IPSec...)          lOMoARcPSD|208 990 13 
- NIDS đòi hỏi phải được cập nhật các signature mới nhất để thực sự an toàn 
- Có độ trễ giữa thời điểm bị tấn công với thời điểm phát báo động. Khi báo 
động được phát hiện, hệ thống có thể đã bị tổn hại. 
- Không cho biết việc tấn công có thành công hay không 
- Hạn chế lớn nhất là giới hạn băng thông. Những bộ dò mạng phải nhận tất cả 
các lưu lượng mạng, sắp xếp lại những lưu lượng đó và phân tích chúng. Khi 
tốc độ mạng tăng lên thì khả năng của đầu dò cũng phải tăng theo. 
1.3.2. Host based IDS - HIDS 
Bằng cách cài đặt một phần mềm trên máy chủ, IDS dựa trên máy chủ quan 
sát tất cả những hoạt động về hệ thống và các file log, lưu lượng mạng thu thập. Hệ 
thống dựa trên máy chủ cũng theo dói OS, những cuộc gọi hệ thống, lịch sử và 
những thông điệp báo lỗi trên hệ thống máy chủ. HIDS thường được cài đặt trên 
một máy tính nhất định thay vì giám sát hoạt động của một network, HIDS chỉ 
giám sát các hoạt động trên một máy tính. HIDS thường được đặt trên các host 
quan trọng và các server trong vùng DMS. Nhiệm vụ của HIDS là theo dõi các 
thay đổi trên hệ thống gồm:  - Các tiến trình  - Các entry  - Mức độ sử dụng CPU  - Tình trạng RAM 
- Tính toàn vẹn của hệ thống 
Các thông số này khi vượt qua một ngưỡng nhất định hoặc có những thay đổi 
khả nghi sẽ gây ra báo động  *Ưu điểm: 
- Có khả năng xác định user liên quan tới event 
- HIDS có khả năng phát hiện tấn công diễn ra trên một máy, NIDS thì không 
- Có thể phân tích các dữ liệu mã hóa 
- Cung cấp các thông tin về host trong lúc cuộc tấn công diễn ra trên host này  *Nhược điểm: 
- Thông tin từ HIDS là không đáng tin cậy ngay khi sự tấn công vào host này  thành công 
- Khi OS bị sập do tấn công, đồng thời HIDS cũng sập 
- HIDS phải được thiết lập trên từng host cần giám sát          lOMoARcPSD|208 990 13 
- HIDS không có khả năng phát hiện các cuộc dò quét mạng (Nmap,  Netcat ...) 
- HIDS cần tài nguyên trên host để hoạt động 
- HIDS có thể không hiệu quả khi bị DOS. 
1.4. Những loại tấn công thường gặp và IDS tương ứng 
1.4.1. Tấn công từ chối dịch vụ (Denial of Services): 
Denial of Service (DoS) có mục đích đóng băng hay chặn đứng tài nguyên 
hệ thống đích. Cuối cùng mục tiêu không thể tiếp cận và trả lời các gói tin gửi đến. 
DoS tấn công vào các mục tiêu bao gồm 3 dạng: mạng, hệ thống và ứng dụng. 
- Phá hoại mạng: kiểu tấn công SYN flood. Kẻ tấn công sẽ gửi các gói tin kết 
nối SYN tới hệ thống cho tới khi công suất của máy chủ quá tải và sẽ không 
thể nhận được bất kỳ gói tin nào nữa. 
- Phá hoại hệ thống: bao gồm các dạng như Ping of Death (gửi 1 gói dữ liệu 
có kích thước lớn thông qua lệnh ping tới máy chủ), Teardrop (gửi tới máy 
chủ một loại gói tin có giá trị offset chồng chéo khiến máy chủ không sắp 
xếp được à crash hoặc reboot) … Các kiểu tấn công này nhằm lợi dụng lỗ 
hổng trên hệ điều hành nhằm phá hoại, gây quá tải hệ thống. 
- Phá hoại ứng dụng: bằng cách lợi dụng điểm yếu trên ứng dụng, cơ sở dữ  liệu hay trang web… 
- Giải pháp: Network IDS có thể phát hiện được các cuộc tấn công dạng gói  tin 
1.4.2. Quét và thăm dò (Scanning và Probe) 
Bộ quét và thăm dò tự động sẽ tìm kiếm hệ thống trên mạng để xác định 
điểm yếu. Việc thăm dò có thể thực hiện bằng cách ping tới hệ thống cũng như 
kiểm tra các cổng TCP hoặc UDP để phát hiện ra ứng dụng có những lỗi đã được  biết tới. 
Giải pháp: Network IDS có thể phát hiện các hành động nguy hiểm trước khi 
chúng xảy ra. Host IDS cũng có tác dụng đối với kiểu tấn công này 
1.4.3. Tấn công vào mật khẩu (Password attack) 
Có các phương thức để tiếp cận: 
- Kiểu dễ nhận thấy nhất là ăn trộm mật khẩu, mang lại quyền quản trị cho kẻ          lOMoARcPSD|208 990 13 
tấn công có thể truy cập mọi thông tin trong mạng. 
- Đoán hay bẻ khóa mật khẩu là phương thức tiếp cận bằng cách thử nhiều lần 
mật khẩu để tìm được đáp án đúng. Với kiểu bẻ khóa, kẻ tấn công cần truy 
cập tới mật khẩu đã được mã hóa hay file chứa mật khẩu đã mã hóa. Và sử 
dụng chương trình đoán mật khẩu với thuật toán mã hóa để xác định mật  khẩu đúng. 
- Giải pháp: Một Network IDS có thể phát hiện và ngăn chặn cố gắng đoán 
mật khẩu, nhưng nó không hiệu quả trong việc phát hiện truy cập trái phép 
tới file bị mã hóa. Trong khi đó, Host IDS lại thể hiện hiệu quả trong việc 
phát hiện đoán mật khẩu cũng như truy cập trái phép. 
1.4.4. Chiếm đặc quyền (Privilege-grabbing) 
Khi kẻ tấn công đã xâm nhập được hệ thống, chúng sẽ cố chiếm quyền truy 
cập. Khi thành công, chúng sẽ tìm cách phá hoại hệ thống hoặc đánh cắp thông tin 
quan trọng. Một số kỹ thuật thường dùng cho việc chiếm đặc quyền: 
- Đoán hay đánh cắp mật khẩu root, admin  - Gây tràn bộ đệm  - Khai thác registry 
- Sử dụng file, script hay lỗi của hệ điều hành, ứng dụng. 
- Giải pháp: Cả NIDS và HIDS đều có thể xác định được việc thay đổi đặc  quyền trái phép 
1.4.5. Cài đặt mã nguy hiểm (Hostile code insertion) 
Một số loại tấn công có thể cài đặt mã nguy hiểm vào hệ thống. Mã này có thể lấy 
trộm dữ liệu, gây từ chối dịch vụ, xóa file hay tạo backdoor cho lần truy cập tiếp  theo. 
- Virus: khi được thực thi sẽ dẫn tới hành động tự động, có hoặc không có hại, 
luôn tạo ra bản sao của file hệ thống, file ứng dụng hay dữ liệu. 
- Trojan Horse: được đặt tên như một chương trình người ta muốn sử dụng 
nhưng thực tế chúng kích hoạt các hành động dẫn tới hỏng hệ thống 
- Giải pháp: không có loại IDS nào chống việc phá hoại từ virus hay Trojan. 
Cách tốt nhất là cài đặt phần mềm diệt virus 
1.4.6. Hành động phá hoại trên máy móc (Cyber vandalism) 
Hành động phá hoại bao gồm: thay đổi trang web, xóa file, phá block khởi          lOMoARcPSD|208 990 13 
động và chương trình hệ điều hành, format ổ đĩa 
Giải pháp: sử dụng HIDS trong trường hợp này là hoàn toàn phù hợp. Với 
NIDS có thể sử dụng dấu hiệu tấn công được định nghĩa trước để phát hiện chính 
xác việc truy cập trái phép vào hệ điều hành 
1.4.7. Tấn công hạ tầng bảo mật (Security infrastructure attack) 
Có nhiều loại tấn công can thiệp vào việc điều khiển cơ bản của cơ sở hạ 
tầng bảo mật như tạo tường lửa trái phép, chỉnh sửa tài khoản của người dung hay 
thay đổi các quyền của file. Tấn công vào cơ sở hạ tầng cho phép kẻ xâm nhập có 
thêm quyền truy cập hay tạo thêm nhiều đường xâm nhập vào hệ thống 
Giải pháp: HIDS có thể bắt giữ các cuộc đăng nhập mà thực hiện những  hành động như trên   
Chương 2: NGHIÊN CỨU ỨNG DỤNG IDS SNORT 
2.1. Giới thiệu về Snort 
Snort là một hệ thống IDS/IPS thuộc dạng NIDS. Snort được Martin Roesch 
nghiên cứu và phát triển từ năm 1998. Từ năm 2013 cho đến nay, công ty nổi tiếng 
về mạng là Cisco đã mua lại Snort và tiếp tục phát triển nghiên cứu. Snort là một 
công cụ có mã nguồn mở, hoàn toàn miễn phí và có thể tải và cài đặt ở trên hầu hết 
các hệ điều hành phổ biến hiện nay: Linux/Unix, Ubuntu, MacOS, Window, … 
Kiến trúc thiết kế của Snort được xây dựng theo kiểu module, tức là người  dùng 
hoàn toàn có thể thêm cho hệ thống Snort của mình bằng việc cài đặt hoặc viết 
thêm mới các module. Số lượng rule của Snort hiện tại đã lên tới hàng nghìn rule 
và luôn luôn được thêm hay cập nhật hằng tháng bởi Snort sở hữu cộng đồng user  đông đảo. 
2.2. Vị trí của Snort trong hệ thống mạng  - Giữa Router và Firewall          lOMoARcPSD|208 990 13       
Hình 2.1: Snort - sensor đặt giữa Router và Firewall    - Trong vùng DMZ          lOMoARcPSD|208 990 13       
Hình 2.2: Snort - sensor đặt trong vùng DMZ    - Sau Firewall          lOMoARcPSD|208 990 13       
Hình 2.3: Snort - sensor đặt sau Firewall     
2.3. Kiến trúc của Snort 
Snort bao gồm nhiều thành phần,với mỗi phần có một chức năng riêng.Các  phần chính đó là:  - Module giải mã  - 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          lOMoARcPSD|208 990 13         
Hình 2.4 : Mô hình kiến trúc hệ thống Snort 
Khi Snort hoạt động nó sẽ thực hiện việc lắng nghe và thu bắt 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 được đưa vào Module Giải mã gói 
tin. Tiếp theo gói tin sẽ được đưa vào Module Tiền xử lí,rồi Module Phát hiện.Tại 
đây tùy theo việc có phát hiện được xâm nhập hay không mà gói tin có thể được bỏ 
qua để lưu thông 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 cảnh báo 
ra theo đúng định dạng mong muốn. Sau đây ta sẽ đi sâu vào chi tiết hơn về cơ chế 
hoạt động và chức năng của từng thành phần.   
2.3.1. Module giải mã gói tin 
Snort sử dụng thư viện pcap để bắt mọi gói tin trên mạng lưu thông qua hệ  thống.          lOMoARcPSD|208 990 13             
Hình 2.5 : Xử lý một gói tin Ethernet 
Một gói tin sau khi được giải mã sẽ được đưa tiếp vào Module Tiền xử 
lý.Nhiệm vụ chủ yếu của hệ thống này là phân tích gói dữ liệu thô bắt được trên 
mạng và phục hồi thành gói dữ liệu hoàn chỉnh ở lớp application,làm input cho hệ  thống detection engine. 
Quá trình phục hồi gói dữ liệu được tiến hành từ lớp Datalink cho tới lớp 
Application theo thứ tự của Protocol Stack.   
2.3.2. Module tiền xử lý 
Module tiền xử lý rất quan trọng đối với bất kì hệ thống IDS nào để có thể          lOMoARcPSD|208 990 13 
chuẩn bị gói dữ liệu đưa vào cho Module Phát hiện phân tích.Ba nhiệm vụ chính  của Module loại này là: 
Kết hợp lại các gói tin: Khi một lượng lớn dữ liệu được gửi đi,thông tin sẽ 
không đóng gói toàn bộ vào một gói tin mà phải thực hiện việc phân mảnh,chia gói 
tin ban đầu 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 việc ghép nối lại để có được dữ liệu nguyên dạng ban đầu,từ đó 
mới thực hiện được các công việc xử lý tiếp. Như ta đã biết khi một phiên làm việc 
của hệ thống diễn ra, sẽ có rất nhiều gói tin được trao đổi trong phiên đó. Một gói 
tin riêng lẻ sẽ không có trạng thái và nếu việc phát hiện xâm nhập chỉ dựa vào gói 
tin đó sẽ không đem lại hiệu quả cao. Module tiền xử lý giúp Snort có thể hiểu 
được các phiên làm việc khác nhau ( nói cách khác đem lại tính có trạng thái cho 
các gói tin ) từ đó giúp đạt được hiệu quả cao hơn trong việc phát hiện xâm nhập. 
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 bị thất bại khi kiểm tra các giao 
thức có dữ liệu có thể được thể hiện dưới nhiều dạng khác nhau. Ví dụ: một web 
server có thể chấp nhận nhiều dạng URL như URL được viết dưới dạng mã 
hexa/Unicode,URL chấp nhận cả dấu / hay \ hoặc nhiều ký tự này liên tiếp cùng 
lúc. Chẳng hạn ta có dấu hiệu nhận dạng “scripts/iisadmin”, kẻ tấn công có thể 
vượt qua được bằng cách tùy biến các yêu cầu gửi đến web server như sau:  “scripts/./iisadmin”  “scripts/.\iisadmin”  “scripts\iisadmin”   
Hoặc thực hiện việc mã hóa chuỗi này dưới dạng khác.Nếu Snort chỉ thực 
hiện đơn thuần việc so sánh dữ liệu với dấu hiệu nhận dạng sẽ xảy ra tình trạng bỏ 
sót các hành vi xâm nhập.Do vậy, một số Module tiền xử lý của Snort phải có 
nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào này để thông tin 
khi đưa đến Module phát hiện có thể phát hiện được mà không bỏ sót. Hiện nay 
Snort đã hỗ trợ việc giải mã và chuẩn hóa các giao thức: telnet, http, rpc, arp. 
Phát hiện các xâm nhập bất thường ( nonrule / anormal ): các plugin tiền xử lý 
dạng này thường dùng để đối phó với các xâm nhập không thể hoặc rất khó phát 
hiện được bằng các luật thông thường hoặc các dấu hiệu bất thường trong giao 
thức.Các Module tiền xử lý dạng này có thể thực hiện việc phát hiện xâm nhập 
theo bất cứ cách nào mà ta nghĩ ra từ đó tăng cường thêm tính năng cho Snort.          lOMoARcPSD|208 990 13 
Ví dụ, một plugin tiền xử lý có nhiệm vụ thống kê thông lượng mạng tại thời 
điểm bình thường để rồi khi có thông lượng mạng bất thường xảy ra nó có thể tính 
toán,phát hiện và đưa ra cảnh báo ( phát hiện xâm nhập theo mô hình thống kê ). 
Phiên bản hiện tại của Snort có đi kèm hai plugin giúp phát hiện các xâm nhập bất 
thường đó là portscan và bo (backoffice).   
2.3.3. 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 số thử nghiệm cho 
biết,phiên bản hiện tại của Snort khi được tối ưu hóa chạy trên hệ thống có nhiều 
bộ vi xử lý và cấu hình máy tính tương đối mạnh thì có thể hoạt động tốt trên cả  các mạng cỡ Giga. 
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 giao vận: TCP , UDP 
- Header ở tầng ứng dụng: DNS header, HTTP header, FTP header, …  - Phần tải của gói tin 
Một vấn đề nữa trong Module phát hiện đó là việc xử lý thế nào khi một 
gói tin bị phát hiện bởi nhiều luật. Do các luật trong Snort được đánh thứ tự ưu 
tiên, nên một gói tin khi bị phát hiện bởi nhiều luật khác nhau, cảnh báo được đưa 
ra sẽ là cảnh báo ứng với luật có mức ưu tiên lớn nhất.   
2.3.4. 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.          lOMoARcPSD|208 990 13       
Hình 2.6: Module log và cảnh báo     
2.3.5. Module kết xuất thông tin 
Module này có thể thực hiện các thao tác khác nhau tùy theo việc bạn muốn 
lưu kết quả xuất ra như thế nào. Tùy theo việc cấu hình hệ thống mà nó có thể thực 
hiện được các công việc như là:  -  Ghi log file. 
- Ghi syslog: syslog là một chuẩn lưu trữ các file log được sử dụng nhiều trên 
các hệ thống Unix, Linux.          lOMoARcPSD|208 990 13 
- Ghi cảnh báo vào cơ sở dữ liệu.  - Tạo file log dạng xml 
- Cấu hình lại Router, Firewall. 
- Gửi các cảnh báo được gói trong gói tin sử dụng giao thức SNMP. Các gói 
tin dạng SNMP này sẽ được gửi tới một SNMP server từ đó giúp cho việc 
quản lý các cảnh báo và hệ thống IDS một cách tập trung và thuận tiện hơn. 
- Gửi các thông điệp SMB (Server Message Block) tới các máy tính Windows   
2.4. Bộ luật của Snort   
2.4.1. Giới thiệu 
Cũng giống như virus, hầu hết các hoạt động tấn công hay xâm nhập đều có 
các dấu hiệu riêng. Các thông tin về các dấu hiệu này sẽ được sử dụng để tạo nên 
các luật cho Snort. Thông thường, các bẫy ( honey pots ) được tạo ra để tìm hiểu 
xem các kẻ tấn công làm gì cũng như các thông tin về công cụ và công nghệ chúng 
sử dụng. Và ngược lại, cũng có các cơ sở dữ liệu về các lỗ hổng bảo mật mà những 
kẻ tấn công muốn khai thác.Các dạng tấn công đã biết này được dùng như các dấu 
hiệu để phát hiện tấn công xâm nhập.Các dấu hiệu đó có thể xuất hiện trong phần 
header của các gói tin hoặc nằm trong phần nội dung của chúng. 
Hệ thống phát hiện của Snort hoạt động dựa trên các luật (rules) và các luật 
này lại được dựa trên các dấu hiệu nhận dạng tấn công. Các luật có thể được áp 
dụng cho tất cả các phần khác nhau của một gói tin dữ liệu. 
Một luật có thể được sử dụng để tạo nên một thông điệp cảnh báo, log một 
thông điệp hay có thể bỏ qua một gói tin.   
2.4.2. Cấu trúc luật của Snort  Tìm hiểu một ví dụ: 
alert tcp 192.168.0.0/22 23 -> any any (content:”confidential”; msg: “Detected  confidential”)     
Ta thấy cấu trúc có dạng sau:          lOMoARcPSD|208 990 13    Phần header  Phần option     
Hình 2.7: Cấu trúc luật của Snort     
- Phần Header: chứa thông tin về hành động mà luật đó sẽ thực hiện khi phát 
hiện ra có xâm nhập nằm trong gói tin và nó cũng chứa tiêu chuẩn để áp 
dụng luật với gói tin đó. 
- Phần Option: chứa thông điệp cảnh báo và các thông tin về các phần của gói 
tin dùng để tạo nên cảnh báo. Phần Option chứa các tiêu chuẩn phụ thêm để  đối sánh với gói tin. 
Dưới đây là cấu trúc chung của phần Header :          Action  Protocol  Address  Port  Direction  Address  Port 
Hình 2.8 : Header của một luật Snort 
- Action: là phần quy định loại hành động nào được thực thi khi các dấu hiệu 
của gói tin được nhận dạng chính xác bằng luật đó. Thông thường, các hành 
động tạo ra một cảnh báo hoặc log thông điệp hoặc kích hoạt một luật khác. 
- Protocol: là phần quy định việc áp dụng luật cho packet chỉ thuộc một giao  thức cụ thể nào đó. 
- Address: là phần địa chỉ nguồn và địa chỉ đích. Các địa chỉ có thể là một 
máy đơn, nhiều máy hoặc của một mạng nào đó. Trong hai phần địa chỉ trên 
thì một sẽ là địa chỉ nguồn, một sẽ là địa chỉ đích và địa chỉ nào thuộc loại 
nào sẽ do phần Direction “->” quy định. 
- Port: xác định các cổng nguồn và đích của một gói tin mà trên đó luật được  áp dụng. 
- Direction: phần này chỉ ra đâu là địa chỉ nguồn, địa chỉ đích.          lOMoARcPSD|208 990 13 
2.4.3. Phần tiêu đề 
Như phần trên đã trình bày, Header của luật bao gồm nhiều phần. Sau đây, là 
chi tiết cụ thể của từng phần một. 
Hành động của luật (Rule Active) 
Là phần đầu tiên của luật, chỉ ra hành động nào được thực hiện khi mà các 
điều kiện của luật được thỏa mãn. Một hành động được thực hiện khi tất cả các 
điều kiện phù hợp. Có năm hành động đã được định nghĩa nhưng ta có thể tạo ra 
các hành động riêng tùy thuộc vào yêu cầu của mình. Đối với các phiên bản trước 
của Snort thì khi nhiều luật là phù hợp với một gói tin nào đó thì chỉ một luật được  áp dụng. 
- Pass: Hành động này hướng dẫn Snort bỏ qua gói tin này. Hành động này 
đóng vai trò quan trọng trong việc tăng cường tốc độ hoạt động của Snort 
khi mà ta không muốn áp dụng các kiểm tra trên các gói tin nhất định. Ví dụ 
ta sử dụng các bẫy để nhử hacker tấn công vào thì ta phải cho phép tất cả các 
gói tin đi đến được máy đó. 
- Log: Hành động này dùng để log gói tin. Có thể log vào file hay vào cơ sở 
dữ liệu tùy thuộc vào nhu cầu của mình. 
- Alert: Gửi một thông điệp cảnh báo khi dấu hiệu xâm nhập được phát hiện. 
- Activate: sử dụng để tạo ra một cảnh báo và kích hoạt một luật khác kiểm tra 
thêm các điều kiện của gói tin. 
- Dynamic: chỉ ra đây là luật được gọi bởi các luật khác có hành động là  Activate 
Các hành động do người dùng định nghĩa: một hành động mới được định nghĩa  theo cấu trúc sau:  ruletype action_name  {    Action definition  }    ruletype là từ khóa.  Protocols          lOMoARcPSD|208 990 13 
Là phần thứ hai của một luật có chức năng chỉ ra loại gói tin mà luật sẽ được 
áp dụng. Hiện tại Snort hiểu được các protocols sau:  - IP  - ICMP  - TCP  - UDP 
Nếu là IP thì Snort sẽ kiểm tra header của lớp liên kết để xác định loại gói tin. 
Nếu bất kì giao thức nào khác được sử dụng thì Snort sử dụng IP header để xác 
định loại protocol. Protocol chỉ đóng vai trò trong việc chỉ rõ tiêu chuẩn trong phần 
header của luật. Phần option của luật có thể có các điều kiện không liên quan gì  đến protocol.  Address 
Có hai phần địa chỉ trong một luật của Snort. Các địa chỉ này được dùng để 
kiểm tra nguồn sinh ra và đích đến của gói tin. Địa chỉ có thể là địa chỉ của một IP 
đơn hoặc địa chỉ của một mạng. Ta có thể dùng từ any để áp dụng luật cho tất cả  các địa chỉ.  Cổng (Port) 
Số hiệu cổng dùng để áp dụng luật cho các gói tin đến từ hoặc đi đến một cổng 
hay một phạm vi cổng cụ thể nào đó. Ví dụ ta có thể sử dụng số cổng nguồn là 23 
để áp dụng luật cho tất cả các gói tin đến từ một server Telnet.Từ any cũng được 
dùng để đại diện cho tất cả các cổng.  Hướng (Direction) 
Chỉ ra đâu là nguồn đâu là đích, có thể là -> hay <- hoặc <>. Trường hợp <> là 
khi ta muốn kiểm tra cả Client và Server.   
2.4.4. Phần tùy chọn 
Phần Rule Option nằm ngay sau phần Rule Header và được bao bọc trong dấu 
ngoặc đơn. Nếu có nhiều option thì các option sẽ được phân cách với nhau bằng 
dấu chấm phẩy “ ; “ . Nếu nhiều option được sử dụng thì các option này phải đồng  thời được thỏa mãn. 
Mọi option được định nghĩa bằng các từ khóa.Một số option còn chứa các tham số.          lOMoARcPSD|208 990 13     
Chương 3: Cài đặt cấu hình và triển khai hệ thống phát hiện xâm nhập IDS  Snort 
3.1 Cài đặt cấu hình Snort  Bước 1: cài đặt Snort  Mở cmd trên ubuntu  Nhập lệnh sau: 
sudo apt-get install snort   
Bước 2: kiểm tra version của Snort  Nhập câu lệnh sau: 
snort - -version          lOMoARcPSD|208 990 13         
3.2 Triển khai hệ thống phát hiện xâm nhập IDS Snort  Bước 1:  Nhập lệnh sau:  ifconfig          lOMoARcPSD|208 990 13            Bước 2:  Nhập lệnh sau:  cd /etc/snort    Bước 3:          lOMoARcPSD|208 990 13  Nhập lệnh sau:  sudo gedit snort.conf    Bước 4:  Thêm ip vào Ipvar HOME_NET  192.168.234.0/24            lOMoARcPSD|208 990 13  Bước 5:  Nhập lệnh sau: 
sudo snort -T -i ens33 -c /etc/snort/snort.conf    Bước 6:  Nhập lệnh sau:  cd rules          lOMoARcPSD|208 990 13        Bước 7;  Nhập lệnh sau:  nano local.rules    Bước 8:  Nhập lệnh sau:          lOMoARcPSD|208 990 13 
alert icmp any any -> $HOME_NET any (msg:"Ping detected"; sid:10000001;  rev:001;)    Bước 9:  Nhập lệnh sau:  cd ..            lOMoARcPSD|208 990 13  Bước 10:  Nhập lệnh sau: 
sudo snort -A console -q -i ens33 -c /etc/snort/snort.conf    Bước 11: 
Mở cmd của máy thật windows 10  Nhập lệnh sau:  ping 192.168.234.133          lOMoARcPSD|208 990 13        Bước 12: 
Quay trở lại cmd của ubuntu 
Thấy màn hình hiển thị ip máy thật đang ping đến ip máy ảo, vậy ta đã thành công       
Document Outline
- MỞ ĐẦU
- 1.1. Giới thiệu hệ thống IDS
- 1.2. Kiến trúc, chức năng và quy trình hoạt động của IDS- 1.2.1. Các thành phần của IDS
- 1.2.2. Chức năng
- 1.2.3. Quy trình hoạt động của IDS
 
- 1.3. Phân loại IDS- 1.3.1. Network based IDS - NIDS
- 1.3.2. Host based IDS - HIDS
 
- 1.4. Những loại tấn công thường gặp và IDS tương ứng- 1.4.1. Tấn công từ chối dịch vụ (Denial of Services):
- 1.4.2. Quét và thăm dò (Scanning và Probe)
- 1.4.3. Tấn công vào mật khẩu (Password attack)
- 1.4.4. Chiếm đặc quyền (Privilege-grabbing)
- 1.4.5. Cài đặt mã nguy hiểm (Hostile code insertion)
- 1.4.6. Hành động phá hoại trên máy móc (Cyber vandalism)
- 1.4.7. Tấn công hạ tầng bảo mật (Security infrastructure attack)
 
- Chương 2: NGHIÊN CỨU ỨNG DỤNG IDS SNORT
- 2.2. Vị trí của Snort trong hệ thống mạng
- 2.3. Kiến trúc của Snort
- 2.4. Bộ luật của Snort- 2.4.1. Giới thiệu
- 2.4.2. Cấu trúc luật của Snort
- 2.4.3. Phần tiêu đề
- 2.4.4. Phần tùy chọn
 
- Chương 3: Cài đặt cấu hình và triển khai hệ thống phát hiện xâm nhập IDS Snort
- sudo apt-get install snort
- snort - -version
- ifconfig
- cd /etc/snort
- sudo gedit snort.conf
- 192.168.234.0/24
- sudo snort -T -i ens33 -c /etc/snort/snort.conf
- cd rules
- nano local.rules
- alert icmp any any -> $HOME_NET any (msg:"Ping detected"; sid:10000001; rev:001;)
- cd ..
- sudo snort -A console -q -i ens33 -c /etc/snort/snort.conf
- ping 192.168.234.133
