BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HOA SEN KHOA KHOA HỌC VÀ CÔNG NGHỆ

Nguyễn Ngọc Như Hằng

: :

Giảng viên hướng dẫn Nhóm sinh viên thực hiện

MSSV: 070073 Nguyễn Quỳnh

MSSV: 070156 Phù Sử Hùng

:

VT071

Lớp

Tháng 12 /năm 2010

PHIẾU GIAO ĐỀ TÀI KHÓA LUẬN TỐT NGHIỆP

1. Mỗi sinh viên phải viết riêng một báo cáo

2. Phiếu này phải dán ở trang đầu tiên của báo cáo

) 1. Họ và tên sinh viên/ nhóm sinh viên được giao đề tài (sĩ số trong nhóm:

(1) ........................................................ MSSV: .................... khóa: ...........................

(2) ........................................................ MSSV: .................... khóa: ...........................

(3) ........................................................ MSSV: .................... khóa: ...........................

Chuyên ngành: Mạng máy tính Khoa: Khoa Học - Công Nghệ ....................

2. Tên đề tài: Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux .....................

...............................................................................................................................

3. Các dữ liệu ban đầu:

Snort được xây dựng với mục đích phát hiện xâm nhập vào hệ thống. Snort có khả

năng phát hiện một số lượng lớn các kiểu thăm dò, xâm nhập khác nhau như : buffer

overflow, ICMP, virus…Snort là phần mềm open source cung cấp cho nhà quản trị các

thông tin cần thiết để xử lý các sự cố khi bị xâm nhập ...........................................

....................................................................................................................................

....................................................................................................................................

4. Các yêu cầu đặc biệt:

Hiểu được khái niệm, cách hoạt động của IDS - Snort. Cài đặt, cấu hình Snort trên

hệ điều hành Ubuntu. Kiểm chứng kết quả đạt được sau khi cài đặt thành công...........

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

5. Kết quả tối thiểu phải có:

1. Nắm rõ khái niệm về IDS và Snort ...................................................................

2. Cài đặt, cấu hình thành công Snort trên hệ điều hành Ubuntu ...........................

3. .........................................................................................................................

4. .........................................................................................................................

Ngày giao đề tài:……../………./………Ngày nộp báo cáo: ……/…………/.........

Họ tên GV hướng dẫn 1: Nguyễn Ngọc Như Hằng…….………Chữ ký: ....................

Họ tên GV hướng dẫn 2: …………………...…………………..Chữ ký: ....................

Ngày …. tháng … năm…

Trích Yếu

Intrusion Detection System (IDS) là hệ thống phòng chống và phát hiện xâm nhập

thông minh nhất hiện nay. IDS phát hiện những tín hiệu, biểu hiện, hành vi của người

xâm nhập trước khi có thể gây thiệt hại đến hệ thống mạng như làm cho dịch vụ mạng

ngừng hoạt động hay mất dữ liệu. Từ đó người quản trị mạng có thể ngăn chặn thông

qua các biện pháp kỹ thuật khác nhau.

Đề tài của chúng tôi với mục tiêu là xây đựng một hệ thống Snort – IDS trên hệ điều

hành Ubuntu, hệ thống này với mục đích phát hiện và phòng chống các hành động tấn

công và thâm nhập trong mạng. Do đó đề tài tập trung nghiên cứu vào phương thức

hoạt động và vận hành của hệ thống Snort – IDS đồng thời đưa ra cách cài đặt và thiết

lập một hệ thống IDS hoàn chỉnh trên hệ điều hành Ubuntu. Bên cạnh đó chúng tôi

đưa ra giải pháp nhằm tăng cường khả năng hoạt động và vận hành của hệ thống

thông qua việc sử dụng barnyard để tăng cường khả năng ghi lại log của hệ thống và

oinkmaster để tự động liên tục cập nhật rule.

Ngoài việc sử dụng hệ thống rule có sẵn, đề tài tìm hiểu cách tạo ra rule theo yêu cầu

nhằm giám sát và kiểm tra đối với một luồng thông tin cụ thể khi mà hệ thống rule

của snort không thể đáp ứng.

Thông qua việc nghiên cứu, đề tài của chúng tôi đưa một cái nhìn tổng quan về hệ

thống Host-based IDS và Network-based IDS, về sự khác và giống nhau của hai hệ

thống từ đó có thể ứng dụng trong mô hình mạng thực tế.

Mục Lục

Trích Yếu ..................................................................................................................iv

Mục Lục .....................................................................................................................v

Lời Cảm Ơn..............................................................................................................vii

Nhận Xét Của Người Hướng Dẫn ............................................................................viii

Nhập Đề .....................................................................................................................9

1. Nguyên Lý Hoạt Động Của Snort ...................................................................... 10

1.1 Quá trình khởi động của snort...................................................................... 10

1.2 Xử lý gói tin trong snort .............................................................................. 11

1.3 Detection Engine ......................................................................................... 15

1.4 Khảo sát Detection Engine .......................................................................... 18

1.5 Snort Inline Mode ........................................................................................ 20

2. Preprocessor....................................................................................................... 22

2.1 Preprocessor frag3 ....................................................................................... 23

2.2 Preprocessor stream5 ................................................................................... 25

3. Hệ Thống Rule Trong Snort ............................................................................... 31

3.1 Tổng quan về rule trong snort ...................................................................... 31

3.2 Cấu trúc rule ................................................................................................ 31

3.3 Thứ tự các rule trong rule base của snort ..................................................... 34

3.4 Oinkmaster .................................................................................................. 34

4. Snort Output Plug-in .......................................................................................... 35

4.1 Output log và alertvới tốc độ nhanh ............................................................. 35

4.2 Output log và alert vào database .................................................................. 38

4.3 Output log và alert vào Unix syslog............................................................. 38

4.4 Output log và alert vào một file cụ thể ......................................................... 39

4.5 Output log và alert vào file CSV.................................................................. 40

4.6 Output log và alert ra nhiều dạng khác nhau ................................................ 41

5. Network-Based và Host-Based IDS ................................................................... 41

5.1 Nework-Based IDS...................................................................................... 41

5.2 Host-Based IDS........................................................................................... 43

5.3 Triển Khai IDS Trong Mạng........................................................................ 44

6. Các Hình Thức Khai Thác Và Tấn Công Hệ Thống Phổ Biến ............................ 47

6.1 Port scan...................................................................................................... 47

6.2 DOS (Denial of Services) ............................................................................ 50

6.3 ARP Spoofing ............................................................................................. 53

7. Cài Đặt Snort ..................................................................................................... 54

7.1 Một số tùy chọn khi biên dịch snort ............................................................. 54

7.2 Cấu trúc database của snort ......................................................................... 55

7.3 Cài đặt Snort với Snort Report (Single Snort Sensor) .................................. 56

7.4 Cài đặt Snort với BASE (Single Snort Sensor) ............................................ 62

7.5 Cài đặt snort với BASE (Multiple SnortSensors) ......................................... 72

7.6 Cài đặt Snort inline ...................................................................................... 81

8. Lab Kiểm Tra Hoạt Động Của Snort .................................................................. 91

8.1 Rule để kiểm tra hoạt động của snort ........................................................... 91

8.2 Rule phát hiện truy cập web......................................................................... 92

8.3 Phát hiện portscan trong Snort ..................................................................... 93

8.4 Phát hiện DOS với snort .............................................................................. 94

8.5 Phát hiện ARP attack................................................................................... 96

Kết Luận................................................................................................................. 101

Tài Liệu Tham Khảo............................................................................................... 102

Lời Cảm Ơn

Chúng tôi xin chân thành cảm ơn cô Nguyễn Ngọc Như Hằng - giảng viên trực tiếp

hướng dẫn nhóm chúng tôi thực hiện khóa luận tốt nghiệp này này, đã tận tình hướng

dẫn và hỗ trợ và giúp chúng tôi giải quyết khó khăn trong quá trình nghiên cứu đề tài

này. Chúng tôi chân thành cảm ơn sự nhiệt tình của cô, cô đã giúp chúng tôi giải đáp

những thắc mắc cũng như cung cấp những tài liệu cần thiết cho quá trình nghiên cứu

đề tài của chúng tôi. Một lần nữa xin chân thành cảm ơn cô.

Chúng tôi xin gửi lời cảm ơn đến những giảng viên của ngành Mạng Máy Tính trường

đại học Hoa Sen đã tận tình giảng dạy và tạo điều kiện cho chúng tôi học tập, nghiên cứu.

Để từ đó chúng tôi có được một nền tảng kiến thức vững chắc làm tiền đề giúp

cho chúng tôi thực hiện tốt đề tài tốt nghiệp của mình.

Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux

vii

NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

............................................................................................................................................................

Người hướng dẫn ký tên

Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux

viii

Nhập Đề

Khái niệm tấn công một máy tính bằng việc tác động trực tiếp vào máy đó đã trở

thành quá khứ khi mà ngày nay con người có thể truy cập vào một máy chủ ở cách xa

mình nửa vòng trái đất để lấy thông tin website, mail… Hacker cũng làm những công

việc tương tự nhưng họ tận dụng những lỗ hỏng của hệ thống nhằm chiếm quyền sử

dụng hay ngăn chặn sự truy cập của người dùng khác vào hệ thống đó.

Nhằm ngăn chặn những truy nhập trái phép vào hệ thống người ta sử dụng những

thiết bị bảo mật như Firewall hay các thuật toán mã hóa. Thế nhưng đối với những

máy chủ chạy những dịch vụ như web, mail thì những công cụ bảo mật này vẫn chưa

hoàn hảo vì đây là những máy chủ được mọi người từ bên ngoài truy cập (public

server). Hacker sẽ lợi dụng chính những dịch vụ này để tấn công vào hệ thống. Điều

đó là nguyên nhân dẫn đến sự cần thiết sử dụng công cụ IDS (Intrusion Detection

System) với mục đích là dò tìm và nghiên cứu các hành vi bất thường và thái độ của

người sử dụng trong mạng, phát hiện ra các hành vi lạm dụng đặc quyền để giám sát

hệ thống mạng.

1. Nguyên Lý Hoạt Động Của Snort

1.1 Quá trình khởi động của snort

Quá trình khởi động của snort chia làm 3 giai đoạn

 Các đối số của command-line được phân tích để xác định chế độ chạy của snort

và thiết lập các biến môi trường.

 File cấu hình được xử lý, trong file này chứa các thông tin cấu hình về rule,

preprocessor, output plug-in…

 Sau khi thông tin cấu hình được đọc, snort bắt đầu thiết lập detection

engine, cácthư viện pcap…

1.1.1 Trình command-line của snort

Command line của snort rất linh hoạt và có nhiều option cho phép người dùng thiết

lập và cấu hình thông qua command line. Điều này cho phép người dùng có

thể thay đổi cấu hình cấu hình của snort mà không cần phải thay đổi file cấu hình.

Đồng thời có thể cho phép nhiều tiến trình snort chia sẽ với nhau một file cấu

hình. Để xem các command line option trong snort được xử lý thế nào người dùng

có thể xem hàm ParseCmdLine trong file snort.c. Đồng thời qua đó người dùng

cũng có thể tạo thêm các option tùy theo ý muốn. Từ phiên bản 2.6 snort đã có hơn

40 command line options.

1.1.2 Xử lý file cấu hình

File cấu hình chứa các thông số cấu hình cho snort, một số thông số cấu hình sẽ

không được hỗ trợ thông qua command line. Các thông số này bao gồm các

loạigiá trị cấu hình, preprosessor, các chỉ dẫn cho output, rule và các thông số

khác.

File cấu hình của snort được định dạng theo từng dòng và được phân tích và chạy theo

từng dòng một. Snort đọc toàn bộ các line và phân tích từng line như là một đối

tượng riêng biệt. Để thực hiện việc phân tích các rule snort sử dụng hàm

ParseRulesFile trong file parser.c. Để phân tích các thành phần còn lại trong file cấu

hình snort tích hợp code dùng cho việc phân tích cho preprocessor, dectection

option, và các output plug-in vào trong các module đó.

1.1.3 Phân tích các rule

Mỗi rule trong snort bao gồm 2 phần: header và các option. Header của rule dùng

để phân biệt loại rule (alert, log, pass…), protocol, source và destination IP, source

và destination port mà rule đang dùng. Phần Option của rule chứa nhiều loại

option khác nhau quy định các thông tin về rule và khác detect option như sid

(snort identifier), message…Khi rule được phân tích snort sẽ tiến hành xây dựng

tất cả các rule theo dạng cây. Phần header của rule dùng để tạo thành rule tree

node (RTN) và phần option sẽ tạo thành option tree node (OTN). Một phần của

OTN sẽ bao gồm các dection option. Tất cả các OTN tương ứng với một header sẽ

được nhóm lại dưới cùng một RTN.

1.2 Xử lý gói tin trong snort

Snort bắt đầu với việc tiếp nhận gói tin. Sau khi gói tin được snort tiếp nhận, các gói

tin lúc này được chuyển vào packet decoder.

Sau khi được decode, gói tin sẽ được chuyển vào preprocessor để tiêu chuẩn hóa

gói tin, phân tích, phân tích thống kê và phát hiện các protocol bất thường.

Tiếp theo đó gói tin sẽ được chuyển vào detection engine để đối chiếu kiểm tra với

rulebase trong snort.

Cuối cùng gói tin được gửi vào các ouput plug-in để loging và cảnh báo.

1.2.1 Tiếp nhận gói tin

Lúc bắt đầu, snort tiến hành thực hiện chức năng packet processing của nó. Snort

đi vào chế độ sniffing mode bằng cách sử dụng hàm InterfaceThread trong file

snort.c. Hàm này khởi động libpcap để lấy các gói tin từ interface. Libpcap là một

thư viện hỗtrợ nhiều nền tảng khác nhau và cho phép tiếp nhận tất cả các gói tin trực

tiếp từ interface. Libpcap giúp cung cấp những thông tin cơ bản sau đây cho mỗi

gói tin:

 Thời gian mà gói tin được bắt từ interface tính đến phần trăm giây

 Chiều dài gói tin

 Số byte của packet đã bắt được

 Link type của packet (Ethernet, Point to Point…)

 Con trỏ đến nội dung của gói tin

Chức năng xử lý gói tin của snort được thực hiện qua nhiều giai đoạn khác nhau.

Đầu tiên snort gọi libpcap bằng hàm pcap_dispatch để xử lý tất cả các gói tin đang

chờ. Với mỗi gói tin libpcap gọi hàm PcapProcessPacket trong file snort.c để xử

lý gói tin. Hàm này khởi tạo lại giá trị counter và số liệu của từng gói tin vàgọi

hàm ProcessPackettrong file snort.c. Hàm ProcessPacket xử lý tất cả các chi tiết

của công việc decode gói tin, xuất gói tin ra màn hình (nếu chạy ở chế verbose

mode), gọi hàm logging packet (nếu chạy ở log mode) và gọi các preprocessor

(nếu chạy ở IDS mode).

Khi chạy snort ở chế độ inline, vấn đề lúc này là không có thư viện nào tương

đương với libpcap cho snort khi chạy ở Sniffer, Packages và Intrusion Detection

mode.Tuy nhiên snort có thể tiếp nhận được gói tin trực tiếp từ iptables thay vì từ

libpcap. Nhưng do snort hoạt động trên nền tảng pcap, các gói tin sẽ được chuyển

thành định dạng pcap sau đó sẽ gọi hàm PcapProcessPacket.

Khi snort hoàn tất việc xử lý gói tin, snort có thể chuyển gói tin đi với nội dung

không thay đổi hoặc có thể bị thay đổi, reject gói tin hoặc drop gói tin mà không

cần phản hồi lại. Việc xử lý gói tin của snort khi chạy ở chế độ inline sẽ thực hiện

phụ thuộc vào cờ được gán trong lúc snort xử lý gói tin. Người dùng có thể xem

chi tiết phương thức xử lý của snort inline trong file inline.c

Snort chỉ có thể có thể xử lý một gói tin tại một thời điểm. Mặc dù pcap và API

của inline đều có thể buffer các gói tin, nếu snort tốn quá nhiều thời gian để xử lý

gói tin trong buffer thì các gói tin này sẽ bị drop. Khi gói tin bị drop snort sẽ

không có đủ thong tin cần thiết để có thể phát hiện hành động tấn công mặc dù ở chế

độ inline drop gói tin thì đồng nghĩa với việc hành động tấn công cũng bị drop theo.

Ngoài ra việc này còn làm cho việc kết nối trong mạng gặp vấn đề và giảm khả

năng hoạt động của mạng, đồng thời làm cho preprocessors (frag3, stream4,

stream5…)vì các preprocessor này hoạt động dựa trên thông tin thu thập từ nhiều

gói tin khác có liên quan với nhau. Và nếu một hay nhiều gói tin bị drop snort sẽ tiếp

tục chờ những gói tin bị mất và thiếu, do đó các gói tin tiếp theo sẽ được đưa vào

hang đợi. Trong quá trình chờ đợi như vậy snort sẽ tiêu thụ nhiều bộ nhớ và CPU

của hệ thống.

1.2.2 Giải mã gói tin

Sau khi snort có được gói tin, gói tin được chuyển qua cho các decoder ở lớp trên

và việc gói tin được chuyển cho decoder nào sẽ dựa vào loại link layer của gói tin

đó. Snort hỗ trợ các loại linklayer sau: Ethernet, 802.11, Token Ring, FDDI, Cisco

HDLC, SLIP, PPP và OpenBSD’s PF. Đồng thời snort hỗ trợ nhiều protocol sau

đây: IP, Internet Control Message Protocol (ICMP),TCP, and User

Datagram Protocol (UDP). Người dùng có thể xem về các decoder trong file

decode.c.

Sau khi một link layer đã được xác định và decoder đã được chọn, các con trỏ sẽ

được dùng để trỏ đến các phần khác nhau của gói tin. Dựa vào thông tin decode

được, nó sẽ gọi tiếp các decoder cho những lớp tiếp theo cho đến khi nào không

còn decoder nào được gọi nữa. Trong khi decode snort sẽ kiểm tra tính sự hợp lệ

của gói tin tại mỗi lớp và sẽ xếp các sự kiện nếu phát hiện một gói tin nào đó bất

thường.

Quá trình giải mã một gói tin

Trong sơ đồ trên mô phỏng gói tin được đưa vào decoder dành cho ethernet, hàm

DecodeEthPkt được dùng. Sau khi decode gói tin, thông tin về

source và destination MAC được làm rõ và dựa vào thông tin về lớp tiếp theo

(ether_type) decoder tiếp theo sẽ được gọi. Giả sử trong trường hợp giá trị của

ether_type lúc này là 2048 (ETHER_TYPE_IP) snort biết được lớp tiếp theo sẽ là IP

và gọi hàm DecodeIP. Quy trình sẽ tiếp tục cho đến khi không còn decoder nào

được gọi. Trong trường hợp gói tin có link type là Ethernet thì gói tin sẽ được

chuyển vào hàm DecodeEthPkt, sau đó hàm này sẽ gọi DecodeIP, tiếp sau là

DecodeTCP.

Sau khi decode cấu trúc của một gói tin sẽ được làm rõ, lúc nào gói tin chứ nhiều

con trỏ khác nhau trỏ đến những phần khác nhau của gói tin, điều này cho phép

snort có thể truy xuất nhanh đến những thành phần trong gói tin. Con trỏ này cho

phép các thành phần của snort như preprocessor, detection engine và output-plugin

có thực hiện công việc một cách dễ dàng sau này.

Trong sự phát triển và cải tiến của snort, một số con trỏ được thêm vào trong gói

tin cho phép các thành phần khác nhau của snort có thể thông tin cho nhau. Lúc

nào trong cấu trúc gói tin lúc này sẽ chứa con trỏ chỉ đến TCP stream tracker, IP

fragment tracker và flow tracker.

1.2.3 Preprocessor

Sau khi gói tin được decode nó được chuyển qua preprocessor. Preprocessor của

snort đóng một vai trò rất quan trọng với nhiều chức năng khác nhau phát hiện các

protocol không hợp lệ, phát hiện thông qua các số liệu thu thập được hoặc phát

hiện trực tiếp mà không cần dựa vào rule.

1.3 Detection Engine

Sau khi được xử lý bởi preprocessor, gói tin lúc nào được chuyển vào detection

engine. Detection engine giống như một preprocessor và nó là preprocessor được

sử dụng cuối cùng. Nhiệm vụ của detection engine là đánh giá gói tin dựa vào các

rule có sẵn trong snort.

Để làm điều này snort sử dụng một rule tree có nghĩa là gói tin được so sánh dựa

vào RTN, nếu một RTN được thỏa mãn nó sẽ tìm tiếp trong các danh sách của các

OTN. Quy trình tiếp tục cho đến khi snort tìm đến hết rule tree.

Mặc dù vẫn sử dụng chức năng tìm theo danh sách cho chức năng đánh giá và phát

hiện các gói tin. Nhưng snort không còn dùng cây của các OTN nữa. Thay vào đó

snort dùng fast pattern matcher, fast pattern matcher xác định một tập hợp các

OTN và OTN nào sẽ được đánh giá. Sau đó snort kiểm tra từng OTN và xắp xếp

thành một hằng đợi gồm các OTN đã khớp với nội dung trong gói tin.

1.3.1 Ghi log và cảnh báo

Sau khi tất cả các preprocessor toàn tất công việc của chúng và gói tin lúc này đã

được đánh giá bởi tập các rule thông qua detection engine. Snort bắt đầu công việc

ghi lại log và đưa ra cảnh báo.

Snort không đưa ra cảnh báo ngay lập tức khi gói tin khớp với rule đầu tiên trong

tập rule mà sẽ ghi lại sự kiện và cảnh báo đó vào một hàng đợi, sau khi gói tin

được so sánh hết trong tập rule, snort sẽ đánh giá xem cảnh báo nào sẽ được đưa

ra.

1.3.2 Hàng đợi các sự kiện cảnh báo

Event queue cung cấp 2 chức năng sau:

 Khả năng điều khiển các rule, rule nào sẽ được chọn nếu có nhiều rule khớp

với nội dung trong gói tin

 Khả năng đưa ra nhiều cảnh báo trên cùng một rule

Ở những phiên bản trước của snort, snort đưa ra cảnh báo ngay từ rule đầu tiên và

những rule nào có độ ưu tiên thấp sẽ bị bỏ qua. Người dùng có thể sắp xếp thứ tự

các rule sẽ được đánh giá, nhưng điều này phức tạp và đòi hỏi phải xây dựng rule

lại từ đầu. Với event queue thay vì cảnh báo ngay từ rule đầu tiên (hoặc decoder

và preprocessor có thể đưa ra cảnh báo) lúc này các sự kiện sẽ được xếp vào một hàng

đợi. Sau khi hàng đợi đã đầy hoặc khi snort đã hoàn thành việc xử lý hết tất

cả các rule. Nó sẽ kiểm tra event queue và quyết định những cảnh báo nào sẽ được đưa

ra.

Người dùng có thể cấu hình trong snort để xắp xếp thứ tự cảnh báo theo rule nào

khớp nhiều nhất với gói tin hoặc theo thứ tự ưu tiên của các rule. Nếu người dùng

cấu hình snort đưa ra nhiều cảnh báo trên cùng một gói tin thì lúc này snort sẽ tiến

hành kiểm tra hết hàng đợi hoặc cho đến khi nó đưa ra hết số lượng cảnh báo tối

đa cho phép. Theo mặc định snort sẽ đưa ra cảnh báo theo rule nào khớp nhiều nhất

với tin và đưa ra 3 cảnh báo cho một gói tin. Người dùng có thể thay đổi giá

trị event_queue option trong file snort.conf.

1.3.3 Ngưỡng đưa ra cảnh báo

Sau khi một quyết định về một cảnh báo được đưa ra, snort lúc này sẽ gọi output

plug-in, tuy nhiên có 2 bước mà snort sẽ thực hiện trước khi gọi output plug-in và

xuất ra màn hình.

Đầu tiên là thresholding, sau khi quyết định về một cảnh báo được đưa

ra, dectection engine lúc này sẽ gọi thành phần thresholding của dectection engine.

Với threshold người dùng có thể giới hạn số lượng cảnh báo được gây ra bởi các

rules. Threshold có 3 loại mà snort hỗ trợ cho việc cấu hình là: limit, threshold và

đồng thời cả hai. Với limiting người dùng có thể hạn chế các sự kiện có thể phát

sinh ra từ một rule đối với những rule quá cơ bản có thể phát sinh ra nhiều cảnh

báo. Điều này rất hữu dụng khi có một hành động nào đó cố hình kích hoạt hành động

cảnh báo của hàng loạt rule và có thể làm hệ thống quá tải.

Ví dụ trong file snort.conf ta có thể cấu hình cho phép một địa chỉ IP source có thể chỉ

kích hoạt được một cảnh báo trong thời gian 60 giây.

threshold gen_id 1, sig_id 0, type limit, track by_src, count 1, seconds 60

Threshold được dùng để quy định một hành động vi phạm một rule bao nhiêu lần

trước khi rule đưa ra cảnh báo. Khi người dùng cấu hình threshold đếm đến 3 cho

một hành động login thất bại có nghĩa là, 3 lần đầu tiên cho hành động thất bại sẽ

không đưa ra cảnh báo và sẽ cảnh báo cho lần login thất bại tiếp theo.

Khi người dùng theo dòng lệnh dưới đây vào file cấu hình điều có đó nghĩa là một

source IP sẽ bị cảnh báo sau lần login thất bại trong vòng 60s.

threshold:type threshold, track by_dst, count 5, seconds 60;

Thresholding là loại kết hợp cho cả 2 loại limit và threshold, dạng này quy định

một hành động vị phạm rule bao nhiều lần thì sẽ bị cảnh báo và chỉ đưa cảnh báo với

một số lượng nhất định.

1.3.4 Ngăn chặn cảnh báo

Sau khi dection engine đưa cảnh báo về một rule và sau khi threshold được sử

dụng nhưng trước khi hành động được ghi log lại. Bước cuối cùng mà snort phải

thực hiện là suppression. Suppression ngăn không cho rule đưa ra cảnh báo về một

hành động trong mạng cụ thể mà không cần loại bỏ rule đó ra khỏi rule base.

Thông qua việc sử dụng suppression người dùng có thể tinh chỉnh tập rule mà

không cần vô hiệu hóa rule.

Ví dụ: bằng cách cấu hình thông qua file snort.conf người dùng có thể ngăn không cho

snort đưa ra cảnh báo khi có hành động xảy ra nếu destination ip là 10.1.1.1.

suppress gen_id 1, sig_id 1852, track by_dst, ip 10.1.1.1

1.4 Khảo sát Detection Engine

Hầu hết khả năng nhận dạng và phòng chống tấn công của snort được xây dựng

bên trong rule và tạo thành detection engine. Hầu hết công việc của detection

engine thực hiện là cảnh báo nào sẽ được đưa ra cho những gói tin vi phạm.

Rule option là thành phần chủ yếu được dùng cho việc đánh giá gói tin và phát

hiện xâm nhập. Một số rule option có cấu trúc phức tạp và có vai trò quan trọng

trong detection engine như content, bytetest, bytejump, PCRE hay flowbits rule

options.

1.4.1 Bộ phận nhận dạng - pattern matcher

Trong các phiên bản trước của snort, snort đánh giá gói tin bằng cách so sánh trực

tiếp với rule tree cho đến khi tìm thấy rule được khớp hoặc tất cả các rule được

được kiểm tra hết. Đây là một cách dễ dàng triển khai và dễ hiểu. Tuy nhiên trong

một mạng có lượng traffic lớn và có tốc độ cao thì cần có một phương pháp kiểm

tra nhanh hơn.

Được phát triển của Marc Norton, một kỹ sư phần mềm của công ty Sourcefire,

pattern matcher là thành phần cốt lõi cho dectection engine ngày nay.

1.4.2 Xây dựng pattern matcher

Việc xây dựng pattern matcher bắt đầu mỗi rule tree, mục đích chính của rule tree

là giảm số lượng rule cần được kiểm tra với gói tin, bằng cách giảm số lượng rule

thì sẽ giảm được thời gian tìm kiếm trên rule đối với một gói tin. Điều này sẽ làm giảm

thời gian snort xử lý gói tin và tăng khả năng hoạt động trên những mạng có

tốc độ cao.

Pattern matcher bắt đầu bằng việc nhóm các rule lại với nhau dựa trên destination port

của rule. Sau đó với mỗi destination port, snort xác định trường content string

dài nhất trong content option của rule. Khi snort hoàn tất việc tập hợp content

string, snort bắt đầu biên dịch pattern mather thông qua nhiều thuật toán khác

nhau. Khi một gói tin đi vào pattern matcher, một nhóm các pattern sẽ được chọn

dựa vào destination port. Sau đó, snort sẽ chọn ra một nhóm các pettern trong các

pattern ban đầu và dựa vào đó chọn ra những rule cần thiết và đánh giá toàn bộ

rule.

Pattern matcher sẽ giảm thời gian snort xử lý một gói tin, do đó snort có thể xử lý

được nhiều dữ liệu hơn,

Snort hiện nay dùng 3 thuật toán chính trong pattern macher là: Aho-Corasick

(ac), modified Wu-Manber (mwm) và low memory key-word trie (lowmem).

Bảng dưới đây là kết quả sau khi test trên cấu hình mặc định của snort 2.6 và rule

base và thời điểm 8/8/2006 cùng với gói dữ liệu dạng pcap có độ lớn là 1.5 GB.

Mục memory trong bảng kết quả được tính sau khi snort khởi động, thời gian snort

Kiểm tra với 4.955 rules

Kiểm tra với 6.592 rules

Thuật toán

Bộ nhớ (MB)

Thời gian khởi động (s)

Thời gian xử lý gói tin (s)

Bộ nhớ (MB)

Thời gian khởi động (s)

Thời gian xử lý gói tin (s)

ac

141

22.2

493

400.8

176.4

766.6

acs

49

20.2

183

490.4

179.0

936.3

ac-std

243

7.7

836

399.6

34.0

841.4

ac-banded

76

20.0

323

408.9

178.6

781.7

ac-sparsebands

53

19.7

236

435.9

178.5

787.2

mwn

60

4.4

102

421.0

6.2

795.6

3.9

57

5.1

lowmem

458.9

832.4

35 1.4.3 Dynamic detection engine

khởi động và thời gian snort dùng để xử lý hết 1.5 GB data.

Share object rule hay còn gọi là dynamic detection engine cung cấp 2 chức năng

chính cho người dùng. Thứ nhất share object rule cung cấp chức năng phát hiện nó

có ý nghĩa quan trọng và phức tạp hơn nhũng rule bình thường. Share Object Rule

cho phép snort cập nhật hành động tấn công một cách nhanh chóng. Thứ hai,

shared object rule cho phép triển khai một loại rule được gọi tên là “black box”

rule. Vì rule này được biên dịch bên trong một share object nên nó cho phép che

dấu nội dung của rule khỏi những người quản trị các sensor.

Để sử dụng dược các dynamic detection engine và share rule người dùng cần thêm

lệnh –enable-dynamicplugin khi biên dịch. Khi đó khi chạy lệnh make install snort

sẽ cài vào các share object module và xây dựng các share object rule. Thêm vào đó

người dùng phải cấu hình snort để load các engine và những module rule cần thiết.

 --dynamic-engine-lib <file> : load một dynamic engine từ một file chỉ định

 --dynamic-detection-lib <file> : load dynamic rule từ một file

 --dynamic-detection-lib-dir : load dynamic rule từ tất cả các rule

trong một thư mục

Mỗi option trên tương đương với việc cấu hình trong file snort.conf như sau:

 dynamicengine <file> : load một dynamic engine từ một file chỉ định

 dynamicdetection file <file> : load dynamic rule từ một file

 dynamicdetection directory : load dynamic rule từ tất cả các rule

trong một thư mục

1.5 Snort Inline Mode

1.5.1 Các mode chính của snort

 Sniffer mode: ở mode này snort chỉ log lại gói tin và in ra màn hình

 Packet Logger mode: ở mode này snort chỉ log lại gói tin và ghi vào hệ

thống đĩa

 Network Intrusion Detection System (NIDS) mode: đây là mode phức tạp

nhất của snort, ở mode này snort phân tích traffic trong mạng, từ đó phát

hiện được những hành động thâm nhập hoặc tấn công trong mạng.

 Inline mode :trong mode này snort sẽ tiếp nhận gói tin từ iptables thay vì từ

libpcap sau đó sẽ tiến hành xử lý gói tin (DROP, REJECT, SDROP)

1.5.2 Nguyên lý hoạt động của inline mode

Snort inline nhận gói tin trực tiếp từ ipables thay vì nhận gói tin từ libpcap và sử

dụng rules để giúp iptables drop hoặc pass gói tin dựa vào snort rules.

Có 3 loại rule trong snort inline:

 drop: rule này sẽ dùng ip tables để drop gói tin và log lại.

 reject: rule này sẽ dùng iptables để drop gói tin, log lại sau đó dùng TCP

reset gửi lại nếu protocol là TCP hoặc icmp unreachable nếu protocol là

UDP.

 sdrop: rule này sẽ drop gói tin và không có gì được log lại.

Khi sử dụng reject rule, có 2 option được sử dụng đối với TCP reset:

 Sử dụng RAW socket, loại này chỉ được dùng trong trường hợp interface

nhận được gói tin phải được gán IP. Nếu trong trường hợp interface không

có địa chỉ IP thì snort chỉ log lại gói tin nhưng sẽ khôn thể gửi reset.

 Sử dụng iptables để reset ở địa chỉ layer 2, khi sử dụng option này ta không

cần sử dụng IP trên bridge interface, đề làm được như vậy ta cần cấu hình

“config layer2_resets” trong file snort.conf:

Ví dụ: config layer2resets

Cấu hình trên sẽ chỉ định rằng snort sẽ dùng MAC của bridge interface làm địa

chỉ source để reset gói tin.

config layer2resets:

Cấu hình trên sẽ chỉ định snort dùng địa chỉ MAC 00:06:76:DD:5F:E3 làm địa

chỉ snort để reset gói tin.

 Thứ tự các rule trong snort inline

Activation dynamic pass drop sdrop reject alert log

 Thay thế nội dung gói tin với snort inline

Với snort inline ta có thể dùng rule để thay thế nội dung gói tin:

alert udp any any <> any 53 ( msg: "udp replace"; content: "yahoo"; replace:

"mail" )

2. Preprocessor

Preprocessor là một đoạn code được biên dịch vào snort engine nhằm xây dựng lại

packet, traffic flow và kiểm tra traffic trong mạng để phát hiện tấn công và đưa ra

cảnh báo.

Traffic đầu tiên phải đi vào decoder, để decode các

Protocol Decoder

thông tin ban đầu.

IP Defragmentation

frag3 là preprocessor để xây dựng lại gói tin từ

những gói tin đã bị phân mảnh trong quá

(frag3)

trình truyền.

stream5 sau đó sẽ kiểm tra xem gói tin đó có phải là

Stateful Inspection

một phần của session hay không.

(stream5)

stream5 tiến hành xây dựng lại thành 1 TCP stream

Stream Reasesembly

từ những thông tin nó thu được.

(Stream5)

Những preprocessor này được dùng để xây dựng lại

Application

những gói tin những protocol thông thường và thậm

Layer Preprocessor

chí có thể đưa ra cảnh báo nếu cần.

Detection Engine

Sau cùng gói tin sẽ được chuyển cho detection

engine để tiến hành đánh giá dựa vào các rule.

2.1 Preprocessor frag3

Preprocessor frag3 được phát triển nhằm thay thế cho frag2,frag3 có tốc độ xử lý

nhanh hơn frag2, quản lý data phức tạp hơn frag2 và chống những thủ thật nhằm

vượt qua frag2.

Preprocessor frag3 sử dụng sfxhash data structure và linked lists để quản lý và xử

lý data, điều này giúp cho frag3 tăng khả năng dự báo và tăng tính quyết đoán của frag3.

Khi môi trường mạng có nhiều gói tin bị phân mảnh thì frag3 sẽ hoạt động

rất hiệu quả và giúp người quản trị quản trị dễ dàng hơn

Preprocessor frag3 đưa ra khái niệm “target-base” IDS, tức là frag3 sẽ xây dựng

lại gói tin bị phân mảnh dựa vào destination host mà gói tin sẽ đến. Bởi vì mỗi hệ

điều hành xây dựng lại gói tin theo một các khác nhau và snort không hề biết

destination host của gói tin mà nó đang ráp mảnh là hệ điều hành gì. Một gói tin

có thể xem là bình thường với hệ điều hành này, nhưng nó có thể được xem là bất

thường với một hệ điều hành khác. Do đó frag3 đưa ra target-based với 7 loại

policy dành cho nhựng OS như sau:

 BSD

 BSD-right

 Linux

 First

 Last

 Windows

 Solaris

Snort phân chia hệ điều hành theo policy như sau:

Platform X 2 AIX 4.3 8.9.3 Cisco IOS FreeBSD HP JetDirect (printer) Type BSD BSD Last BSD BSD-right

HP-UX B.10.20 HP-UX 11.00 IRIX 4.0.5F BSD First BSD

IRIX 6.2 IRIX 6.3 IRIX64 6.4 Linux 2.2.10 Linux 2.2.14-5.0 Linux 2.2.16-3 Linux 2.2.19-6.2.10smp Linux 2.4.7-10 Linux 2.4.9-31SGI 1.0.2smp Linux 2.4 (RedHat 7.1-7.3) MacOS (version unknown) NCD Thin Clients OpenBSD (version unknown) OpenBSD (version unknown) OpenVMS 7.1 OS/2 (version unknown) OSF1 V3.0 OSF1 V3.2 OSF1 V4.0,5.0,5.1 SunOS 4.1.4 SunOS 5.5.1,5.6,5.7,5.8 Tru64 Unix V5.0A,V5.1 Vax/VMS Windows (95/98/NT4/W2K/XP) BSD BSD BSD Linux Linux Linux Linux Linux Linux Linux First BSD Linux Linux BSD BSD BSD BSD BSD BSD First BSD BSD First

2.1.1 Cấu hình frag3

Để frag3 có thể hoạt động thì cần ít cần ít nhất hai preprocessor khác.

frag3_global preprocessor

 max frags : số lượng phân mảnh tối đa mà frag3 có thể theo dõi

mặc định là 8.192.

 memcap : Số lượng bộ nhớ lớn nhất là frag3 có thể sử dụng.

 prealloc_frags : bộ nhớ phụ, dùng để cấp phát trước cho các

fragment node

frag3_engine preprocessor

 timeout : thời gian timeout cho việc phân mảnh, mặc định sau

60 gói tin phân mảnh sẽ bị drop

 min_tll : Giá trị TTL nhỏ nhất cho một gói tin phân mảnh, mặc

định là 1

 detect_anomalies: phát hiện những việc phân mảnh bất thường

 overlap_limit : giới hạn số mảnh bị trùng trong một gói tin,

mặc định là 0 (không hạn chế), tối đa là 255, tuy nhiên chức năng

detect_anomalies phải được bật.

 min_fragment_length : quy định kích thước mảnh nhỏ nhất,

kích thước của của một phân mảnh nhỏ hơn hoặc bằng kích thước quy

định được coi là mã độc và có thể bị cảnh báo, tuy nhiên chức năng

detect_anomalies phải được bật.

 policy : chọn policy phù hợp với hệ thống mà snort đang hoạt

động.

2.1.2 frag3 output

Preprocessor frag3 xây dựng lại gói tin từ những phân mảnh sau đó đẩy gói tin

theo đường mà frag3 đã nhận gói tin từ decoder. Gói tin được log lại hoặc có thể

đi qua preprocessor và quy trình kiểm tra một lần nữa. Điều này có nghĩa là traffic

sẽ được phân tích hai lần, trước phân mảnh và sau khi phân mảnh.

2.2 Preprocessor stream5

Preprocessor stream5 là một preprocessor dành cho việc thiết lập lại các TCP

session, giống như frag3 stream5 cung cấp chức năng target-based. Ngoài

ra stream5 có thể theo dõi cả TCP và UDP session. Preprocessor stream5 thay

thế cho cả stream4 và flow preprocessor. Vì stream5 là sự thay thế của stream4, do

đó

cả hai không thể được sử dụng đồng thời, nếu sử dụng stream5 thì phải gỡ bỏ

stream4 và flow preprocessor. Với stream5, flow và flowbits trong rule option đều

có thể sử dụng.

2.2.1 Chức năng

Transport protocol Một TCP session được bắt đầu bằng three way handshake protocol và kết thúc bằng

cờ FIN và được hai bên xác nhận bằng cờ ACK. Với UDP một session được xác

định thông qua một chuỗi các gói tin UDP được trao đổi giữa 2 bên thông qua các

port. ICMP sẽ được theo dõi cho mục đích kiểm tra unreachable và unavailable

service của TCP và UDP.

Target-based Preprocessor stream5 cũng giống như frag3, stream5 đưa ra khái niệm target-based

để xử lý hiện tượng dữ liệu trùng lắp giữa những gói tin và những giao dịch TCP

bất thường. Phương pháp dùng để xử lý trùng lắp dữ liệu, TCP Timestamps, Data

on SYN, FIN và khởi tạo lại sequence numbers…và policy hỗ trợ bởi stream5 là

kết quả của việc mở rộng nghiên cứu trên nhiều hệ điều hành khác nhau để có từng policy

cụ thể cho từng hệ đều hành.

Stream API Preprocessor stream5 hỗ trợ stream API, cho phép các bộ phận kiểm tra tính hợp lệ

của protocol và preprocessor cấu hình việc tập hợp gói tin theo yêu cầu của ứng

dụng ở lớp của application, xác định session nào nên bỏ qua và cập nhật thông tin

nhận dạng về session như protocol, hướng gói tin…

Nhận dạng sự bất thường Protocol TCP bất thường, thường là những gói tin SYN nhưng có kèm theo data

hay dữ liệu nằm ngoài TCP windows size…những chức năng này thường được cấu

hình thông qua tùy chọn detect_anomalies của Stream5 TCP preprocessor.

2.2.2 Cấu hình stream5_global preprocessor

preprocessor stream5_global: \

[track_tcp ], [max_tcp ], \

[memcap ], \

[track_udp ], [max_udp ], \

[track_icmp ], [max_icmp ], \

[flush_on_alert], [show_rebuilt_packets], \

[prune_log_max ], [disabled]

 track_tcp : Track session của TCP, mặc định là yes

 max_tcp : Số TCP session tối đa có thể track cùng lúc. Mặc

định là 256000, tối đa là 1052672, tối thiểu là 1

 memcap : bộ nhớ lưu trữ tối đa dành cho gói tin TCP, mặc

định là 8MB, tối đa là 1 GB, tối thiểu là 32 KB

 track_udp : Track TCP session, mặc định là yes

 track_icmp : Track ICMP session, mặc định là yes

 max_icmp : Số icmp session tối đa có thể track cùng lúc, mặc

định là 64000, tối đa là 1052672, tối thiểu là 1

 disable: tắt chức năng tracking của stream6, khi có các chức năng memcap,

max_tcp, max_udp, và max_icmp sẽ tắt theo.

 flush_on_alert: xóa TCP stream khi một cảnh báo được đưa ra về stream

đó, mặc định là tắt.

 show_rebuilt_packets: in ra màn hình gói tin sau khi rebuilt, mặc định là

tắt.

 prune_log_max : in thông điệp khi một session kết thúc mà

session đó tiêu thụ nhiều hơn . Mặc định là 1MB và không

nhiều hơn memcap, tối thiểu là 0.

2.2.3 Cấu hình stream5_tcp preprocessor

preprocessor stream5_tcp: \

[bind_to ], \

[timeout ], [policy ], \

[overlap_limit ], [max_window ], \

[require_3whs []], [detect_anomalies], \

[check_session_hijacking], [use_static_footprint_sizes], \

[dont_store_large_packets], [dont_reassemble_async], \

[max_queued_bytes ], [max_queued_segs ], \

[ports ], \

[ignore_any_rules]

 bind_to : địa chỉ IP sẽ được áp đặt policy này.

 timeout : session timeout, mặc định là 30s, tối thiểu là 1s,

tối đa là 86400s.

 overlap_limit : hạn chế gói tin trùng lắp trong một session

 max_windows : TCP window tối đa cho phép, mặc định là 0, tối

thiểu là 0, tối đa là 1073725400. Option này được stream5 dùng đề

chặn DoS, khi attacker sử dụng windows size rất lớn.

 require_3whs []: một session chỉ được thiết lập khi trải qua

3 bước bắt tay của TCP, mặc định là tắt. number secs là chỉ thời gian

timeout.

 detect_anomolies: phát hiện những kết nối TCP bất bình thường, mặc định

là tắt.

 check_session_hijacking: Kiểm tra kiểu tấn công TCP session hijacking,

kiểm tra giá trị MAC address của 2 đầu kết nối có giống như khi 2 bên có

thiết lập session theo bắt tay 3 bước hay không, nếu không có MAC address

thì quá trình kiểm tra được bỏ qua. Cảnh báo sẽ được đưa ra khi kết quả

kiểm tra địa chỉ MAC 2 bên thất bại. Mặc định là tắt.

 dont_store_large_packets: không lưu lại những cói tin quá lớn

trong session, mặc định là tắt.

 dont_reassemble_async: không đưa vào hàng đợi để build session nếu

hướng đi của gói tin không thuộc hướng nào của session.

 max_queued_bytes ]: hạn chế số byte của hàng đợi cho một TCP

