Giải pháp chống xâm nhập

Một phần của tài liệu (Luận văn đại học thương mại) giải pháp đảm bảo an toàn và bảo mật cho hệ thống thông tin của công ty cổ phần hoàng giang (Trang 55 - 62)

1.4.2 .Phạm vi nghiên cứu của đề tài

3.2 Giải pháp đảm bảo an toàn thông tin cho công ty

3.2.3. Giải pháp chống xâm nhập

Để hệ thống của cơng ty được an tồn trong mọi tình huống thì ngồi việc chọn cho máy tính một chương trình diệt Virus đủ mạnh, một tường lửa hiệu quả thì cần phải có một chương trình giúp kiểm tra và phát hiện thâm nhập (IDS). Một trong những phần mềm IDS phổ biến hiện nay là Snort.

Giới thiệu về Snort

SNORT là một IDS Software, là một sản phẩm mã nguồn mở được phát triển nhằm phát hiện những xâm nhập trái phép vào hệ thống bởi những quy tắc hay luật đã được thiết lập sẵn, những thiết lập này dựa vào những dấu hiệu, giao thức và sự dị thường.

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ữ mẫu vi phạm. 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ì 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 và các quản trị viên cũng có thể thêm vào các luật của chính mình. Quản trị viên 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.

Snort bao gồm một hoặc nhiều sensor và một server cơ sở dữ liệu (CSDL) chính.Các Sensor có thể được đặt trước hoặc sau firewall:

Giám sát các cuộc tấn cơng vào firewall và hệ thống mạng Có khả năng ghi nhớ các cuộc vượt firewall thành công.

Các thành phần của Snort

Snort được chia thành nhiều thành phần. Những thành phần này làm việc với nhau để phát hiên các cách tấn công cụ thể và tạo ra output theo định hướng đang được đòi hỏi. Một IDS dựa trên Snort bao gồm các thành phần chính sau đây:

Packet Decoder Preprocessor Dectection Engine

Logging và Alerting System Output Modules

Hình 3.1.Các thành phần của SnortPacket Decoder (Bộ phân giải mã gói) Packet Decoder (Bộ phân giải mã gói)

Bộ phận giải mã gói lấy các gói từ các giao diện mạng khác nhau và chuẩn bị cho việc gói tin được xử lí trước hoặc được gửi cho bộ phận phát hiện

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

Bộ phận xử lí trước là những thành phần được sử dụng với Snort để sắp xếp hoặc chỉnh sửa gói dữ liệu trước khi bộ phận phát hiện làm một vài xử lý để tìm ra gói tin có được sử dụng bởi kẻ xâm nhập hay không. Một vài bộ phận xử lý trước cũng thực thi việc phát hiện bằng cách tìm các dấu hiệu bất thường trong header của gói tin và tạo ra các cảnh báo. Bộ phận xử lí trước là rất quan trọng trong bất kì IDS nào, chúng chuẩn bị cho các gói dữ liệu được phân tích dựa trên các luật trong bộ phận phát hiện. Kẻ tấn công sử dụng nhiều kĩ thuật khác nhau để lừa IDS theo nhiều cách. Bộ phận xử lí trước cũng được sử dụng để tái hợp các gói tin. Trên IDS, trước khi áp dụng bất kì luật nào, phải tái hợp các gói tin lại để tìm ra các dấu hiệu. Bộ phận xử lí trước trong Snort có thể tái hợp các gói tin, giải mã HTTP URI, ráp lại các dòng TCP, v.v...Những chức năng này rất quan trọng trong hệ thống phát hiện xâm nhập

Dectection Engine (Bộ phận phát hiện):

Đây là phần quan trọng nhất của Snort. Trách nhiệm của nó là phát hiện có sự xâm nhập tồn tại trong gói tin hay khơng. Bộ phận phát hiện sử dụng các luật của Snort cho mục đích này. Nếu một gói tin giống với bất kì lậut nào, một hành động tương ứng sẽ được thực hiện. Đây là bộ phận then chốt về thời gian thực thi của Snort. Dựa vào bộ máy mạnh như thế nào và bao nhiêu luật định nghĩa mà nó có thể tốn những khoảng thời gian khác nhau đối với các gói tin khác nhau. Nếu lưu lượng trên mạng là quá lớn khi Snort đang hoạt động trong chế độ NIDS, có thể mất một vài gói tin và có thể thời gian đáp ứng khơng chính xác. Lưu lượng trên bộ phận phát hiện phụ thuộc vào các yếu tố sau:

Số lượng các luật

Sức mạnh của bộ máy mà Snort đang chạy Tốc độ của bus được sử dụng

Lưu lượng trên mạng

