IDS làm gì khi phát hiện ra một xâm nhập?

Một phần của tài liệu Kết hợp firewall và hệ thống phát hiện xâm nhập (IDS) để bảo vệ hệ thống mạng của doanh nghiệp trên nền tảng hệ điều hành linux (Trang 71 - 114)

3.1.8.1 Phản ứng thụ động (Passive Response)

Phản ứng thụ động chính là các hành động phản ứng lại “bình thường” của một hệ thống IDS khi nó phát hiện ra một tấn công. Các hành động phản ứng này có thể là ghi lại tấn công vào nhật ký hoặc gửi các cảnh báo tới nhà quản trị mạng. Những cảnh báo có thể ở nhiều dạng khác nhau như: sử dụng SNMP (Simple Network Managemant Protocol), gửi thư điện tử, gửi một thông báo tới người quản trị hoặc là tự động gọi điện thoại tới nhà quản trị. Như vậy, phản ứng thụ động của một hệ thống IDS là hành động gửi các cảnh báo tới nhà quản trị mạng, căn cứ vào đó người quản trị mạng sẽ phải đưa ra các quyết định với những kiểu tấn công cụ thể. Bản thân IDS tự nó không đưa ra các phản ứng cụ thể cho một kiểu tấn công nào.

3.1.8.2 Phản ứng chủ động (Active Response)

Các hệ thống IDS với khả năng phản ứng chủ động thì cũng có các hành động của phản ứng thụ động, tuy nhiên khi nó phát hiện ra một tấn công, thì chính IDS có thể được cấu hình để tạo ra các hành động phản ứng chủ động khác (ví dụ như loại bỏ gói tin, block lại truyền thông TCP nào đó...) hơn là

chỉ đưa ra các cảnh báo tới nhà quản trị mạng và đợi nhà quản trị mạng đưa ra các hành động cụ thể. Như vậy thiết bị IDS với khả năng phản ứng chủ động phải được đặt trong luồng truyền thông – inline (giữa mạng của bạn và Internet), nó có thể loại bỏ các dữ liệu mà nó cho là chứa một tấn công hoặc kết thúc một phiên TCP…

3.2 Cấu hình và cài đặt hệ thống phát hiện xâm nhập với Snort IDS Software Software

3.2.1 Giới thiệu về Snort

Snort được phát triển năm 1998 bởi Sourcefire và CTO Martin Roesch, là 1 phần mềm miễn phí mã nguồn mở có khả năng phát hiện phòng chống xâm nhập trái phép vào hệ thống mạng có khả năng phân tích thời gian thực lưu lượng mạng, và ghi log gói tin trên nền mạng IP.

Ban đầu được gọi là công nghệ phát hiện và phòng chống xâm nhập hạng nhẹ, Snort đã dần phát triển và trở thành tiêu chuẩn trong việc phát hiện và phòng chống xâm nhập. Với hơn 3,7 triệu lượt tải về và hơn 250.000 người dùng đăng ký, Snort trở thành công nghệ phát hiện và phòng chống xâm nhập được sử dụng rộng rãi nhất hiện nay.

Snort là một phần mềm cài đặt hệ thông phát hiện xâm nhập mạng (NIDS). Nó cài đặt cả 2 kiểu phát hiện xâm nhập là: Phát hiện xâm nhập mạng dựa trên mẫu (pattern) và phát hiện xâm nhập mạng bất bình thường.

Snort bao gồm một hoặc nhiều sensor và một server CSDL chính.Các Sensor có thể được đặt trước hoặc sau firewall:

o Giám sát các cuộc tấn công vào firewall và hệ thống mạng

3.2.1.1 Sơ đồi khối của một hệ thống IDS sử dụng Snort

Hệ thống IDS chung được xây dựng sử dụng Snort bao gồm các thành phần: MySQL, Apache, ACID, PHP ... như hình 3.5:

Snort sensor thực hiện bắt các gói tin của kẻ xâm nhập, phân tích và lưu kết quả vào có sở dữ

liệu MySQL Kẻ xâm nhập đang thực hiện

