Chương IV: Hệ thống phát hiện xâm nhập IV.1 Giới thiệu

Một phần của tài liệu Giả Lập Mạng Với Honeypots potx (Trang 30 - 40)

IV.1 Giới thiệu

Intrusion Detection là thiết bị bảo mật vô cùng quan trọng. Intrusion Detection Systems (IDS) là giải pháp bảo mật được bổ sung cho Firewalls (hình dưới đây thể hiện điều đó). Một IDS có khả năng phát hiện ra các đoạn mã độc hại hoạt động trong hệ thống mạng và có khả năng vượt qua được Firewall.

Có hai dạng chính của IDS đó là:Network BasedvàHost Based

Hình 4.1:Network BasedvàHost Based

Network Based

Một Network-Based IDS sẽ kiểm tra các giao tiếp trên mạng với thời gian thực (real-time). Nó kiểm tra các giao tiếp, quét header của các gói tin, và có thể kiểm tra nội dung của các gói đó để phát hiện ra các đoạn mã nguy hiểm hay các dạng tấn công khác nhau. Một Network-Based IDS hoạt động tin cậy trong việc kiểm tra, phát hiện các dạng tấn công trên mạng, ví dụ như dựa vào băng thông (bandwidth-based) của tấn công Denied of Service (DoS).

Host Based

Một Host-Based IDS chỉ làm nhiệm vụ giám sát và ghi lại log cho một máy chủ (host-system). Đây là dạng IDS với giới hạn chỉ giám sát và ghi lại toàn bộ những khả năng của host-system (nó bao gồm cả hệ điều hành và các ứng dụng cũng như toàn bộ service của máy chủ đó). Host-Based IDS có khả năng phát hiện các vấn đề nếu các thông tin về máy chủ đó được giám sát và ghi lại. Là thiết bị bảo mật cho phát hiện các tấn công trực tiếp tới một máy chủ.

Active Detection and Passive Detection

IDS là một hệ thống tự động giám sát trong thời gian thực (Network-Based IDS) hay xem sét lại các thiết lập giám sát (audit log) nhằm phát hiện ra các lỗi bảo mật và các tấn công trực tiếp tới hệ thống mạng hay tới một máy chủ. Có hai phương thức cơ bản để IDS phát hiện ra các tấn công hay các nguy cơ bảo mật là: Signature Detection và Anomaly Detection. Signature Detection sẽ so sánh các tình huống thực tế với các dạng tấn công (signatures) được lưu trữ trong dữ liệu của IDS. Anomaly Detection sẽ hoạt động tùy thuộc vào môi trường và có thể phát hiện ra những biến cố bất thường. Anomaly-detection dựa vào những hoạt động bình thường của hệ thống để tự động phát hiện ra những điều không bình thường và phân tích xem đó là dạng tấn công nào.

Một IDS active detection: phát hiện và trả lời được thiết kế để có hành động nhanh nhất nhằm giảm thiểu các nguy hiểm có thể xảy ra với hệ thống. Việc trả lời có thể như tắt máy chủ hay tắt các dịch vụ, ngắt các kết nối.

Một IDS với passive detection sẽ trả lời nhưng không có các hành động trực tiếp chống lại các tấn công. Nó có thể ghi lại log của toàn bộ hệ thống và cảnh báo cho người quản trị hệ thống. IDS là thiết bị phát hiện tấn công DoS rất tốt; phát hiện các bugs (lỗi hệ thống), flaws (lỗ hổng, khiếm khuyết) hoặc các tính năng ẩn, và quét ports. Nhưng nó không có khả năng phát hiện các tấn công dựa trên các email chứa các đoạn mã nguy hiểm.

Các thành phần của IDS hoạt động để giám sát mạng.

Hình 4.2: Các thành phần của IDS hoạt động để giám sát mạng

Hình dưới đây IDS yêu cầu Firewall chặn port 80 trong 60 giây để chống lại các tấn công vào máy chủ Web cài IIS.

Hình 4.3: IDS yêu cầu Firewall chặn port 80

