Tải bản đầy đủ (.pdf) (11 trang)

Báo cáo tìm hiểu hệ thống phát hiện xâm nhập snort IDS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (954.62 KB, 11 trang )

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

BÁO CÁO TÌM HIỂU VỀ
SNORT-SNORTSAM,SNORTINLINE

Môn học: An toàn ứng dụng web và cơ sở dữ liệu
Giảng viên: Ths. Huỳnh Thanh Tâm
Thực hiện: Nguyễn Hoàn Nam Dương

TPHCM,10/2017


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

I. TỔNG QUAN VỀ SNORT IDS ........................................................... 1
1. Phát hiện xâm nhập là gì? ........................................................... 1
2. Một số khái niệm cơ bản: ............................................................. 1
II. SNORT -

SNORTSAM, SNORTINLINE ...................................... 1

1. Snort: .................................................................................................. 1

1.1. Sơ lược về Snort............................................................................. 1
1.2. Chức năng của Snort ..................................................................... 2
1.3. Thành phần của Snort .................................................................. 2
1.4. Rules ............................................................................................... 4
2. SnortSam và Snort_InLine: ......................................................... 5
2.1 Sơ lược về SnortSam và Snort_Inline ........................................... 5

2.2. SnortSam: ....................................................................................... 6


2.3. Snort_inline: ................................................................................... 6
III. DEMO SNORT ................................................................................... 7
1. Cài đặt Rules đơn giản cho Snort: ............................................ 7


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

I. TỔNG QUAN VỀ SNORT IDS
1. Phát hiện xâm nhập là gì?
- Phát hiện xâm nhập là một tập những công nghệ và phương thức dùng để phát hiện
hành động khả nghi trên cả host và mạng. Hệ thống phát hiện xâm nhập (IDS)có 2 loại cơ
bản sau: IDS signature-based (IDS dựa trên dấu hiệu) và IDS anomaly-based (IDS dựa trên
sự bất thường).
- Dựa trên những tập signature và rules, hệ thống phát hiện có thể tìm và ghi những hành
động xâm nhập và phát ra cảnh báo. Sự phát hiện xâm nhập dựa trên sự bất thường thường
phụ thuộc vào tính bất thường của tiêu đề (header) giao thức trong gói dữ liệu.

2. Một số khái niệm cơ bản:
- Intrusion Detection System (hệ thống phát hiện xâm nhập) hay IDS là phần mềm,
phần cứng hoặc kết hợp cả hai, dùng để phát hiện hành động của kẻ xâm nhập. Snort là
một IDS mã nguồn mở sẵn có trên mạng. Một IDS có nhiều khả năng khác nhau tùy thuộc
vào độ phức tạp của các thành phần trong nó.
- Network IDS hay NIDS: NIDS là một IDS capture dữ liệu trong quá trình truyền dữ liệu
trên mạng (cáp, wireless) và gắn chúng vào một cơ sở dữ liệu của những signature. Phụ
thuộc vào nơi mà một gói bi phát hiện với một tín hiệu xâm nhập, lúc đó một cảnh báo sẽ
được phát sinh hoặc gói đó sẽ được ghi vào trong một file hay cơ sở dữ liệu.

- Signatures (dấu hiệu): Khi chúng ta nhìn vào trong gói dữ liệu, ta rút ra được một mẫu
(lấy mẫu dữ liệu), mẫu đó gọi là signature. Một signature dùng để phát hiện một hoặc
nhiều loại tấn công. IDS phụ thuộc vào signature để tìm những hành vi xâm nhập.

- Alerts (cảnh báo): là những loại thông báo người dùng của một hành vi xâm nhập.
Alerts có thể là một dạng cửa sổ pop-up, dạng console, gửi một e-mail, v.v Alerts cũng có
thể được lưu trong những log file hay cơ sở dữ liệu, nơi mà chúng có thể xem lại
về sau. Snort có thể phát ra Alerts trong nhiều hình thức và được điều khiển bởi những
output plug-ins. Snort cũng có thể gửi cùng một alert đến nhiều điểm đích.

II. SNORT -

SNORTSAM, SNORTINLINE

1. Snort:

1.1. Sơ lược 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. Với kiến trúc thiết kế theo kiểu module, người dùng có thể tự tăng

1


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

cường tính năng cho hệ thống Snort của mình bằng việc cài đặt hay viết thêm mới các
module
- 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, SLIP, PPP, và PF của

OpenBSD.

1.2. Chức năng của Snort
- Snort 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.
- Thông thường, Snort chỉ nói chuyện vói TCP/IP. Mặc dù, với các phần tùy chỉnh mở
rộng, Snort có thể thực hiện để hỗ trợ các giao thức mạng khác, chẳng hạn như Novell’s
IPX. TCP/IP là một giao thức phổ biến của Internet. Do đó, Snort chủ yếu phân tích và cảnh
báo trên giao thức TCP/IP.
- Snort là một IDS rule-base (IDS dựa trên tập luật) chính. Snort sử dụng những rule lưu
trong những text file, nó có thể xem được bằng một trình soạn thảo văn bản. Những rule
được nhóm theo từng loại. Những rule đi cùng với mỗi loại được lưu trữ trong những file
riêng. Những file này sau đó được tập hợp trong một file cấu hình chính, gọi là snort.conf.
Snort đọc những rule này mỗi lần chạy và xây dựng các cấu trúc dữ liệu bên trong nó hoặc
áp dụng những rule đó để capture dữ liệu. Snort cho phép định nghĩa lại rule cho việc phát
hiện xâm nhập và rất “linh hoạt” cho ta thêm vào rule riêng của mình.
- 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.

1.3.

Thành phần của Snort


- Snort được chia thành nhiều phần. Những phần này làm việc cùng nhau nhằm phát hiện
những loại tấn công khác nhau và sinh ra trong một định dạng yêu cầu từ hệ thống phái
hiện. Một Snort IDS cơ bản gồm các thành phần chính sau:

2


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

Các thành phần chính của Snort IDS


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, 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 phần header 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 được thiết
lập trong phần header. 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 tiền xử lý
(preprocessor).


Preprocessor (bộ phận tiền xử lý) :

Các Preprocessor là những thành phần hoặc plug-in có thể sử dụng cho Snort để sắp
xếp, chỉnh sửa các gói dữ liệu trước khi bộ phần Detection Engine làm việc với chúng. Một số
Preprocessor cũng thực hiện phát hiện dấu hiệu dị thường bằng cách tìm trong phần tiêu đề

của gói tin và tạo ra các cảnh báo.
Preprocessor rất quan trọng với bất kỳ hệ thống IDS nào để chuẩn bị dữ liệu cần thiết về
gói tin để bộ phận Detection Engine làm việc.
Preprocessor còn dùng để tái hợp gói tin cho các gói tin có kích thước lớn. Ngoài ra nó còn
giải mã các gói tin đã được mã hóa trước khi chuyển đến bộ phận Detection Engine.


Detection Engine (bộ phận kiểm tra)

Detection Engine là bộ phận quan trọng nhất của Snort. Trách nhiệm của nó là phát hiện bất
kì dấu hiệu tấn công nào tồn tại trong gói tin bằng cách sử dụng các rule để đối chiếu với
thông tin trong gói tin. Nếu gói tin là phù hợp với rule, hành động thích hợp được thực hiện
Hiệu suất hoạt động của bộ phận này phụ thuộc các yếu tố như: số lượng rule, cấu hình
máy mà Snort đang chạy, tốc độ bus sử dụng cho máy Snort, lưu lượng mạng.

3


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

Detection Engine có thể phân chia gói tin và áp dụng rule cho các phần khác nhau của gói
tin.



Logging 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.



Output Modules (bộ phận đầu ra)

Bộ phận đầu ra của Snort phụ thuộc vào việc ta ghi các ghi nhận, thông báo theo cách thức
nào. Có thể cấu hình bộ phận này để thực hiện các chức năng sau:


Lưu các ghi nhận và thông báo theo định dạng các file văn bản hoặc vào cơ sở dữ liệu.



Gửi thông tin SNMP.



Gửi các thông điệp đến hệ thống ghi log.

• Lưu các ghi nhận và thông báo vào cơ sở dữ liệu (MySQL, Oracle...).
hình trên Router, Firewall.