Bộ phận phát hiện hoạt động theo những cách khác nhau ở các phiên bản khác nhau của Snort. Trong tất cả phiên bản 1.x của Snort, bộ phận phát hiện dừng việc xử lí gói tin khi phù hợp với một luật. Dựa vào luật, bộ phận phát hiện sẽ có các hành động tương ứng. Điều này có nghĩa là nếu một gói tin phù hợp với nhiều luật, chỉ có luật đầu tiên được áp dụng mà khơng xem xét đến các luật cịn lại. Điều này làm nảy sinh một vấn đề. Một luật có độ ưu tiên thấp sẽ tạo ra một cảnh báo có độ ưu tiên thấp, nếu một luật có độ ưu tiên cao bị xếp sau trong chuỗi luật. Vấn đề này được giải quyết trong Snort phiên bản 2, khi mà tất cả các luật được so sánh trên một gói tin trước khi tạo ra một cảnh báo. Sau khi so sánh tất cả các luật, luật có độ ưu tiên cao nhất sẽ được chọn để tạo cảnh báo. Vì bộ phận phát hiện trong phiên bản 2 đã được viết lại hồn tồn nên nó nhanh hơn rất nhiều so với các phiên bản trước đây.

Logging và Alerting System (Hệ thống ghi và cảnh báo)

Phụ thuộc vào Dectection Engine phát hiện tìm thấy trong gói tin, gói tin có thể được sử dụng để ghi lại các hành vi hoặc tạo ra một cảnh báo. Các thông tin ghi lại được giữ trong các file text đơn giản hoặc các dạng khác.

Output Modules (Bộ phân đầu ra)

Module đầu ra hoặc plug-in có thể hoạt động theo nhiều cách phụ thuộc vào việc muốn lưu các output được tạo ra bằng hệ thống ghi và tạo cảnh báo như thế nào.

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

Tại sao cần Snort trong khi nó có vẻ giống các phần mềm khác như tcpdump cũng sniff packet và có thể đọc từ định dạng của libpcap. Sau đây là những lý do chứng tỏ Snort có nhiều điểm tốt trong giải pháp sniffing và phát hiện xâm nhập:

Mơ tả sâu sắc về các dịng dữ liệu

Linh hoạt hơn tcpdump về khả năng đọc và output

Có thể dễ dàng chỉnh sửa , hiển thị nhiều trường đa dạng trong các headers Viết các rules liên quan dễ dàng dễ hiểu và dễ chỉnh sửa

Có thể report trên các mạng wireless riêng biệt bằng cách sử dụng những patches đặc biệt

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

Sniffer (snort -v). Packet logger (snort -l)

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

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. Thỉnh thoảng, nó có thể là một cơng cụ gỡ dối hữu dụng cho nhà quản trị. Bật chế độ sniffer cho snort bằng cờ -v.

mà nó đang lắng nghe. Khi việc khởi động hồn tất, Snort bắt đầu xuất các gói tin ra màn hình. Kết quả xuất này khá cơ bản: nó chỉ hiển thị các header IP,TCP/UDP/ICMP và một số cái khác. Để thoát chế độ sniffer, sử dụng Ctrl-C. Snort thoát bằng cách tạo ra một bản tóm tắt các gói tin được bắt giữ, bao gồm các giao thức, thống kê phân mảnh và tái hợp gói tin. Để xem dữ liệu ứng dụng, sử dụng cờ -d. Tùy chọn này cung cấp các kết quả chi tiết hơn.

Các chuỗi thập lục phân hiển thị nhiều dữ liệu hơn. Có địa chỉ MAC và địa chỉ IP. Khi thực hiện kiểm tra trên một mạng hoặc bắt giữ dữ liệu bằng Snort, việc bật –vde cung cấp nhiều thông tin nhất. Để lưu lại trong logfile thay vì xuất ra console, sử dụng:

Code:

# snort -dve > ttooip.log.

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 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. Nếu xác định một thư mục khơng tồn tại thì Snort sẽ báo một thơng điệp lỗi. Có thể sử dụng các tùy chọn –d, -a và –e để điều khiển số lượng thông tin sẽ được ghi log cho mỗi gói tin. 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:

Code:

# snort -1/usr/local/log/snort –d

Khi chạy trong chế độ này, Snort thu thập mỗi gói tin nó thấy và lưu chúng trong thư mục log theo kiểu phân cấp. Nói cách khác, một thư mục mới được tạo ra cho mỗi địa chỉ được bắt giữ và dữ liệu liên quan đến địa chỉ này được lưu trong thư mục đó. Snort lưu các gói tin thành các file ASCII, với tên file được tạo ra từ giao thức và số cổng. Cách tổ chức này làm cho nhà quản trị có thể dễ dàng thấy được ai đang kết nối với mạng, số cổng và giao thức họ đang sử dụng (sử dụng ls –R để liệt kê thư mục log). Hãy nhớ xác định biến mạng của cơ quan hay tổ chức (trong file

cấu hình hoặc sử dụng -h ) để xác định chỉ ghi log cho mạng của cơ quan.