Có hai yêu cầu chính khi triển khai một IDS đó là chi phí cùng với khả năng đáp ứng linh họat của nó trước sự phát triển nhanh chóng của công nghệ thông tin và SNORT có thể đáp ứng rất tốt cả hai yêu cầu này. Đó là một phần mềm mà có thể tải về và sử dụng miễn phí, cho nên yếu tố về chi phí hoàn toàn có thể yên tâm. Ngoài ra SNORT còn là một sản phẩm mã nguồn mở và có một cộng đồng phát triển đông đảo được quản lí chặt chẽ cho nên khi có những dạng xâm nhập mới được phát hiện thì ngay lập tức được các nhà phát triển cảnh báo và cập nhật Snort Rules một cách nhanh chóng và các doanh nghiệp có thể thay đổi mã nguồn cho phù hợp với yêu cầu của mình. Vì vậy SNORT là phần mềm IDS mạnh mẽ và được yêu thích nhất hiện nay trên thế giới trong vấn đề phát hiện xâm nhập.

Snort có 4 chếđộ hoạt dộng khác nhau đó là:

Sniffer mode: đọc các gói tin trên mạng sau đó sẽ trình bày kết quả trên giao diện hiển

thị, ở chế độ này snort sẽ lắng nghe.

Packet Logger mode : lưu trữ các gói tin trong các tập tin log.

Network instruction detect system (NIDS) : đây là chế độ họat động mạnh mẽ và được áp

dụng nhiều nhất, khi họat động ở NIDS mode Snort sẽ phân tích các gói tin luân chuyển trên mạng và so sánh với các thông tin được định nghĩa của người dùng để từ đó có những hành động tương ứng như thông báo cho quản trị mạng khi xảy ra tình huống quét lỗi do các hacker/attacker tiến hành hay cảnh báo virus..

Inline mode: khi triển khai snort trên linux thì có thể cấu hình snort để phân tích các gói

tin từ iptables (trong iptables chia ra thành các bảng (tables); trong mỗi bảng sẽ chia ra thành nhiều chuỗi (chains) để xử lý packet tùy theo tình huống (hướng đi của packets); trong mỗi chain sẽ có các luật (rules) mà mình sẽ cấu hình để xử lý các packets tương ứng với mỗi chain) thay vì libpcap do đó iptable có thể drop hoặc pass các gói tin theo snort rule.

IV.2 Cài đặt Snort trên Windowns

IV.2.1. Cài đặt Snort

Có thể đặt Snort trước hoặc sau một hệ thống firewall tùy yêu cầu bảo mật của tổ chức. Và nếu hệ thống mạng có nhiều phân đọan mạng thì mỗi subnet (lớp mạng con) phải có một máy chủ Snort được cài đặt, không như các sản phẩm thương mại khác ngoài tính năng chi phí bản quyền cao thì thường đòi hỏi cấu hình phần cứng mạng, với Snort thì có thể cài đặt và cấu hình trên x386 computer, tuy nhiên cần có đĩa cứng có đủ không gian trống để lưu trữ các packet được bắt giữ, và với công nghệ lưu trữ hiện nay thì điều nầy không phải là một vấn đề.

Snort hoạt động như một network sniffer lắng nghe và lưu giữ các packet trên mạng sau đó so sánh các nội dung hoặc header của chúng với một tập các qui tắc đã được định nghĩa gọi là các Snort rule và khi một sự trùng khớp giữa rule và các packet thì những hành động của rule sẽ được tiến hành tùy theo định nghĩa. Một điểm thuận lợi là các rule này luôn được cập nhật nhanh chóng bởi cộng đồng phát triển cho nên khả năng đáp ứng của Snort trước các dạng tấn công hiện đại rất cao.

Snort sử dụng ba thành phần sau để tiến hành công việc của mình:

Packet decoder : phân tích gói tin, kể cả IP Header và Data Payload Detect engineer : dò tìm các dấu hiệu khả nghi theo tập hợp các quy tắc. Logging và alert system : lưu giữ và cảnh báo.

Ba thành phần này dùng libcap để lưu giữ gói tin khi cài Snort trên hệ điều hành linux. Còn nếu cài trên hệ thống windows thì phải thay libcap bằng winpcap.

Tải winpcap từ www.iltiloi.com và Snort www.snort.org và chọn bản cài trên Windows. Sau đó click vào tập tin chương trình Snort_Installer.exe để bắt đầu tiến trình cài đặt. Trên màn hình Installation Options có các cơ chế lưu trữ log file theo cơ sở dữ liệu SQL hay Oracle, trong phần này chỉ lưu trữ log nên sẽ chọn tùy chọn đầu tiên là “I do

not plan to log to a database, or I am planing to log to one of the databse listed above”

Sau khi đã cài đặt Snort tiếp theo cần phải thiết lập các tham số quan trọng như

