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

triển khai hệ thống ids snort trên hệ điều hành linux

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

BỘ GIÁO DỤC VÀ ĐÀO TẠO
LÊ ĐỨC HIỆP

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

LÊ ĐỨC HIỆP

TRIỂN KHAI HỆ THÔNG IDS - SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

TRIỂN KHAI HỆ THỐNG IDS - SNORT TRÊN HỆ
ĐIỀU HÀNH LINUX

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

HƯNG YÊN - 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

LÊ ĐỨC HIỆP

TRIỂN KHAI HỆ THỐNG IDS - SNORT TRÊN HỆ
ĐIỀU HÀNH LINUX
NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

NGƯỜI HƯỚNG DẪN
VŨ XUÂN THẮNG



HƯNG YÊN - 2016


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
MỤC LỤC
DANH SÁCH HÌNH VẼ ............................................................................................5
DANH SÁCH TỪ VIẾT TẮT ....................................................................................6
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ..................................................................7
1.1 Lý do chọn đề tài ..............................................................................................7
1.2 Mục tiêu của đề tài ...........................................................................................8
1.3 Giới hạn và phạm vi của đề tài .........................................................................9
1.4 Nội dung thực hiện ...........................................................................................9
1.5 Phương án tiếp cận. ..........................................................................................9
CHƯƠNG 2: TÌM HIỂU VỀ IDS – SNORT TRÊN HĐH LINUX .......................10
2.1 Phần mềm IDS – Snort. ..................................................................................15
2.1.1 Giới thiệu về Snort. ..................................................................................15
2.1.2 Các trạng thái ...........................................................................................16
2.2 Các thành phần của Snort ...............................................................................17
2.2.1 Bộ packet sniffer ......................................................................................18
2.2.2 Bộ Preprocessor .......................................................................................18
2.2.3 Bộ phát hiện (detection engine) ...............................................................18
2.2.4 Hệ thống ghi và cảnh báo (Logging và alerting) .....................................20
2.2.5 Cấu trúc của một luật ...............................................................................21
CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG PHÁT HIỆN XÂM NHẬP SNORT
TRÊN CENTOS ........................................................................................................23
3.1 Mô tả thực nghiệm .........................................................................................23
3.2 Hạ tầng mạng thực nghiệm ............................................................................25
3.3 Các bước cài đặt Snort trên hệ điều hành CentOS .........................................25
3.3.1 Cài hệ điều hành CentOS .........................................................................25

3.3.2 Cài đặt và cấu hình Snort .........................................................................25
3.3.3 Cấu hình MySQL server ..........................................................................28
3.3.4 Cấu hình để Snort thực hiện alert vào MySQL .......................................28
3.3.5 Cài đặt và cấu hình Basic Analysis and Sercurity Engine .......................29
3.4 Giao diện hệ thống sau cài đặt .......................................................................30
3


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
3.4.1 Các thông tin cấu hình cơ bản .................................................................30
3.4.2 Hướng dẫn sử dụng Snort ........................................................................31
3.4.3 Kết quả thống kê thực nghiệm IDS Snort ................................................31
3.5 Các cuộc tấn công và kết quả thống kê thực nghiệm ...................................35
3.5.1 Tấn công và IDS Snort phát hiện.............................................................35
3.5.2 Ngăn chặn ................................................................................................36
3.5.3 Kết quả thống kê thực nghiệm .................................................................37
CHƯƠNG 4: KẾT LUẬN ......................................................................................39
4.1 Kết quả đạt được. ...........................................................................................39
4.2 Hạn chế của đề tài. .........................................................................................39
4.3 Hướng phát triển của đề tài ............................................................................40
TÀI LIỆU THAM KHẢO ......................................................................................41

4


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

DANH MỤC HÌNH VẼ
Hình 2-1: Mô hình kiến trúc hệ thống phát hiện xâm nhập (IDS)............................11
Hình 2-2: Mô hình Network IDS ..............................................................................12

Hình 2-3: Mô hình Host IDS ....................................................................................13
Hình 2-4: Quá trình xử lý gói....................................................................................17
Hình 2-5: Bộ phát hiện xâm nhập .............................................................................19
Hình 2-6: Hệ thống ghi nhập file log và phát cảnh báo ..........................................20
Hình 3-1: Snort đang hoạt động................................................................................30
Hình 3-2: Giao diện chính của Base .........................................................................32
Hình 3-3: Snort phát hiện Nmap đang scanport, truy cập ssh ..................................32
Hình 3-4: Hiển thị các địa chỉ nghi vấn ....................................................................33
Hình 3-5: Xem nội dung một packet ........................................................................33
Hình 3-6: Thống kê theo ngày, giờ ..........................................................................34
Hình 3-7: Thống kê theo ngày .................................................................................35
Hình 3-8: IDS Snort phát hiện các gói tin được gửi vào hệ thống ...........................36
Hình 3-9: Mô hình thực nghiệm ...............................................................................38

5


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

