Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 31

Tìm hiểu và khai thác dịch vụ Snort

MỞ ĐẦU
Trong những năm gần đây công nghệ thông tin có những bước tiến vượt bậc hầu
hết các doanh nghiệp và cá nhân đã dần đưa công nghệ thông tin vào phục vụ cho công
việc của mình với những phần mềm hệ thống hoặc ứng dụng phù hợp, nhưng đối với
những doanh nghiệp và cá nhân không có đủ điều kiện về kinh tế thì việc lựa chọn
Phần mềm thương mại là không khả thi vì vậy phần mềm mã nguồn mở là một sự lựa
chọn đúng đắn cho các doanh nghiệp và cá nhân.
An ninh thông tin nói chung và an ninh mạng nói riêng đang là vấn đề được quan
tâm không chỉ ở Việt Nam mà trên toàn thế giới. Cùng với sự phát triển nhanh chóng
của mạng Internet, việc đảm bảo an ninh cho các hệ thống thông tin càng trở nên cấp
thiết hơn bao giờ hết.
Trong lĩnh vực an ninh mạng, phát hiện và phòng chống tấn công xâm nhập cho
các mạng máy tính là một đề tài hay, thu hút được sự chú ý của nhiều nhà nghiên cứu
với nhiều hướng nghiên cứu khác nhau. Vì vậy nhóm em lựa chọn đề tài “Tìm hiểu và
khai thác dịch vụ Snort”. Với mong muốn tìm hiểu cũng như triển khai hệ thống trên
thực tế nâng cao kiến thức và ứng dụng cho công việc sau này.

Nguyễn Đức Huy 1


Tìm hiểu và khai thác dịch vụ Snort

MỤC LỤC
MỞ ĐẦU....................................................................................................................... 1
MỤC LỤC.................................................................................................................... 2
CHƯƠNG I : TỔNG QUAN VỀ HỆ THỐNG PHÁT HIỆN XÂM NHẬP.............3
1. Hệ thống phát hiện xâm nhập là gì?.............................................................3
1.1. Khái niệm.......................................................................................................3
1.2. Chức năng của IDS.......................................................................................3
2. Phân loại hệ thống IDS...................................................................................4
2.1. Host-base IDS................................................................................................4
2.2. Network-base IDS..........................................................................................6
CHƯƠNG II: XÂY DỰNG VÀ TRIỂN KHAI HỆ THỐNG PHÁT HIỆN XÂM
NHẬP VỚI SNORT.....................................................................................................9
1. Giới thiệu về Snort.........................................................................................9
2. Các thành phần của Snort.............................................................................9
2.1. Bộ phận giải mã gói tin (Packet Decoder)...................................................10
2.2. Bộ phần tiền xử lý (reprocessors)................................................................10
2.3. Bộ phận phát hiện (Detection Engine)........................................................11
2.4. Bộ phận ghi nhận và thông báo (Loging and alerting system)...................12
2.5. Bộ phận đầu ra (Output Modules)...............................................................12
3. Cơ chế hoạt động của Snort.........................................................................13
3.1. Sniff mode....................................................................................................13
3.2. Packet logger mode......................................................................................14
3.3. Inline mode...................................................................................................15
3.4. NIDS mode (Network Instrusion Detection System mode).........................15
4. Cài đặt và cấu hình Snort............................................................................15
4.1. Mô hình triển khai.......................................................................................15
4.2. Cài đặt gói dịch vụ yêu cầu..........................................................................16
4.3. Tạo rule phát hiện và ngăn chặn.................................................................25
CHƯƠNG III: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.......................................29
TÀI LIỆU THAM KHẢO...........................................................................................31

Nguyễn Đức Huy 2


Tìm hiểu và khai thác dịch vụ Snort

CHƯƠNG I : TỔNG QUAN VỀ HỆ THỐNG PHÁT HIỆN XÂM


NHẬP
1. Hệ thống phát hiện xâm nhập là gì?
1.1. Khái niệm
Hệ thống phát hiện xâm nhập: là thiết bị phần cứng, phần mềm hay có sự kết
hợp của cả hai để thực hiện việc giám sát, theo dõi và thu thập thông tin từ nhiều
nguồn khác nhau. Sau đó, sẽ phân tích để tìm ra dấu hiệu của sự xâm nhập hay tấn
công hệ thống và thông báo đến người quản trị hệ thống. Nói một cách tổng quát,
phát hiện xâm nhập là hệ thống phát hiện các dấu hiệu làm hại đến tính bảo mật,
tính toàn vẹn và tính sẵn dùng của hệ thống máy tính hoặc hệ thống mạng, làm cơ
sở cho bảo đảm an ninh hệ thống.

Hình 1.1: Hệ thống IDS


1.2. Chức năng của IDS
1.2.1. Chức năng chính
Chức năng chính và quan trọng nhất của một hệ thống IDS là Giám sát – Cảnh
báo – Bảo vệ.

Nguyễn Đức Huy 3


Tìm hiểu và khai thác dịch vụ Snort