HOME_NET PATH_RULE để sử dụng Snort và thực hiện các công việc tiếp theo. Đây là bước mà thường làm cho quá trình cài đặt và sử dụng Snort bị lỗi do khai báo sai. File C:\Snort\etc\snort.conf là file chứa nhiều cài đặt và một phiên bản mới có thể thay đổi dễ gây ra nhầm lẫn. File snort.conf điều khiển mọi thứ về việc Snort sẽ giám sát cái gì, chúng tự bảo vệ như thế nào, các luật gì chúng sử dụng để tìm thấy lưu lượng nguy hiểm, và thậm chí là cách chúng giám sát các lưu lượng nguy hiểm tiềm tàng mà không được định nghĩa bằng các dấu hiệu như thế nào.

File này được tổ chức thành nhiều phần và chứa nhiều các lời chú thích và hướng dẫn để sử dụng một vài tùy chọn có thể đối với các mục cấu hình khác nhau):

·Các biến cấu hình.

·Cấu hình bộ giải mã và bộ phận phát hiện của Snort. ·Cấu hình tiền xử lí.

·Cấu hình xuất thông tin. ·Các file kèm theo.

Các biến cấu hình

Phần đầu của file dành cho việc ghi lại một vài thông tin cấu hình. Hầu hết các biến được sử dụng bởi các luật Snort để xác định chức năng của một vài hiển thị và vị trí của các phần khác. Các biến vạch ra cách bố trí môi trường mà Snort có thể quyết định sự kiện nào sẽ tạo ra cảnh báo. Các biến tìm kiếm cả địa chỉ IP và cổng TCP mà một dịch vụ đang lắng nghe.

Theo mặc định, các biến được khai báo với giá trị bất kì. Nó đúng với bất kì địa chỉ IP nào. Khi giá trị này được sử dụng, nó có thể tạo ra một số lượng lớn các cảnh báo nhầm. Để xác định một địa chỉ đơn, chỉ cần đánh vào địa chỉ IP đó:

var HOME_NET 10.0.0.100

Cũng có thể xác định nhiều địa chỉ, các nhóm địa chỉ nằm trong dấu ngoặc vuông và các địa chỉ cách nhau bởi dấu phẩy (không có khoảng trắng):

var HOME_NET [10.10.0.52,192.168.1.23,172.16.30.52]

Cũng có thể xác định một không gian địa chỉ bằng cách xác định số các bit trong subnet mask.

var HOME_NET 10.0.0.0/24

Có thể kết hợp các kiểu ghi địa chỉ như sau :

var HOME_NET [192.168.33.12,172.16.0.0/16,10.0.0.51,10.0.0.0/24]

Có thể sử dụng kí tự “!” để phủ định. Lưu ý rằng khi thiết lập các biến thì chỉ sử dụng tên biến. Khi thật sự sử dụng biến thì phải đặt kí tự “$” trước tên biến. Ví dụ sau đây sẽ thiết lập biến EXTERNAL_NET là tất cả các địa chỉ không nằm trong biến HOME_NET:

var EXTERNAL_NET !$HOME_NET

Một vài biến cần gán cho số cổng, không phải là địa chỉ IP. Gán 1 cổng đơn, 1 dãy các cổng liên tục hoặc là phủ định của 1 cổng. Ví dụ:

var ORACLE_PORTS 1521

var ORACLE_PORTS 8000:8080 (các cổng từ 8000 đến 8080) var ORACLE_PORTS :8080 (các cổng lớn hơn 8080)

var SHELLCODE_PORTS !80 (không phải cổng 80)

Các biến mặc định trong file snort.conf là:

HOME_NET - sử dụng để xác định địa chỉ IP của hệ thống đang bảo vệ.

EXTERNAL_NET - nên sử dụng kí tự “!” để xác định mọi thứ không nằm trong mạng

bên trong !$EXTERNAL. Các biến được sử dụng để định nghĩa các Server chạy các dịch vụ mà có các luật xác định là : DNS_SERVERS SMTP_SERVERS HTTP_SERVERS SQL_SERVERS TELNET_SERVERS SNMP_SERVERS HTTP_PORTS Cổng 80 là cổng mặc định của HTTP. SHELLCODE_PORTS

ORACLE_PORTS

Xác định cổng mà Orale lắng nghe. Mặc định, Oracle lắng nghe ở cổng 1521.

AIM_SERVERS

Biến này được sử dụng bởi các luật để giám sát lưu lượng peer-to-peer và instant messenger. Nó được cấu hình với các danh sách địa chỉ server AOL Instant Messenger. Danh sách này thay đổi theo thời gian.