DANH MỤC TỪ VIẾT TẮT
Viết tắt
DdoS

Tiếng Anh
Distributed Denial of
Service

Tiếng Việt
Tấn công từ chối dịch vụ


DNS

Domain Name System

Hệ thống tên miền

DoS

Denial-of-service

Tấn công từ chối dịch vụ

FTP

File Transfer Protocol

Giao thức truyền dữ liệu

HIDS

Host Intrusion Detection
System

hệ thống phát hiện xâm phạm
được cài đặt trên các máy tính
(host)

Internet Control Message

Giao thức xử lý các thông báo


Protocol

trạng thái cho IP

Intrusion Detection System

Hệ thống phát hiện xâm nhập

IP

Internet Protocol

Giao thức Internet

IPS

Intrusion Prention System

Hệ thống phát hiện xâm nhập

ICMP
IDS

MAC

NIDS

OSI


SNMP
SMTP

TCP
UTM

Media Access Control

Network Intrusion
Detection System
Open Systems
Interconnection

Định danh được gán cho thiết
bị mạng
Sử dụng dữ liệu trên toàn bộ
lưu thông mạng, để phát hiện
xâm nhập.
Mô Hình Mạng OS

Simple Network

Giao thức giám sát và điều

Management Protocol

khiển thiết bị mạng

Simple Mail Transfer


Giao thức truyền tải thư tín đơn

Protoco

giản

Transport Control Protocol

Giao thức điều khiển truyền tải

Unified Threat

Quản lý thống nhất các mối

Management

nguy hiểm
6


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1

Lý do chọn đề tài
Ngày nay, trên thế giới công nghệ thông tin phát triển rất nhanh, mang lại

những lợi ích thiết thực về nhiều mặt như: kinh tế, xã hội, chính trị, y tế, quân sự…
những cuộc họp trong tổ chức, cơ quan, công ty hay những buổi hội thảo xuyên

quốc gia, xuyên lục địa (Video Conference).
Mạng Internet ngày càng đóng vai trò quan trọng trong các hoạt động của con
người. Với lượng thông tin ngày càng phong phú và đa dạng. Không chỉ có ý nghĩa
là nơi tra cứu tin tức sự kiện đang diễn ra trong đời sống hàng ngày, Internet còn
đóng vai trò cầu nối liên kết con người với nhau ở mọi vùng địa lý. Các khoảng
cách về địa lý hầu như không còn ý nghĩa, khi con người ở cách nhau nửa vòng trái
đất họ vẫn có thể trao đổi thông tin, chia sẻ dữ liệu cho nhau như những người trong
cùng một văn phòng.
Internet còn góp phần làm thay đổi phương thức hoạt động kinh doanh của các
doanh nghiệp. Ngoài các hoạt động kinh doanh truyền thống, giờ đây các doanh
nghiệp có thêm một phương thức kinh doanh hiệu quả, đó là thương mại điện tử.
Trong những năm gần đây, thương mại điện tử đã trở thành một bộ phận quan trọng
trong sự tăng trưởng, phát triển của xã hội, mang lại những lợi ích rất lớn cho các
doanh nghiệp, đồng thời thúc đẩy xã hội hóa thông tin cho các ngành nghề khác,
góp phần mang lại tính hiệu quả cho nền kinh tế của doanh nghiệp nói riêng và cho
toàn xã hội nói chung.
Ði đôi với sự phát triển này thì bảo mật mạng đang là một nhu cầu cấp thiết
nhằm bảo vệ hệ thống mạng bên trong, chống lại những tấn công xâm nhập và thực
hiện các trao đổi thông tin, giao dịch qua mạng được an toàn. Về những giá trị lợi
ích của công nghệ thông tin mang lại, những kẻ xấu cũng lợi dụng công nghệ này
gây ra không ít những khó khăn cho tổ chức, cơ quan cũng như những người áp
dụng công nghệ thông tin vào cuộc sống.
Công nghệ nào cũng có ưu điểm và nhược điểm. Người tấn công (Attacker)
chúng lợi dụng những lỗ hổng của hệ thống để truy xuất bất hợp phát vào khai thác
những thông tin quan trọng, những dữ liệu có tính chất bảo mật, nhạy cảm, thông
7


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
tin mật của quốc phòng… Vì vậy chúng ta cần phải có biện pháp, phương pháp để

phát hiện sự truy nhập trái phép đó. Để phát hiện sự truy nhập trái phép đó, hiện nay
công nghệ phát hiện chống xâm nhập hiệu quả được nhiều tổ chức, cơ quan, doanh
nghiệp triển khai và áp dụng vào trong hệ thống mạng của ḿnh là công nghệ Snort
IDS.
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ừ đó chúng ta 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 em với mục tiêu là xây đựng một hệ thống IDS Snort trên hệ điều
hành CentOS, 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 IDS Snort đồ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 CentOS. 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 để 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 em đưa một cái nhìn tổng quan về hệ
thống IDS Snort từ đó có thể ứng dụng trong mô hình mạng thực tế.
Mục tiêu của đề tài