session. Mặc định là 1MB, 0 là không hạn chế, nhỏ nhất là 1024, lớn nhất

là 1073741824.

 max_queued_bytes : hạn chế số lượng segment trong việc built

một TCP session. Mặc định là 2621, 0 là không hạn chế, nhỏ nhất là 2, lớn

nhất là 1 GB.

 ports : chỉnh định các port

của client, server hay cả client và sever trong việc xây dựng lại

session. Mặc định là port client 21 23 25 42 53 80 110 111 135 136 137

139 143

445 513 514 1433 1521 2401 3306. Số lượng port nhỏ nhất là 1, lớn nhất là

65535

 ignore_any_rules: không xử lý rule có source port và destination port là

any khi gói tin có tình vi phạm phần payload trong rule trong khi đó không

có rule nào kiểm tra được source và destination port của gói tin đó, mặc

định là tắt.

2.2.4 Cấu hình stream5_udp preprocessor

Preprocessor stream5_udp: [timeout ], [ignore_any_rules]

 timeout : session timeout, mặc định là 30, min là 1, max là

86400.

 ignore_any_rules: không xử lý rule có source port và destination port là

any khi gói tin có tình vi phạm phần payload trong rule trong khi đó không

có rule nào kiểm tra được source và destination port của gói tin đó, mặc