tấn công vào các máy bên trong mạng Người quản trị đang tìm kiếm các xâm nhập thông qua trình duyệt Web Apache Web Server

Cơ sở dữ liệu MySQL

Hình 3.5: Sơ đồ khối của hệ thống dùng Snort

Dữ liệu được bắt và được phân tích bởi Snort. Sau đó, Snort sẽ lưu dữ liệu này ở trong một cơ sở dữ liệu MySQL. Web Server là Apache sử dụng các gói, thư viện như ACID, PHP, GD, PHPLOT để hiển thị dữ liệu trong trình duyệt web khi một người dùng kết nối và truy nhập tới Apache. Người dùng có thể tạo các truy vấn khác nhau trong trình duyệt để phân tích, lưu trữ, xoá dữ liệu …

3.2.1.2 Các module thành phần bên trong Snort

Snort được chia thành nhiều các module thành phần. Những module này làm việc cùng nhau để phát hiện các tấn công cụ thể và sinh ra các cảnh báo theo khuôn dạng mà hệ thống yêu cầu. Snort gồm các module sau:

 Packet Decoder

 Preprocessor

 Detection Engine

 Logging and Alerting System

 Output Modules.

Hình 3.6 minh hoạ các module thành phần bên trong Snort.

3.2.1.2.1 Packet Decoder (Bộ phận giải mã gói)

Các gói tin nhận được từ các giao diện mạng khác nhau được đưa vào moude Packet Decoder, module này thực hiện các công việc chuẩn bị, tiền xử lý gói tin trước khi gói tin đi vào module Preprocessors.

3.2.1.2.2 Preprocessors (Bộ phận xử lý trước)

Đây là module thành phần được sử dụng để sắp xếp hoặc thay đổi dữ liệu trong gói tin trước khi module phát hiện xâm nhập (detection engine) thực hiện các thao tác tìm kiếm trên gói tin để tìm ra các xâm nhập trái phép. Ngoài ra Preprocessors còn thực hiện phát hiện các dị thường trong phần đầu của gói tin IP và sinh ra các cảnh báo. Preprocessors là một module thành phần rất quan trọng cho bất kỳ một hệ thống IDS nào nhằm mục đích chuẩn bị gói dữ liệu để phân tích với các nguyên tắc trong module phát hiện xâm nhập.

Các kẻ phá hoại (hacker) thường sử dụng các kỹ thuật khác nhau nhằm đánh lừa một hệ thống IDS. Cho ví dụ, nếu người quản trị IDS tạo ra các nguyên tắc để tìm kiếm một mẫu dấu hiệu xâm nhập “script/iisadmin” trong gói tin HTTP. Nếu IDS tìm kiếm một mẫu chính xác như vậy, thì rất có thể IDS sẽ bị các hacker đánh lừa bằng cách thay đổi một chút về mẫu này và như vậy IDS sẽ không thể phát hiện ra các tấn công kiểu đó, ví dụ có thể thay đổi thành mẫu như sau:

 “script/./iisadmin”

 “script/example/iisadmin”

 “script\iisadmin”

 “script.\iisadmin”

Module Preprocessor sẽ tổ chức lại mẫu dấu hiệu xâm nhập cho phù hợp nhằm mục đích không bị các hacker đánh lừa theo kiểu như vậy. Ngoài ra,

Preprocessor còn được sử dụng cho mục đích tập hợp các gói tin bị phân mảnh (packet defragmention). Khi một lượng dữ liệu lớn được truyền trên mạng, thì gói tin đó thường bị phân ra thành nhiều gói tin nhỏ để phù hợp với MTU (Maximum Transfer Unit) của giao diện truyền thông. Bên phía nhận sẽ phải tập hợp lại các gói tin bị phân mảnh để khôi phục lại gói tin ban đầu. Trên IDS, trước khi ta có thể áp dụng bất kỳ một nguyên tắc nào để tìm kiếm một dấu hiệu tấn công, thì hệ thống cũng phải tập hợp lại các gói tin bị phân mảnh. Cho ví dụ, một nửa của một dấu hiệu có thể nằm ở gói tin phân mảnh đầu tiên, trong khi một nửa khác lại nằm ở trong gói tin phân mảnh thứ 2, như vậy để phát hiện ra đúng một mẫu dấu hiệu xâm nhập thì ta phải kết hợp 2 gói tin này với nhau. Các hacker thường sử dụng kỹ thuật phân mảnh gói tin để đánh lừa hệ thống IDS.