1.2
-

Nghiên cứu, tìm hiểu khái niệm, cách hoạt động của IDS Snort

-


Cài đặt, cấu hình thử nghiệm Snort trên hệ điều điều hành CentOs 6.7

-

Kiểm chứng kết quả đạt được sau khi cài đặt thành công và thử nghiệm các
tập Rules mở rộng khả năng phát hiện

8


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
Giới hạn và phạm vi của đề tài

1.3
-

Thực hiện trên HĐH Centos

-

Hạn chế về thời gian và tài chính nên chưa thực hiện xây dựng được hệ
thống mạng thật

-

Việc hoàn thiện các module gắn thêm cho hệ thống IDS là chưa có

-


Cách phối hợp giữa Firewall Iptables và IDS Snort chưa được chặt chẽ

- Chưa tự động gửi cảnh báo đến người quản trị thông qua email và SMS.
1.4

Triển khai trên hệ thống mạng LAN.
Nội dung thực hiện

- Tìm hiểu về IDS - Snort
- Triển khai hệ thống IDS - Snort trên CentOS
- Báo cáo lý thuyết quá trình tìm hiểu.
- CD chứa video cài đặt và cấu hình chương trình
1.5

Phương án tiếp cận
- Tìm hiểu hệ thống phát hiện xâm nhập IDS
- Tìm hiểu chi tiết về IDS – Snort trên hệ điều hành Linux
- Xem các mô hình tấn công mạng
- Khảo sát qua mạng.

9


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

CHƯƠNG 2: TÌM HIỂU VỀ IDS – SNORT TRÊN HĐH LINUX
2.1

Phát hiện xâm nhập là gì?
Phát hiện xâm nhập là một tập những công nghệ và phương thức dùng để phát


hiện hành động khả nghi trên cả host và mạng. Hệ thống phát hiện xâm nhập (IDS)
có 2 loại cơ bản sau: IDS signature-based (IDS dựa trên dấu hiệu) và IDS anomalybased (IDS dựa trên sự bất thường). Intruder có những dấu hiệu, giống như virus
máy tính - có thể được phát hiện bằng cách sử dụng phẩn mềm quét virus. có thể cố
gắng tìm những gói dữ liệu có chứa những dấu hiệu liên quan đến xâm nhập đã biết
hay những điều bất thường liên quan đến giao thức. Dựa trên những tập signature và
rules, hệ thống phát hiện có thể tìm và ghi những hành động xâm nhập và phát ra
cảnh báo. Sự phát hiện xâm nhập dựa trên sự bất thường thường phụ thuộc vào tính
bất thường của tiêu đề (header) giao thức trong gói dữ liệu. Trong nhiều trường hợp,
phương pháp này có thể đem lại kết quả tốt hơn đối với IDS signature-based. Thông
thường một IDS capture dữ liệu từ mạng và áp dụng những rule của nó vào dữ liệu
này hoặc phát hiện những anomaly trong nó.
Snort là một IDS rule-base (IDS dựa trên tập luật) chính, tuy nhiên những
input plug-in giúp phát hiện những anomaly trong tiêu đề giao thức. ‘Snort sử dụng
những rule lưu trong những text file, nó có thể xem được bằng một trình soạn thảo
văn bản. Những rule được nhóm theo từng loại. Những rule đi cùng với mỗi loại
được lưu trữ trong những file riêng. Những file này sau đó được tập hợp trong một
file cấu hình chính, gọi là snort.conf. Snort đọc những rule này mỗi lần chạy và xây
dựng các cấu trúc dữ liệu bên trong nó hoặc áp dụng những rule đó để capture dữ
liệu. Việc tìm những signature và sử dụng chúng trong rule là một công việc đòi hỏi
phải tinh tế, khi dùng nhiều rule, sẽ có nhiều công việc xử lý hơn được yêu cầu để
capture dữ liệu trong thời gian thực. Snort cho phép định nghĩa lại rule cho việc
phát hiện xâm nhập và rất “linh hoạt” cho ta thêm vào rule riêng của mình.

10


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
2.2


Một số định nghĩa cơ bản
IDS
Intrusion Detection System (hệ thống phát hiện xâm nhập) hay IDS là phần

mềm, phần cứng hoặc kết hợp cả hai, dùng để phát hiện hành động của kẻ xâm
nhập. Snort là một IDS mã nguồn mở sẵn có trên mạng. Một IDS có nhiều khả năng
khác nhau tùy thuộc vào độ phức tạp của các thành phần trong nó. Nhiều công ty đã
ứng dụng IDS kết hợp phần cứng và phần mềm. Nói cách khác, một IDS có thể sử
dụng những công nghệ dựa trên các dấu dấu hiệu hoặcsự bất thường hoặc cả hai.

Hình 2-1: Mô hình kiến trúc hệ thống phát hiện xâm nhập (IDS)

