Bảo mật mạng là một ưu tiên hàng đầu trong môi trường kỹ thuật số ngày nay. Với sự gia tăng của các mối đe dọa mạng và việc tăng cường các kỹ thuật tấn công, việc triển khai các giải pháp bảo mật mạng trở nên càng trọng yếu hơn bao giờ hết. Trong bài viết này, chúng ta sẽ tập trung vào một trong những công cụ bảo mật mạng mạnh mẽ nhất có sẵn cho hệ điều hành Linux – Snort. Snort không chỉ là một công cụ phát hiện xâm nhập (Intrusion Detection System – IDS) hàng đầu, mà còn là một phần quan trọng của các chiến lược bảo mật mạng hiện đại. Chúng ta sẽ khám phá cách triển khai Snort trên một hệ thống Linux và tận dụng sức mạnh của nó để giám sát, phát hiện và phản ứng với các mối đe dọa trong mạng của bạn. Từ việc cài đặt cơ bản đến tinh chỉnh cấu hình và xử lý các sự kiện phát hiện, chúng ta sẽ đi sâu vào các bước cần thiết để tạo ra một hệ thống bảo mật mạng toàn diện với Snort.
Intrusion Detection System (IDS)
là thiết bị hoặc phần mềm có nhiệm vụ giám sát traffic mạng, các hành vi đáng ngờ và cảnh báo cho admin hệ thống. Mục đích của IDS là phát hiện và ngăn ngừa các hành động phá hoại bảo mật hệ thống, hoặc những hành động trong tiến trình tấn công như dò tìm, quét các cổng. IDS cũng có thể phân biệt giữa những cuộ tấn công nội bộ và tấn công bên ngoài. Trong một số trường hợp, IDS có thể phản ứng lại với các traffic bất thường/độc hại bằng cách chặn người dùng hoặc địa chỉ IP nguồn truy cập mạng
IDS có hai loại chính
- Network Intrusion Detection System (NIDS): giám sát luồng lưu lượng từ các khu vực khác nhau của mạng. Mục tiêu là điều tra lưu lượng trên toàn mạng con. Nếu có một chữ ký được xác định, một cảnh báo sẽ được tạo ra
- Host-based Intrusion Detection System (HIDS): giám sát luồng lưu lượng từ một thiết bị điểm cuối duy nhất. Mục tiêu là điều tra lưu lượng trên một thiết bị cụ thể. Nếu có một chữ ký được xác định, một cảnh báo sẽ được tạo ra
Intrusion Prevention System (IPS)
Là một số biện pháp an ninh mạng quan trọng nhất mà mạng có thể có. IPS được biết đến như một hệ thống kiểm soát, vì nó không chỉ phát hiện các mối đe dọa tiềm ẩn đối với hệ thống mạng và cơ sở hạ tầng của nó, mà còn tìm cách chủ động chặn bất kỳ kết nối nào có thể là mối đe dọa
IPS có bốn loại chính
- Network Intrusion Prevention System (NIPS): là một loại hệ thống IPS được thiết kế để giám sát và bảo vệ lưu lượng mạng trên toàn bộ hạ tầng mạng. NIPS hoạt động bằng cách phân tích lưu lượng mạng đến và đi từ các thiết bị mạng trong mạng của bạn và ngăn chặn hoặc chấm dứt các cuộc tấn công và hoạt động độc hại trước khi chúng gây ra hậu quả
- Behaviour-based Intrusion Prevention System (Network Behaviour Analysis – NBA): phân tích lưu lượng mạng để phát hiện các truy cập bất thường, xác định các mối đe dọa như tấn công từ chối dịch vụ phân tán, các dạng phần mềm độc hại bằng virus hay mã độc và vi phạm chính sách
- Wireless Intrusion Prevention System (WIPS): giám sát luồng lưu lượng từ mạng không dây. Mục tiêu là bảo vệ lưu lượng không dây và ngăn chặn các cuộc tấn công có thể được thực hiện từ đó
- Host-based Intrusion Prevention System (HIPS) : Cơ chế hoạt động của HIPS tương tự như HIDS. Sự khác biệt giữa chúng là trong khi HIDS tạo ra cảnh báo cho các mối đe dọa, HIPS ngăn chặn các mối đe dọa bằng cách chấm dứt kết nối
Tổng quan về Snort
Snort không chỉ là một công cụ phát hiện xâm nhập hàng đầu, mà còn là một phần quan trọng của các chiến lược bảo mật mạng hiện đại. Với khả năng phát hiện và phòng ngừa các mối đe dọa mạng, Snort có thể được triển khai dưới dạng một Hệ thống Phát hiện và Ngăn chặn Xâm nhập Mạng (NIDS/NIPS), cung cấp khả năng phát hiện tấn công, ghi log các gói tin, và ngăn chặn các hoạt động độc hại.
Các chức năng của Snort bao gồm
- Phân tích lưu lượng trực tiếp: Snort có khả năng phân tích lưu lượng mạng trực tiếp, cho phép người dùng theo dõi hoạt động mạng trong thời gian thực.
- Phát hiện tấn công và thăm dò: Snort có thể phát hiện và cảnh báo về các hoạt động tấn công và thăm dò trên mạng, giúp ngăn chặn các mối đe dọa trước khi gây ra tổn thất.
- Ghi log gói tin: Snort có thể ghi log các gói tin mạng, bao gồm cả các gói tin đến và đi từ mạng, để phục vụ cho việc phân tích và kiểm tra sau này.
- Phân tích giao thức: Snort có khả năng phân tích các giao thức mạng để phát hiện các hoạt động bất thường và có thể đề xuất biện pháp phòng ngừa.
- Cảnh báo thời gian thực: Snort có thể cung cấp cảnh báo ngay lập tức khi phát hiện các mối đe dọa, giúp quản trị viên mạng phản ứng kịp thời.
- Các mô-đun và plugin: Snort hỗ trợ nhiều mô-đun và plugin mở rộng, cho phép người dùng mở rộng khả năng và tính linh hoạt của nó.
- Tiền xử lý: Snort có các tiền xử lý tích hợp để tăng hiệu suất và độ tin cậy của hệ thống.
- Hỗ trợ đa nền tảng: Snort hỗ trợ cả Linux và Windows, giúp người dùng triển khai và sử dụng dễ dàng trên các nền tảng khác nhau mà không gặp phải rào cản.
Snort có ba mô hình sử dụng chính:
- Chế độ Sniffer: Trong chế độ này, Snort đọc các gói tin IP và hiển thị chúng trong ứng dụng cửa sổ console, giúp người dùng quan sát lưu lượng mạng một cách trực quan.
- Chế độ Ghi Log Gói Tin: Snort ghi log tất cả các gói tin IP (đi vào và đi ra) đi qua mạng, cung cấp một bản ghi chi tiết về hoạt động mạng để phục vụ cho việc phân tích và giám sát.
- Chế độ NIDS (Network Intrusion Detection System) và NIPS (Network Intrusion Prevention System): Trong chế độ này, Snort phân tích và xử lý các gói tin theo các quy tắc do người dùng xác định. Nếu một gói tin được xem là độc hại, Snort có thể ghi log nó hoặc loại bỏ nó khỏi mạng, tùy thuộc vào cấu hình của người dùng, giúp ngăn chặn các cuộc tấn công và bảo vệ hệ thống
Đầu tiên, hãy kiểm tra xem snort đã được cài đặt chưa. Lệnh sau sẽ hiển thị cho bạn phiên bản phiên bản
snort -V
Sau đó, kiểm tra xem Snort hoạt động như thế nào với cấu hình mặc định
sudo snort -c /etc/snort/snort.conf -T
Một số option trong phần này
Tham số | Chức năng |
-V / –version | cung cấp thông tin về phiên bản hiện tại |
-c | xác định tập tin cấu hình mà Snort sẽ sử dụng. Bạn chỉ định đường dẫn đến tập tin cấu hình sau “-c” |
-T | kiểm tra tính hợp lệ của file cấu hình |
-q | Snort sẽ không hiển thị biểu ngữ mặc định và thông tin ban đầu về cài đặt của bạn |
Một số chế độ hoạt động của snort
Sniffer Mode
Dưới đây là bảng các tham số của Sniffer mode
Tham số | Chức năng |
-v | Hiển thị ở ouput TCP/IP |
-d | Hiển thị dữ liệu gói tin (payload) |
-e | Hiển thị dữ liệu tầng liên kết TCP/IP/UDP/ICMP |
-X | Hiển thị tất cả dữ liệu gói tin dưới dạng hex |
-i | xác định một giao diện mạng cụ thể mà Snort sẽ lắng nghe hoặc sniff, tham số này cho phép bạn chỉ định giao diện cụ thể mà Snort sẽ theo dõi lưu lượng mạng. |
Sniffing với tham số -i
Đầu tiên các bạn sẽ kiểm tra các card mạng
ifconfig
Khi sử dụng tham số “-i”, bạn chỉ cần chạy Snort với tham số “-v” và chỉ định giao diện mạng mà bạn muốn lắng nghe
sudo snort -v -i eth0
Sniffing với tham số -v
Để bắt đầu một phiên Snort trong chế độ verbose (-v), bạn có thể sử dụng lệnh sau:
sudo snort -v
Snort sẽ bắt đầu hiển thị các gói tin trong chế độ verbose như sau
Sniffing với tham số -d
Để bắt đầu một phiên Snort trong chế độ hiển thị dữ liệu gói tin (-d), bạn có thể sử dụng lệnh sau:
sudo snort -d
Snort sẽ bắt đầu hiển thị các gói tin trong chế độ hiển thị dữ liệu gói tin như bạn yêu cầu
Sniffing với tham số -X
Để bắt đầu một phiên Snort trong chế độ hiển thị đầy đủ thông tin gói tin (-X), bạn có thể sử dụng lệnh sau:
sudo snort -X
Snort sẽ bắt đầu hiển thị các gói tin trong chế độ hiển thị đầy đủ thông tin gói tin như bạn yêu cầu.
Packet Logger Mode
Dưới đây là bảng các tham số của Logger mode
Tham số | Chức năng |
-l | Ghi lại các gói tin với thời gian chính xác khi chúng được nhận |
-K ASCII | Ghi log các gói tin dưới dạng ASCII |
-r | Đọc các bản ghi log bởi snort |
-n | Chỉ định số lượng gói tin sẽ được xử lý. |
Logging với tham số -l
Đầu tiên, hãy khởi động Snort trong chế độ ghi log gói tin bằng lệnh sau:
sudo snort -dev -l .
Bây giờ các bạn hãy kiểm tra file log được tạo
Để bắt đầu một phiên Snort trong chế độ ghi log gói tin và sử dụng định dạng ASCII (-K ASCII), bạn có thể sử dụng lệnh sau:
sudo snort -dev -K ASCII -l .
Tiến hành kiểm tra các file log được ghi lại
Như các bạn đã thấy việc đọc các log với tham số này đơn giản, không ở dạng byte như ở phần trên
Đọc log với tham số -r
sudo sort -r 'TCP:36016-443
IDS/IPS Mode
Dưới đây là bảng các tham số của IDS/IPS mode
Tham số | Chức năng |
-c | xác định tập tin cấu hình mà Snort sẽ sử dụng. Bạn chỉ định đường dẫn đến tập tin cấu hình sau “-c” |
-T | kiểm tra tính hợp lệ của file cấu hình |
-N | tắt chế độ ghi log |
-D | chạy snort trong chế độ nền |
-A | Chế độ cảnh báo với 4 option theo sau: full : cảnh báo tất cả fast: hiển thị thông báo cảnh báo, timestamp, địa chỉ IP nguồn và đích, cùng với số cổng console : cung cấp các cảnh báo nhanh trên màn hình console cmg: cung cấp các thông tin cơ bản về tiêu đề với payload ở dạng hex nonce: tắt cảnh bảo |
IDS/IPS với tham số -D
Để bắt đầu một phiên Snort trong chế độ IDS/IPS và chạy ở chế độ nền (-D), bạn có thể sử dụng lệnh sau:
sudo snort -c /etc/snort/snort.conf -D
Các bạn có thể kiểm tra tiến trình và stop tiến trình đang chạy
IDS/IPS với tham số -A console
Để bắt đầu một phiên Snort trong chế độ NIDS/IPS và sử dụng chế độ cảnh báo console (-A console), bạn có thể sử dụng lệnh sau:
sudo snort -c /etc/snort/snort.conf -A console
IDS/IPS với tham số -A cmg
Để bắt đầu một phiên Snort trong chế độ NIDS/IPS và sử dụng chế độ cảnh báo CMG (-A cmg), bạn có thể sử dụng lệnh sau:
sudo snort -c /etc/snort/snort.conf -A cmg
IDS/IPS sử dụng rule
Trong phần này các bạn có thể không hiểu rule là gì đúng không. Rule chúng ta sẽ tìm hiểu kĩ hơn ở phần sau.
Để chạy Snort trong chế độ IDS/IPS chỉ sử dụng các tập luật mà không cần tập tin cấu hình, bạn có thể sử dụng lệnh sau:
sudo snort -c /etc/snort/rules/local.rules -A console
PCAP Investigation
Dưới đây là bảng các tham số của PCAP Investigation
Tham số | Chức năng |
-r / –pcap-single= | Đọc một file pcap duy nhất |
–pcap-list=”” | Đọc các file pcap được cung cấp trong dấu nháy |
–pcap-show | Hiển thị tên file pcap trên console trong quá trình xử lý |
PCAP investigation với tham số -r
Với tham số này các bạn chỉ chạy được một file pcap duy nhất, bạn có thể sử dụng lệnh sau đây:
sudo snort -c /etc/snort/snort.conf -q -r icmp-test.pcap -A console -n 10
PCAP investigation với tham số –pcap-list
Với tham số này các bạn có thể chạy được nhiều file cùng một lúc, bạn có thể sử dụng lệnh sau đây:
sudo snort -c /etc/snort/snort.conf -q --pcap-list="icmp-test.pcap http2.pcap mx-1.pcap" -A console -n 10
PCAP investigation với tham số –pcap-show
Với tham số này các bạn có thể chạy được nhiều file cùng một lúc và hiển thị quá trình xử lý trên console, bạn có thể sử dụng lệnh sau đây:
sudo snort -c /etc/snort/snort.conf -q --pcap-list="icmp-test.pcap http2.pcap mx-1.pcap" -A console --pcap-show
Snort Rule
Snort Rule là một quy tắc được xác định trong tệp cấu hình của Snort để phát hiện và phản ứng với các mẫu lưu lượng mạng cụ thể. Mỗi rule định nghĩa một loại hành vi hoặc mẫu dữ liệu mà Snort sẽ theo dõi trong lưu lượng mạng đầu vào. Khi lưu lượng mạng trùng khớp với một rule, Snort sẽ thực hiện hành động được chỉ định trong quy tắc, như tạo ra cảnh báo, ghi log hoặc thậm chí ngăn chặn gói tin.
Hình minh họa
Snort rule thường bao gồm các phần sau:
- Header: Định nghĩa hành động cụ thể mà Snort sẽ thực hiện khi rule được kích hoạt, ví dụ: alert (cảnh báo), log (ghi log), reject (từ chối).
- Protocol: Xác định giao thức mạng được áp dụng cho rule, như TCP, UDP hoặc ICMP.
- Source và Destination IP Addresses: Xác định địa chỉ IP nguồn và đích của lưu lượng mạng mà rule áp dụng.
- Source và Destination Ports: Định rõ cổng nguồn và đích của gói tin.
- Rule Options: Các tùy chọn quy tắc, bao gồm các tùy chọn payload và non-payload, xác định các yếu tố cụ thể mà Snort sẽ theo dõi trong gói tin.
Có ba rule chính trong snort:
- General Rule Options – Các tùy chọn quy tắc cơ bản cho Snort.
- Payload Rule Options – Các tùy chọn quy tắc giúp điều tra dữ liệu gói tin. Những tùy chọn này hữu ích để phát hiện các mẫu dữ liệu cụ thể.
- Non-Payload Rule Options – Các tùy chọn quy tắc tập trung vào dữ liệu không phải là dữ liệu gói tin. Những tùy chọn này sẽ giúp tạo ra các mẫu cụ thể và xác định các vấn đề mạng.
Ví dụ 1 snort rule về phát hiện nmap
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN nmap XMAS"; flow:stateless; flags:FPU,12; reference:arachnids,30; classtype:attempted-recon; sid:1228; rev:7;)
Trong rule này
- Action: “alert”, cho biết rằng khi rule kích hoạt, Snort sẽ tạo ra một cảnh báo.
- Protocol: Giao thức được áp dụng là TCP, chỉ áp dụng rule cho các gói tin TCP.
- Source và Destination IP/Port: Địa chỉ IP nguồn ($EXTERNAL_NET) và địa chỉ IP đích ($HOME_NET) đều được xác định là bất kỳ (any), tức là rule này áp dụng cho tất cả các cặp IP nguồn và IP đích.
- Cổng nguồn và cổng đích cũng được xác định là bất kỳ (any), tức là không giới hạn cổng nguồn và đích.
- Message: là “SCAN nmap XMAS”, cho biết rằng rule này được thiết kế để phát hiện các loại quét mạng XMAS thực hiện bởi công cụ nmap.
- Flow: “stateless”, cho biết rằng rule này làm việc dựa trên dữ liệu từng gói tin riêng lẻ mà không cần xem xét trạng thái kết nối.
- Flags: “FPU,12”, chỉ định các cờ trong header TCP mà gói tin cần phải có để kích hoạt rule. Trong trường hợp này, cờ “FPU” và cờ “12” được yêu cầu.
- Reference: “arachnids,30”, đây có thể là một tham chiếu đến một nguồn tài liệu hoặc thông tin bổ sung về loại tấn công hoặc mẫu mà rule này được thiết kế để phát hiện.
- Classtype: “attempted-recon”, cho biết rằng rule này liên quan đến việc phát hiện các hoạt động tìm kiếm thông tin trên hệ thống mà không được phép.
- SID và Revision: được gán cho rule là “1228”, đây là một số duy nhất được sử dụng để xác định rule.
- Revision : phiên bản của rule là 7
Các bạn có thể đọc qua các snort rule để biết thêm.
Như vậy, việc sử dụng Snort không chỉ là việc triển khai rule mà còn là việc tối ưu hóa các cấu hình và tùy chọn để đảm bảo hiệu suất và bảo mật tốt nhất cho mạng của bạn. Snort không chỉ là một công cụ phát hiện xâm nhập mạnh mẽ mà còn là một công cụ hữu ích trong việc bảo vệ mạng và giám sát lưu lượng mạng. Bằng cách hiểu rõ về cấu trúc rule và các tính năng của Snort, bạn có thể xây dựng một hệ thống bảo mật mạng hiệu quả và mạnh mẽ. Trong bài viết phần 2 chúng ta sẽ cùng đi khám phá sâu hơn về cách triển khai Snort và tận dụng các tính năng mạnh mẽ của nó để giám sát, phát hiện và ngăn chặn các mối đe dọa trong mạng.
Cảm ơn bạn đã đọc bài viết này. Nếu bạn có bất kỳ câu hỏi hoặc ý kiến đóng góp, đừng ngần ngại để lại bình luận bên dưới. Chúng ta hãy tiếp tục chia sẻ kiến thức và học hỏi từ nhau.
Danh sách bài viết:
Triển khai hệ thống phát hiện xâm nhập Snort trên Linux (phần 1) < here
Triển khai hệ thống phát hiện xâm nhập Snort trên Linux (phần 2)