định là tắt.

2.2.5 Cấu hình stream5_icmp preprocessor

Preprocessor stream5_icmp: [timeout ]

Một số preprocessor khác

timeout : mặc định là 30, nhỏ nhất là 1, lớn nhất là 86400

Một số preprocessor khác được snort dùng để xây dựng lại các

application protocol như arpspoof, sfPortscan, rpc_decode, http_inspect,

ftp_telnet, ssh preprocessor…

 http_inspect là decoder tổng quát dành cho protocol HTTP. Sau khi nhận

data buffer, http_inspect sẽ decode và xây dựng lại thành một gói tin

HTTP đầy đủ. Phiên bản hiện tại của http_inspect của chỉ quản lý

được các process dạng stateless, điều có nghĩa là http_inspect chỉ xử lý

được từng gói tin, http_inspect không để xây dựng được gói tin nếu

nó chưa được ráp hoàn chỉnh. http_inspect cung cấp nhiều tùy chọn cho

người dùng cho phép

tương thích với nhiều loại webserver nhưng IIS, apache...

 sfPortscan là preprocessor dùng để phát hiện decoy portscan, distributed

portscan, portsweep…

 ftp_telnet cung cấp chức năng stateful inspection cho cả FTP và Telnet

session, ftp_telnet sẽ decode dữ liệu nhận dạng các FTP command