Giải thích :
♦ Giám sát : Giám sát các lưu lượng mạng, các hành động bất thường và
các hoạt động khả nghi.
♦ Báo cáo : Khi đã biết được các hoạt động bất thường của một (hoặc
một nhóm) truy cập nào đó, IDS sẽ đưa ra cảnh báo cho hệ thống và 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ừ người
quản trị để có những hành động chống lại kẻ thâm nhập và phá hoại.
1.2.2. Chức năng mở rộng
Ngoài những chức năng chính đã giới thiệu trên, IDS còn có các chức năng
khác như :
♦ Phân biệt "Thù trong giặc ngoài" : Đây là chức năng rất hay của
IDS, nó có thể phân biệt được đâu là những truy cập hợp lệ (không hợp lệ) từ
bên trong và đâu là cuộc tấn công từ bên ngoài vào hệ thống.
♦ Phát hiện : Dựa vào sự 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.
2. Phân loại hệ thống IDS
Cách thông thường nhất để phân loại các hệ thống phát hiện xâm nhập là dựa
vào đặc điểm của nguồn dữ liệu thu thập được. Trong trường hợp này, các hệ thống
phát hiển xâm nhập được chia thành các loại sau: Host-base IDS và Network-base
IDS.
2.1. Host-base IDS
HIDS thường được cài đặt trên một máy tính nhất đinh. Thay vì giám sát hoạt
động của một network segment, 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
DMZ thường là mục tiêu bị tấn công đầu tiên. Ngoài ra, HIDS có thể ghi nhận
những việc mà người tấn công đã làm trên máy chủ bị tấn công (compromised
host). Nhiêm vụ chính của HIDS là giám sát các thay đổi trên hệ thống, bao gồm:
 Các tiến trình.
 Các entry của registry.
 Mức độ sử dụng CPU.

Nguyễn Đức Huy 4


Tìm hiểu và khai thác dịch vụ Snort

 Kiểm tra tính toàn vẹn và truy cập trên file hệ thống.
 Một vài thông số khác.
Các thông số này vượt qua một ngưỡng định trước hoặc thay đổi khả nghi
trên hệ thống sẽ gây ra cảnh báo.

Hình 1.2: Hệ thống HIDS


Ưu điểm:
Xác định được kết quả của cuộc tấn công: Do HIDS sử dụng dữ liệu log lưu các
sự kiện xảy ra, nó có thể biết được cuộc tấn công là thành công hay thất bại với độ
chính xác cao hơn NIDS. Vì thế, HIDS có thể bổ sung thông tin tiếp theo khi cuộc
tấn công được sớm phát hiện với NIDS.
Giám sát được các hoạt động cụ thể của hệ thống: HIDS có thể giám sát các
hoạt động mà NIDS không thể như: truy nhập file, thay đổi quyền, các hành động
thực thi, truy nhập dịch vụ được phân quyền. Đồng thời nó cũng giám sát các hoạt
động chỉ được thực hiện bởi người quản trị. Vì thế, hệ thống host-based IDS có thể
là một công cụ cực mạnh để phân tích các cuộc tấn công có thể xảy ra do nó
thường cung cấp nhiều thông tin chi tiết và chính xác hơn một hệ network-based
IDS.
Phát hiện các xâm nhập mà NIDS bỏ qua: chẳng hạn kẻ đột nhập sử dụng bàn
phím xâm nhập vào một server sẽ không bị NIDS phát hiện.

Nguyễn Đức Huy 5


Tìm hiểu và khai thác dịch vụ Snort

Thích nghi tốt với môi trường chuyển mạch, mã hoá: Việc chuyển mạch và mã
hoá thực hiện trên mạng và do HIDS cài đặt trên máy nên nó không bị ảnh hưởng
bởi hai kỹ thuật trên.
Không yêu cầu thêm phần cứng: Được cài đặt trực tiếp lên hạ tầng mạng có sẵn
(FTP Server, WebServer) nên HIDS không yêu cầu phải cài đặt thêm các phần
cứng khác.
Nhược điểm:
Khó quản trị: các hệ thống host-based yêu cầu phải được cài đặt trên tất cả các
thiết bị đặc biệt mà bạn muốn bảo vệ. Đây là một khối lượng công việc lớn để cấu
hình, quản lí, cập nhật.
Thông tin nguồn không an toàn: một vấn đề khác kết hợp với các hệ thống host-
based là nó hướng đến việc tin vào nhật ký mặc định và năng lực kiểm soát của
server. Các thông tin này có thể bị tấn công và đột nhập dẫn đến hệ thống hoạt
động sai, không phát hiện được xâm nhập.
Hệ thống host-based tương đối đắt: nhiều tổ chức không có đủ nguồn tài chính
sử dụng các hệ thống host-based để bảo vệ toàn bộ các đoạn mạng của mình.
Những tổ chức đó phải rất thận trọng trong việc chọn các hệ thống nào để bảo vệ.
Nó có thể để lại các lỗ hổng lớn trong mức độ bao phủ phát hiện xâm nhập. Ví dụ
như một kẻ tấn công trên một hệ thống láng giềng không được bảo vệ có thể đánh
tìm thấy các thông tin xác thực hoặc các tài liệu dễ bị xâm phạm khác trên mạng.
Chiếm tài nguyên hệ thống: Do cài đặt trên các máy cần bảo vệ nên HIDS phải
sử dụng các tài nguyên của hệ thống để hoạt động như: bộ vi xử lí, RAM, bộ nhớ
ngoài.
2.2. Network-base IDS
Hệ thống IDS dựa trên mạng sử dụng bộ dò và bộ bộ cảm biến cài đặt trên toàn
mạng. Những bộ dò này theo dõi trên mạng nhằm tìm kiếm những lưu lượng trùng
với những mô tả sơ lược được định nghĩa hay là những dấu hiệu. Những bộ bộ cảm
biến thu nhận và phân tích lưu lượng trong thời gian thực. Khi ghi nhận được một
mẫu lưu lượng hay dấu hiệu, bộ cảm biến gửi tín hiệu cảnh báo đến trạm quản trị
và có thể được cấu hình nhằm tìm ra biện pháp ngăn chặn những xâm nhập xa hơn.