Preprocessor được sử dụng để chống lại những tấn công kiểu như trên. Trong Snort, Preprocessor có thể làm những công việc như: tập hợp các gói tin bị phân mảnh (defragment packets), sắp xếp lại gói tin HTTP URI, tập hợp lại các luồng TCP ... Những chức năng này thì khá quan trong trong một hệ thống IDS.

3.2.1.2.3 Detection Engine (Bộ phận phát hiện)

Detection Engine là một phần rất quan trọng trong hệ thống IDS. Nó có nhiệm vụ là tìm kiếm bất kỳ một hành động xâm nhập nào tồn tại trong gói tin. Detection Engine sử dụng các nguyên tắc (rule) của Snort cho nhiệm vụ này. Các nguyên tắc thường được nạp vào trong các cấu trúc dữ liệu, ở đó chúng có thể được so sánh với tất cả gói tin. Nếu một gói tin mà phù hợp với bất kỳ một nguyên tắc nào, thì một hành động tương ứng sẽ diễn ra (ví dụ như ghi nhật ký hoặc sinh ra cảnh báo); trái lại gói tin bị huỷ bỏ.

Chú ý rằng, hệ thống IDS có thể cắt gói tin ra từng phần khác nhau và áp dụng các nguyên tắc đến từng phần khác nhau của gói tin. Các phần quan trọng trong gói tin là:

 IP header.

 Transport layer header. Phần này bao gồm TCP header, UDP header hoặc các phần header các tầng giao vận khác.

 Phần header của tầng ứng dụng.

 Nội dung của gói tin (payload).

3.2.1.2.4 Module ghi nhật ký và cảnh báo (Logging and Alert System) System)

Dựa vào kết quả của Detection Engine tìm kiếm bên trong một gói tin, module này sẽ sinh ra nhật ký hoặc sinh ra các cảnh báo nếu phát hiện thấy một hành động xâm nhập.

3.2.1.2.5 Các module Output

Đây là module tuỳ chọn (Plug-in) trong Snort, nó có nhiệm vụ là xử lý các cảnh báo và nhật ký của Snort, và đưa ra ở dạng dữ liệu phù hợp theo yêu cầu của người dùng

3.2.1.3 Các chế độ hoạt động của Snort

Snort có 3 chế độ hoạt động cơ bản:

o Sniffer (snort -v).

o Packet logger (snort -l).

o Network Intrusion Detection System (snort -A hoặc snort –c <path_to_conf_file>).

a. Snort là một Sniffer

Các công cụ sniffer mạng như tcpdump, ethereal, và Tethereal có đầy đủ các đặc tính và phân tích gói tin một cách xuất sắc nó theo dõi lượng mạng trên bộ cảm biến Snort. Trong trường hợp này, sử dụng Snort như là một sniffer là khả thi. Kết quả xuất của chế độ Snort sniffer hơi khác so với các sniffer khác. Nó rất dễ để đọc và có thể thấy thích khả năng bắt giữ gói tin nhanh của nó. Một đặc tính hay của chế độ này là việc tóm tắt lưu lượng mạng khi kết thúc việc bắt giữ gói tin.

Bật chế độ sniffer cho snort bằng cờ -v:

Để xem dữ liệu ứng dụng, sử dụng cờ -d:

Để xem được chi tiết các header lớp liên kết dữ liệu, sử dụng cờ -e:

Để lưu lại trong logfile thay vì xuất ra console, sử dụng:

Tóm lại, đây là các tùy chọn có thể sử dụng với chế độ sniffer của Snort. Những tùy chọn này có thể chạy độc lập hoặc kết hợp với cái khác

#snort –vde > ttooip.log #snort ­vde

#snort –vd #snort ­v