và response, telnet escape sequences. ftp_telnet làm việc từ hướng server

lẫn client. ftp_telnet có khả năng xứ lý các tiến trình theo dạng stateless

điều

đó có nghĩa là ftp_telnet chỉ xử lý từng gói tin một lúc.

Mặc định FTP/Telnet sẽ chạy ở stateful inspection mode. ftp_telnet rất

linh hoạt và cung cấp nhiều tùy chọn trong việc cấu hình tương tự như

 arpspoof dùng để decode gói tin arp và nhận dạng các kiểu tấn công arp,

http_instpect.

request arp theo kiểu unicast, sự không thống nhất trong việc ánh xạ ARP

và IP.

3. Hệ Thống Rule Trong Snort

3.1 Tổng quan về rule trong snort

 Điểm mạnh của Snort chính là người dùng có khả năng tự viết và

thêm vào bộ Rule mặc định của Snort theo ý mình để phát hiện

những cuộc tấn công mới mà không phụ thuộc vào nhà sản xuất.

 Rule là một tập hợp những chỉ dẫn được đặt ra để tìm những luồng

dữ liệu trùng khớp với mẫu định trước và thực hiện hành động

được chọn cho luồng dữ liệu đó.

 Mỗi Rule tương ứng với 1 dòng trong file snort.conf.

3.2 Cấu trúc rule

Rule Header Rule Options

Rule Header

Action Protocol Address Port Direction Address Port

 Action: hành động thực hiện khi đúng điều kiện và Rule hoàn toàn trùng

khớp với với gói tin đi qua.

o Alert: gửi thông điệp báo động khi gói tin đi qua trùng khớp với

điều kiện của Rule. Báo động có thể gửi đi bằng nhiều cách.

o Log: ghi nhận lại gói tin vào cơ sở dữ liệu để có thể phân tích về

sau.

o Pass: cho gói tin đi qua không cần kiểm soát, hành động

này nhằm tăng tốc độ xử lý của Snort đối với những gói tin

không cần thiết hay ứng dụng trong trường hợp đánh giá mức

bảo mật của hệ thống bẳng cách thử tấn công.

o Activate: gửi báo động đồng thời kích hoạt một Rule khác để

kiểm tra thêm điều kiện.

o Dynamic: là hành động cho thấy rule này chỉ sẽ được kích hoạt

bởi các rule có hành động là Activate.

 Protocol: chỉ ra giao thức của gói tin cần xét, đây là điều kiện đầu tiên

để xem gói tin có trùng hợp với Rule hay không. Ví dụ: TCP, ICMP,

UDP …

 Address: địa chỉ nguồn và đích của gói tin cần kiểm tra. Có thể dùng địa chỉ

của một host, nhiều host hoặc địa chỉ mạng của một subnet. Ví dụ:

192.168.1.2, 172.16.1.0/24 …

 Port: chỉ ra port nguồn và port đích của gói tin cần kiểm tra đối với các

gói TCP và UDP.

 Direction: chỉ ra hướng đi của gói tin từ nguồn tới đích bằng dấu “->”

“<-” nên trường address nhắc đến ở trên dù đặt trước hay đặt sau đều có

thể là nguồn hoặc đích của gói tin.

3.2.1 Rule option

 Rule Option là thành phần theo sau Rule header và được đặt trong

dấu ngoặc đơn. Có thể có một hoặc nhiều rule Option và chúng được

chia cách bời dấu chấm phẩy (;). Khi sử dụng nhiều option cùng lúc thì

sẽ có

ý nghĩa là phải thỏa tất cả các option đó (toán tử AND). Tất cả

các option được định nghĩa bằng các keyword, một số rule còn sử

dụng thêm các argument. Argument và keyword cách nhau bở dấu hai

chấm

(:)

Ví dụ: msg: “DOS Detected”;

3.2.2 Các loại keyword

o ack: dùng để đặt ra điều kiện về trường ACK của gói tin cần xét.

Keyword này được sử dụng trong những trường hợp truy tìm những gói

tin ping thăm dò của hacker với trường ack mang những giá trị đặc biệt

nhằm mục đích foot printing.

o classtype: dùng để phân loại cái rule nhằm tạo điều kiện thuận lợi trong

việc phân tích và thống kê các ghi nhận của Snort. Argument

của classtype được liệt kê trong file classification.config với định dạng

như

sau:

 config classification: name,description,priority

 (name: được sử dụng cùng với keyword classtype,

priority có thể được điều chỉnh thông qua keyword

priority trong option.)

o content: dùng để rà soát thành phần bên trong gói tin dưới dạng ASCII

hay Hecxa.

 Ví dụ: content: “GET”; (dùng để tìm chuỗi GET trong gói tin)

o offset: dùng kèm theo với keyword content để chỉ ra vị trí offset đầu tiên

để bắt đầu tìm kiếm.

o depth: dùng kèm theo content và offset để định ra một khoảng cần tìm

kiếm sau offset đã định bằng keyword offset.

o content-list: khi có nhiều nội dung cần dò tìm thay vì dùng nhiều lần

content ta sẽ đưa những từ cần tìm vào một file và tên file đó sẽ

trở thành argument cho keyword content-list.

o dsize: dùng để xác định chiều dài phần dữ liệu của gói tin trong những

trường hợp dò tìm tấn công tràn bộ đệm bằng cách gửi những gói tin

có chiều dài dữ liệu bất thường.

o flags: dùng để dò tìm bit flag của gói tin theo các argument như sau:

FIN F

SYN S

RST R

PSH P

ACK A

URG U

Reserved Bit 1 1

Reserved Bit 2 2

No Flag set 0

Trên đây là một số keyword thông dụng trong việc viết Rule của Snort, một số

keyword khác sẽ đề cập tiếp trong phần thực hiện LAB với Snort.

3.3 Thứ tự các rule trong rule base của snort

Rule có thể phân thành 3 loại dựa trên trường Action của Rule: Alert Pass  Log

Khi một gói tin đi vào IDS Snort, nó sẽ được kiểm tra theo thứ tự nêu trên để

đảm bảo mọi gói tin đều được kiểm tra thông qua những rule Alert nhằm loại bỏ

những mối nguy hại cho hệ thống. Tuy nhiên nếu thực hiện theo cơ chế này thì sẽ

hao tốn

vi xử lý rất nhiều vì khi hệ thống hoạt động có rất nhiều gói tin đi qua mà phần lớn

là các gói tin bình thường không gây hại. Vì thế Snort đã đưa ra một thứ tự khác

nhằm giải quyết tình trạng này đó là: Pass Alert Log.

Cơ chế này giải quyết được vấn đề vi xử lý tuy nhiên lại nguy hiểm hơn nếu người

quản trị không cẩn thận trong việc viết các pass rule khiến cho các gói tin lẽ ra

phải báo động thì lại cho qua dễ dàng. Người dùng có thể điều chỉnh thứ tự

rule thông qua file snort.conf ở dòng

config order

Alert -> Pass -> Log

3.4 Oinkmaster

Oinkmaster là một phần mềm mã nguồn mở cho phép người dùng có thể cập

nhật những rule mới từ website snort.org. Oinkmaster sẽ tự động so sánh giữa

tập rule hiện tại trong hệ thống và những rule mới trên website

snort.org để từ đó onikmaster sẽ cập nhật những rule mới nhất vào hệ thống.

Oinkmaster sẽ download tập rule đã được nén từ website snort.org sau đó

Oinkmaster sẽ tự động giải nén tập rule và bắt đầu xem xét và so sánh những rule

mới và những rule hiện tại trong hệ thống, từ đó oinkmaster sẽ quyết những rule

nào sẽ cần uptates những rule nào sẽ không cần.

Tùy chỉnh oinkaster

Một số option cho oinkmaster

-C Chỉ định file cấu hình thay vì sử dụng file cấu hình mặc định.

-c Chỉ định snort sẽ chạy ở chế độ careful mode, trong chế độ này

-o Thư mục mà oinkmaster sẽ ghi rule mới vào

-b Thư mực mà oinkmaster sẽ backup các rule cũ

-u Chỉ định đường dẫn đến tập rules, oinkmaster hỗ trợ những loại url

như sau: file://, ftp://, http://, https://, scp://

4. Snort Output Plug-in

Snort out-put có nhiều plugin khác nhau và các plugin có nhiều điểm khác và giống

nhau. Với snort người dùng có thể tạo ra plug-in riêng của mình. Snort cho phép

người dùng tạo output theo nhiều cách khác nhau.

4.1 Output log và alertvới tốc độ nhanh

Cấu hình file snort.conf đề sử dụng unified log, unified log là một dạng binary log

được thiết kế cho việc hoạt động với tốc độ nhanh, hiệu quả ở dạng bằng cách định

dạng file log ở dạng binary format, điều này nhằm giảm tải cho tài nguyên của hệ

thống so với các dạng log khác.Hầu hết các công cụ report hiện nay như barnyard,

snortreport…điều hỗ trợ dạng unified log làm input. Unified log gồm có 2 thông

số chính: tên file log và kích thước file log.

Unified log góp phần làm giảm gánh nặng cho snort trong việc ghi log và tập trung

tài nguyên vào giám sát và phân tích traffic hơn là tập trung ghi log. Điểm lợi nhất

của unified log là tốc độ. Hiện tại barnyard là công cụ tốt nhất trong việc xử lý file

unified log.

output alert_unified: filename snort.alert, limit 128

output log_unified: filename snort.log, limit 128

Unified2 là plugin thay thế cho unified. Unified2 có đặc tính tương tự như unified

nhưng có sự khác biệt về định dạng file log. Unified2 có 3 loại log: packet log, alert

log và true unified log. Packet log sẽ log toàn bộ header của gói tin mà nó bắt được

và được cấu hình là trong file snort.conf là log_unified2. Alert log là log dành riêng

cho alert và được cấu hình là alert_unified2. Nếu người dung muốn log cả packet

và alert ta chỉ cần cấu hình trong file snort.cong như sau: unified2.

Khi cần log MPLS ta có thể log được nhãn của gói tin MPLS bằng cách cấy hình

mpls_event_types.

output alert_unified2: filename snort.alert, limit 128, nostamp

output log_unified2: filename snort.log, limit 128, nostamp

output unified2: filename merged.log, limit 128, nostamp

output unified2: filename merged.log, limit 128, nostamp,

mpls_event_types

Người dùng có thể xuất file binary log với tên vào nơi lưu trử theo ý muốn của

mình bằng cách dùng lệnh snort -l /snort/log -L test2. File log Này có thể được đọc

và phân tích bởi các chương trìn hỗ trợ binary log.

Banryard Snort cùng lúc tiếp nhận traffic từ các host đi đến snort, do đó khi traffic tăng lên

thì tài nguyên của IDS lúc này sẽ càng hao tốn nhiền hơn nhất là CPU và bộ nhớ

của hệ thống. Giải pháp cho việc này là ta có thể chia traffic ra cho nhiều sensor

khác nhau để tránh tập trung lên một sensor duy nhất. Nhưng giải pháp này tốn

kém trong việc triển khai thêm nhiều sensor.

Một giải pháp khác là sử dụng barnyard, barnyard đọc file unified log được xuất ra

từ snort sau đó tiến hành phân tích. Nhiệm vụ của snort chỉ đơn giản là xuất ra định dạng

Unified Binary.

Dữ liệu cần được thu thập lại, định dạng sau đó xuất ra. Trong trường hợp snort ghi

trực tiếp và database thì snort lúc này phải alert đến database và ghi trực tiếp và

database và phải đợi database xác nhận công việc ghi dữ liệu đã thành công. Việc

này sẽ khó khăn hơn khi database nằm trên một host khác.

Snort có khả năng xuất thông tin về một alter nào đó thành một binary file. Điều này

diễn ra rất nhanh và không cần bất cứ tiến trình nào khác. Barnyard sau đó học

file này vào sau đó xuất ra snort logfile, syslog, CSV hoặc xuất vào database.

Barnyard có thể được cấu hình để chạy cùng với snort và việc cấu hình cũng khá

giống với snort.

Cấu hình file Unified Binary của Snort Trước khi sử dụng banryard ta cần cấu hình file output bên trong file snort.conf.

Barnyard chỉ hỗ trợ duy nhất input là file unified2.

output unified2: filename snort.log, limit 128

Tên của file log của snort. File này được tạo ra tại thư mục ghi log filename mặc định của snort (/var/log/snort)

Kích thước tối đa của file binary mặc định là 128 MB. Khi file đầy

limit thì snort sẽ ghi vào một file khác nhưng cùng một tên chỉ khác thời

gian ghi. Cấu hình barnyard File cấu hình barnyard.conf chủ yếu bao gồm những khai báo cấu hình barnyard và

các output plug-in:

Cấu hình barnyard chạy ở background như là config daemon một daemon

config localtime Cấu hình barnyard sử dụng giờ UTC

config hostname: sensor1 Cấu hình tên của sensor khi xuất alert vào

config interface:eth0 database. Interface mà sensor tiếp nhận traffic

Barnyard sẽ không ghi alert trên port 22, trong

config filter: not port 22 trường hợp interface dùng để monitor traffic với

interface sử dụng SSH là cùng một interface.

Mô tả hoạt động của Barnyard

4.2 Output log và alert vào database

Snort cho phép người dùng log trực tiếp vào database bằng cách cấu hình như sau:

output database: alert, , user=

password= test dbname= host=

sensor_name=

Snort hỗ trợ output vào các loại database sau: MSSQL, MySQL, Oracle,

PostgreSQL…

Đồng thời snort cũng cung cấp script để tạo database như sau:

Database MS SQL MySQL Oracle PostgreSQL Script Tạo Database create_mssql create_mysql create_oracle.sql create_postgresql Hệ Điều Hành Microsft Windows Server Linux, Unix, Windows Linux, Unix, Windows Linux, Unix, Windows

4.3 Output log và alert vào Unix syslog

Alert_syslog cho phép snort ghi log và syslog, syslog là hệ thống log chủ yếu của

linux và unix, syslog cung cấp thông tin về hệ thống, kernel, phần cứng và những