Nguyễn Đức Huy 6


Tìm hiểu và khai thác dịch vụ Snort

Hình 1.3: Hệ thống NIDS


Ưu điểm:
Chi phí thấp: Do chỉ cần cài đặt NIDS ở những vị trí trọng yếu là có thể giám
sát lưu lượng toàn mạng nên hệ thống không cần phải nạp các phần mềm và quản
lý trên các máy toàn mạng.
Phát hiện được các cuộc tấn công mà HIDS bỏ qua: Khác với HIDS, NIDS
kiểm tra header của tất cả các gói tin vì thế nó không bỏ sót các dấu hiệu xuất phát
từ đây. Ví dụ: nhiều cuộc tấn công DoS, TearDrop chỉ bị phát hiện khi xem tiêu đề
của các gói tin lưu chuyển trên mạng.
Khó xoá bỏ dấu vết: Các thông tin lưu trong log file có thể bị kẻ đột nhập sửa
đổi để che dấu các hoạt động xâm nhập, trong tình huống này HIDS khó có đủ
thông tin để hoạt động. NIDS sử dụng lưu thông hiện hành trên mạng để phát hiện
xâm nhập. Vì thế, kẻ đột nhập không thể xoá bỏ được các dấu vết tấn công. Các
thông tin bắt được không chỉ chứa cách thức tấn công mà cả thông tin hỗ trợ cho
việc xác minh và buộc tội kẻ đột nhập.
Phát hiện và đối phó kịp thời: NIDS phát hiện các cuộc tấn công ngay khi xảy
ra, vì thế việc cảnh báo và đối phó có thể thực hiện được nhanh hơn.
Có tính độc lập cao: Lỗi hệ thống không có ảnh hưởng đáng kể nào đối với
công việc của các máy trên mạng. Chúng chạy trên một hệ thống chuyên dụng dễ
dàng cài đặt, đơn thuần chỉ mở thiết bị ra, thực hiện một vài sự thay đổi cấu hình và
cắm chúng vào trong mạng tại một vị trí cho phép nó kiểm soát các cuộc lưu thông
nhạy cảm.
Nhược điểm:

Nguyễn Đức Huy 7


Tìm hiểu và khai thác dịch vụ Snort

Bị hạn chế với Switch: Nhiều lợi điểm của NIDS không phát huy được trong
các mạng chuyển mạch hiện đại. Thiết bị switch chia mạng thành nhiều phần độc
lập vì thế NIDS khó thu thập được thông tin trong toàn mạng. Do chỉ kiểm tra
mạng trên đoạn mà nó trực tiếp kết nối tới, nó không thể phát hiện một cuộc tấn
công xảy ra trên các đoạn mạng khác. Vấn đề này dẫn tới yêu cầu tổ chức cần phải
mua một lượng lớn các bộ cảm biến để có thể bao phủ hết toàn mạng gây tốn kém
về chi phí cài đặt.
Hạn chế về hiệu năng: NIDS sẽ gặp khó khăn khi phải xử lý tất cả các gói tin
trên mạng rộng hoặc có mật độ lưu thông cao, dẫn đến không thể phát hiện các
cuộc tấn công thực hiện vào lúc "cao điểm". Một số nhà sản xuất đã khắc phục
bằng cách cứng hoá hoàn toàn IDS nhằm tăng cường tốc độ cho nó. Tuy nhiên, do
phải đảm bảo về mặt tốc độ nên một số gói tin được bỏ qua có thể gây lỗ hổng cho
tấn công xâm nhập.
Tăng thông lượng mạng: Một hệ thống phát hiện xâm nhập có thể cần truyền
một dung lượng dữ liệu lớn trở về hệ thống phân tích trung tâm, có nghĩa là một
gói tin được kiểm soát sẽ sinh ra một lượng lớn tải phân tích. Để khắc phục người
ta thường sử dụng các tiến trình giảm dữ liệu linh hoạt để giảm bớt số lượng các
lưu thông được truyền tải. Cũng thường thêm các chu trình tự đưa ra các quyết
định vào các bộ cảm biến và sử dụng các trạm trung tâm như một thiết bị hiển thị
trạng thái hoặc trung tâm truyền thông hơn là thực hiện các phân tích thực tế. Điểm
bất lợi là nó sẽ cung cấp rất ít thông tin liên quan cho các bộ cảm biến; bất kỳ bộ
cảm biến nào sẽ không biết được việc một bộ cảm biến khác dò được một cuộc tấn
công. Một hệ thống như vậy sẽ không thể dò được các cuộc tấn công đồng thời
hoặc phức tạp.
Một hệ thống NIDS thường gặp khó khăn trong việc xử lý các cuộc tấn công
trong một phiên được mã hoá. Lỗi này càng trở nên trầm trọng khi nhiều công ty và
tổ chức đang áp dụng mạng riêng ảo VPN.
Một số hệ thống NIDS cũng gặp khó khăn khi phát hiện các cuộc tấn công
mạng từ các gói tin phân mảnh. Các gói tin định dạng sai này có thể làm cho NIDS
hoạt động sai và báo lỗi.