b. Snort là một Packet logger

Bước tiếp theo sau khi sniffing các gói tin là ghi log chúng. Việc ghi log chỉ đơn giản bằng cách thêm tùy chọn –l, theo sau đó là thư mục muốn lưu trữ các log. Thư mục mặc định trong Snort là /var/log/snort.

Trong ví dụ sau đây, thư mục log được thiết lập là /usr/local/log/snort, và các logfile bao gồm các payload gói tin:

Để ghi log các gói tin theo kiểu nhị phân, sử dụng –b:

Để đọc lại các file vừa tạo ra bằng khóa –r:

c. Snort là một NIDS

Khi được sử dụng như là một NIDS, Snort cung cấp khả năng phát hiện xâm nhập gần như là thời gian thực. Trong chế độ cảnh báo, Snort cần một file cấu hình. Vị trí mặc định của file này là /etc/snort.conf. Nếu đặt ở một vị trí khác, phải sử dụng khóa –c kèm với vị trí đặt file. Các cảnh báo được đặt trong file alert trong thư mục log (mặc định là (/var/log/snort). Snort sẽ thoát ra với với một lỗi nếu file cấu hình hoặc thư mục log không tồn tại.

#snort ­r /usr/local/log/snort/ttooip.log #snort ­b –l /usr/local/log/snort/ttooip.log #snort –l /usr/local/log/snort ­d

3.2.2 Cài đặt Snort

3.2.2.1 Cài đặt một số công cụ phát triển

Thực hiện lệnh sau: Download các gói phần mềm hỗ trợ: Base 1.4.5 ADOdb 4991 Barnyard2 1.7 #wget http://www.securixlive.com/download/barnyard2/barnyard2­ 1.7.tar.gz #wget http://downloads.sourceforge.net/project/adodb/adodb­php \ ­4­and­5/adodb­4991­for­php/adodb4991.tgz?use_mirror=voxel #wget http://downloads.sourceforge.net/project/secureideas/ \ BASE/base­1.4.5/base­1.4.5.tar.gz?use_mirror=voxel #mkdir ~/snortfiles #cd ~/snortfiles

#sudo apt­get install libpcap0.8­dev

#sudo apt­get install libmysqlclient15­dev #sudo apt­get install bison

#sudo apt­get install flex #sudo apt­get install apache2 #sudo apt­get install php5

#sudo apt­get install libapache2­mod­php5 #sudo apt­get install php5­gd

#sudo apt­get install php5­mysql #sudo apt­get install libtool #sudo apt­get install libpcre3­dev #sudo apt­get install php­pear #sudo apt­get install mysql­server

3.2.2.2 Cài đặt Snort

Cài đặt Snort với MySQL

Cài đặt tự động từ dòng lệnh:

Khai báo dãy địa chỉ của mạng cục bộ:

Hình 3.7: Khai báo dãy địa chỉ mạng cục bộ Sử dụng Snort với MySQL

Tạo sơ sở dữ liệu:

Thực hiện theo các bước sau:

Bước 1: Đăng nhập vào cơ sở dữ liệu với người dùng “root” để thực hiện: Tạo cơ sở dữ liệu có tên là snort, Gán quyền cho người dùng tên là #sudo apt­get install mysql­server

“snort”, thiết lập mật khẩu đăng nhập cơ sở dữ liệu cho người dùng tên

“snort” là “123456. Thực hiện các lệnh sau (lệnh được in đậm):

[hoaibao3@ubuntu ~]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 39

Server version: 5.1.41­3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database snort;

Query OK, 1 row affected (0.00 sec)

mysql> use snort

Database changed

mysql> status

­­­­­­­­­­­­­­

mysql Ver 14.14 Distrib 5.1.41, for debian­linux­gnu (i486) using readline 6.1

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.1.41­3ubuntu12.10 (Ubuntu)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: latin1

Client characterset: latin1

UNIX socket: /var/run/mysqld/mysqld.sock

Uptime: 5 min 55 sec

Threads: 1 Questions: 346 Slow queries: 0 Opens: 263 Flush tables: 1 Open tables: 23 Queries per second avg: 0.974

­­­­­­­­­­­­­­

mysql> grant CREATE, INSERT, DELETE, UPDATE, SELECT on snort.* to snort@localhost;

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

Bước 2: Tạo cơ sở dữ liệu mới. Thực hiện các lệnh dưới đây (lệnh được

in đậm):

[hoaibao3@ubuntu ~]# cd /usr/share/doc/snort-mysql/

Import the snort DB schema

# zcat create_mysql.gz | mysql -u root -p snort

Bước 3: Đăng nhập cơ sở dữ liệu snort với tư cách là người dùng “snort”

để kiểm tra các bảng được tạo. Thực hiện các lệnh sau:

# mysql -u snort –p

Enter password:

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with –A

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 39

Server version: 5.1.41­3ubuntu12.10 (Ubuntu)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

| Tables_in_snort | +­­ata | | detail | | encoding | | event | | icmphdr | | iphdr | | opt | | reference | | reference_system | | schema | | sensor | | sig_class | | sig_reference | | signature | | tcphdr | | udphdr | +­­­­ws in set (0.01 sec)

mysql> describe iphdr;

+­­­­­­­­­­+­­nt(10) unsigned | NO | PRI | NULL | |

| cid | int(10) unsigned | NO | PRI | NULL | |

| ip_src | int(10) unsigned | NO | MUL | NULL | |

| ip_dst | int(10) unsigned | NO | MUL | NULL | |

| ip_ver | tinyint(3) unsigned | YES | | NULL | |

| ip_hlen | tinyint(3) unsigned | YES | | NULL | |

| ip_tos | tinyint(3) unsigned | YES | | NULL | |

| ip_len | smallint(5) unsigned | YES | | NULL | |

| ip_id | smallint(5) unsigned | YES | | NULL | |

| ip_flags | tinyint(3) unsigned | YES | | NULL | |

| ip_off | smallint(5) unsigned | YES | | NULL | |

| ip_ttl | tinyint(3) unsigned | YES | | NULL | |

| ip_proto | tinyint(3) unsigned | NO | | NULL | |

| ip_csum | smallint(5) unsigned | YES | | NULL | |

+­­­­­­­­­­+­­­­­­­­­sec)