thông tin quan trọng khác. Snort cho phép người dùng linh hoạt trong việc ghi log

vào syslog.

Output alert_syslog:

Với facility mặc định là LOG_AUTH và những tùy chọn sau đây:

LOG_AUTH

LOG_AUTHPRIV

LOG_DAEMON

LOG_LOCAL0

LOG_LOCAL1

LOG_LOCAL2

LOG_LOCAL3

LOG_LOCAL4

LOG_LOCAL5

LOG_LOCAL6

LOG_LOCAL7

LOG_USER

Với priority mặc định là LOG_ALERT là những tùy chọn sau đây:

LOG_EMERG

LOG_ALERT

LOG_CRIT

LOG_ERR

LOG_WARNING

LOG_NOTICE

LOG_INFO

LOG_DEBUG

Ví dụ: output alert_syslog: LOG_AUTH LOG_ALERT

4.4 Output log và alert vào một file cụ thể

Snort hỗ trợ fast alert và alert full mode, fast alert sẽ xuất alert ra với chỉ một dòng vào

file log. Dạng log này sẽ nhanh hơn so với full alert mode vì snort không cần

in ra toàn bộ header của gói tin vào file log như với full alert mode.

output alert_fast: alert.fast

output alert_full: alert.full

Output của fast alert có dạng sau đây

11/05-22:08:59.705515 [**] [1:469:3] ICMP PING NMAP [**] [Classification: Attempted Information Leak][Priority: 2] {ICMP} 192.168.206.129 -> 192.168.100.5

4.5 Output log và alert vào file CSV

Snort cho phép xuất log ra thành file CSV (comma-separated value)

Cú pháp như sau: output alert_csv: [ [ []]]

 filename: tên của log file

 format: định dạng của file log. File log được xuất ra theo option mặc định sau

đây:

timestamp

siggenerator tcpseq tcpack

sigid tcplen

tcpwindow sigrev

ttl msg

proto tos

src id

srcport dgmlen

dst iplen

dstport icmptype

ethsrc icmpcode

ethdst icmpid

ethlen icmpseq

tcpflags

 limit: kích thước giới hạn của file log

Ví dụ:

output alert_csv: /var/log/snort/csv.out

timestamp,msg,srcip,sport,dstip,dport,protoname,itype,icode

Phần output được định dạng như sau:

"2004-11-06 00:32:05",ICMP PING

NMAP,192.168.206.129,,192.168.100.5,,"ICMP",8,0

"2004-11-06 00:32:10",ICMP PING

NMAP,192.168.206.129,,192.168.100.5,,"ICMP",8,0

"2004-11-06 00:35:35",SNMP request

tcp,192.168.206.129,36252,192.168.100.5,161,"TCP",,

4.6 Output log và alert ra nhiều dạng khác nhau

Người dùng có thể cấu hình để snort xuất ra theo nhiều dạng log như ví dụ dưới đây:

output log_tcpdump: tcpdump.log

output database: log, mysql, user=root password=test dbname=db

host=localhost

output alert_unified: filename snort.alert, limit 128

output log_unified: filename snort.log, limit 128

5. Network-Based và Host-Based IDS

Nhân tố làm cho snort trở nên hoạt động hiệu quả chính là vị trí và phạm vi mà snort

hoạt động, trước khi tiến hành cài đặt snort ta cần phải quan tâm đến là hệ thống snort

IDS đang bảo vệ đối tượng nào:

 Một server riêng lẻ

 Một hệ thống gồm nhiều server

 Một subnet

5.1 Nework-Based IDS

Snort là một hệ NIDS, snort chuyển trạng thái card mạng sang chế độ promiscuous

và xem xét từng gói tin mà snort bắt được và cảnh báo trên gói tin đó. Muốn NIDS

hiệu quả thì NIDS cần kết hợp với span sport. Span port cho phép tất cả traffic

trong mạng được sao chép và chuyển đến NIDS, điều này làm cho NIDS có thể

giám sát được tất cả traffic trong mạng, do đó hiệu quả của việc trong việc sử dụng

NIDS là rất lớn.

NIDS giám sát và giữ lại traffic theo giời gian thực ngay khi dữ liệu di qua mạng.

NIDS thường sử dụng 2 interface một dùng để giám sát và giữ lại traffic, một

interface còn lại dùng cho việc quản lý. Interface dùng để giám sát và giữ lại

traffic thường sẽ không được gán địa chỉ, chính điều này làm cho nó trở thành một

đối tượng trong suốt trong mạng và tránh bị phát hiện.

Ứng dụng mà snort NIDS sử dụng để monitor và capture traffic là

libpcap. Libpcap là một thư viện được dùng bởi tcpdump, libpcap được thiết kế để thu

thập

dữ liệu của các gói tin từ kernel của hệ điều hành. Libpcap cung cấp dữ liệu cho

NIDS từ đó có thể phân tích được nội dung dữ liệu, phát hiện được dấu hiệu của

sự tấn công, công cụ dùng để tấn công…

Phương pháp và NIDS thường dùng để phát hiện phòng chống tấn công là:

 Mẫu dữ liệu từ những cuộc tấn công trước

 Tần số truy xuất vào hệ thống

 Những sự kiện diễn ra không như bình thường

NIDS sẽ trở thành một vấn đề khó khăn khi triển khai nếu switch mà hệ thống mạng

đang sử dụng không có span port và span sport không phải lúc nào cũng

được hỗ trợ trên switch.

5.2 Host-Based IDS

Giống như network-based IDS, host-based IDS cũng có khả năng giám sát và giữ

lại các gói tin. Thay vì hoạt động ở chế độ promiscuous mode giống như NIDS.

HIDS chỉ giữ lại những gói tin của riêng cho host đó và HIDS có thể được cài lên

nhiều hệ điều hành khác nhau, tuy nhiên không phải hệ điều hành nào củng có thể

cài IDS. HIDS có thể giám sát từng host trong mạng ở mức độ chi tiết hơn so với

NIDS. HIDS có thể giám sát từng port, từng sự kiện diễn ra trong host như sự thay

đổi về quyền của user, sự thay đổi về những file quan trọng trong hệ thống. Ngoài

ra HIDS có thể kiểm tra sự toàn vẹn của những file hệ thống cũng như giám sát

những tiến trình khả nghi. Về phương pháp phát hiện và phòng chống tấn công

HIDS hầu như giống so với NIDS.

Sau đây là bảng so sánh giữa HIDS và NIDS

Nhược điểm

Ưu điểm  Có thể kiểm tra được liệu sự tấn công đã thành  Ảnh hưởng đến tài

 Việc hoạt động không bị ảnh hưởng bởi băng

nguyên của host. công hay thất bại.

 Hoạt động phụ thuộc

thông hay mã hóa. vào hệ điều hành.

d e s a b - t s o H

 Biết được chi tiết tình trạng của host và có thể  Tốn kém khi mở rộng

ngăn cản được sự tấn công

 Có thể giám sát được một sự kiện cụ thể

 Không phụ thuộc vào hệ thống switch  Cho phép triển khai trên toàn mạng với chi phí  Thách thức trong việc

rẻ hơn so với HIDS triển khai trong

 NIDS hoạt động ở chế độ thời gian thực môi trường switch.

 NIDS có thể phát hiện những cuộc tấn không  Không thể chủ động

thành công hoặc những hành động cố tình gây ngăn cản tấn công.

d e s a b - k r o w t e N

hại đến hệ thống.

 NIDS độc lập với hệ điều hành. NIDS không

phụ thuộc vào hệ điều hành được cài đặt trên

host.

5.3 Triển Khai IDS Trong Mạng

5.3.1 Cách kết nối IDS vào mạng

Có nhiều cách để kết nối IDS vào mạng nhằm đảm bảo rằng IDS có thể giám sát

và giử lại traffic hiệu quả nhất có thể. Nhưng bằng cách này hay cách khác traffic cần

được tập trung vào IDS để dễ dàng cho việc phân tích.

Có 3 phương pháp chính sau đây:

Hình 1: IDS kết nối vào span port của switch

Hình 2: IDS được kết nối vào network TAP để monitor traffic

Hình 3: IDS được đặt inline

Trong hình trên, đường màu đỏ dùng để monitor traffic và đường đứt nét dùng cho

việc quản lý IDS.

Trong hình 1, span port được sử dụng để giám sát và giử lại traffic, span port là

một chức năng của switch, span port có thể được cấu hình đề chuyển tất cả traffic

trên switch vào span port. Bằng cách này IDS có thể thấy được tất cả các traffic

lưu thông trên mạng. Mặc dù hub có thể được dùng cho trường hợp này nhưng hub

không phải là một sự lựa chọn tốt nhất.

Trong hình 2, IDS được kết nối vào network tap, network sẽ sao chép traffic và

gửi đến IDS. Network TAP rất hữu hiệu trong việc khi hệ thống switch trong

mạng không có span port. Network TAP hỗ trợ nhiều tốc độ traffic khác nhau từ

1Gbps đến 10 Gbps.

Trong hình 3, IDS sử dụng 3 interface và đặt trong chế độ inline có nghĩa là tất cả

các traffic phải đi vào IDS sau đó mới được chuyển vào mạng. Nếu IDS kết nối

vào span port thì đôi khi gói tin có thể bị bỏ sót, với trường hợp này thì tất cả các

gói tin đi vào mạng đều được IDS giám sát và có thể giảm tải cho switch.

5.3.2 Vị trí triển khai snort

Tùy vào tính quan trọng và nhu cầu bảo mật mà của từng network segment là ta đưa

ra từng chính sách cho từng network segment trong mạng. Ta có thể đặt snort

tại một số vị trí sau đây:

 Giám sát traffic trong vùng DMZ

 Snort có thể được triển khai sau một SSL proxy hoặc trên một VPN server

để IDS có thể giám sát được traffic sau khi được giải mã.

 IDS có thể được triển khai trong mạng LAN

 Đối với những server quan trọng như web, mail, database ta có thể triển

khai HIDS.

 Triển khai IDS bên ngoài router hoặc firewall để giám sát traffic trước khi

đi và trong mạng.

 IDS có thể được dùng để giám sát traffic để giám sát trafic giữa các subnet

6. Các Hình Thức Khai Thác Và Tấn Công Hệ Thống Phổ Biến

6.1 Port scan

6.1.1 Giới thiệu

Phương pháp scan port thường được thực hiện trực tiếp trên một host hoặc một

mạng nhằm mục đích nhận biết các dịch vụ mà host đó cung cấp. Ví dụ: web server

thường mở port 80, FTP server thường mở port 21…Attacker có thể dựa trên thông

tin thu nhận được để tìm cách tấn công, khai thác vào server đó.

6.1.2 Nguyên lý

Dựa trên phương thức truyền thông TCP ta có thể scan xem server mở port nào

cũng như đóng port nào.

Sau đây là hai phương pháp scan port phổ biến: SYN Scan: Máy attacker sẽ gửi hàng loạt các gói tin TCP có port đích lần lượt là các

port cần scan của server cần khai thác. Đặc điểm của các gói tin TCP này là chỉ

bật cờ SYN như bước đầu trong quá trình bắt tay 3 bước của giao thức TCP. Từ đó

server khi nhận được những gói tin này thì sẽ trả về gói SYN ACK nếu port đó có

mở và attacker sẽ biết được dịch vụ nào đang được bật ở server đó.

ACK Scan: đây là phương pháp scan thường được dùng kết hợp với SYN Scan

nhằm phát hiện sự có mặt của Firewall trong hệ thống. Nguyên tắc của ACK Scan

là attacker sẽ gửi các gói TCP có bật cờ ACK lên. Server nhận được gói ACK sẽ trả

về gói RST, khi đó attacker sẽ nhận biết được không có sự giám sát về session

trong hệ thống. Còn khi có sự xuất hiện của một Firewall lớp Transport hay

Multilayer Firewall thì những gói tin ACK gửi vào như thế chắc chắn sẽ bị drop.

Scan port về mức độ không gọi là nguy hiểm cho hệ thống và lại có tính tương

đồng với việc truy cập bình thường.

6.1.3 Nguyên lý về sfPortscan preprocessor trong Snort

Nguyên lý chung để phát hiện có cá nhân scan port của một máy nào đó trong hệ

thống đó là dựa trên những gói tin từ chối khi có truy cập đến những port không

mở trên hệ thống (gói tin RST của TCP khi port đó đóng). Việc xuất hiện những

gói tin từ chối đó là rất ít khi vì khi một người bình thường truy nhập sẽ chỉ sử

dụng đúng chức năng của máy chủ đó như truy cập website ở web server, mail ở

mail server … chứ không kết nối đến những port khác ở các server thông dụng đó.

Và càng bất thường hơn nếu hàng loạt các gói tin từ chối được gửi về trong một

thời gian ngắn (do chương trình scan port như Nmap gửi hàng loạt gói tin một lúc).

Snort sẽ dựa vào những yếu tố đó để phát hiện port scan đối với hệ thống.

Cấu hình preprocessor sfportscan

Trong file snort.conf ta bỏ dấu # ở dòng sau đây để kích hoạt chức năng phát hiện

port scan

preprocessor sfportscan: proto {all} memcap {10000000} sense-level {low}

proto: chỉ ra giao thức theo dõi.

 TCP

 UDP

 ICMP

 ALL

memcap: dung lượng tối đa (byte) để lưu trữ những phát hiện port scan.

sense-level: các mức độ phát hiện port scan

low: chỉ theo dõi dựa trên các gói tin từ chối từ máy bị scan port và số lượng gói tin

trong một khoảng thời gian đặt trước (60 giây) do đó có tính chính xác khá cao.

Tuy nhiên nếu không có các gói tin từ chối gửi về (trong trường hợp máy bị scan

port theo kiểu ACK scan có thiết bị quản lý session như Firewall lớp 4 thì các gói

tin gửi vào sẽ bị drop và không có gói tin trả lời ) thì mức độ này không báo động.

medium: theo dõi số lượng kết nối nên sẽ khắc phục được nhược điểm của mức độ low

đó là vẫn phát hiện dù không có gói tin từ chối trả về. Tuy nhiên mức độ này sẽ thiếu

chính xác đối với những dịch vụ mà một máy có thể tạo ra nhiều kết nối như NAT.

high: liên tục theo dõi một host trong hệ thống để tính toán và ước lượng khả năng

scan port đối với host đó.

6.2 DOS (Denial of Services)

6.2.1 Giới thiệu

Một cuộc tấn công từ chối dịch vụ (tấn công DoS) hay tấn công từ chối dịch vụ

phân tán (tấn công DDoS) là sự cố gắng làm cho tài nguyên của một máy tính

không thể sử dụng được nhằm vào những người dùng của nó. Mặc dù phương tiện

để tiến hành, động cơ, mục tiêu của tấn công từ chối dịch vụ là khác nhau, nhưng

nói chung nó gồm có sự phối hợp, sự cố gắng ác ý của một người hay nhiều người

để chống lại Internetsite hoặc service (dịch vụ Web) vận hành hiệu quả hoặc trong

tất cả, tạm thời hay một cách không xác định. Thủ phạm tẩn công từ chối dịch vụ

nhằm vào các mục tiêu site hay server tiêu biểu như ngân hàng, cổng thanh toán thẻ

tín dụng và thậm chí DNS root servers.

6.2.2 Nguyên lý

Teardrop

Như ta đã biết, tất cả các dữ liệu chuyển đi trên mạng từ hệ thống nguồn đến hệ

thống đích đều phải trải qua 2 quá trình: dữ liệu sẽ được chia ra thành các mảnh

nhỏ ở hệ thống nguồn, mỗi mảnh đều phải có một giá trị offset nhất định để xác