11


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

Network IDS hay NIDS
NIDS là một IDS capture dữ liệu trong quá trình truyền dữ liệu trên mạng
(cáp, wireless) và gắn chúng vào một cơ sở dữ liệu của những signature. Phụ thuộc
vào nơi mà một gói bi phát hiện với một tín hiệu xâm nhập, lúc đó một cảnh báo sẽ
được phát sinh hoặc gói đó sẽ được ghi vào trong một file hay cơ sở dữ liệu. Một
chuyên gia sử dụng Snort như là một NIDS.

Hình 2-2: Mô hình Network IDS

12


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX


Host IDS hay HIDS
Những hệ thống HIDS được cài đặt như là những agent (tác nhân) trên một
host. Những hệ thống này có thể nhìn vào trong những log file ứng dụng để phát
hiện ra hành vi kẻ xâm nhập. Một vài loại là reactive, có nghĩa nó chúng chỉ báo
cho ta biết khi mà mọi việc đã xảy ra. Cũng có một số là proactive (đoán trước),
chúng quét lưu lượng mạng tại những HIDS đã được cài đặt và phát cảnh báo ngay
cho ta.

Hình 2-3: Mô hình Host IDS

Signatures (dấu hiệu)
Khi chúng ta nhìn vào trong gói dữ liệu, ta rút ra được một mẫu (lấy mẫu dữ
liệu), mẫu đó gọi là signature. Một signature dùng để phát hiện một hoặc nhiều loại
tấn công. Cho ví dụ, chuỗi “script/iisad-min” trong gói dữ liệu đi vào web server có
thể nói cho ta biết đó là một hành vi xâm nhập.
Signatures có thể trình bày nhiều thành phần khác nhau trong một gói dữ liệu
phụ thuộc vào cách tấn công tự nhiên. Cho ví dụ, ban có thể tìm signature trong IP
13


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
header, transport layer header (TCP, UDP) và/hoặc application layer header hay
payload. Thường thì IDS phụ thuộc vào signature để tìm những hành vi xâm nhập.
Một vài sản phẩm IDS cần phải cập nhật từ nhà cung cấp những signature mới khi
có một loại tấn công nào đó ra đời. Trong IDS khác, như Snort, có thể cập nhật
signature của riêng mình.
Alerts (cảnh báo)
Alerts là những loại thông báo người dùng của một hành vi xâm nhập. Khi
một IDS phát hiện ra một intruder, nó sẽ báo cho người quản trị bảo mật bằng cách

dùng những cảnh báo này. Alerts có thể là một dạng cửa sổ pop-up, dạng console,
gửi một e-mail, v.v… Alerts cũng có thể được lưu trong những log file hay cơ sở dữ
liệu, nơi mà chúng có thể xem lại về sau.
Snort có thể phát ra Alerts trong nhiều hình thức và được điều khiển bởi
những output plug-ins. Snort cũng có thể gửi cùng một alert đến nhiều điểm đích.
Cho ví dụ, nó có thể ghi Alerts vào trong cơ sở dữ liệu và phát ra SNMP trap cùng
một lúc. Một vài plug-ins cũng có thể thay đổi cấu hình firewall nhằm ngăn những
host xâm phạm vào firewall hay router.
Logs
Thông điệp log thường được lưu trong một file. Mặc định, Snort lưu những
thông điệp này dưới thư mục /var/log/snort. Tuy hiên, vị trí của nó có thể thay đổi
bằng cách sử dụng lệnh khi khởi động Snort. Thông điệp log có thể lưu ở dạng text
(văn bản) hay binary (nhị phân). Những file binary có thể xem sau này bằng Snort
hay chương trình tcpdump. Một công cụ mới gọi là Barnyard cũng có thể phân tích
những log file nhị phân. Ghi ở dạng nhị phân thì nhanh hơn bởi vì nó lưu theo mức
cao. Ghi theo dạng nhị phân rất hữu dụng trong trường hợp khi thực thi Snort đòi
hỏi tốc độ cao.
False Alarms (cảnh báo lỗi):
False alarm là loại cảnh báo phát ra biểu thi một dấu hiệu mà không có hành vi
xâm nhập nào. Cho ví dụ, những host bên trong mạng do cấu hình sai có thể những
thông điệp broadcast khớp với một rule nào đó, kết quả là nó phát ra một cảnh báo
14


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
sai. Ở một vài router như Linksys, nó sinh ra nhiều cảnh báo “lost of UpnP
realated”. Để tránh những lỗi trên, phải thay đổi điều chỉnh những rule mặc định
khác. Trong vài trường hợp, cần phải disable một vài rule để tránh False alarm.

2.3


Phần mềm IDS – Snort
Giới thiệu về Snort
Snort là một phần mềm phát hiện xâm nhập mã nguồn mở hoạt động dựa trên