mysql> select * from reference_system;

Empty set (0.00 sec)

mysql> exit;

Sửa file cấu hình snort.conf

Sửa ở các dòng sau:

var HOME_NET 192.168.1.0/24 # Thiết lập địa chỉ của mạng trong

var EXTERNAL_NET !$HOME_NET

var RULE_PATH /etc/snort/rules # Đường dẫn tới các nguyên tắc #mà Snort sẽ tìm kiếm

include $RULE_PATH/test.rules # Sử dụng các nguyên tắc trong #tệp test.rules

#Output log_tcpdump: tcpdump.log

output unified2: filename snort.log, limit 128

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

3.2.2.3 Cài đặtBASE and ABOdb

Chuyển đến thư mục ~/snortfiles để tiến hành cài đặt

Sửa cấu hình các file sau:

# nano /etc/php5/apache2/php.ini #sudo cd

#sudo cd snortfiles

#sudo tar ­zxvf adodb4991.tgz #sudo tar ­zxvf base­1.4.5.tar.gz #sudo mv adodb /var/www

#sudo mv base­1.4.5 /var/www #sudo pear install ­­alldeps Mail #sudo pear install ­­alldeps Mail_Mime

#sudo pear install ­­alldeps Image_Canvas­0.3.2 #sudo pear install ­­alldeps Image_Graph­0.7.2

Tìm “Dynamic Extensions” và thêm vào các dòng sau:

extension=mysql.so extension=gd.so

Tìm “error_reporting = E_ALL & ~E_DEPRECATED” và thay bằng:

Một phần của tài liệu Kết hợp firewall và hệ thống phát hiện xâm nhập (IDS) để bảo vệ hệ thống mạng của doanh nghiệp trên nền tảng hệ điều hành linux (Trang 71 - 114)

Tải bản đầy đủ (PDF)

(114 trang)