Cách tổ chức phân cấp này hữu dụng khi một số giới hạn các host được quan tâm hoặc muốn thoáng qua các địa chỉ IP của các host được bắt giữ. Tuy nhiên, thư mục log có thể ngày càng nhiều vì sự gia tăng thư mục và các file. Nếu ghi log tất cả lưu lượng trên một mạng lớn thì có thể sẽ bị tràn index Unix giới hạn tổng số file trong một file hệ thống) trước khi bị tràn bộ nhớ. Nếu một người nào đó thực hiện việc quét mạng và ánh xạ tất cả 65536 cổng TCP cũng như 65536 cổng UDP, sẽ đột ngột có hơn 131000 file trong một thư mục đơn. Sự bùng nổ file này có thể là một thử thách lớn cho bất kì một máy nào, và rất dễ trở thành cách tấn cơng DOS. Việc ghi log theo kiểu nhị phân có thể đọc được bởi Snort, tcpdump hoặc ethereal. Cách này làm tăng tốc độ và khả năng vận chuyển của việc bắt giữ gói tin. Hầu hết các hệ thống có thể bắt giữ và ghi log với tốc độ 100 Mbps mà khơng có vấn đề gì. Để ghi log các gói tin theo kiểu nhị phân, sử dụng –b switch. Ví dụ:

Code:

#snort-b -l /usr/local/log/snort/ttooip.log

Khi đã thực hiện việc bắt giữ gói tin, có thể đọc lại các file vừa tạo ra bằng khóa – r. Kết quả giống như sniffer của Snort. Lưu ý rằng –r không thể sử dụng với –C.

Code:

# snort -r /usr/local/log/snort/ttooip.log

Ở chế độ này, Snort không giới hạn việc đọc dữ liệu nhị phân được lưu trữ trong chế độ sniffer.

Snort là một NIDS:

Snort là một công cụ phát hiện xâm nhập rất tốt. 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. Chúng ta sẽ xem rất nhiều cách mà Snort có thể được sử dụng như là một NIDS và tất cả các tùy chọn cấu hình có thể. Trong chế độ cảnh báo, Snort cần một file cấu hình (thật ra, chỉ cần xác định vị trí của file snort.conf là đặt Snort trong chế độ này). Vị trí mặc định của file này là /etc/snort.conf. Nếu muốn đặ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.

Các cài đặt mặc định cho hầu như tất cả các mục trong file này là khá tốt (mặc dù sẽ có các cảnh báo nhầm). Biến duy nhất chúng ta mới thiết lập là biến RULE_PATH, chỉ cho Snort nơi của các file luật. File cảnh báo nằm trong thư mục /var/log/snort. File này chứa các cảnh báo được tạo ra khi Snort đang chạy. Các cảnh báo Snort được phân loại theo kiểu cảnh báo. Một luật Snort cũng xác định một mức độ ưu tiên cho một cảnh báo. Điều này cho phép lọc các cảnh báo có độ ưu tiên thấp.

Khởi đầu cấu hình với file Snort.conf

Ở chế độ báo động ( alert ), Snort u cầu phải có file cấu hình, files cấu hình mặc định lưu ở thư mục /etc/Snort.conf, nếu file nằm ở chỗ khác ta phải dùng cờ -c để chỉ tới files đó. Các báo động sẽ lưu ở thư mục /var/log/Snort ( mặc định ).Snort sẽ thốt ra nếu file .conf và thư mục log khơng có. Ta có thể chỉ định loại báo động nào ví dụ như full, fast,none hoặc Unix sockets bằng cách thêm cờ -A vào dịng lệnh

Lần đầu nhìn vào file Snort.conf ta có thể nhìn thấy nhiều dịng chú thích rất dễ hiểu với màu sắc dễ phân biệt, ví dụ như tạo các biến, set các đường dẫn RULE_PATH để chỉ Snort các files rules

Code:

var RULE_PATH ../rules

Thay đổi đường dẫn đầy đủ nơi chứa các rules

var RULE_PATH /usr/local/share/Snort_rules/november_2005/rules Để cho Snort khởi động, sử dụng dịng lệnh:

Snort -c /usr/local/share/Snort_rules/november_2005/rules/Snort.conf Nó sẽ hiển thị ra màn hình console.

Tới đây ta có thể kết thúc dùng lệnh CTRL – C sẽ xuất hiện các bảng tóm tắt: Bây giờ đã có 1 file báo động trong thư mục /var/log/Snort. File sẽ bao gồm các báo động từ Snort khi đang chạy ( trong bài này có sử dụng nmap SYN scan để cho Snort báo động )

Ví dụ phân tích một báo động của Snort Đây là tên của báo động:

[**] [1:1418:3] SNMP request tcp [**]

Snort sẽ chia ra nhiều lớp cho từng loại báo động , ví dụ cái này là thuộc dang đang cố gắng đánh lừa thông tin “Attempted Information Leak” và mức độ ưu tiên của từng báo động

[Classification: Attempted Information Leak] [Priority: 2]

Đây là phần header và thông tin của packet là nguyên nhân gây ra báo đông: 03/24-15:07:35.827022 192.168.1.2:49641 -> 192.168.1.105:161

TCP TTL:44 TOS:0x0 ID:37753 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

Snort sẽ báo động bao gồm các đường dẫn tới mô tả các rules gây ra báo động [Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013] [Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012

Một phần của tài liệu (Luận văn đại học thương mại) giải pháp đảm bảo an toàn và bảo mật cho hệ thống thông tin của công ty cổ phần hoàng giang (Trang 55 - 62)