các dấu hiệu cho phép giám sát, phát hiện những dấu hiện tấn công mạng. Snort
được nhiều tổ chức, doanh nghiệp phát triển và biến thành sản phẩm thương mại
như Sourcefire, Astaro, …
Snort chủ yếu là một IDS dựa trên luật, tuy nhiên các input plug-in cũng tồn
tại để phát hiện sự bất thường trong các header của giao thức. Snort sử dụng các luật
được lưu trữ trong các file text, có thể được chỉnh sửa bởi người quản trị. Các luật
được nhóm thành các kiểu. Các luật thuộc về mỗi loại được lưu trong các file khác
nhau. File cấu hình chính của Snort là snort.conf. Snort đọc những luật này vào lúc
khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các luật để bắt giữ dữ liệu. Tìm ra
các dấu hiệu và sử dụng chúng trong các luật là một vấn đề đòi hỏi sự tinh tế, vì
chúng ta càng sử dụng nhiều luật thì năng lực xử lý càng được đòi hỏi để thu thập
dữ liệu trong thực tế. Snort có một tập hợp các luật được định nghĩa trước để phát
hiện các hành động xâm nhập. Các luật trên Snort có tính mở, cho phép người quản
trị mạng tạo ra các luật mới và chúng ta có thể thêm vào các luật của chính mình.
Chúng ta cũng có thể xóa một vài luật đã được tạo trước để tránh việc báo động sai.
Các đặc điểm chính của Snort:
- Hỗ trợ nhiều platform: Linux, OpenBSD, FreeBSD, Solaris, Windows, …
- 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, CGI-attack, dò tìm hệ điều hành, ICMP, virus, …
- Phát hiện nhanh các xâm nhập theo thời gian thực.
- 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.
- Giúp người quản trị tự đặt ra các dấu hiệu xâm nhập mới một cách dễ dàng.
15



TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
- Là phần mềm mã nguồn mở (Open Source) và không tốn kém chi phí đầu tư.

Các trạng thái
Snort có thể được cấu hình để chạy ở ba trạng thái:
+ Sniffer Mode: Là chế độ bắt gói tin và chỉ hiển thị header của các gói
TCP/IP ra màn hình. Cấu trúc lệnh như sau:
snort -v: Lệnh này chỉ chạy snort và hiển thị IP/TCP/UDP/ICMP header.
snort -vd: Lệnh này vừa hiển thị các header vừa cho thấy các gói dữ liệu.
snort -vde: Tương tự như trên nhưng trình bày rõ ràng hơn. Thể hiện cả header
của lớp Datalink.
+ Packet Logger Mode: Trong trường hợp muốn ghi nhận lại các gói đã bắt
được và nơi lưu trữ để tiện cho việc theo dõi về sau thì chế độ packet logger sẽ hỗ
trợ tốt cho quản trị mạng. Chế độ này chỉ định nơi lưu trữ và khi sử dụng cú pháp
sau, snort sẽ tự động lưu lại thông tin vào thư mục đó:
snort -vde -l /usr/local/log/snort
Log được lưu ở dạng nhị phân, làm tăng đốc độ khả năng bắt gói tin của Snort.
Hầu hết các hệ thống có thể bắt gói và ghi thành file log ở tốc độ 100Mbps mà
không xảy ra vấn đề gì.
Để ghi nhận file log ở chế độ nhị phân sử dụng cờ -b
snort -b –l /usr/local/log/snort/temp.log
Khi đã bắt được gói, chúng ta có thể đọc lại file vừa tạo với cờ -r và phần hiển
thị giống như ở mode sniffer.
snort -r /usr/local/log/snort/temp.log
+ NIDS Mode: Snort phát hiện xâm nhập chủ yếu dựa vào một bộ luật mà
người quản trị mạng định nghĩa trong file snort.cfg. Hầu hết các hành vi xâm nhập
đều có một vài dấu hiệu. Thông tin về các dấu hiệu này được sử dụng để tạo ra các
luật của Snort. Các dấu hiệu có thể tồn tại trong header của các gói tin. Các luật của
Snort có thể kiểm tra nhiều phần của gói tin để phát hiện ra các dấu hiệu này.

Để mở chế độ này, sử dụng cú pháp:
snort -dve -l /usr/local/log -h 192.168.0. 0/24 -c snort.cfg

16


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
Nếu admin sử dụng Snort với chế độ này trong thời gian lâu thì nên loại bỏ -v,
-e ra khỏi câu lệnh. Vì quá trình ghi dữ liệu ra màn hình sẽ làm chậm tốc độ hoạt
động của hệ thống, đôi khi gây mất gói tin trong khi Snort đang ghi nhận. Việc lưu
lại các header của lớp Datalink cũng không cần thiết, nên có thể loại bỏ ra khỏi
dòng lệnh.
Lệnh cấu hình cho Snort chạy ở hình thái cơ bản của chế độ NIDS.
snort -d -l /usr/local/log -h 192.168.0.0/24 -c snort.cfg

2.4