Nguyễn Đức Huy 8


Tìm hiểu và khai thác dịch vụ Snort

CHƯƠNG II: XÂY DỰNG VÀ TRIỂN KHAI HỆ THỐNG PHÁT


HIỆN XÂM NHẬP VỚI SNORT
1. Giới thiệu về Snort
Snort là một NIDS được Martin Roesh phát triển dưới mô hình mã nguồn mở.
Tuy Snort miễn phí nhưng nó lại có rất nhiều tính năng tuyệt vời mà không phải
sản phẩm thương mại nào cũng có thể có được. Snort là một ứng dụng bảo mật
hiện đại có ba chức năng chính: nó có thể phục vụ như một bộ phận lắng nghe gói
tin, lưu lại thông tin gói tin hoặc một hệ thống phát hiện xâm nhập mạng (NIDS).
Bên cạnh đó có rất nhiều add-on cho Snort để quản lý (ghi log, quản lý, tạo
rules…). Tuy không phải là phần lõi của Snort nhưng các thành phần này đóng vai
trò quan trọng trong việc sử dụng cũng như khai thác các tính năng của Snort. Cơ
sở dữ liệu luật của Snort đã lên tới 2930 luật và được cập nhật thường xuyên bởi
một cộng đồng người sử dụng. Snort có thể chạy trên nhiều hệ thống nền như
Windows, Linux, OpenBSD, FreeBSD, NetBSD, Solaris, HP-UX, AIX, IRIX,
MacOS.
Bên cạnh việc có thể hoạt động như một ứng dụng thu bắt gói tin thông thường,
Snort còn có thể được cấu hình để chạy như một NIDS. Snort hỗ trợ khả năng hoạt
động trên các giao thức sau: Ethernet, 802.11,Token Ring, FDDI, Cisco HDLC,
PPP.
2. Các thành phần của Snort
Snort được chia thành nhiều thành phần một cách logic. Những thành phần này
làm việc cùng nhau để phát hiện các cuộc tấn công cụ thể và để tạo ra các định
dạng cần thiết từ hệ thống phát hiện. Snort bao gồm các thành phần chính sau đây:
Bộ phận giải mã gói tin (Packet Decoder).
Bộ phận tiền xử lý (Preprocessors).
Bộ phận phát hiện (Detection Engine).
Bộ phận ghi nhận và thông báo (Loging and alerting system).
Bộ phận đầu ra (Output Modules).
Bất kỳ dữ liệu nào đến từ internet đều đi vào packet decoder. Trên đường đi của
nó với các module đầu ra, nó có thể bị loại bỏ, ghi nhận hoặc có một cảnh báo được
tạo ra.

Nguyễn Đức Huy 9


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.1: Các thành phần của Snort


2.1. Bộ phận giải mã gói tin (Packet Decoder)
Bộ phận giải mã gói tin: các gói dữ liệu đi vào qua các cổng giao tiếp mạng, các
cổng giao tiếp này có thể là: Ethernet, 802.11, FDDI, SLIP, PPP… Và được giải mã
bởi packet decoder, trong đó xác định giao thức được sử dụng cho gói tin và dữ
liệu phù hợp với hành vi được cho phép của phần giao thức của chúng. Packet
Decoder có thể tạo ra các cảnh báo riêng của mình dựa trên các tiêu đề của giao
thức, các gói tin quá dài, bất thường hoặc không chính xác các tùy chọn TCP, UDP,
ICMP và IP được thiết lập trong các tiêu đề, và các hành vi khác. Có thể kích hoạt
hoặc vô hiệu hóa các cảnh báo dài dòng cho tất cả các trường trong tập tin
snort.conf. Sau khi dữ liệu được giải mã đúng, chúng sẽ được gửi đến bộ phận
preprocessor.
2.2. Bộ phần tiền xử lý (reprocessors)
Bộ phận tiền xử lý là một thành phần rất quan trọng đối với bất kỳ một hệ thống
IDS nào để có thể 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 các module loại này là:
Kết hợp lại các gói tin: Khi một lượng 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à 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 đuợ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 công việc phát hiện xâm nhập chỉ dựa
hoàn toàn vào gói tin đó sẽ không đem lại hiệu quả cao. Module tiền xử lý phần

Nguyễn Đức Huy 10


Tìm hiểu và khai thác dịch vụ Snort