định vị trí của mảnh đó trong gói dữ liệu được chuyển đi. Khi các mảnh này đến hệ

thống đích, hệ thống đích sẽ dựa vào giá trị offset để sắp xếp các mảnh lại với nhau

theo thứ tự đúng như ban đầu. Lợi dụng sơ hở đó, ta chỉ cần gửi đến hệ thống đích

một loạt gói packets với giá trị offset chồng chéo lên nhau. Hệ thống đích sẽ không

thể nào sắp xếp lại các packets này, nó không điều khiển được và có thể bị crash, reboot

hoặc ngừng hoạt động nếu số lượng gói packets với giá trị offset chồng chéo

lên nhau quá lớn.

SYN Attack

Trong SYN Attack, hacker sẽ gởi đến hệ thống đích một loạt SYN packets với địa

chỉ ip nguồn không có thực. Hệ thống đích khi nhận được các SYN packets này sẽ

trả lời các gói SYN này đồng thời lưu các request này vào bộ nhớ để xử lý. Với

hàng loạt gói tin như thế được chờ xử lý sẽ làm cho hệ thống quá tải, reboot … đạt

được mục đích của tấn công DOS.

Land Attack

Land Attack cũng gần giống như SYN Attack, nhưng thay vì dùng các địa chỉ IP

không có thực, hacker sẽ dùng chính địa chỉ IP của hệ thống nạn nhân. Điều này sẽ tạo

nên một vòng lặp vô tận giữa trong chính hệ thống nạn nhân đó.

Smurf Attack

Smurf Attack, cần có ba thành phần: hacker (người ra lệnh tấn công), mạng khuếch

đại (sẽ nghe lệnh của hacker) và hệ thống của nạn nhân. Hacker sẽ gởi các gói tin

ICMP đến địa chỉ broadcast của mạng khuếch đại. Điều đặc biệt là các gói tin

ICMP packets này có địa chỉ ip nguồn chính là địa chỉ ip của nạn nhân . Khi các

packets đó đến được địa chỉ broadcast của mạng khuếch đại, các máy tính trong

mạng khuếch đại sẽ tưởng rằng máy tính nạn nhân đã gởi gói tin ICMP packets đến

và chúng sẽ đồng loạt gởi trả lại hệ thống nạn nhân các gói tin phản hồi ICMP

packets. Hệ thống máy nạn nhân sẽ không chịu nổi một khối lượng khỗng lồ các gói

tin này và nhanh chóng bị ngừng hoạt động, crash hoặc reboot.

Packet với địa chỉ nguồn là địa chỉ của nạn nhân được gửi tới mạng khuếch đại

Tất các Host trong mạng khuếch đại trả lời cho máy nạn nhân cùng lúc

6.3 ARP Spoofing

Mỗi thiết bị trong hệ thống mạng của chúng ta có ít nhất hai địa chỉ. Một địa chỉ là

Media Access Control (MAC) và một địa chỉ Internet Protocol (IP). Địa chỉ MAC

là địa chỉ của card mạng gắn vào bên trong thiết bị, nó là duy nhất. Địa chỉ IP có

thể thay đổi theo người sử dụng tùy vào môi trường mạng. ARP là một giao thức

của lớp 2, chức năng của nó dùng để định vị một host trong một segment mạng

bằng cách phân giải địa chỉ IP ra địa chỉ MAC. ARP thực hiện điều đó thông qua một

tiến trình broadcast gói tin đến tất cả các host trong mạng, gói tin đó chứa địa

chỉ IP của host cần giao tiếp. Các host trong mạng đều nhận được gói tin đó và chỉ duy

nhất host nào có địa chỉ IP trùng với địa chỉ IP trong gói tin mới trả lời lại, còn

lại sẽ tự động drop gói tin.

Ví dụ: ARP Request: máy tính A sẽ hỏi toàn mạng : " ai có địa chỉ IP này? "

ARP Reply: máy tính B trả lời máy tính A : "tôi có IP đó, địa chỉ MAC của tôi là..."

Kỹ thuật ARP Spoffing lợi dụng điểm yếu của giao thức này đó là không có sự xác thực

khi gửi các gói tin ARP, tức là không biết được ai gửi các gói tin đó. Người

tấn công sẽ giả các gói tin ARP reply với địa chỉ IP là của một máy trong mạng

nhưng địa chỉ MAC lại là giả hoặc là MAC của máy tấn công. Như vậy máy nạn

nhân khi nhận được các gói tin giả này sẽ tưởng nhầm đối tác của mình có địa chỉ

MAC do người tấn công gửi đến dẫn đến sai lệch trong việc gửi/nhận thông tin.

7. Cài Đặt Snort

7.1 Một số tùy chọn khi biên dịch snort

--enable-debug bật chức năng report lỗi (chỉ dùng cho developer)

--enable-dynamicplugin load dynamically preprocessors, detection engine

và rules libraries

--enable-inline sử dụng libipq interface cho snort inline mode

--with-mysql=DIR hỗ trợ mysql (nếu có sử dụng ACID với mysql)

--with-mysql-libraries=DIR chỉ định vị trí mysql client library.

--with-mysql-includes chỉ định vị trí mysql header files.

--with-odbc=DIR hỗ trợ ODBC databases

--with-postgresql=DIR hỗ trợ Postgresql databases (nếu có sử dụng ACID với

Postgres SQL)

--with-oracle=DIR hỗ trợ Oracle databases (nếu có sử dụng ACID với Oracle)

--with-libpq-includes=DIR chỉ định thư mục include của Postgres SQL

--with-libpq-libraries=DIR chỉ định thư mục library của Postgres SQL đồng bật

chức năng hỗ trợ output plugin module cho Postgres SQL

--with-libpcap-includes=DIR chỉ định đường dẫn đến file include của libpcap

--with-libpcap-libraries=DIR chỉ định đường dẫn đến file library của libpcap

7.2 Cấu trúc database của snort

7.3 Cài đặt Snort với Snort Report (Single Snort Sensor)

Mô hình mạng

 Các gói tin cần chuẩn bị:

snortreport-1.3.1.tar.gz

jpgraph-3.0.7.tar.gz

snort-2.8.6.1.tar.gz

snortrules-snapshot-2861.tar.gz

barnyard2-1.8.tar.gz

 Máy sử dụng: Máy ảo VM-Ware cài đặt hệ điều hành Ubuntu Server 10.04.1

Bước 1: chuẩn bị đối với hệ điều hành

 Cài đặt các chương trình cần thiết cho máy làm IDS thông qua các

lệnh sau đây:

sudo apt-get install nmap

sudo apt-get install nbtscan

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install php5-mysql

sudo apt-get install php5-gd

Các công cụ scan network Các gói dùng cho Web Server sudo apt-get install libpcap0.8-dev Các thư viện hỗ trợ

sudo apt-get install libpcre3-dev

sudo apt-get install g++

 Cài đặt MySQL

sudo apt-get install mysql-server

sudo apt-get install libmysqlclient16-dev

 Trong quá trình cài đặt MySQL có yêu cầu password cho user root,

tạm gọi là PASS.

Bước 2: Cài đặt Snort Report

 Cài đặt JpGraph: đây là công cụ hỗ trợ cho phần biểu đồ thống

kê trên Snort Report. Sau khi chép file jpgraph-3.0.7.tar.gz vào thư

mục chứa các file cài đặt trong máy ta thực hiện các câu lệnh sau

đây:

sudo mkdir /var/www/jpgraph

sudo tar zxvf jpgraph-3.0.7.tar.gz

sudo cp -r jpgraph-3.0.7/src /var/www/jpgraph/

 Cài đặt Snort Report: công cụ hỗ trợ cho Snort trong việc trình

bày các báo cáo cũng như báo động trong quá trình kiểm tra dữ

liệu của Snort. Chép file snortreport-1.3.1.tar.gz vào thư mục

trong máy và thực hiện câu lệnh sau đây:

sudo tar zxvf snortreport-1.3.1.tar.gz -C /var/www/

 Sau đó thực hiện liên kết giữa Snort Report và cơ sở dữ liệu trong

MySQL bằng cách hiệu chỉnh các file cấu hình của Snort Report:

sudo vi /var/www/snortreport-1.3.1/srconf.php

 Sửa các dòng sau đây:

$pass = "YOURPASS";

Thành:

$pass = "PASS"; (PASS là password đã chọn trong phần cài đặt MySQL)

define("NMAP_PATH", "/usr/local/bin/nmap -v");

define("NBTSCAN_PATH", "/usr/local/bin/nbtscan");

Thành:

define("NMAP_PATH", "/usr/bin/nmap -v");

define("NBTSCAN_PATH", "/usr/bin/nbtscan");

define("JPGRAPH_PATH", "../../jpgraph/");

Thành:

define("JPGRAPH_PATH", "../jpgraph/src/");

 Lưu lại và thoát khỏi file cấu hình.

Bước 3: Cài đặt Snort

 Copy file cài đặt vài máy IDS và thực hiện các câu lệnh sau đây:

sudo tar zxvf snort-2.8.6.tar.gz

cd snort-2.8.6

sudo ./configure --prefix=/usr/local/snort

sudo make

sudo make install

sudo mkdir /var/log/snort

sudo groupadd snort

sudo useradd -g snort snort

sudo chown snort:snort /var/log/snort

 Sau đó ta thực hiện tạo database trong MySQL:

echo "create database snort;" | mysql -u root -p

mysql -u root -p -D snort < ./schemas/create_mysql

 Tiếp theo ta tạo một user để quản trị nhằm hạn chế những rủi ro khi

sử dụng user root trong việc quản trị cơ sở dữ liệu.

echo "grant create, insert, select, delete, update on snort.* to snort

@localhost identified by 'PASS2'" | mysql -u root -p

Bước 4: Cài đặt tập Rule mới nhất cho Snort

Copy tập tin snortrules-snapshot-2861.tar.gz vào máy và thực hiện

các câu lệnh sau:

sudo tar zxvf snortrules-snapshot-2860_s.tar.gz -C /usr/local/snort

sudo mkdir /usr/local/snort/lib/snort_dynamicrules

sudo cp /usr/local/snort/so_rules/precompiled/Debian-Lenny/i386/2.