Các thành phần của Snort
Snort được xây dựng với mục đích thoả mãn các tính năng cơ bản sau: Có

hiệu năng cao, đơn giản và có tính uyển chuyển cao.
Các thành phần chính của Snort gồm có:
 Bộ bắt gói (Packet sniffer)
 Bộ tiền xử lý (Preprocessor)
 Bộ phát hiện (Detection engine)
 Hệ thống L ogging và alerting.
C á c thành phần này dựa trên cơ sở của thư viện Libpcap, là thư viện cung
cấp khả năng lắng nghe và lọc packet trên mạng.

Hình 2-4: Quá trình xử lý gói


17


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
Bộ packet sniffer
Bộ Packet Sniffer: Bộ bắt gói là một thiết bị (phần cứng hay phần mềm) được
đặt vào trong hệ thống, làm nhiệm vụ bắt lưu lượng ra vào trong mạng. Bộ bắt gói
cho phép một ứng dụng hay một thiết bị có khả năng nghe lén toàn bộ dữ liệu đi
trong hệ thống mạng.
Bộ Preprocessor
Bộ Preprocessor: Sau khi bắt được toàn bộ các gói tin, lúc này các gói tin sẽ
được chuyển đến bộ tiền xử lý để kiểm tra các gói tin có hợp lệ không. Bộ tiền xử lý
sẽ so sánh các gói tin này với các plug -in (ví dự như RPC Plug -in, HTTP plug-in,
port scanning plug -in, v.v…). Các gói tin sẽ được kiểm tra hành vi xem có khớp
với các hành vi được nêu trong plug -in hay chưa, nếu đã khớp rồi, các gói tin này
sẽ được chuyển đến bộ phận phát hiện xâm nhập.
Bộ tiền xử lý là một thành phần rất hữu dụng trong Snort. Vì đây là một plugin có thể mở hoặc tắt tùy ý nên giúp ích rất nhiều trong việc tùy chỉnh tài nguyên hệ
thống hay tùy chỉnh mức báo động. Ví dụ khi quản trị mạng nhận được thông báo
port scan quá nhiều lần trong khi làm việc, họ có thể tắt plug-in này đi trong khi các
plug-in khác vẫn hoạt động bình thường.
Bộ phát hiện (detection engine)
Sau khi các gói tin đi qua bộ tiền xử lý, chúng được chuyển đến bộ phận phát
hiện xâm nhập. Nếu một gói tin giống với bất kỳ luật nào, chúng sẽ được gửi đến bộ
xử lý cảnh báo.
Bộ phận phát hiện xâm nhập và các bộ luật chiếm một phần rất lớn trong số
những kiến thức phải biết để hiểu được Snort. Snort có những cú pháp lệnh riêng để
sử dụng với các bộ luật. Các cú pháp này có thể liên quan đến giao thức mạng, nội
dung, chiều dài, phần header và rất nhiều những thành phần khác, bao gồm cả
những đặc điểm để nhận dạng buffer overflow.

Snort dùng các rules để phát hiện ra các xâm nhập trên mạng. Xem rules
sau:
alert tcp !192.168.0.0/24 any -> any any (flags: SF; msg: “SYN-FIN
Scan”;)

18


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
Một rules có hai thành phần: Header và Option
Header: alert tcp !192.168.0.0/24 any -> any any
Option: (flags: SF; msg: “SYN-FIN Scan”;)

Hình 2-5: Bộ phát hiện xâm nhập
Mỗi dấu hiệu xâm nhập sẽ được thể hiện bằng một rule. Vậy Snort quản lý
tập các rules như thế nào? Snort dùng cấu trúc dữ liệu để quản lý các rules gọi
là Chain Headers và Chain Options. Cấu trúc dữ liệu này bao gồm một dãy các
Header và mỗi Header sẽ liên kết đến dãy các Option. Sở dĩ dựa trên các Header là
vì đây là thành phần ít thay đổi của những rules được viết cho cùng một kiểu phát
hiện xâm nhập và Option là thành phần dễ được sửa đổi nhất.
Ví dụ: chúng ta có 60 rules được viết cho kiểu thăm dò CGI-BIN, thực chất
các rules này có chung IP source, IP đích, port source, port đích, nghĩa là có chung
Header. Mỗi packet sẽ được so trùng lần lượt trong các dãy cho đến khi tìm thấy
mẫu đầu tiên thì hành động tương ứng sẽ được thực hiện.

19


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX


Hệ thống ghi và cảnh báo (Logging và alerting)
Dùng để thông báo cho quản trị mạng và ghi nhận lại các hành động xâm
nhập hệ thống. Hiện tại có 3 dạng logging và 5 kiểu alerting.
Các dạng logging, được chọn khi chạy Snort:
- Dạng decoded: Đây là dạng log thô nhất, cho phép thực hiện nhanh.
- Dạng nhị phân tcpdump: theo dạng tương tự như tcpdump và ghi vào đĩa
nhanh chóng, thích hợp với những hệ thống đòi hỏi performance cao.
- Dạng cây thư mục IP: Sắp sếp hệ thống log theo cấu trúc cây thư mục IP,
dễ hiểu đối với người dùng.

