báo cáo thực tập tốt nghiệp snort ids

47 1.1K 6
báo cáo thực tập tốt nghiệp snort ids

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

báo cáo thực tập tốt nghiệp snort ids

ĐẠI HỌC BÁCH KHOA HÀ NỘI Chương trình kỹ sư Chất lượng cao BÁO CÁO THỰC TẬP TỐT NGHIỆP SNORT IDS Giảng viên: PGS TS. Nguyễn Linh Giang Sinh viên thực hiện: Ngô Doãn Dương SHSV: 20090596 Lớp: HTTT và truyền thông - KSCLCK54 Hà Nội, 04/2014 2 Mục lục Lời nói đầu 3 Phần 1. Tổng quan về IDS Snort 4 Phát hiện xâm nhập là gì? 4 Các thành phần và cơ chế hoạt động của Snort 8 Tập luật trong Snort 13 Cấu hình Snort 27 Phần 2. Snort và các sản phẩm kết hợp 34 Phần 3. Thử nghiệm khả năng phản ứng của Snort IDS 43 Phần 4. Kết luận 47 3 Lời nói đầu Bảo mật là một vấn đề lớn đối với tất cả các mạng trong môi trường doanh nghiệp ngày nay. Hacker và intruder (kẻ xâm nhập) đã nhiều lần thành công xâm nhập vào mạng công ty và đem ra ngoài rất nhiều thông tin giá tri Nhiều phương pháp đã phát triển để đảm bảo cho hạ tầng mạng và giao tiếp trên Internet, giữa chúng là sử dụng firewall (tường lửa), encryption (mã hóa), và VPN (mạng riêng ảo). Phát hiện xâm nhập là một công nghệ mới. Các phương pháp phát hiện xâm nhập bắt đầu xuất hiện những năm gần đây. Sử dụng phương thức phát hiện xâm nhập, có thể thu thập và sử dụng thông tin từ những loại tấn công đã biết và tìm ra một ai đó cố gắng tấn công vào mạng hay máy cá nhân. Thông tin thu thập theo cách này có thể sử dụng làm cho mạng chúng ta bảo mật hơn, nó hoàn toàn hợp pháp. Sản phẩm thương mại và mã nguồn mở đều sẵn có cho mục đích này. Nhiều công cụ đánh giá tình trạng nguy hiểm cũng sẵn có trên thị trường , nó dùng để đánh giá nhiều loại hình bảo mật khác nhau và vai trò của nó trong mạng. Snort là một hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở, là miễn phí. NIDS là một dạng IDS, được sử dụng để quét luồng dữ liệu trên mạng. Cũng có những IDS cơ bản trên host (host-based), nó được cài đặt trên host riêng và phát hiện những cuộc tấn công chỉ trên host đó thôi. Mặc dù tất cả phương pháp phát hiện xâm nhập vẫn còn mới, nhưng Snort giữ một vị trí là hệ thống chất lượng thuộc loại top (hàng đầu) ngày nay. Snort có thể làm việc chung với những sản phẩm khác. Những sản phẩm đó bao gồm cơ sở dữ liệu MySQL (http://mysql.org) và điều khiển phân tích cho cơ sở dữ liệu xâm nhập (ACID) (http://www.cert.org/kb/acid). Snort có khả năng ghi dữ liệu thu thập được (như là những cảnh báo – alerts – và những thông điệp dạng log khác) vào một cơ sở dữ liệu. MySQL được sử dụng làm cơ sở dữ liệu thông dụng, nó là nơi mà dữ liệu sẽ lưu giữ. Sử dụng Apache web server (http://apache.org) và ACID, có thể phân tích dữ liệu này. Sự kết hợp của Snort, Apache, MySQL, và ACID giúp ta ghi dữ liệu phát hiện xâm nhập vào trong cơ sở dữ liệu và xem, phân tích nó về sau, bằng một giao diện web cơ bản. 4 Phần 1. Tổng quan về IDS Snort 1. Phát hiện xâm nhập là gì? Phát hiện xâm nhập là một tập những công nghệ và phương thức dùng để phát hiện hành động khả nghi trên cả host và mạng. Hệ thống phát hiện xâm nhập (IDS)có 2 loại cơ bản sau: IDS signature-based (IDS dựa trên dấu hiệu) và IDS anomaly-based (IDS dựa trên sự bất thường). 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. 5 Một số định nghĩa cơ bản: 1.1 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ả ha i, 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. 1.2 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. 1.3 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. 1.4 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 6 signature trong IP 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. 1.5 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. 1.6 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. 1.7 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ó 7 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 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. 8 2. Các thành phần và cơ chế hoạt động của Snort: Snort được chia thành nhiều phần. Những phần này làm việc cùng nhau nhằm phát hiện những loại tấn công khác nhau và sinh ra trong một định dạng yêu cầu từ hệ thống phái hiện. Một Snort IDS cơ bản gồm các thành phần chính sau: a. Packet Decoder : bộ giải mã gói b. Preprocessors : Bộ tiền xử lý. c. Detection Engine : bộ máy phát hiện d. Logging and Alerting System : hệ thống ghi và cảnh báo. e. Output Modules : các mô đun xuất. Dưới đây là mô hình của các thành phần Snort: Hình 3.1: Cơ chế hoạt động của IDS Sau đây sẽ giới thiệu ngắn gọn những thành phần này. Thông qua đó, có thể tạo một vài rule. 9 2.1 Packet Decoder: Packet decoder lấy những gói từ những loại khác nhau của giao diện mạng và chuẩn bị đưa chúng vào preprocessed hoặc gửi nó qua detection engine. Giao diện có thể là Ethernet, SLIP, PPP, v.v 2.2 Preprocessors: Preprocessors là những thành phần hay những plug-in được sử dụng cùng với Snort để sắp xếp và thay đổi những gói dữ liệu trước khi detection engine thực hiện công việc tìm kiếm nếu gói dữ liệu đó là nguy hiểm. Một vài preprocessor còn có thể thực hiện tìm ra những dấu hiệu bất thường trong tiêu đề gói và sinh ra cảnh báo. Preprocessor rất là quan trọng đối với IDS nhằm chuẩn bị những gói dữ liệu để phân tích cho việc thiết lập rule trong detection engine. Hacker sử dụng những công nghệ khác nhau nhằm đánh lừa một IDS bằng nhiều cách khác nhau. Cho ví dụ, có thể tạo một rule để tìm một dấu hiệu “script/iiadmin” trong gói HTTP. Nếu so khớp chính xác chuỗi này, có thể dễ dàng bắt lấy. Cho ví du:  “script/./iisadmin”  “script/examples/ /iisadmin”  “script/iisadmin” Để làm phức tạp trạng thái, hacker cũng có thể chèn vào Uniform Resource Identifier (URI) ký tự nhị phân hay Unicode mà vẫn hợp quy tắc của một web server. Chú ý rằng web server thường hiểu tất cả những chuỗi và có thể xử lý chúng chính xác như mong muốn trong chuỗi “script/iisadmin”. Tuy nhiên IDS vẫn theo dõi so khớp chính xác, nó không thể phát hiện ra sự tấn công này. Một preprocessor có thể sắp xếp lại chuỗi đó để nó có thể phát hiện được. Preprocessor cũng có thể sử dụng cho những gói phân mảnh. Khi một gói dữ liệu có kích thước lớn truyền vào một host, gói đó thường bị phân mảnh. Cho ví dụ, kích thước mặc định lớn nhất cho gói dữ liệu trong mạng Ethernet thường là 1500 byte. Giá trị này được điều khiển bởi giá trị MTU (Maximum Transfer Unit) cho giao diện mạng. Điều này có nghĩa là nếu gửi dữ liệu lớn hơn 1500 byte, nó sẽ cắt thành nhiều gói, mỗi gói phân mảnh 10 đó có kích thước nhỏ hơn hoặc bằng 1500 byte. Hệ thống nhận sẽ tái hợp để thành gói dữ liệu nguyên thủy. Trên IDS, trước khi áp dụng những rule hay tìm một signature, phải tái hợp gói. Cho ví dụ, phân nửa dấu hiệu có thể cho thấy trong một đoạn này và nửa kia trong đoạn khác. Để phát hiện chính xác dấu hiệu, phải kết hợp tất cả phân đoạn của mảnh. Hacker sử dụng sự phân mảnh để đánh bại những hệ thống IDS. Preprocessor thường được dùng để bảo vệ những loại tấn công này. Preprocessor trong Snort có thể phân mảnh gói, giải mã HTTP URI, tái hợp luồng TCP, v.v Những chức năng này rất là quan trọng trong thành phần IDS. 2.4 Detection Engine: Detection engine là thành phần quan trọng nhất trong Snort. Nó chịu trách nhiệm phát hiện nếu có hành vi xâm nhập trong một gói. Detection engine tận dụng những rule Snort để làm việc này. Những rule được đọc trong cấu trúc dữ liệu bên trong hay buộc chặt chúng vào nơi mà chúng sẽ so khớp với tất cả các gói. Nếu một gói nào đó khớp với rule, hành động thích hợp sẽ sinh ra, chẳng hạn gói đó sẽ bị hủy. Những hành động đó có thể là ghi gói hay sinh cảnh báo. Detection engine là một phần tiêu chuẩn thời gian (time-critical) của Snort. Phụ thuộc vào sức khỏe của hệ thống và có bao nhiêu rule được định nghĩa, nó có thể tiêu tốn bao nhiêu thời gian cho công việc đáp ứng các gói này. Nếu lưu lượng trên hệ thống mạng của là khá cao khi Snort làm việc trong chế độ NIDS, có thể hủy những gói. Sự vận hành của Detection engine phụ thuộc vào các yêu tố sau:  Số rule trên đó.  Sức khỏe của hệ thống trên đó có Snort đang chạy.  Thông lượng bên trong đó.  Sức vận hành trên mạng Khi thiết kế một NIDS, phải giữ tất cả hồ sơ kỹ thuật trong đó. Nên nhớ rằng hệ thống phát hiện có thể khảo sát tỉ mỉ và áp dụng rule trên nhiều phần của gói dữ liệu. Những phần này có thể là:  IP header của gói. [...]... MySQL server cho Snort Tôi đã đặt tên CSDL này là  snort Tuy nhiên có thể đặt tên khác tùy ý thích Tạo một tài khoản và mật khẩu (Username và Password) trong CSDL Tài khoản  này sẽ được sử dụng dùng khi Snort ghi liệu vào Cấu hình file snort. conf để cho phép ghi dữ liệu vào CSDL Dùng username và password ở trên để thực hiện ghi dữ liệu Khởi động lại Snort Nếu mọi việc thực hiện tốt, Snort sẽ bắt đầu... và chạy MySQL trên cùng một máy chạy Snort hoặc trên hai máy khác nhau Sau đây là những bước cơ bản giúp Snort làm việc với MySQL:  Biên dịch Snort có hỗ trợ MySQL và cài đặt nó Phải đảm bảo rằng Snort 34      làm việc bằng cách thử tạo ra một vài cảnh báo Để Snort làm việc được với MySQL, yêu cầu cần phải thêm vào dòng with-mysql trong đoạn script cấu hình Snort Cài đặt MySQL và sử dụng MySQL... trọn vẹn sẽ sinh ra một cảnh báo không trọn vẹn, thâm chí nếu một rule khá đầy đủ (tương ứng với một cảnh báo tốt) có thể nằm sau rule trước nó Vấn đề này đã được sửa trong Snort phiên bản 2, tất cả các rule đều được so khớp vào một gói trước khi sinh một cảnh báo Sau khi so khớp tất cả các rule, rule nào trọn vẹn nhất sẽ được chọn để sinh cảnh báo Detection engine trong Snort 2.0 đã được làm lại một... sẽ chạy trên cùng một máy với Snort Nếu như có một máy chủ CSDL riêng, có thể chỉ định tên của máy chủ trong tập tin snort. conf Ví dụ, nếu máy chủ CSDL không nằm trên một máy có Snort đang chạy, sử dụng dòng lệnh sau: output database: log, mysql, user=huuly password=huuly \ 35 dbname =snort host=192.168.1.222 Máy chủ CSDL MySQL đang chạy trên máy 192.168.1.222 Tuy nhiên Snort sensor và MySQL phải được... xuất báo cáo và phân tích thông tin Bằng cách sử dụng những công cụ khác như ACID (sẽ được phân tích trong phần sau), có thể lấy rất nhiều thông tin hữu ích từ CSDL Chẳng hạn như ta có thể lấy một bản báo cáo về 15 loại tấn công sau cùng, thông tin về những máy tấn công vào mạng, những loại tấn công phân tán bằng những giao thức khác nhau, v.v MySQL là CSDL hoàn toàn miễn phí và có thể làm việc tốt. .. log file hay cảnh báo Có nhiều lựa chọn dòng lệnh sẽ được thảo luận trong phần sau và chi tiết thông tin về cách ghi log file hay cảnh báo 2.6 Output Modules: 11 Output modules hay plug-in thực hiện những hoạt động khác nhau phụ thuộc muốn lưu kết quả sinh ra bởi logging và cảnh báo thế nào Về cơ bản, những modules này điều khiển loại kết quả sinh ra bởi hệ thống logging và cảnh báo Phụ thuộc vào sự... hình Snort: Snort sử dụng một file cấu hình cho mỗi lần chạy Thường tên file cấu hình của nó có tên snort. conf Tuy nhiên cũng có thể sử dụng tên khác, nhưng khi chạy dòng lệnh phải chỉ đúng tên file cấu hình yêu cầu Tập tin cấu hình chứa 6 phần cơ bản:  Định nghĩa tham biến Những tham biến này sẽ dùng cho rule Snort  Cấu hình các tham số Các tham số này định rõ những lựa chọn cấu hình Snort khác nhau... Xuất một vài cảnh báo và sử dụng chương trình mysql client xem những gì mà Snort ghi được Giả định rằng sau khi cấu hình CSDL và tạo những bảng và tài khoản, ta cần soạn thảo file snort. conf Những dòng sau đây sẽ cho phép ghi những thông điệp log vào CSDL MySQL: output database: log, mysql, user=huuly password=huuly \ dbname =snort host=localhost Ý nghĩa của dòng trên là: tên CSDL là snort và MySQL server... log_tcpdump: snort. log output database: log, mysql, user=rr password=boota \ dbname =snort host=localhost output xml: log, file=/var/log/snortxml # Rules and include files include $RULE_PATH/badtraffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/scan.rules include $RULE_PATH/finger.rules include 32 $RULE_PATH/ftp.rules include $RULE_PATH/telnet.rules 33 Phần 2 Snort và các sản phẩm kết hợp: IDS. .. sensor và MySQL phải được cài đặt và nằm trên cùng một mạng con với nhau Máy chủ CSDL phải chạy trước khi khởi động Snort sensor Sau khi khởi động Snort sensor, sẽ thấy những thông tin sau, điều đó chứng tỏ Snort đang làm việc với MySQL Hình 2.1: khởi động Snort làm việc với MySQL 2.2 Sử dụng Snort với ACID Analysis Console for Intrusion Databases (ACID) là trong những công cụ phân tích và kiểm duyệt dữ . HÀ NỘI Chương trình kỹ sư Chất lượng cao BÁO CÁO THỰC TẬP TỐT NGHIỆP SNORT IDS Giảng viên: PGS TS. Nguyễn Linh Giang Sinh viên thực hiện: Ngô Doãn Dương SHSV: 20090596 Lớp: HTTT. 3 Phần 1. Tổng quan về IDS Snort 4 Phát hiện xâm nhập là gì? 4 Các thành phần và cơ chế hoạt động của Snort 8 Tập luật trong Snort 13 Cấu hình Snort 27 Phần 2. Snort và các sản phẩm kết. 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. 1.2 Network IDS hay NIDS: NIDS là một IDS

Ngày đăng: 10/11/2014, 14:12

Tài liệu cùng người dùng

Tài liệu liên quan