thành các luồng riêng giúp Snort có thể hiểu được các phiên làm việc khác nhau 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. 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 cho 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. 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à backoffice. Portcan dùng để đưa ra cảnh báo khi kẻ tấn công thực
hiện việc quét các cổng của hệ thống để tìm lỗ hổng. Backoffice dùng để đưa ra
cảnh báo khi hệ thống đã bị nhiễm trojan backoffice và kẻ tấn công từ xa kết nối tới
backoffice thực hiện các lệnh từ xa.
2.3. Bộ phận phát hiện (Detection Engine)
Bộ phận phát hiện: Đây là module quan trọng nhất của Snort. 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. Rồi tiếp theo mới có thể thực hiện một số công việc như
ghi log, tạo thông báo và kết xuất thông tin.
Một vấn đề rất quan trọng trong module phát hiện là vấn đề thời gian xử lý các
gói tin: một IDS thường nhận được rất nhiều gói tin và bản thân nó cũng có rất
nhiều các luật xử lý. Có thể mất những khoảng thời gian khác nhau cho việc xử lý

Nguyễn Đức Huy 11


Tìm hiểu và khai thác dịch vụ Snort

các gói tin khác nhau. Và khi thông 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 được đúng lúc. Khả năng xử lý của module phát hiện dựa trên
một số yếu tố như: số lượng các luật, tốc độ của hệ thống đang chạy Snort, tải trên
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ũng có khả năng tách các phần của gói tin ra và áp dụng
các luật lên từng phần nào của gói tin đó. Các phần đó có thể là:
IP header
Header ở tầng giao vận: TCP, UDP
Header ở tầng ứng dụng: DNS header, HTTP header, FTP header, …
Packet payload (Phần tải của gói tin bạn cũng có thể áp dụng các luật lên các
phần dữ liệu được truyền đ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ũng đượ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.
Phiên bản 1.x: Việc xử lý gói tin còn hạn chế trong trường hợp các dấu hiệu
trong gói tin đó phù hợp với dấu hiệu trong nhiều rule. Khi đó nếu có rule nào được
áp dụng trước thì các rule còn lại sẽ bị bỏ qua mặc dù các rule có độ ưu tiên khác
nhau. Như vậy sẽ nảy sinh trường hợp các rule có độ ưu tiên cao hơn bị bỏ qua.
Phiên bản 2.x: Nhược điểm trên của phiên bản 1.x được khắc phục hoàn toàn nhờ
vào cơ chế kiểm tra trên toàn bộ rule. Sau đó lấy ra rule có độ ưu tiên cao nhất để
tạo thông báo.
Tốc độ của phiên bản 2.x nhanh hơn rất nhiều so với phiên bản 1.x nhờ phiên
bản 2.x được biên dịch lại.
2.4. Bộ phận ghi nhận và thông báo (Loging and alerting system)
Bộ phận ghi nhận và thông báo: khi bộ phận detection engine phát hiện ra các dấu
hiệu tấn công thì nó sẽ thông báo cho bộ phận Logging and Alerting System. Các
ghi nhận, thông báo có thể được lưu dưới dạng văn bản hoặc một số định dạng
khác. Mặc định thì chúng được lưu tại thư mục /var/log/snort.
2.5. Bộ phận đầu ra (Output Modules)

Nguyễn Đức Huy 12


Tìm hiểu và khai thác dịch vụ Snort

Bộ phận đầu ra: 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ông việc như là:
Ghi log file
Ghi syslog: syslog và một chuẩn lưu trữ các file log được sử dụng rất nhiều trên
các hệ thống Unix, Linux.
Ghi cảnh báo vào cơ sở dữ liệu.
Tạo file log dạng xml: việc ghi log file dạng xml rất thuận tiện cho việc trao đổi
và chia sẻ dữ liệu.
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.
Nếu không hài lòng với các cách xuất thông tin như trên, ta có thể viết các module
thể hiện thông tin riêng tuỳ theo mục đích sử dụng.
3. Cơ chế hoạt động của Snort
3.1. Sniff mode
Ở chế độ này, Snort hoạt động như một chương trình thu thập và phân tích gói
tin thông thường. Không cần sử dụng file cấu hình, các thông tin Snort sẽ thu được
khi hoạt động ở chế độ này:
Ngày và giờ thu thập gói tin (Date and time).
Địa chỉ IP nguồn (Source IP address).
Cổng Nguồn (Source port number).
Địa chỉ IP đích (Destination IP address).
Địa chỉ IP đích (Destination port).
Giao thức ở tầng giao vận được dùng trong gói tin (Transport layer protocol
used in this packet).
Thời gian hoạt động của gói tin trên mạng (Time to live or TTL value in this
packet).
Thông số gói tin (Packer ID).
Độ dài phần tiêu đề của IP (Length of IP header).

Nguyễn Đức Huy 13


Tìm hiểu và khai thác dịch vụ Snort

Dữ liệu (IP payload).


Để có thể chạy ở chế độ này chúng ta sử dụng câu lệnh sau:
Snort –v

Trong câu lệnh này Snort sẽ hiển thị đang chạy ở mode nào, thư mục chứa log,
interface nào đang lắng nghe. Khi bắt đầu chạy và bắt gói tin hiển thị lên màn hình.
Phần hiển thị ra chỉ ở mức độ đơn giản, nó chỉ hiện thị ip và TCP/UDP/ICMP
headers và một số thông tin khác.
Ngoài ra còn kết hợp với một số thông số để hiển thị được nhiều thông tin hơn.
-v đưa ra packet headers trong phần output
-d hiển thị packet payload
-a hiển thị ARP packets
-e hiển thị dữ liệu lớp data link
3.2. Packet logger mode
Khi chạy ở chế độ này, Snort sẽ tập hơp tất cả các packet nó thấy được và đưa
vào log theo cấu trúc phân tầng. Nói cách khác, một thư mục mới sẽ được tạo ra
ứng với mỗi địa chỉ nó bắt được, và dữ liệu sẽ phụ thuộc vào địa chỉ mà nó lưu
trong thư mục đó. Snort đặt các packet vào trong file ASCII, với tên liên quan đến
giao thức và cổng. Sự sắp xếp này dễ dàng nhận ra ai đang kết nối vào mạng của
mình và giao thức, cổng nào đang sử dụng. Đơn giản sử dụng ls -R để hiện danh
sách các thư mục. Tuy nhiên sự phân cấp này sẽ tạo ra nhiều thư mục trong giờ cao
điểm nên rất khó để xem hết tất cả thư mục và file này. Nếu ai đó sử dụng full scan
với 65536 TCP Port và 65535 UDP ports và sẽ tạo ra 131000 hoặc từng ấy file.
Log với dạng nhị phân (binary) tất cả những gì có thể đọc được bởi Snort, nó làm
tăng đốc độ khả năng bắt gói tin của Snort. Hầu hết các hệ thống có thể capture và
log ở tốc độ 100Mbps mà không có vấn đề gì. Để log packet ở chế độ nhị phân sử
dụng thông số -b:
Khi đã thu thập được thông tin ta có thể đọc file vừa tạo ra ngay với thông số -r
và phần hiển thị giống như ở mode sniffer:
Trong phần này Snort không giới hạn để đọc các file nhị phân trong chế độ
sniffer. Ta có thể chạy Snort ở chế độ NIDS với việc set các rule hoặc filters để tìm
những traffic nghi ngờ.

Nguyễn Đức Huy 14


Tìm hiểu và khai thác dịch vụ Snort

3.3. Inline mode


Đây là phiên bản chỉnh sửa từSnort cho phép phân tích các gói tin từfirewall
tables sử dụng các tập lệnh mới như: pass, drop, reject.
3.4. NIDS mode (Network Instrusion Detection System mode)
Snort thường được sử dụng như một NIDS. Nó nhẹ, nhanh chóng, hiệu quả và
sử dụng các rule để áp dụng lên gói tin. Khi phát hiện có dấu hiệu tấn công ở trong
gói tin thì nó sẽ ghi lại và tạo thông báo. Khi dùng ở chế độ này phải khai báo file
cấu hình cho Snort hoạt động. Thông tin về thông báo khi hoạt động ở chế độ này:
Fast mode: Ghi lại cảnh báo trong một định dang đơn giản với các thông tin Date
and time, Alert message, Source and destination IP address, Source and destination
ports, Type of packet.
Full mode: Đây là chế độ cảnh báo mặc định và sẽ được sử dụng tự động nếu
chúng ta không thay đổi cấu hình. Gồm các thông tin như chế độ fast mode và
thêm một số thông tin sau: TTL value, TOS value, Length of packet header, length
of packet, Type of packet, Code of packet, ID of packet, Sequence number.
Unsock mode: Gửi cảnh báo đến một UNIX socket là một chương trình khác, có
thể lắng nghe trên đó.
None mod: Tắt chế độ cảnh báo.
Console mod: Gửi tiêu đề của các cảnh báo bằng dòng lệnh ra màn hình.
4. Cài đặt và cấu hình Snort
4.1. Mô hình triển khai

Hình 2.2: Mô hình triển khai

Nguyễn Đức Huy 15


Tìm hiểu và khai thác dịch vụ Snort

4.2. Cài đặt gói dịch vụ yêu cầu


Trước tiên cài Snort trên Centos, ta phải cài một số phần mềm mà Centos cần
cung cấp để hổ trợ hoạt động của Snort.
Thông tin interface

Hình 2.3: Thông tin interface trên snort


Cập nhật các cấu hình hệ thống :
# yum update –y
Cài đặt LAMP
# yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt
mysql-devel
Cài đặt Các Gói PHP
# yum install -y mcrypt libmcrypt libmcrypt-devel
Cài đặt pear

#yum install php-pear

#pear upgrade pear

#pear channel-update pear.php.net

#pear install mail

Nguyễn Đức Huy 16


Tìm hiểu và khai thác dịch vụ Snort

#pear install Image_Graph-alpha Image_Canvas-alpha Image_Color


Numbers_Roman

#pear install mail_mime

Chuẩn Bị các gói sau adodb519.tar.gz barnyard2-1.9.tar.gz daq-2.0.4.tar.gz libdnet-


1.12.tgz snort-2.9.7.2.tar.gz snortrules-snapshot-2983.tar.gz base-1.4.5.tar.gz
Link:
Giải nén adodb và coppy vô thư mục config của apache
# tar zxvf /root/adodb519.tar.gz -C /var/www/html
Đổi tên
#mv /var/www/html/adodb5 /var/www/html/adodb
Giải nén đổi tên và coppy Base vào thư mục config của apache
#tar zxvf /root/base-1.4.5.tar.gz -C /var/www/html
#tar zxvf /root/base-1.4.5.tar.gz -C /var/www/html
Sửa File php.ini trong thư mục /etc/php.ini
#vi /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE

Nguyễn Đức Huy 17


Tìm hiểu và khai thác dịch vụ Snort

Phân quyền cho thư mục html


# chown -R apache:apache /var/www/html
Cấp quyền thực thi cho adodb
#chmod 755 /var/www/html/adodb
Cấu hình mysql
Ta giải nén barnyard2 (ở đây ta tạo bảng SQL với các tệp bên trong thư mục này )
#tar zxvf barnyard2-1.9.tar.gz
Start MySQL
# service mysqld start
Đặt password cho user root
# mysqladmin -u root password 123456
Đăng nhập mysql với password vừa tạo ở trên
#mysql –u root -p
Tạo Cơ Sở Dữ liệu
> create database snort;
>grant create,select,update,insert,delete on snort.* to snort@localhost identified
by '123456'
>exit
# mysql -usnort -p -Dsnort < /root/barnyard2-1.9/schemas/create_mysql
Cài Đặt BASE
#service mysqld start
#service httpd start
#service iptables stop
Truy cập theo đường dẫn: http://localhost/base/setup/index.php

Nguyễn Đức Huy 18


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.5 Thiết lập đường dẫn và ngôn ngữ

Hình 2.6 Cài đặt Cơ Sở dữ liệu

Nguyễn Đức Huy 19


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.7 Tạo Mật Khẩu quản lý


Click "Createe BASE AG"

Hình 2.8 Create BASE

Nguyễn Đức Huy 20


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.9 Tạo CSDL thành công

Hình 2.10 Giao Diện quản lý

Cài đặt Libpcap

# tar zxvf libpcap-1.7.2.tar.gz

# cd libpcap-1.7.2

Nguyễn Đức Huy 21


Tìm hiểu và khai thác dịch vụ Snort

# ./configure && make && make install

Cài đặt PCRE


sudo tar zxvf pcre-8.12.tar.gz
cd pcre-8.12
sudo ./configure && make && make install
Cài đặt DAQ
# tar zxvf daq-2.0.4.tar.gz
# cd daq-2.0.4
# ./configure && make && make install
Cài đặt Libdnet

# tar zxvf libdnet-1.12.tgz

# cd libdnet-1.12

# ./configure && make && make install

Set mode interface cho eth1:


# ifconfig eth0 promisc

Cài đặt Snort

#tar zxvf snort-2.9.7.2.tar.gz

#cd snort-2.9.7.2

# ./configure --enable-sourcefire && make && make install

#mkdir /etc/snort

#mkdir /var/log/snort

#mkdir /usr/local/lib/snort_dynamicrules

#mkdir /etc/snort/rules

#touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules


Nguyễn Đức Huy 22
Tìm hiểu và khai thác dịch vụ Snort

#cp /tmp/snort-2.9.7.2/etc/gen-msg.map threshold.conf classification.config


reference.config unicode.map snort.conf /etc/snort

Sửa file cấu hình snort

#vi /etc/snort/snort.conf

var RULE_PATH /etc/snort/rules

var SO_RULE_PATH /etc/snort/so_rules

var PREPROC_RULE_PATH /etc/snort/preproc_rules

var WHITE_LIST_PATH /etc/snort/rules

var BLACK_LIST_PATH /etc/snort/rules

config logdir:/var/log/snort

output unified2:filename snort.log,limit 128


Cài đặt Snort rules

#tar zxvf snortrules-snapshot-2972.tar.gz -C /etc/snort/

#cp /etc/snort/etc/sid-msg.map /etc/snort/

Test snort

# snort -T -i eth2 -c /etc/snort/snort.conf

Nguyễn Đức Huy 23


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.11 Test Snort Thành công

Cài đặt Barnyard2

#cd /tmp/barnyard2-1.9

# ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ (64 bit)

# ./configure --with-mysql (32bit)

# make && make install

Tạo file và liên kết barnyard2

# mkdir /var/log/barnyard2

# touch /var/log/snort/barnyard2.waldo

# cp /tmp/barnyard2-1.9/etc/barnyard2.conf /etc/snort

Sửa file barnyard2.conf

# vi /etc/snort/barnyard2.conf

config logdir: /var/log/barnyard2

config hostname: localhost


Nguyễn Đức Huy 24
Tìm hiểu và khai thác dịch vụ Snort

config interface:eth0

config waldo_file: /var/log/snort/barnyard2.waldo

output database: log, mysql, user=snort password=123456 dbname=snort


host=localhost

Test barnyard2

# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w


/var/log/snort/barnyard2.waldo

Hình 2.12 Test barnyard2 thành công

4.3. Tạo rule phát hiện và ngăn chặn


# vi /etc/snort/rules/ping.rules

Nguyễn Đức Huy 25


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.13 Thêm Rules cảnh báo


Với rule trên snort sẽ đưa ra cảnh báo tương ứng khi có người truy cập các dịch
vụ FTP webserver ssh.
Tiến hành test thử các dịch vụ bằng cách ping, truy cập web server ftpserver ssh
server.

Hình 2.13: Hiển thị mức độ cảnh báo


Snort phát hiện cảnh báo với giao thức ICMP với mức độ 52% và TCP 48%.

Nguyễn Đức Huy 26


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.14: Hiển thị thông tin cảnh báo ICMP

Hình 2.15: Hiển thị thông tin cảnh báo TCP


Các cảnh báo được hiển thị với thông tin như dấu hiệu, thời gian, địa chỉ nguồn,
đích, giao thức sử dụng.
Xem bằng CLI với command
# snort -c /etc/snort/snort.conf -i eth2 -A console

Nguyễn Đức Huy 27


Tìm hiểu và khai thác dịch vụ Snort

Hình 2.16 Cảnh báo trên cmd

Nguyễn Đức Huy 28


Tìm hiểu và khai thác dịch vụ Snort

CHƯƠNG III: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


Trong chương 2, đồ án đã triển khai thành công phát hiện và ngăn chặn xâm nhập
dựa trên phần mềm Snort. Qua quá trình thực hiện, nhóm nhận thấy một hệ thống
mạng sẽ gặp rất nhiều vấn đề về bảo mật. Việc triển khai phần mềm Snort một phần
mềm mã nguồn mở với khả năng phát hiện và ngăn chặn xâm nhập, giúp hệ thống
mạng được an toàn, tăng hiệu xuất hoạt động, đảm bảo công việc và tiết kiệm chi phí.
Với hệ thống phát hiện và ngăn chặn xâm nhập có thể làm cơ sở tham khảo và ứng
dụng thực tế cho các nhà quản trị mạng.
Hệ thống phát hiện xâm nhập (IDS/IPS) tuy chỉ mới xuất hiện sau này nhưng hiện
đóng vai trò không kém phần quan trọng. IDS giúp con người khám phá, phân tích
một nguy cơ tấn công mới. Từ đó người ta vạch ra phương án phòng chống. Ở một góc
độ nào đó, có thể lần tìm được thủ phạm gây ra một cuộc tấn công. Một tổ chức lớn
không thể nào thiếu IDS/IPS.
Những vấn đề đạt được:
 Tìm hiểu về hệ điều hành Linux.
 Nắm bắt được cơ chế hoạt động của hệ thống phát hiện xâm nhập IDS.
 Cài đặt và cấu hình một hệ thống phát hiện và ngăn ngừa xâm nhập mã nguồn
mở Snort.
 Vận dụng những hiểu biết viết được một số luật đơn giản cho Snort.
 Sử dụng được các sản phẩm phân tích cảnh báo trong Snort như: MySQL,
BASE
Những vấn đề chưa đạt được:
 Demo còn khá khiêm tốn, chưa nêu rõ hết được công dụng của hệ thống IDS.
 Tập rules chưa viết hoàn chỉnh và đơn giản
 Chưa tìm hiểu và viết rule cho những dạng tấn công phức tạp.
 Chưa nắm hết được chức năng web base.
Hướng phát triển:
Tuy đã đạt được các yêu cầu đặt ra nhưng các kết quả còn khá khiêm tốn do hạn
chế về tài liệu, thời gian và yêu cầu phần cứng của máy tính. Trong thời gian sắp tới,
nếu có điều kiện, đồ án sẽ cố gắng phát triển thêm những nội dung sau:
 Tìm hiểu về các kỹ thuật tấn công để đưa ra phương pháp bảo mật ở mức độ
sâu hơn.

Nguyễn Đức Huy 29


Tìm hiểu và khai thác dịch vụ Snort

 Xây dựng môt hệ thống phát hiện và ngăn ngừa xâm nhập trên thực tế từ mô
hình lớn hơn.
 Hệ thống gửi các thông báo alert đa dạng: gửi ra tin nhắn sms.
 Xây dựng một bộ rule hoàn chỉnh áp dụng vào mô hình thực tế.
 Kết hợp Snort với một số phần mềm quản lý mạng như Cacti để xây dựng một
hệ thống mạng hoàn chỉnh.

Nguyễn Đức Huy 30


Tìm hiểu và khai thác dịch vụ Snort

TÀI LIỆU THAM KHẢO


[1] Nhóm phát triển phần mềm SSDG, Giáo trình Linux Unix.
[2] Đặng Quang Hiển (2008), giáo trình hệ điều hành Linux, Đà Nẵng .
[3] Kerry J. Cox, Christopher Gerg, August 2004, Managing Security with Snort
and IDS Tools, pp. 53-86.
[4] Install_Snort_2.8.6_on_Ubuntu_10.04.
[5] Snort Group, April 26, 2010, SNORT Users Manual 2.8.6.

Nguyễn Đức Huy 31

You might also like