8.6.0/* /usr/local/snort/lib/snort_dynamicrules

Bước 5: Cài đặt Barnyard

 Barnyard: công cụ dùng để tăng khả năng xử lý của Snort.

Barnyard giúp Snort tập trung thực hiện chức năng chính của

mình đó là rà soát và phân tích dữ liệu để phòng chống tấn công.

 Copy tập tin barnyard2-1.8.tar.gz vào máy và thực hiện các câu lệnh

sau:

sudo tar zxvf barnyard2-1.8.tar.gz

cd barnyard2-1.8

sudo ./configure --with-mysql

sudo make

sudo make install

sudo cp etc/barnyard2.conf /usr/local/snort/etc

sudo mkdir /var/log/barnyard2

sudo chmod 666 /var/log/barnyard2

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

sudo chown snort.snort /var/log/snort/barnyard2.waldo

 Cấu hình barnyard thông qua file barnyard2.conf:

sudo vi /usr/local/snort/etc/barnyard2.conf

 Sửa các dòng sau trong tập tin cấu hình:

config reference_file: /etc/snort/reference.config

config classification_file: /etc/snort/classification.config

config gen_file: /etc/snort/gen-msg.map

config sid_file: /etc/snort/sid-msg.map

#config hostname: thor

#config interface: eth0

#output database: log, mysql, user=root password=test dbname=db host=local

host

Thành:

config reference_file: /usr/local/snort/etc/reference.config

config classification_file: /usr/local/snort/etc/classification.config

config gen_file: /usr/local/snort/etc/gen-msg.map

config sid_file: /usr/local/snort/etc/sid-msg.map

config hostname: localhost

config interface: eth0

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

host=localhost

Bước 6:

Cấu hình IP interface của IDS theo mô hình mạng

Bước 7: Khởi động Snort

 Chỉnh sửa file cấu hình của Snort:

sudo vi /usr/local/snort/etc/snort.conf

 Sửa đổi các dòng sau đây:

dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/

dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so

dynamicdetection directory /usr/local/lib/snort_dynamicrules

Thành:

dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/

dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so

dynamicdetection directory /usr/local/snort/lib/snort_dynamicrules

preprocessor http_inspect: global iis_unicode_map unicode.map 1252

compress_depth 20480 decompress_depth 20480

Thành:

preprocessor http_inspect: global iis_unicode_map unicode.map 1252 Xóa dòng:

inspect_gzip

Tìm dòng:

#output log_unified: filename snort.log, limit 128

Thêm dòng này vào sau nó:

output unified2: filename snort.u2, limit 128  Lưu lại và thoát khỏi file cấu hình.

 Như vậy là đã hoàn thành phần cài đặt Snort với Snort Report.

Thử nghiệm Snort với Snort Report Chỉnh sửa file snort.conf để chỉ phát hiện gói tin ICMP đi từ máy 172.16.1.100 đến

máy 172.16.1.200

Chỉnh sửa lại file icmp.rules

Thực hiện lệnh ping từ máy 172.16.1.100 đến máy 172.16.1.200 Xem alert qua snort report: http://ip-address/snortreport-1.3.1/alerts.php

7.4 Cài đặt Snort với BASE (Single Snort Sensor)

Mô hình mạng

Cấu hình card mạng

#vi /etc/network/interfaces

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet manual

ifconfig eth0 up

auto eth1

iface eth1 inet static

address 192.168.5.15

netmask 255.255.255.0

Cài những gói hỗ trợ cho snort

Dùng lệnh apt-get install để cài các gói sau đây :

o libpcap0.8-dev

o libmysqlclient15-dev

o mysql-client-5.1

o mysql-server-5.1

o bison

o flex

o apache2

o php5

o libapache2-mod-php5

o php5-gd

o php5-mysql

o libtool

o libpcre3-dev

o php-pear

Cài đặt snort từ file binary và cấu hình mysql

Cài đặt snort từ file binary

#apt-get install snort-mysql

Cấu hình mysql

#mysql -u root -p

Tạo database, tạo user và cấp quyền cho user

mysql> create database snort;

mysql> grant create, insert, select, delete, update on snort.* to snort@localhost

identified by 'toot';

mysql> exit

Chuyển vào thư mục nơi chứa template dành cho database và tạo database

*Nếu cài snort từ source code thì file create_mysql sẽ chứa trong thư mục

schemas

#cd /usr/share/doc/snort-mysql/

#zcat create_mysql.gz | mysql -u root -p snort

Kiểm tra lại database và tables đã tạo mysql>

show databases;

mysql> use snort

mysql> show tables;

Chỉnh lại file cấu hình snort để chạy với mysql

#vi /etc/snort/snort.conf

line 50: var HOME_NET 192.168.3.0/24

line 692: #output log_tcpdump: tcpdump.log

*Nếu muốn snort xuất trực tiếp vào mysql và không cần thông qua barnyard

ta cấu hình như sau:

line 699: output database: log, mysql, user=snort password=toot dbname=snort

host=localhost

*Nếu dùng barnyard để xuất vào mysql database ta cấu hình như sau:

line 732: output unified2: filename snort.log, limit 128

Chú ý: Không nên dùng cùng lúc snort và barnyard để xuất trực tiếp vào mysql

database. Điều này sẽ làm cho alert bị lặp lại.

Cài adodb và BASE

Tải base và abobd5 từ trang web http://sourceforge.net. Phiên bản của base

đang sử dụng là 1.4.5 và với adodb là 5.11

Giải nén và chuyển 2 thư mục này đến thư mục /var/www

#mv adodb5 /var/www

#mv base /var/www

#chmod 757 /var/www/base

Chỉnh lại file cấu hình php5 như sau:

#vi /etc/php5/apache2/php.ini

line 68: extension=mysql.so

line 69: extension=gd.so

line 111: error_reporting

line 112: Default Value: E_ALL & ~E_NOTICE

Nếu dùng base 1.4.x trước khi cài base cần cài thêm những gói sau:

#pear install Mail Mail_mime

# pear install Image_Canvas-0.3.2

# pear install Image_Color

# pear install Image_Graph-0.8.0

# pear install Numbers_Words-0.16.2

Dùng lệnh “pear –list” để liệt kiểm tra lại

Khởi động lại Apache

#/etc/init.d/apache2 restart

Cài đặt BASE

Bước 1: điền vào đường dẫn đến thư mực adodb5 /var/www/adodb5

Bước 2: điền vào thông tin về database

Database type = MySQL

Database name = snort

Database Host = localhost

Database username = snort

Database Password = toot

Bước 3:điền vào Admin User Name và Password

Bước 4: bấm vào Create BASE AG.

Sau khi bấm nút Now continue to step 4 thì việc cài đặt hoàn tất.

Cài đặt và cấu hình Barnyard

Download barnyard2-1.8.tar.gz từ trang

websitehttp://www.securixlive.com/barnyard2/download.php

Biên dịch và cài đặt

#tar –xzvf barnyard2-1.8.tar.gz

#cd barnyard2-1.8

#./configure --with-mysql

#make

#make install

Di chuyển vào trong thư mục barnyard2-1.8 và chép file cấu hình vào thư mục

/etc/snort/

#cp etc/barnyard2.conf /etc/snort/

Tạo thư mục chứa log cho barnyard

#mkdir /var/log/barnyard2

Chỉnh lại file cấu hình barnyard2.conf như sau

#vi /etc/snort/barnyard2.conf

line 60: config hostname: mysensor

line 61: config interface: eth0

line 309: output database: log, mysql, user=snort password=toot dbname=snort

host=localhost

Kiểm tra sự hoạt động của snort và tạo file log cho barnyard2

#snort -c /etc/snort/snort.conf -i eth0

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

Khởi động barnyard

# /usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf \

-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map \

-d /var/log/snort -f snort.log -w /var/log/snort/barnyard.waldo

Khởi động snort

* Nếu cài snort từ source code thì dùng lệnh snort -D -c /etc/snort/snort.conf -l

/var/log/snort/ để khởi động snort chạy như một daemon

*Nếu cài snort từ file binary ta khởi động snort cho snort chạy

#/etc/init.d/snort start

Khi khởi động snort, ta có thể gặp cảnh báo như sau:

#/etc/init.d/snort start

* Starting Network Intrusion Detection System snort

* /etc/snort/db-pending-config file found

* Snort will not start as its database is not yet configured.

* Please configure the database as described in

* /usr/share/doc/snort-{pgsql,mysql}/README-

database.Debian

* and remove /etc/snort/db-pending-config

Đó là lỗi để lại trong quá trình cài đặt, tiến hành đổi tên file db-pending-config

thành một file khác.

#mv /etc/snort/db-pending-config /etc/snort/db-pending-config.orig

Cấu hình barnyard2 và snort chạy mặc định sau khi khởi động

Cấu hình cho snort

#vi /etc/rc.local

ifconfig eth1 up

Cấu hình cho barnyard

Tạo file barnyard2.conf file trong thư mục /etc/init/ và điền vào đoạn code sau:

# rc - System V runlevel compatibility

# This task runs the old System V-style rc script when changing between

# runlevels.

description "Barnyard2 for Snort support"

author "bil b@unc.edu"

start on started networking

#start on startup

#start on (startup

# and filesystem

# and started udev)

#stop on runlevel [!023456]

respawn

exec /usr/local/bin/barnyard2 \

-c /etc/snort/barnyard2.conf \

-G /etc/snort/gen-msg.map \

-S /etc/snort/sid-msg.map \

-d /var/log/snort -f snort.log \

-w /var/log/snort/barnyard.waldo

Sử dụng oinkmaster để cập nhật rules

Lấy oinkcode

Đăng kí một tài khoản tại trang web http://www.snort.org

Lấy oinkcode từ trang web, oinkcode có dạng

9026b536810c168b9e25v10888e9935696160b15

Chỉnh lại file cấu hình oinkmaster như sau:

#vi /etc/oinkmaster.conf

line 11: #url = http://www.snort.org/dl/rules/snortrules-snapshot-2_2.tar.gz

line 12: url = http://www.snort.org/pub-

bin/oinkmaster.cgi/9026b536810c168b9e25v10888e9935696160b15/snortrules-

snapshot-2860.tar.gz

Tạo thư mục chứa rules và backup rules

#mkdir /etc/snort/rules

#mkdir /etc/snort/backup

Download rules từ trang web http://snort.org giải nén và chép rules vào thư mục

/etc/snort/rules

Lập danh sách rule cần disable khi cập nhật

#cd /etc/

#/usr/share/oinkmaster/makesidex.pl /etc/snort/rules > autodisable.conf

Tạo user cho crontab để cập nhật tự động

#useradd snort

#chown -R snort /etc/snort/rules

#chown -R snort /etc/snort/backup

#chown -R snort var/run/oinkmaster

#chmod 757 /etc/snort/

Manually update rules

#su snort

#oinkmaster -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o

/etc/snort/rules -b /etc/snort/backup 2>&1

Automatically update rules

#su oinkmaster

#crontab -e

6 0 * * * oinkmaster -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o

/etc/snort/rules -b /etc/snort/backup 2>&1

7.5 Cài đặt snort với BASE (Multiple SnortSensors)

Mô hình mạng

7.5.1 Cấu hình trên central database server

Cài đặt và cấu hình mysql database

#apt-get install mysql-server mysql-client

Tạo database trên mysql

#mysql -u root -p

mysql> create database snort;

mysql> grant create, insert, select, delete, update on snort.* to snort identified

by 'toot';

mysql> exit;

Kiểm tra lại những user được quyền truy cập mysql server

#mysql -u root -p

mysql> select user,host from mysql.user;

Tạo tables cho database snort

Di chuyển vào thư mục schemas dùng file create_mysql để tạo tables cho

database snort

#cat create_mysql | mysql -u root -p snort

Cho chép truy cập mysql server từ remote client

#vi /etc/mysql/my.cnf

line 52 : bind-address = 192.168.3.1

#service mysql restart

Cài đặt Apache and PHP #apt-get install apache2 php5-mysql libphp-adodb php-mail-mime php-mail

#apt-get install libapache2-mod-php5 php5-gd

Cài abobd5 và base Tải base and abobd5 từ trang web http://sourceforge.net. Phiên bản của base đang

sử dụng là 1.4.5 và với adodb là 5.11.

Giải nén bằng lệnh tar hoặc unzip và chuyển 2 thư mục này đến thư mục

/var/www

#mv adodb5 /var/www

#mv base /var/www

#chmod 757 /var/www/base

Chỉnh lại file cấu hình php5 như sau:

#vi /etc/php5/apache2/php.ini

line 68: extension=mysql.so

line 69: extension=gd.so

line 111: error_reporting

line 112: Default Value: E_ALL & ~E_NOTICE

Cài thêm những gói sau đây để hỗ trợ đồ họa cho base

# pear install Image_Canvas-0.3.2

# pear install Image_Color

# pear install Image_Graph-0.8.0

# pear install Numbers_Words-0.16.2

#pear install Mail Mail_mime

Dùng lệnh “pear –list” để liệt kiểm tra lại

Cài đặt BASE Bước 1: điền vào đường dẫn đến thư mực adodb5 /var/www/adodb5

Bước 2: điền vào thông tin về database

Database type = MySQL

Database name = snort

Database Host = localhost

Database username = snort

Database Password = toot

Bước 3: Điền vào Admin User Name và Password

Bước 4: bấm vào Create BASE AG.

Sau khi bấm nút Now continue to step 4 thì việc cài đặt hoàn tất.

Cài đặt Oinkmaster để cập nhật rule tự động Lấy oinkcode

#apt-get install oinkmaster

Đăng kí một tài khoản tại trang web http://www.snort.org

Lấy oinkcode, oinkcode có dạng

9026b536810c168b9e25v10888e9935696160b15

Chỉnh lại file cấu hình oinkmaster

#vi /etc/oinkmaster.conf

line 11: #url = http://www.snort.org/dl/rules/snortrules-snapshot-2_2.tar.gz

line 12: url = http://www.snort.org/pub-

bin/oinkmaster.cgi/9026b536810c168b9e25v10888e9935696160b15/snortr

ules-snapshot-2860.tar.gz

Tạo thư mục chứa rules và backup rules

#mkdir /etc/snort/rules

#mkdir /etc/snort/backup

Download rules từ trang web http://snort.org giải nén và chép rules vào thư

mục /etc/snort/rules

Lập danh sách rule cần disable khi cập nhật

#cd /etc/

#/usr/share/oinkmaster/makesidex.pl /etc/snort/rules > autodisable.conf

Tạo user cho crontab để cập nhật tự động

#useradd snort

#chown -R snort /etc/snort/rules

#chown -R snort /etc/snort/backup

#chmod 777 /etc/snort/

Manually update rules

#su snort

#oinkmaster -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o

/etc/snort/rules -b /etc/snort/backup 2>&1

Automatically update rules

#su oinkmaster

#crontab -e

6 0 * * * oinkmaster -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o

/etc/snort/rules -b /etc/snort/backup 2>&1

12 0 * * * tar czfP /etc/snort/rules.tar.gz /etc/snort/rules

7.5.2 Cài đặt trên snort remote sensor

Cấu hình kết nối ssh không cần password

Central database server

#ssh-keygen -t rsa

Snort remote sensor

#ssh-keygen -t rsa

#scp /root/.ssh/id_rsa.pub root@192.168.3.1:/root/.ssh/

Central database server

#cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

#/etc/init.d/ssh restart

Set up the connection to the server to do this manually with SSH

ssh -N -f -L 3306:192.168.3.1:3306 root@192.168.3.1

Cài đặt snort từ source code

Download snort từ website http://snort.org và giải nén

# tar –xzvf snort-2.8.6.1.tar.gz

#./configure -enable-dynamicplugin --with-mysql

#make

#make install

Tạo thư mực chứa file cấu hình và log cho snort

# mkdir -p /var/log/snort /etc/snort

Di chuyển vào thư mục biên dịch snort và chép file cấu hình vào thư mục

/etc/snort/rules

# cd etc/

# cp * /etc/snort/

Cài đặt snort rules

Download snort rules từ website http://snorg.org

#tar -xzvf snortrules-snapshot-2860.tar.gz

# cp -r rules /etc/snort/

Chỉnh lại file cấu hình snort

#vi /etc/snort/snort.conf

line 25: var HOME_NET 192.168.2.0/24

line 28: var EXTERNAL_NET !$HOME_NET

line 60: var RULE_PATH /etc/snort/rules

line 267: #output log_tcpdump: tcpdump.log

*Nếu muốn snort xuất trực tiếp vào mysql và không cần thông qua barnyard ta cấu

hình như sau:

line 270: output database: log, mysql, user=snort password=toot dbname=snort

host=192.168.3.1 sensor_name=sensor_01

*Nếu dùng barnyard để xuất vào mysql database ta cấu hình như sau:

line 275: output unified2: filename snort.log, limit 128

Chú ý: Không nên dùng cùng lúc snort và barnyard để xuất trực tiếp vào mysql

database. Điều này sẽ làm cho alter bị lặp lại.

Cài đặt Barnyard Download barnyard2-1.8.tar.gz từ website

http://www.securixlive.com/barnyard2/download.php

Tiến hành biên dịch và cài đặt

#apt-get install libmysqlclient15-dev libpcap0.8-dev

#cd barnyard2-1.8

#./configure –with-mysql

#make

#make install

Di chuyển vào thư mục barnyard2-1.8

#cp etc/barnyard2.conf /etc/snort

#mkdir /var/log/barnyard2

Chỉnh sửa lại file cấu hình barnyard

#vi /etc/snort/barnyard2.conf

line 60: config hostname: sensor_01

line 61: config interface: eth0

line 309: output database: alert, mysql, user=snort password=toot

dbname=snort host=192.168.3.1

Tạo file log cho barnyard

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

Khởi động baryard2

#/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf \

-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map \

-d /var/log/snort -f snort.log -w /var/log/snort/barnyard.waldo

Sử dụng oinkmaster cập nhật từ central database server

Cài oinkmaskter

#apt-get install oinkmaster

Chỉnh lại file cấu hình oinkmaster như sau:

#vi /etc/oinkmaster.conf

line 11: #url = http://www.snort.org/dl/rules/snortrules-snapshot-2_2.tar.gz

Tạo thư mục chứa rules và backup rules

#mkdir /etc/snort/rules

#mkdir /etc/snort/backup

Download rules từ trang web http://snort.org giải nén và chép rules vào thư

mục /etc/snort/rules

Lập danh sách rule cần disable khi cập nhật

#cd /etc/

#/usr/share/oinkmaster/makesidex.pl /etc/snort/rules > autodisable.conf

Tạo user cho crontab để cập nhật tự động

#useradd snort

#chown -R snort /etc/snort/rules

#chown -R snort /etc/snort/backup

#chmod 777 /etc/snort

Manually update rules

#su snort

# oinkmaster -o /etc/snort/rules -b /etc/snort/backup -u

scp://root@192.168.3.1:/etc/snort/rules.tar.gz 2>&1

Automatically update rules

#su oinkmaster

#crontab -e

6 0 * * * oinkmaster -o /etc/snort/rules -b /etc/snort/backup -u

scp://root@192.168.3.1:/etc/snort/rules.tar.gz 2>&1

Cấu hình snort và barnyard chạy mặc định

/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf \

-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map \

-d /var/log/snort -f snort.log -w /var/log/snort/barnyard.waldo

7.6 Cài đặt Snort inline

Mô hình mạng

Cấu hình card mạng Load bridge module từ kernel

#modprobe bridge

Cài bridge utility

#apt-get install bridge-utils

auto lo

iface lo inet loopback

# brigde interface

auto br0

iface br0 inet manual

bridge_ports eth0 eth1

bridge_maxwait 0

# The primary network interface

auto eth0

iface eth2 inet static

address 192.168.2.10

netmask 255.255.255.0

Cấu hình để load bridge kernel mỗi khi khởi động

# crontab -e

@reboot root lsmod | grep bridge > /dev/null || /sbin/modprobe bridge;

Cài những gói hỗ trợ cho snort Cập nhật trước khi cài đặt

# apt-get update

Dùng lệnh apt-get install để cài các gói sau đây :

 libpcap0.8-dev libmysqlclient15-dev

 mysql-client-5.1

 mysql-server-5.1

 bison

 flex

 apache2

 php5

 libapache2-mod-php5

 php5-gd

 php5-mysql

 libtool

 libpcre3-dev

 php-pear

 iptables-dev

Cài đặt libnet

Download libnet từ website ftp://ftp.port80.se/gentoo/distfiles/libnet-1.0.2a.tar.gz

và tiến hành biên dịch và cài đặt

# cd Libnet-1.0.2a

# ./configure

# make

# makeinstall

Cài đặt snort từ source code

Download snort từ website http://snort.org và giải nén

# tar –xzvf snort-2.8.6.1.tar.gz

#./configure -enable-dynamicplugin --with-mysql --enable-inline

#make

#make install

Tạo thư mực chứa file cấu hình và log snort

# mkdir -p /var/log/snort /etc/snort

Di chuyển vào thư mục biên dịch snort và chép file cấu hình vào thư mục

/etc/snort/rules

# cd etc/

# cp * /etc/snort/

Cài đặt snort rules

Download snort rules từ website http://snorg.org

#tar -xzvf snortrules-snapshot-2860.tar.gz

# cp -r rules /etc/snort/ ; cp -r so_rules /etc/snort/ ; cp -r preproc_rules /etc/snort/

Chỉnh lại file cấu hình snort

#vi /etc/snort/snort.conf

line 25: var HOME_NET 192.168.2.0/24

line 28: var EXTERNAL_NET !$HOME_NET

line 60: var RULE_PATH /etc/snort/rules

line 61: var SO_RULE_PATH /etc/snort/so_rules

line 62: var PREPROC_RULE_PATH /etc/snort/preproc_rules

line 267: #output log_tcpdump: tcpdump.log

line 275: #output unified2: filename snort.log, limit 128

line 270: output database: log, mysql, user=snort password=toot dbname=snort

host=localhost

Login và cấu hình mysql

#mysql -u root -p

Tạo database, tạo user và cấp quyền cho user

mysql> create database snort;

mysql> grant create, insert, select, delete, update on snort.* to snort@localhost

identified by 'toot';

mysql> exit

Di chuyển vào thư mục nơi chứa template dành cho database và tạo database

#cat create_mysql | mysql -u root -p snort

Kiểm tra lại database và tables

mysql> show databases;

mysql> use snort

mysql> show tables;

Cài adodb và base

Tải base and abobd5 từ trang web http://sourceforge.net. Phiên bản của base

đang sử dụng là 1.4.5 và với adodb là 5.11

Giải nén và chuyển 2 thư mục này đến thư mục /var/www

#mv adodb5 /var/www

#mv base /var/www

#chmod 757 /var/www/base

Chỉnh lại file cấu hình php5 như sau:

#vi /etc/php5/apache2/php.ini

line 68: extension=mysql.so

line 69: extension=gd.so

line 111: error_reporting

line 112: Default Value: E_ALL & ~E_NOTICE

Cài thêm những gói sau đây để hỗ trợ đồ họa cho base

# pear install Image_Canvas-0.3.2

# pear install Image_Color

# pear install Image_Graph-0.8.0

# pear install Numbers_Words-0.16.2

#pear install Mail Mail_mime

Dùng lệnh “pear –list” để liệt kiểm tra lại

Khởi động lại Apache

#/etc/init.d/apache2 restart

Cài đặt BASE

Bước1: điền vào đường dẫn đến thư mực adodb5 /var/www/adodb5

Bước 2: điền vào thông tin về database

Database type = MySQL

Database name = snort

Database Host = localhost

Database username = snort

Database Password = toot

Bước 3:điền vào Admin User Name và Password

Bước 4: bấm vào Create BASE AG.

Sau khi bấm nút Now continue to step 4 thì việc cài đặt hoàn tất.

Cấu hình snort và iptables Tạo file tên là snortd với nội dung như sau :

#!/bin/bash

#

# snort_inline

start(){

# Start daemons.

echo "Starting ip_queue module..."

lsmod | grep ip_queue >/dev/null || /sbin/modprobe ip_queue;

#

echo "Starting iptables rules..."

# iptables traffic sent to the QUEUE:

# accept internal localhost connections

iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptables -A INPUT -s 192.168.2.11 -d 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

# send all the incoming, outgoing and forwarding traffic to the QUEUE

iptables -A INPUT -j QUEUE

iptables -A FORWARD -j QUEUE

iptables -A OUTPUT -j QUEUE

# Start Snort_inline

echo "Starting snort inline...."

/usr/local/bin/snort -c /etc/snort/snort.conf -Q -D -v -l /var/log/snort

# -Q -> process the queued traffic

# -D -> run as a daemon

# -v -> verbose

# -l -> log path

# -c -> config path

}

stop() {

# Stop daemons.

# Stop Snort_Inline

echo "Shutting down snort inline..."

killall snort

# Remove all the iptables rules and

# set the default Netfilter policies to accept

echo "Removing iptables rules..."

iptables -F

# -F -> flush iptables

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

# -P -> default policy

echo "Snort Inline Stopped"

}

restart(){

stop

start

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

*)

echo $"Usage: $0 {start|stop|restart|}"

exit 1

esac

Di chuyển file snortd vào thư mục /etc/init.d/

Sau đó có thể khởi động snort với lệnh sau: /etc/init.d/snortd start

Cấu hình để script snortd chạy khi khởi động

# update-rc.d snortd defaults 95

Kiểm tra sự hoạt động của snort inline Tạo một rule có tên là pingtest.rules và lưu vào thư mục /etc/snort/rules với nội

dung như sau:

drop icmp any any -> 192.168.1.1 any ( msg:”Ping gateway”; sid:778899 )

Khai báo rule này vào file cấu hình snort : include $RULE_PATH/pingtest.rules

Khởi động lại snort: /etc/init.d/snortd restart

Từ Client ping đến gateway 192.168.1.1 và ghi nhận kết quả như sau:

Ghi nhận trên base

Nội dung ghi nhận được

Kết quả trên client

8. Lab Kiểm Tra Hoạt Động Của Snort

8.1 Rule để kiểm tra hoạt động của snort

Sau quá trình cài đặt hoàn tất IDS Snort thì công việc đầu tiên cần làm đó chính là kiểm

tra hoạt động của Snort thông qua một rule thử nghiệm. Ở đây nhóm chúng

tôi tạo một rule trong file local.rules như sau để kiểm tra Snort.

alert tcp any any <> any 80 (msg:“Testing Web Act”;sid:100001;)

Rule này có ý nghĩa yêu cầu Snort báo động khi bắt được gói tin có IP nguồn và IP

đích bất kỳ, port nguồn và port đích có một port bất kỳ và một port là port 80

(http). Sau đó dùng một máy trong mạng để truy cập vào web server thì ta được

kết quả như sau:

Ghi nhận kết quả từ BASE

Như vậy Snort đã phát hiện và báo động đúng theo yêu cầu của chúng tôi đặt ra.

8.2 Rule phát hiện truy cập web

Rule của snort có thể được dùng trong việc quản lý việc truy cập vào những

website có nội dung không lành mạnh và phát hiện truy nhập đến trang web không

được phép

Ở đây nhóm chúng tôi dùng trang web http://tuoitre.vn để thử nghiệm rule như sau:

alert tcp 172.16.1.0/24 any -> any 80 (msg:“Co truy nhap vao web Tuoi Tre”

;content:“.tuoitre.vn”;nocase;http_header;sid:1000002;)

Rule này có ý nghĩa sẽ báo động khi có truy cập web (http) có nội dung

“.tuoitre.vn”. Ở đây dùng “.tuoitre.vn” nhằm đảm bảo tất cả những trang có dạng

*.tuoitre.vn đều sẽ kích hoạt báo động vì tùy chọn content chỉ kích hoạt rule khi nội

dung hoàn toàn trùng khớp. Tùy chọn nocase nhằm đảm bảo dù trong nội dung có

thay đổi cách viết hoa/thường đều được phát hiện (ví dụ: .TuoiTRe.vn).

Và đây là kết quả khi dùng một máy trong mạng truy cập vào trang http://tuoitre.vn

Ghi nhận kết quả từ BASE

Nội dung gói tin mà đã kích hoạt rule

8.3 Phát hiện portscan trong Snort

Dùng Nmap để scan port một máy trong hệ thống

Ta thu được báo động trên Snort như sau:

8.4 Phát hiện DOS với snort

Slowloris là một tool dung cho DDOS, đây là kĩ thuật tương tự như SYN flood mục

đích làm cạn kiệt tài nguyên máy chủ nhưng diễn ra ở lớp HTTP. Attacker gửi yêu

cầu HTTP đến máy chủ, nhưng không gửi toàn bộ yêu cầu, mà chỉ gửi một phần

mục đích để không bị server ngắt kết nối. Với hàng trăm kết nối như vậy, attacker

chỉ tốn rất ít tài nguyên, nhưng đủ để làm treo máy chủ, không thể tiếp nhận các kết nối từ

người dùng hợp lệ.

Dùng tool slowloris với câu lệnh như sau để thực hiện tấn công đến server

# ./slowloris.pl -dns www.local.com -port 80 -timeout 2000 -num 500 –tcpto

Sau khi quan sát qua công cụ base để xem các alert, nhận thấy rằng không có alert

nào được ghi nhận vì trong rule based của snort chưa có rule để nhận dạng

slowloris.

Do đó cần tạo 1 rule để nhận dạng sự tấn công của slowloris như sau:

alert tcp any any -> $HOME_NET 80 \

(msg: "DDOS Possible by Slowloris Tool"; \

flow:to_server,established; \

content:"GET /"; depth:5; \

content:"User-Agent\: Mozilla/4.0 (compatible\; MSIE 7.0\; Windows

NT 5.1\; Trident/4.0"; \

offset:30; depth:90; \

threshold: type threshold, track by_src, count 100, seconds 30; \

classtype: attempted-dos; \

sid:887799;)

Khai báo rule mới trong file snort.conf : include $RULE_PATH/slowloris.rules

Chạy lại tool slowloris lần 2 và ghi nhận alert trên base:

Quan sát gói tin mà snort ghi nhận được như sau:

Ta thấy được rằng snort ghi nhận lại gói tin thông qua dấu hiệu nhận biết bên trong

rule, chủ yếu là trường content của rule.

8.5 Phát hiện ARP attack

Các bước thực hiện ARP Spoofing bằng chương trình Cain & Abel Bước 1: Lựa chọn các máy cần đầu độc ARP

Bước 2: Khởi động việc đầu độc ARP

Gói tin sau đây sẽ được gửi cho máy nạn nhân, theo nội dung gói tin thì sau khi

nhận được máy nạn nhân sẽ ghi nhận vào bảng ARP của mình địa chỉ IP

192.168.1.1 có MAC là 00-0c-29-c8-6a-57 (là địa chỉ MAC của máy tấn công).

Mục tiêu của ARP Spoofing Man in the middle

Người tấn công sẽ gửi gói tin ARP Reply giả mạo bằng địa chỉ MAC của chính

máy mình, đồng thời kích hoạt chức năng chuyển tiếp các gói tin. Như vậy khi các

máy nạn nhân đã bị khống chế bởi kỹ thuật ARP Spoofing thì tất cả các gói tin gửi

cho máy đối tác với địa chỉ IP đúng nhưng MAC đã bị sửa đổi sẽ đi qua máy tấn

công rồi mới chuyển tiếp cho máy đối tác thật sự một các trong suốt (không bị phát

hiện bởi bên gửi và bên nhận). Kết quả của tấn công Man in the middle là hacker sẽ

thu được mọi thông tin nạn nhận trao đổi với đối tác cũng như ngoài internet,

những thông tin nhạy cảm như mật khẩu email, mật khẩu tài khoản ngân hàng …

Cụ thể sau khi thực hiện bước đầu độc ARP như đã nhắc đến ở phần trước thì cũng bằng

chương trình Cain & Abel ta thu nhận được tài khoản và mật khẩu của người

dùng đang đăng nhập vào Yahoo Messenger.

Cấu hình Snort để phát hiện ARP Spoofing

Bật tính năng nhận dạng arp spoofing trong file snort.conf:

preprocessor arpspoof

preprocessor arpspoof_detect_host: 192.168.1.1 00:0d:70:b3:3a:90

Nguyên tắc cơ bản để phát hiện ARP Spoofing chính là so sánh với bảng liên hệ

giữa IP và MAC do người quản trị đặt ra, nếu có gói tin gửi thông tin sai về MAC

của một địa chỉ IP thì sẽ kích hoạt báo động.

Khởi động lại snort và tiến hành poison 2 máy 192.168.4.20 và 192.168.4.40 bằng

công cụ cain

Dùng cain để đầu độc arp 2 máy

Trên máy 192.168.4.20 ta ghi nhận sự thay đổi của bảng arp bằng lệnh ip nei show

Bằng công cụ BASE ghi nhận alert từ snort:

Snort dùng preprocessor để phát hiện arp spoofing nên sẽ không có thông tin về

source và destination. arpspoof preprocessor chỉ alert không MAC address không

đúng với IP address được ánh xạ trong file cấu hình.

Kết Luận

Sau 14 tuần nghiên cứu Đề tài “Xây dựng hệ thống IDS – Snort trên hệ điều hành

Linux”, nhóm chúng tôi đã nghiên cứu và tìm hiểu được nguyên lý hoạt động của các

thành phần trong snort cũng như toàn bộ hệ thống snort, cách thức snort vận hành và

đưa ra cảnh báo về hành động xâm nhập diễn ra trong mạng. Đề tài đưa ra giải pháp

trong việc triển khai IDS sensor trong mạng, sự khác nhau về đặc điểm cũng như công

dụng giữa HIDS và NIDS, các thức snort output log và alert cũng như cách cấu

hìnhsnort từ đó người dùng snort có thể xây dựngmột hệ thống snort – IDS cơ bản từ

single snort sensor cho đến multiple snort sensor trên hệ điều hành Ubuntu. Bên cạnh

đó, ngoài việc sử dụng rule được viết bởi nhà phát triển, đề tài của chúng tôi tìm hiểu

về rule trong snort và cách xây dựng một rule trong snort. Qua đó người dùng snort có thể

xây dựng rule phù hợp với nhu cầu của hệ thống mạng hiện tại.

Tuy nhiên trong quá trình nghiên cứu đề tài chúng tôi gặp khó khăn trong việc triển

khai hệ thống snort - IDS do thiếu switch và network tap. Ngoài ra việc thiếu kiến

thức trong lập trình và linux nên chúng tôi mất khá nhiều thời gian tìm hiểu, nghiên

cứu và giải quyết vấn đề. Do thời gian nghiên cứu hạn chế chúng thôi không có thời

gian nghiên cứu đi sâu tập trung vào tìm ra nguyên nhân các lỗi và sự cố

Nếu có điều kiện được mở rộng đề tài cũng như điều kiện về thiết bị nghiên cứu chúng

tôi sẽ tập trung vào nghiên cứu và tìm hiểu cách khắc phục các sự cố trong snort,

điều chỉnh snort ở mức độ cao hơn để tương thích với yêu cầu bảo mật của từng

hệ thống mạng.

Tài Liệu Tham Khảo

[1] Rafeeq Ur Rehman, (2003) Advanced IDS Techniques Using Snort, Apache,

MySQL, PHP, and ACID, Prentice Hall PTR, USA, 275 pages

[2] Stuart McClure, Joel Scambray and George Kurtz, (2009) Hacking Exposed 6:

Network Security Secret & Solutions, Mc Graw Hill, USA, 720 pages

[3] Kerry J. Cox and Christopher Gerg, (2004) Managing Security with Snort and

IDS Tools, O'Reilly, USA, 288 pages

[4] Jay Beale and Snort Team, (2007) Snort Intrusion Detection and Prevention

Toolkit, Syngress Publishing, Syngress Publishing, 769 pages

[5] Charlie Scott,Paul Wolfe, and Bert Hayes, (2004) Snort For Dummies, Wiley

Publishing, Indiana, 385 pages

[6] Jon Erickson, (2008) Hacking: The Art of Exploitation 2nd Edition, No Starch,

480 pages

[7] Snort Forum Site, http://forums.snort.org

[8] Network Security Articles for Window Server 2003, 2008 & Vista,

http://www.windowsecurity.com

IBM ISS Customer Support Migration to IBM Tivoli Software [9] Support,

http://documents.iss.com

[10] HVAOnline, http://www.hvaonline.net

[11] Forum Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ,

http://nhatnghe.com/forum

[12] Forum Vietnamese Professionals (Trung Tâm VnPro), http://vnpro.org/forum