Hình 2-6: Hệ thống ghi nhập file log và phát cảnh báo
Các dạng alerting:
- Ghi alert vào syslog
- Ghi alert vào trong file text
- Gửi thông điệp Winpopup dùng chương trình smbclient
- Full alert: Ghi lại thông điệp alert cùng với nội dung gói dữ liệu
- Fast alert: Chỉ ghi nhận lại header của gói dữ liệu. Cách này thường dùng
trong các hệ thống cần performance cao.
20


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
Cấu trúc của một luật
Tập luật của Snort đơn giản để ta hiểu và viết, nhưng cũng đủ mạnh để có
thể phát hiện tất cả các hành động xâm nhập trên mạng. Có ba hành động chính
được Snort thực hiện khi so trùng một packet với các mẫu trong rules:
- Pass: Loại bỏ packet mà Snort bắt được
- Log: Tuỳ theo dạng logging được chọn mà packet sẽ được ghi nhận theo
dạng đó.
- Alert: Sinh ra một alert tùy theo dạng alert được chọn và log toàn bộ

packet dùng dạng logging đã chọn.
Dạng cơ bản nhất của một rule bao gồm protocol, chiều của gói dữ liệu và
port cần quan tâm, không cần đến phần Option:
log tcp any any -> 192.168.0. 0/24 80

Rule này sẽ log tất cả các gói dữ liệu đi vào mạng 192.168.0.0/24 ở port 80.
Một rule khác có chứa Option:
alert tcp any any -> 192.168.0.0/24 80 (content:"/cgi-bin/phf";
msg: "PHF probe!";)

Rule này sẽ phát hiện các truy cập vào dịch vụ PHF trên web server và alert
sẽ được tạo ra cùng với việc ghi nhận lại toàn bộ gói dữ liệu.
Vùng địa chỉ IP trong các rules được viết dưới dạng CIDR block netmask,
các port có thể được xác định riêng lẻ hoặc theo vùng, port bắt đầu và port kết
thúc được ngăn cách bởi dấu “:”
alert

tcp

any

any

->

192.168.

0.

0/24


6000:6010