1.4.

• Chỉnh sửa cấu

Rules

- 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.
-

Tất cả các Luật của Snort về logic đều gồm 2 phần: Phần header và phần Options.

• 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 các tiêu chuẩn để áp dụng luật với gói tin đó.
• Phần Option chứa một 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 luật với
gói tin. Một luật có thể phát hiện được một hay nhiều hoạt động thăm dò hay tấn công. Các
luật thông minh có khả năng áp dụng cho nhiều dấu hiệu xâm nhập.

4


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

-

Dưới đây là cấu trúc chung của phần Header của một luật Snort:

ACTION


PROTOCOL

ADDRESS

PORT

DIRECTION

• Action: là phần qui đị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 qui định việc áp dụng luật cho các packet chỉ thuộc một giao thức cụ
thể nào đó. Ví dụ như IP, TCP, UDP …
• 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 “->” qui
đị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 sẽ chỉ ra đâu là địa chỉ nguồn, đâu là địa chỉ đích.
Ví dụ:
alert icmp any any -> any any (msg: “Ping with TTL=100”;ttl: 100;)
Phần đứng trước dấu mở ngoặc là phần Header của luật còn phần còn lại là phần
Option. Chi tiết của phần Header như sau:
• Hành động của luật ở đây là “alert” : một cảnh báo sẽ được tạo ra nếu như các điều
kiện của gói tin là phù hợp với luật(gói tin luôn được log lại mỗi khi cảnh báo được tạo ra).
• Protocol của luật ở đây là ICMP tức là luật chỉ áp dụng cho các gói tin thuộc loại ICMP.
Bởi vậy, nếu như một gói tin không thuộc loại ICMP thì phần còn lại của luật sẽ không cần
đối chiếu.
• Địa chỉ nguồn ở đây là “any”: tức là luật sẽ áp dụng cho tất cả các gói tin
đến từ mọi nguồn còn cổng thì cũng là “any” vì đối với loại gói tin ICMP

thì cổng không có ý nghĩa. Số hiệu cổng chỉ có ý nghĩa với các gói tin
thuộc loại TCP hoặc UDP thôi.
• Còn phần Option trong dấu đóng ngoặc chỉ ra một cảnh báo chứa dòng “Ping with
TTL=100” sẽ được tạo khi tìm thấy điều kiện TTL=100. TTL là Time To Live là một trường
trong Header IP.

2. SnortSam và Snort_InLine:
2.1 Sơ lược về SnortSam và Snort_Inline

5


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

- Chức năng của Snort chỉ là phát hiện xâm nhập và cảnh báo cho người quản trị biết về
những xâm nhập đó, nó không thể ngăn chặn các cuộc tấn công đó. Để thực hiện được chức
năng ngăn chặn một cách chủ động (active response) có thể sử dụng các plug-in dành cho
Snort như SnortSam, Snort_inline để làm điều này.
- Các plug-in đó sẽ thay đổi hoặc chặn các lưu lượng mạng ( tầng Network)
địa chỉ IP (SnortSam), ở tầng Application (Snort_inline).

dựa trên

- Hệ thống ngăn chặn xâm nhập ngoài việc ngăn chặn các gói tin đi vào hệ thống nó còn
có thể thay đổi trực tiếp các gói tin đó khi chúng được chuyển qua mạng. Bởi vậy
Snort_inline được xếp vào hệ thống ngăn chặn xâm nhập (IPS) còn SnortSam chỉ được xếp
vào hệ thống phản ứng chủ động (Active Response System).

2.2. SnortSam:
- SnortSam bao gồm hai phần riêng biệt:

+ Một phần là một tập hợp của các sửa đổi trong tập tin mã nguồn, mở rộng Snort
bằng cách thêm một mô-đun output mới đó là: alert_fwsam.
+ Hai là một tác nhân sẽ giao tiếp trực tiếp với tường lửa gọi là agent. Tác nhân này có
thể đặt ngay trên chính các tường lửa nếu tường lửa đó là iptables, hoặc trên pf nếu hệ
thống là BSD hoặc trên Checkpoint’s Firewall-1 nếu hệ thống là Windows. Đối với các tường
lửa phần cứng như Cisco PIX thì tác nhân này của SnortSam phải đặt trên một máy riêng
biệt rành riêng để giao tiếp với PIX.
- Phương thức hoạt động: Snort sẽ giám sát các luồng lưu lượng trên mạng, và khi một
luật của Snort được kích hoạt (gặp một traffic phù hợp), Snort sẽ gửi đầu ra cho mô-đun
fwsam. Mô-đun fwsam sau đó sẽ gửi một tin nhắn mã hóa tới cho agent được đặt trên
tường lửa. Agent này sẽ kiểm tra xem tin nhắn đó có phải được gửi tới từ một nguồn có
thẩm quyền hay không, nếu đúng nó sẽ giải mã thông điệp vừa nhận được và kiểm tra xem
các địa chỉ IP nào được yêu cầu chặn. SnortSam sẽ rà soát xem các địa chỉ IP đó có nằm
trong danh sách trắng (white-list) hay không. Nếu IP đó không nằm trong danh sách trắng,
SnortSam sẽ yêu cầu tường lửa chặn địa chỉ IP đó trong một khoảng thời gian đã được định
nghĩa từ trước.

2.3. Snort_inline:
- Ý tưởng chính của inline-mode là kết hợp khả năng ngăn chặn của iptables vào bên
trong snort. Điều này được thực hiện bằng cách thay đổi môđun phát hiện và môđun xử lý
cho phép snort tương tác với iptables. Cụ thể, việc chặn bắt các gói tin trong Snort được
thực hiện thông qua Netfilter và thư viện libpcap sẽ được thay thế bằng việc sử dụng
ipqueue và thư viện libipq. Hành động ngăn chặn của snort-inline sẽ được thực hiện bằng
devel-mode của iptables.

6


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2


- Để hỗ trợ tính năng ngăn chặn của Snort-inline, một số thay đổi và bổ sung đã được đưa
vào bộ luật Snort. Đó là đưa thêm 3 hành động DROP, SDROP,INJECT và thay đổi trình tự
ưu tiên của các luật trong Snort.
+
LOG.

Hành động DROP yêu cầu iptables loại bỏ gói tin và ghi lại thông tin như hành động

+ Hành động SDROP cũng tương tự như hành động DROP, điều khác biệt là ở chỗ
Snort sẽ không ghi lại thông tin như hành động LOG.
+ Hành động REJECT yêu cầu iptables từ chối gói tin, có nghĩa là iptables sẽ loại bỏ và
gửi lại một thông báo cho nguồn gửi gói tin đó. Hành động REJECT không ghi lại bất cử
thông tin gì.

III. DEMO SNORT
1. Cài đặt Rules đơn giản cho Snort:
- Mục đích: Xuất ra cảnh báo và ghi log lại hoạt động truy cập web không cho phép. Đồng
thời cũng xem được cookie và một số thông tin khác.

 Bước 1: Tạo file demoTCP.rules trong thư mục Snort đã cài đặt C:\Snort\Rules với nội
dung:

alert tcp any any -> 210.245.125.93 any (msg: "Co nguoi dang truy cap! ";
sid:123445)
+ Rule header:
Tcp: là loại giao thức được lựa chọn cho rule
any any là ip và port bất kì của địa chỉ nguồn
-> là direction
210.245.125.93 là ip, any là port bất kì của thegioiskinfood.com ( đích)
+ Rules Options:

msg: "Co nguoi dang truy cap! " : thông điệp được alert bởi snort
sid: 123445 - ID Snort rule.


Bước 2: Chạy dòng lệnh thực thi với cmd:

snort -A console -i5 -c c:\snort\etc\snort.conf -l c:\snort\log

7


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

- A console : hiện alert ra console
-i5 interface 5 ( kiểm tra bằng snort -W )
-c : file config
-l : ghi file log

 Bước 3: Thực hiện truy cập thegioiskinfood.com từ máy ảo và theo dõi kết quả hiển thị
trên màn hình console

Thông tin cảnh báo được hiển thị máy có địa chỉ 192.168.1.103:65221 đã truy cập web
thegioskinfood.com

8


AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU| NHÓM 2

Một số thông tin quan trọng khác cũng được ghi vào fille log.


9



×