RULE_PATH

Biến này cần được thiết lập đúng, nếu không, Snort sẽ không hoạt động. Nó chỉ đến vị trí các luật trong file hệ thống. Nếu các luật được đặt trong C:\Snort\rules thì phải thiết lập biến như sau :

var RULE_PATH C:/Snort/rules

IV.2.2 Cu hình b gii mã và b phn phát hin ca Snort

Bộ giải mã Snort giám sát cấu trúc gói tin để đảm bảo chúng được xây dựng theo qui định. Nếu một gói tin có kích thước lạ, một tập hợp tùy chọn lạ, hoặc là các thiết lập không phổ biến, Snort sẽ tạo ra một cảnh báo. Nếu không quan tâm đến các cảnh báo này hoặc là số lượng các cảnh báo nhầm quá lớn thì có thể tắt việc tạo ra cảnh báo của bộ giải mã. Theo mặc định, tất cả các cảnh báo đều được bật. Để tắt một kiểu cảnh báo cụ thể, xóa kí tự “#” ở đầu dòng. Các tùy chọn cấu hình bộ giải mã: # config disable_decode_alerts # config disable_tcpopt_experimental_alerts # config disable_tcpopt_obsolete_alerts # config disable_tcpopt_ttcp_alerts # config disable_tcpopt_alerts # config disable_ipopt_alerts

config order: [pass, alert, log, activation, or dynamic] Thay đổi thứ tự các luật được đánh giá.

config alertfile: alerts

Thiết lập file cảnh báo output. config decode_arp

config dump_chars_only Bật dump kí tự (snort -C). config dump_payload

Dump thông tin lớp ứng dụng (snort -d). config decode_data_link

Giải mã header lớp 2 (snort -e). config set_gid: 30

Thay đổi GID (snort -g).

config interface: <interface name> Thiết lập giao diện mạng (snort -i). config alert_with_interface_name Gán tên cho cảnh báo (snort -I). config logdir: /var/log/snort Thiết lập thư mục log (snort -l). config umask: <umask>

Thiết lập umask khi đang chạy (snort -m). config pkt_count: N

Thoát ra sau N gói tin (snort -n). config nolog

Tắt việc ghi log (vẫn còn cảnh báo) (snort -N). config quiet

Tắt các đầu đề và trạng thái bản báo cáo (snort -q). config set_uid: <id>

Thiết lập UID (snort -u). config utc

Sử dụng UTC thay vì thời gian cục bộ cho timestamp (snort-U). config verbose

Sử dụng ghi log Verbose cho stdout (snort -U). config dump_payload_verbose

config show_year

Hiển thị năm trong timestamps (snort -y).

- Cấu hình tiền xử lí

Các bộ tiền xử lí phục vụ một số mục đích. Chúng chuẩn hóa lưu lượng cho nhiều loại dịch vụ, đảm bảo rằng dữ liệu trong các gói tin mà Snort giám sát sẽ có 1 định dạng mà các dấu hiệu sẽ được nhận ra. Một chức năng khác của bộ tiền xử lí là tự bảo vệ. Nhiều loại tấn công được thiết kế để gây nhầm lẫn hoặc làm tràn ngập bộ cảm biến NIDS, vì vậy mà kẻ tấn công có thể thực hiện tấn công mà không bị phát hiện. Tiền xử lí frag2 và stream4 chủ yếu là các cơ chế phòng thủ.

Lợi ích cuối cùng của bộ tiền xử lí là chúng mở rộng khả năng của Snort để phát hiện các điều bất thường mà có thể là dấu hiệu xâm nhập.

- Cấu hình xuất kết quả

Một trong những sức mạnh thật sự của Snort là các tùy chọn để xuất các cảnh báo và thông tin phát hiện xâm nhập. Nhiều nhà quản trị Snort sử dụng các ứng dụng của công ty thứ ba để giám sát và nghiên cứu thông tin tạo ra bởi Snort. Để làm được việc đó, Snort phải xuất dữ liệu theo một định dạng cụ thể. Output plug-ins thực hiện nhiệm vụ này. Lưu ý rằng việc sử dụng một vài plug-in này đòi hỏi nhà quản trị phải thực hiện một vài bước khi Snort được biên dịch. Ví dụ, để cho phép Snort xuất dữ

Một phần của tài liệu Giả Lập Mạng Với Honeypots potx (Trang 30 - 40)

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

(73 trang)