(msg:

"X

traffic";)

Các option phổ biến của Snort:
1. content: Search the packet payload for the a specified pattern.
2. flags: Test the TCP flags for specified settings.
3. ttl: Check the IP header's time-to-live (TTL) field.
4. itype: Match on the ICMP type field.
5. icode: Match on the ICMP code field.
6. minfrag: Set the threshold value for IP fragment size.
21


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
7. ack: Look for a specific TCP header acknowledgement number.
8. seq: Log for a specific TCP header sequence number.
9. logto: Log packets matching the rule to the specified filename.
10. dsize: Match on the size of the packet payload.
11. offset: Modifier for the content option, sets the offset into the packet
payload to begin the content search.
12. depth: Modifier for the content option, sets the number of bytes from
the start position to search through.
13. msg: Sets the message to be sent when a packet generates an event.


22


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG SNORT TRÊN CENTOS
3.1

Mô tả thực nghiệm
- Trên 90% các mạng được kết nối đang sử dụng IDS để phát hiện lỗ hổng bảo

mật máy tính.
- Viện an ninh máy tính đã báo cáo có đến 80% thiệt hại tài chính vượt qua
455 triệu đôla bị gây ra bởi sự xâm nhập và mã nguy hiểm.
- Hàng triệu công việc bị ảnh hưởng do sự xâm nhập.
- Nếu sử dụng một phần mềm chống virus thì bạn phải xem xét đến việc bổ
sung thêm một IDS cho chiến lược bảo mật của mình. Hầu hết các tổ chức sử dụng
phần mềm chống virus không sử dụng IDS.
- Ngày nay do công nghệ ngày càng phát triển nên không có một giải pháp bảo
mật nào có thể tồn tại lâu dài. Theo đánh giá của các tổ chức hàng đầu về công nghệ
thông tin trên thế giới, tình hình an ninh mạng vẫn trên đà bất ổn và tiếp tục được
coi là năm “báo động đỏ” của an ninh mạng toàn cầu khi có nhiều lỗ hổng an ninh
nghiêm trọng được phát hiện, hình thức tấn công thay đổi và có nhiều cuộc tấn công
của giới tội phạm công nghệ cao vào các hệ thống công nghệ thông tin của các
doanh nghiệp.
- Lấy ví dụ với hệ điều hành Vista có thể bị tấn công bởi một lỗ hổng "blue
screen of death" hay vẫn thường được gọi là màn hình xanh chết chóc. Hacker có
thể gửi tới hệ thống một yêu cầu chứa các mã lệnh tấn công trực tiếp vào hệ thống
của Vista và làm ngưng lại mọi hoạt động.
- Hệ thống phát hiện xâm nhập trái phép IDS là một phương pháp bảo mật có

khả năng chống lại các kiểu tấn công mới, các vụ lạm dụng, dùng sai xuất phát từ
trong hệ thống và có thể hoạt động tốt với các phương pháp bảo mật truyền thống.
Nó đã được nghiên cứu, phát triển và ứng dụng từ lâu trên thế giới và đã thể hiện
vai trò quan trọng trong các chính sách bảo mật.
Ngày nay, nhu cầu trao đối dữ liệu qua hệ thống mạng máy tính trở thành vô
cùng quan trọng trong mọi hoạt động của xã hội. Vấn đề bảo đảm an ninh, an toàn
cho thông tin trên mạng ngày càng là mối quan tâm hàng đầu của các công ty, các tố
chức, các nhà cung cấp dịch vụ. Cùng với thời gian, các kỹ thuật tấn công ngày
23


TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX
càng tinh vi hơn khiến các hệ thống an ninh mạng trờ nên mất hiệu quả. Các hệ
thống an ninh mạng truyền thống thuần túy dựa trên các tường lửa nhằm kiểm soát
luồng thông tin ra vào hệ thống mạng một cách cứng nhắc dựa trên các luật bào vệ
cố định. Với kiểu phòng thủ này, các hệ thống an ninh sẽ bất lực trước kỹ thuật tấn
công mới, đặc biệt là các cuộc tấn công nhằm vào điếm yếu của hệ thống. Vì vậy
cần phải có một hệ thống nhằm giám sát luồng thông tin vào ra trên mạng và bảo vệ
các hệ thống mạng khói sự tẩn công từ Internet. Kiểm soát tài nguyên và hoạt động
của hệ thống mạng, sử dụng thông tin thu thập được từ những nguồn này, thông báo
cho những người có trách nhiệm khi nó xác định được khả năng có sự xâm nhập.
Hơn nữa tường lửa chỉ làm việc với những gói tin khi chúng đi vào và đi ra
khỏi mạng. Một khi kẻ xâm nhập đã vượt qua được tường lửa, người đó có thể tung
hoành trên mạng. Đó là lý do tại sao hệ thống phát hiện xâm nhập có vai trò quan
trọng. Hệ thổng phát hiện xâm nhập IDS là hệ thống phần mềm hay phần cứng tự
động thực hiện quy trình giám sát các sự kiện diễn ra trong hệ thống máy tính hay
mạng máy tính, phân tích đượcc phát hiện ra những vấn đồ an ninh cho hệ thống

24



TRIỂN KHAI HỆ IDS – SNORT TRÊN HỆ ĐIỀU HÀNH LINUX

3.2

Hạ tầng mạng thực nghiệm
Hạ tầng thực nghiệm sẽ xây dụng hệ thống Firewall và IDS trên máy CentOS,

có hai card mạng, một card mạng có địa chỉ là 192.168.0.38 nối với mạng ngoài
internet và card còn lại có địa chỉ 192.168.211.130 để kết nối với mạng bên trong
gồm web server, ftp server có địa chỉ là 192.168.211.131, gateway
192.168.211.130. Để mô phỏng, chúng ta tạo các kết nối nhưng ssh, ping, http, ftp
từ ngoài hoặc từ trong vào máy Firewall và IDS, trong cùng thời điểm đó chúng ta
dùng hệ thống Firewall và IDS theo dõi sự phát hiện xâm nhập vào hệ thống.
Firewall có thể ngăn chặn được các lưu lượng mạng c ̣n IDS có thể kiểm soát được
tất cả lưu lượng bên trong lẫn bên ngoài. Lưu lượng độc hại khi đi vào hệ thống sẽ
được IDS phát hiện báo cho nhà quản trị mạng biết để kịp thời ngăn chặn sự xâm
nhập trái phép đó bằng hệ thống firewall Trong mô hình này để đơn giản chúng ta
chỉ khảo sát tấn công từ ngoài vào hệ thống Firewall và IDS. Khi có sự tấn công vào
hệ thống IDS sẽ gửi cảnh báo đến nhà quản trị thống qua công cụ phân tích Base
(Basic Analysis and Sercurity Engine)
Mô hình thực nghiệm này được thiết kế ở mức đơn giản, dễ hiểu để người đọc
dễ hiểu và dễ hình dung hơn.
3.3

Các bước cài đặt Snort trên hệ điều hành CentOS
Cài hệ điều hành CentOS
- Tên hệ điều hành: Linux CentOS 6.7
- Kernel: 2.6.18-92.el5
- Tài khoản

+ User : root
+ Pass : 123456
Cài đặt và cấu hình Snort
Cài đặt các gói phụ thuộc: Yêu cầu máy phải kết nối với internet

# yum install gcc gcc-c++ kernel-devel patch make libxml2 pcredevel php php-common php-gd php-cli php-mysql flex binson libcap
libcap-devel mysql mysql-devel mysql-bench mysql-server –y

25


×