Chủ Nhật, 12 tháng 6, 2011

Chương 6 -7 : IDS, snort

Môn học: Ứng dụng truyền thông và An ninh thông tin

Giảng viên: ThS. Tô Nguyễn Nhật Quang
Đề tài: Intrusion Detection System (IDS) –
Hệ thống phát hiện xâm nhập


Danh sách nhóm 21:
Hồ Trọng Nghĩa- 07520249
Nguyễn Văn Tuyển - 07520393
Nguyễn Vũ Toàn - 07520365
Nguyễn Huỳnh Hải Nam - 07520238
Trương Quang Thạnh - 07520324
Các phần chính
ž   1. Khái niệm về IDS
ž   2. Chức năng của IDS
ž   3. Kiến trúc của IDS
ž   4. Quy trình hoạt động của IDS
ž   5. Phân loại các mô hình IDS
ž   6. Các hành động tấn công – xâm nhập
ž   7. Phân tích trong IDS
ž   8. Các kỹ thuật phân tích – xử lí thường dùng trong IDS
ž   9. Phát hiện hành vi bất thường
ž   10. Những hạn chế của IDS
1. Khái niệm về IDS

1.1 Khái niệm về IDS
ž   IDS (Intrusion Detection System- hệ thống phát hiện xâm nhập) là một hệ thống giám sát lưu thông mạng, các hoạt động khả nghi và cảnh báo cho hệ thống, nhà quản trị.

ž   IDS cũng có thể phân biệt giữa những tấn công từ bên trong (từ những người trong công ty) hay tấn công từ bên ngoài (từ các hacker).

ž   IDS phát hiện dựa trên các dấu hiệu đặc biệt về các nguy cơ đã biết (giống như cách các phần mềm diệt virus dựa vào các dấu hiệu đặc biệt để phát hiện và diệt virus) hay dựa trên so sánh lưu thông mạng hiện tại với baseline (thông số đo đạc chuẩn của hệ thống) để tìm ra các hành vi khác thường
1.2 Lịch sử ra đời của IDS
ž   Khái niệm phát hiện xâm nhập xuất hiện qua một bài báo của James Anderson

ž   Các nghiên cứu về hệ thống phát hiện xâm nhập được nghiên cứu chính thức từ năm 1983 đến năm 1988 trước khi được sử dụng tại mạng máy tính của không lực Hoa Kỳ

ž   Cho đến tận năm 1996, các khái niệm IDS vẫn chưa được phổ biến, một số hệ thống IDS chỉ được xuất hiện trong các phòng thí nghiệm và viện nghiên cứu

ž   Đến năm 1997 IDS mới được biết đến rộng rãi và thực sự đem lại lợi nhuận với sự đi đầu của công ty ISS, một năm sau đó, Cisco nhận ra tầm quan trọng của IDS và đã mua lại một công ty cung cấp giải pháp IDS tên là Wheel.

ž   Hiện tại, các thống kê cho thấy IDS/IPS đang là một trong các công nghệ an ninh được sử dụng nhiều nhất và vẫn còn phát triển.
1.3 Phân biệt những hệ thống không phải là IDS
ž   Hệ thống đăng nhập mạng được sử dụng để phát hiện lỗ hổng đối với vấn đề tấn công từ chối dịch vụ (DoS) trên một mạng nào đó. Ở đó sẽ có hệ thống kiêm tra lưu lượng mạng.

ž   Các công cụ đánh giá lỗ hổng kiểm tra lỗi và lỗ hổng trong hệ điều hành, dịch vụ mạng (các bộ quét bảo mật).

ž   Các sản phẩm chống virus đã thiết kế để phát hiện phần mềm mã nguy hiểm như virus, Trojan horse, worm... Mặc dù những tính năng mặc định có thể rất giống hệ thống phát hiện xâm phạm và thường cung cấp một công cụ phát hiện lỗ hổng bảo mật hiệu quả.

ž   Tường lửa (firewall)

ž   Các hệ thống bảo mật/mật mã, ví dụ như VPN, SSL, S/MIME, Kerberos, Radius…

2. Chức năng của IDS

2. Chức năng của IDS
Chức năng quan trọng nhất của IDS là: giám sát – cảnh báo.

ž   Giám sát: lưu lượng mạng và các hoạt động khả nghi.

ž   Cảnh báo: báo cáo về tình trạng mạng cho hệ thống và nhà quản trị.

2. Chức năng của IDS
Chức năng chính của IDS được cụ thể bởi các hành động như:

ž   Nhận ra những hành vi giống như những cuộc tấn công mà hệ thống đã được cài đặt từ trước.

ž   Phân tích thống kê những luồng traffic không bình thường.

ž   Đánh giá và kiểm tra tính toàn vẹn của các file được xác định.

ž   Thống kê và phân tích các user và hệ thống đang hoạt động.

ž   Phân tích luồng traffic.

ž   Phân tích event log (ghi chú sự kiện).

2. Chức năng của IDS
Ngoài ra, IDS còn có thể giúp người quản trị xác định được các cuộc tấn công là tấn công từ bên trong hay bên ngoài.

Một chức năng nữa của IDS là tạo phản hồi khi xác định có tấn công. Những phản hồi này được người quản trị lập trình sẵn.
3. Kiến trúc của IDS

3. Kiến trúc của IDS
Một IDS bao gồm:

ž   Trung tâm điều khiển (The Command Console)

ž   Bộ cảm biến (Network Sensor)

ž   Bộ phân tích gói tin (The Network Tap)

ž   Thành phần cảnh báo (Alert Notification)

3.1 Trung tâm điều khiển
(The Command Console)

Trung tâm điều khiển là nơi mà IDS được giám sát và quản lí. Nó duy trì kiểm soát thông qua các thành phần của IDS, và Trung tâm điều khiển có thể được truy cập từ bất cứ nơi nào. Tóm lại Trung tâm điều khiển duy trì một số kênh mở giữa Bộ cảm biến (Network Sensor) qua một đường mã hóa, và nó là một máy chuyên dụng.

3.2 Bộ cảm biến
(Network Sensor)

Bộ cảm biến là chương trình chạy trên các thiết bị mạng hoặc máy chuyên dụng trên các đường mạng thiết yếu. Bộ cảm biến có một vai trò quan trọng vì có hàng nghìn mục tiêu cần được giám sát trên mạng.

3.3 Bộ phân tích gói tin
(Network Tap)

Bộ phân tích gói tin là một thiết bị phần cứng được kết nối trên mạng, không có địa chỉ IP, kiểm soát các luồng dữ liệu trên mạng và gửi cảnh báo khi phát hiện ra hành động xâm nhập.

3.4 Thành phần cảnh báo
(Alert Notification)

Thành phần cảnh báo có chức năng gửi những cảnh báo tới người quản trị. Trong các hệ thống IDS hiện đại, lời cảnh báo có thể ở dưới nhiều dạng như: cửa sổ pop-up, tiếng chuông, email, SNMP.

3.5 Vị trí đặt IDS trong hệ thống mạng

Tùy vào quy mô doanh nghiệp và mục đích mà ta có thể thiết kế vị trị cũng như kiến trúc của IDS khác nhau.

4. Quy trình hoạt động của IDS

ž   Một host tạo gói tin.

ž   Bộ cảm biến (Netword Sensor) trên hệ thống mạng đọc gói tin. (Bộ cảm biến được đặt ở vị trí sao cho có thể đọc được gói tin này).

ž   Chương trình phát hiện xâm nhập trên bộ cảm biến (Network Tap) so sánh gói tin với các tín hiệu được cài đặt trước. Khi có dấu hiệu xâm nhập, một cảnh báo được khởi tạo và gửi đến Trung tâm điều khiển (The Command Console).

ž   Trung tâm điều khiển nhận cảnh báo và chuyển cảnh báo đến người hay nhóm người được chỉ định từ trước để giải quyết.

ž   Phản hồi được khởi tạo theo quy định ứng với dấu hiệu xâm nhập này.

ž   Cảnh báo được lưu lại.

ž   Một báo cáo tóm tắt được tạo ra với chi tiết của sự cố này.
5. PHân loại các mô hình IDS

5. Phân loại các mô hình IDS

Có hai mô hình IDS chính là

Host – based IDS (H-IDS)

Network – based IDS (N-IDS)
5.1 Host – based IDS (H-IDS)
5.1 H-IDS
ž   Lợi thế:

  Có khả năng xác đinh user liên quan tới một event.

  HIDS có khả năng phát hiện các cuộc tấn công diễn ra trên một máy, NIDS không có khả năng này.

  Có thể phân tích các dữ liệu mã hoá.

  Cung cấp các thông tin về host trong lúc cuộc tấn công diễn ra trên host này.

5.1 H-IDS
ž   Hạn chế:

  Thông tin từ HIDS là không đáng tin cậy ngay khi sự tấn công vào host này thành công.

  Khi OS bị "hạ" do tấn công, đồng thời HIDS cũng bị "hạ".

  HIDS phải được thiết lập trên từng host cần giám sát.

  HIDS không có khả năng phát hiện các cuộc dò quét mạng (Nmap, Netcat…).

  HIDS cần tài nguyên trên host để hoạt động.

  HIDS có thể không hiệu quả khi bị DOS.

5.1 H-IDS
Centralized H-IDS
(Mô hình tập trung)
Distributed H-IDS
(Mô hình phân tán)
5.2 Network – based IDS
(N-IDS)
5.2 N-IDS
ž   Lợi thế:

  Quản lý được cả một network segment (gồm nhiều host)

  "Trong suốt" với người sử dụng lẫn kẻ tấn công
  Cài đặt và bảo trì đơn giản, không ảnh hưởng tới mạng

  Tránh DOS ảnh hưởng tới một host nào đó.

  Có khả năng xác định lỗi ở tầng Network (trong mô hình OSI).

  Độc lập với OS

5.2 N-IDS
Hạn chế:

Có thể xảy ra trường hợp báo động giả (false positive), tức không có intrusion mà NIDS báo là có intrusion.

Không thể phân tích các traffic đã được encrypt (vd: SSL, SSH, IPSec…)

NIDS đòi hỏi phải được cập nhật các signature mới nhất để thực sự an toàn

Có độ trễ giữa thời điểm bị attack với thời điểm phát báo động. Khi báo động được phát ra, hệ thống có thể đã bị tổn hại.

Không cho biết việc attack có thành công hay không.

Một trong những hạn chế là giới hạn băng thông
5.2 N-IDS
Traditional N-IDS
Mô hình truyền thống
Distributed N-IDS
Mô hình phân tán
6. Các hành động tấn công xâm nhập

6. Các hành động tấn công xâm nhập

Ngày này hoạt động tấn công xâm nhập rất đa dạng và phức tạp. Kỹ thuật ngày càng tinh vi và hệ thống của bạn ngày càng mong manh.


6. Các hành động tấn công xâm nhập
Dấu vết
ž   Sử dụng lỗ hổng

ž   Hoạt động mạng có tính chất chu kỳ

ž   Các lệnh không được đánh hoặc trả lời trong các session tự động

ž   Mâu thuẫn trong lưu lượng mạng

ž   Các thuộc tính không mong muốn

ž   Các vấn đề không giải thích được
7. Phân tích trong IDS

7. Phân tích trong IDS
IDS có hai loại phân tích chính là phân tích kiểm định (sử dụng trong IDS khoảng thòi gian) và phân tích online (sử dụng trong môi trường IDS thời gian thực).
7.1 Xử lí kiểm định

Các hành động sẽ được thu thập và theo 1 chu kì được xác định trước, dữ liệu sẽ được phân tích.
7.2 Xử lí online

Dữ liệu sẽ được xử lí ngay sau khi thu thập.
8. CÁc kỹ thuật phân tích – Xử lí dữ liệu thường dùng trong IDS

ž   Hệ thống Expert

ž   Phân tích dấu hiệu

ž   Phương pháp Colored Petri Nets

ž   Phân tích trạng thái phiên

ž   Phương pháp phân tích thống kê

ž   Neural Networks

ž   Phân biệt ý định người dùng

ž   Computer immunology Analogies

ž   Machine learning

ž   Việc tối thiểu hóa dữ liệu
9. PHát hiện hành vi bất thường

10. Hạn chế của IDS

10. Hạn chế của IDS
Cung cấp một “Giải pháp thần kì”

Quản lí sự cố phần cứng

Điều tra một cuộc tấn công

Phân tích toàn vẹn 100%

Chân thành cảm ơn thầy và các bạn đã lắng nghe
 -------------

2011


Đại học Công Nghệ Thông Tin

Khoa Mạng Máy Tính và Truyền Thông




Cấu hình
Nhóm 19
I.       Nguyễn Thế Anh                  07520512
II.    Nguyễn Trọng Đăng Trình  07520371
III. Nguyễn Tuấn Anh                07520011
IV. Nguyễn Anh Linh                 07520193
V.    Trương Đình Huy                 07520 151

 
Hệ thống IDS
GVHD: Ths. Tô Nguyễn Nhật Quang

 
Ứng dụng Truyền thông và ANTT

 

Mục lục


 I. Snort Fundamentals
1. Giới thiệu IDS :
a) IDS :
IDS- Intrusion Detection System/ Hệ thống phát hiện xâm phạm
IDS là một hệ thống phòng chống, nhằm phát hiện các hành động tấn công vào một mạng. Mục đích của nó là phát hiện và ngăn ngừa các hành động phá hoại đối với vấn đề bảo mật hệ thống, hoặc những hành động trong tiến trình tấn công như sưu tập, quét các cổng. Một tính năng chính của hệ thống này là cung cấp thông tin nhận biết về những hành động không bình thường và đưa ra các báo cảnh thông báo cho quản trị viên mạng khóa các kết nối đang tấn công này. Thêm vào đó công cụ IDS cũng có thể phân biệt giữa những tấn công bên trong từ bên trong tổ chức (từ chính nhân viên hoặc khách hàng) và tấn công bên ngoài (tấn công từ hacker).
            IDS có 2 dạng chính là :
ñ NIDS (Network IDS) : hệ thống IDS để bảo vệ cả hệ thống mạng , được sử dụng như một Gateway . Nhiệm vụ là ngăn chặng và quản lí các gói tin trước khi chúng được chuyển vào hệ thống .
ñ HIDS (Host IDS) : Chức năng chính là bảo vệ tài nguyên trên máy chủ và một số hệ thống như WebHost,Mailhost v.v...

b) Phân loại IDS :
Cách thông thường nhất để phân loại các hệ thống IDS (cũng như IPS) là dựa vào đặc điểm của nguồn dữ liệu thu thập được. Trong trường hợp này, các hệ thống IDS được chia thành các loại sau:
ñ   Host-based IDS (HIDS): Sử dụng dữ liệu kiểm tra từ một máy trạm đơn để phát hiện xâm nhập.
ñ   Network-based IDS (NIDS): Sử dụng dữ liệu trên toàn bộ lưu thông mạng, cùng với dữ liệu kiểm tra từ một hoặc một vài máy trạm để phát hiện xâm nhập.

·        NIDS
NIDS thường bao gồm có hai thành phần logic :
• Bộ cảm biến – Sensor : đặt tại một đoạn mạng, kiểm soát các cuộc lưu thông nghi ngờ trên đoạn mạng đó.
• Trạm quản lý : nhận các tín hiệu cảnh báo từ bộ cảm biến và thông báo cho một điều hành viên.
Một NIDS truyền thống với hai bộ cảm biến trên các đoạn mạng khác nhau cùng giao tiếp với một trạm kiểm soát.
Ưu điểm:
• Chi phí thấp : Do chỉ cần cài đặt NIDS ở những vị trí trọng yếu là có thể giám sát lưu lượng toàn mạng nên hệ thống không cần phải nạp các phần mềm và quản lý trên các máy toàn mạng.
• Phát hiện được các cuộc tấn công mà HIDS bỏ qua: Khác với HIDS, NIDS kiểm tra header của tất cả các gói tin vì thế nó không bỏ sót các dấu hiệu xuất phát từ đây. Ví dụ: nhiều cuộc tấn công DoS, TearDrop (phân nhỏ) chỉ bị phát hiện khi xem header của các gói tin lưu chuyển trên mạng.
• Khó xoá bỏ dấu vết (evidence): Các thông tin lưu trong log file có thể bị kẻ đột nhập sửa đổi để che dấu các hoạt động xâm nhập, trong tình huống này HIDS khó có đủ thông tin để hoạt động. NIDS sử dụng lưu thông hiện hành trên mạng để phát hiện xâm nhập. Vì thế, kẻ đột nhập không thể xoá bỏ được các dấu vết tấn công. Các thông tin bắt được không chỉ chứa cách thức tấn công mà cả thông tin hỗ trợ cho việc xác minh và buộc tội kẻ đột nhập.
• Phát hiện và đối phó kịp thời : NIDS phát hiện các cuộc tấn công ngay khi xảy ra, vì thế việc cảnh báo và đối phó có thể thực hiện được nhanh hơn. VD : Một hacker thực hiện tấn công DoS dựa trên TCP có thể bị NIDS phát hiện và ngăn chặn ngay bằng việc gửi yêu cầu TCP reset nhằm chấm dứt cuộc tấn công trước khi nó xâm nhập và phá vỡ máy bị hại.
Có tính độc lập cao: Lỗi hệ thống không có ảnh hưởng đáng kể nào đối với công việc của các máy trên mạng. Chúng chạy trên một hệ thống chuyên dụng dễ dàng cài đặt; đơn thuần chỉ mở thiết bị ra, thực hiện một vài sự thay đổi cấu hình và cắm chúng vào trong mạng tại một vị trí cho phép nó kiểm soát các cuộc lưu thông nhạy cảm.
Nhược điểm
• Bị hạn chế với Switch: Nhiều lợi điểm của NIDS không phát huy được trong các mạng chuyển mạch hiện đại. Thiết bị switch chia mạng thành nhiều phần độc lập vì thế NIDS khó thu thập được thông tin trong toàn mạng. Do chỉ kiểm tra mạng trên đoạn mà nó trực tiếp kết nối tới, nó không thể phát hiện một cuộc tấn công xảy ra trên các đoạn mạng khác. Vấn đề này dẫn tới yêu cầu tổ chức cần phải mua một lượng lớn các bộ cảm biến để có thể bao phủ hết toàn mạng gây tốn kém về chi phí cài đặt.
• Hạn chế về hiệu năng: NIDS sẽ gặp khó khăn khi phải xử lý tất cả các gói tin trên mạng rộng hoặc có mật độ lưu thông cao, dẫn đến không thể phát hiện các cuộc tấn công thực hiện vào lúc "cao điểm". Một số nhà sản xuất đã khắc phục bằng cách cứng hoá hoàn toàn IDS nhằm tăng cường tốc độ cho nó. Tuy nhiên, do phải đảm bảo về mặt tốc độ nên một số gói tin được bỏ qua có thể gây lỗ hổng cho tấn công xâm nhập.
• Tăng thông lượng mạng: Một hệ thống phát hiện xâm nhập có thể cần truyền một dung lượng dữ liệu lớn trở về hệ thống phân tích trung tâm, có nghĩa là một gói tin được kiểm soát sẽ sinh ra một lượng lớn tải phân tích. Để khắc phục người ta thường sử dụng các tiến trình giảm dữ liệu linh hoạt để giảm bớt số lượng các lưu thông được truyền tải. Họ cũng thường thêm các chu trình tự ra các quyết định vào các bộ cảm biến và sử dụng các trạm trung tâm như một thiết bị hiển thị trạng thái hoặc trung tâm truyền thông hơn là thực hiện các phân tích thực tế. Điểm bất lợi là nó sẽ cung cấp rất ít thông tin liên quan cho các bộ cảm biến; bất kỳ bộ cảm biến nào sẽ không biết được việc một bộ cảm biến khác dò được một cuộc tấn công. Một hệ thống như vậy sẽ không thể dò được các cuộc tấn công hiệp đồng hoặc phức tạp.
• Một hệ thống NIDS thường gặp khó khăn trong việc xử lý các cuộc tấn công trong một phiên được mã hoá. Lỗi này càng trở nên trầm trọng khi nhiều công ty và tổ chức đang áp dụng mạng riêng ảo VPN.
• Một số hệ thống NIDS cũng gặp khó khăn khi phát hiện các cuộc tấn công mạng từ các gói tin phân mảnh. Các gói tin định dạng sai này có thể làm cho NIDS hoạt động sai và đổ vỡ.

·        HIDS:(Host IDS)
Host-based IDS tìm kiếm dấu hiệu của xâm nhập vào một host cục bộ; thường sử dụng các cơ chế kiểm tra và phân tích các thông tin được logging. Nó tìm kiếm các hoạt động bất thường như login, truy nhập file không thích hợp, bước leo thang các đặc quyền không được chấp nhận.
Kiến trúc IDS này thường dựa trên các luật (rule-based) để phân tích các hoạt động.
Ví dụ 1:
Đặc quyền của người sử dụng cấp cao chỉ có thể đạt được thông qua lệnh su-select user, như vậy những cố gắng liên tục để login vào account root có thể được coi là một cuộc tấn công.
Ưu điểm
• Xác định được kết quả của cuộc tấn công: Do HIDS sử dụng dữ liệu log lưu các sự kiện xảy ra, nó có thể biết được cuộc tấn công là thành công hay thất bại với độ chính xác cao hơn NIDS. Vì thế, HIDS có thể bổ sung thông tin tiếp theo khi cuộc tấn công được sớm phát hiện với NIDS.
• Giám sát được các hoạt động cụ thể của hệ thống: HIDS có thể giám sát các hoạt động mà NIDS không thể như: truy nhập file, thay đổi quyền, các hành động thực thi, truy nhập dịch vụ được phân quyền. Đồng thời nó cũng giám sát các hoạt động chỉ được thực hiện bởi người quản trị. Vì thế, hệ thống host-based IDS có thể là một công cụ cực mạnh để phân tích các cuộc tấn công có thể xảy ra do nó thường cung cấp nhiều thông tin chi tiết và chính xác hơn một hệ network-based IDS.
• Phát hiện các xâm nhập mà NIDS bỏ qua: chẳng hạn kẻ đột nhập sử dụng bàn phím xâm nhập vào một server sẽ không bị NIDS phát hiện.
• Thích nghi tốt với môi trường chuyển mạch, mã hoá: Việc chuyển mạch và mã hoá thực hiện trên mạng và do HIDS cài đặt trên máy nên nó không bị ảnh hưởng bởi hai kỹ thuật trên.
• Không yêu cầu thêm phần cứng: Được cài đặt trực tiếp lên hạ tầng mạng có sẵn (FTP Server, WebServer) nên HIDS không yêu cầu phải cài đặt thêm các phần cứng khác.
Nhược điểm
• Khó quản trị : các hệ thống host-based yêu cầu phải được cài đặt trên tất cả các thiết bị đặc biệt mà bạn muốn bảo vệ. Đây là một khối lượng công việc lớn để cấu hình, quản lí, cập nhật.
• Thông tin nguồn không an toàn: một vấn đề khác kết hợp với các hệ thống host-based là nó hướng đến việc tin vào nhật ký mặc định và năng lực kiểm soát của server. Các thông tin này có thể bị tấn công và đột nhập dẫn đến hệ thống hoạt đông sai, không phát hiện được xâm nhập.
• Hệ thống host-based tương đối đắt : nhiều tổ chức không có đủ nguồn tài chính để bảo vệ toàn bộ các đoạn mạng của mình sử dụng các hệ thống host-based. Những tổ chức đó phải rất thận trọng trong việc chọn các hệ thống nào để bảo vệ. Nó có thể để lại các lỗ hổng lớn trong mức độ bao phủ phát hiện xâm nhập.
Ví dụ 2:
Như một kẻ tấn công trên một hệ thống láng giềng không được bảo vệ có thể đánh hơi thấy các thông tin xác thực hoặc các tài liệu dễ bị xâm phạm khác trên mạng.
• Chiếm tài nguyên hệ thống : Do cài đặt trên các máy cần bảo vệ nên HIDS phải sử dụng các tài nguyên của hệ thống để hoạt động như: bộ vi xử lí, RAM, bộ nhớ ngoài.

2. Các thành phần cơ bản:
Snort bao gồm 4 thành phần chính.
1.      Packet capture, thực hiện bởi LibPcap hoặc WinPcap
2.      Preprocessor nhiệm vụ là xem xét các gói tin trước khi chuyển tới engine phát hiện thật sự
3.      Detection Engine – Tại đây cái rules sẽ được áp dụng lên các gói tin
4.      Output – xuất ra kết quả, thông báo.
File chính lưu trữ toàn bộ cấu hình lõi của Snort là file snort.conf. File này có một vài phần chính:
·        Variables
·        Preprocessors
·        Output Plug-ins
·        Rulesets
Một điều lưu ý khi định nghĩa các rule cho Snort là mặc dù chúng ta có thể viết các rule này vào file snort.conf nhưng như vậy sẽ không tốt. Việc đó gây khó khăn khi chúng ta cần kiểm tra, tốt hơn hết là nên viết ra thành các file riêng biệt và định nghĩa vị trí các file này trong file snort.conf (kiểu giống như chia ra thành các module, khi cần bỏ các khoản luật nào thì chỉ cần bỏ dòng config chỉnh tới vị trí của file đó thôi).
Sau đây là một vài chỉnh sửa cần thiết khi đã cài đặt snort
§ Variable HOME_NET : chỉnh về địa chỉ mạng hiện tại ví dụ 192.168.1.0/24
§ Các đường dẫn sau đây
(lưu ý : $SnortInstallationPath là đường dẫn tới thư mục cài đặt snort, mặc định là C:\Snort, tùy ý bạn)
include classification.config => include $SnortInstallationPath\etc\classification.confg
include reference.conf          => include $SnortInstallationPath\etc\reference.config
3. Cài đặt Snort

Một số thư viện và chương trình yêu cầu trước khi cài đặt Snort

Đối với người dùng window, khi tải gói cài đặt binary (file .exe) thì chỉ cần cài đặt thêm WinPcap
Tải WinPcap mới nhất về theo địa chỉ: http://www.winpcap.org/install/default.htm
Tải Snort về theo địa chỉ : https://www.snort.org/snort-downloads? (chọn bản binary .exe cho windows).

Cài đặt Snort

Cài đặt Snort như các chương trình thông thường, cứ để mặc định.
Sau khi cài đặt, tạo folder  “log” trong thư mục $SnortInstallationPath\bin
Trong thư mục vừa tạo tạo thêm 1 file alert.ids
4.    Cấu hình và thực thi Snort
Quy ước đường dẫn cài đặt Snort là F:\
1.      Mở file snort.config và chỉnh sửa (lưu ý, nên lưu lại 1 bản backup đề phòng chỉnh sửa xong gặp lỗi).
2.      Chỉnh sửa 1 số biến

var HOME_NET
var HOME_NET  địa chỉ mạng
var EXTERNAL_NET
var EXTERNAL_NET !$HOME_NET
var include reference
var include F:\Snort\etc\reference.config
var RULE_PATH….\rules
var RULE_PATH F:\Snort\rules
# include threshold.conf
var F:\Snort\etc\threshold.conf
dynamicpreprocessor directory ….
dynamicpreprocessor directory F:\Snort\lib\snort_dynamicpreprocessor
dynamicengine
F:\Snort\lib\snort_dynamicengine\sf_engine.dll

Chạy thử snort
Mở comand promt và cd tới F:\Snort\bin gõ lệnh snort –W. Khi này thì trên command promt sẽ xuất hiện các card mạng đang enable.
*     Một điểm đáng quan tâm là hiện nay Snort vẫn chưa chính thức hỗ trợ các card mạng không dây.
Để thử bắt gói tin ta sẽ sử dụng lệnh sau:
            snort –ix –v
Trong đó x là số thứ tự card mạng mà bạn muốn bắt gói tin từ đó. Trong hình trên chúng ta thử ping google.com và được reply lại từ địa chỉ 74.125.71.105 và Snort cũng đã bắt được gói tin đói (gói ICMP ECHO REPLY)
5.      Logging với Snort
Mục đích của việc này là để bạn ghi lại toàn bộ hoạt động để dễ dàng kiểm tra lại khi cần thiết
Sử dụng thêm option –l trong câu lệnh snort
snort –ix –dev –l \snort\log

II. SNORT LÀM VIỆC NHƯ MỘT HỆ THỐNG IDS
Một hệ thống IDS cần phải tuân theo các rule và phải có một cách nào đó để cảnh báo cho người quản trị biết được khi một rule bị vi phạm.
1.      Đối với một hệ thống IDS, rule là tất cả:

Snort sử dụng các rule để kiểm tra chữ ký và các vi phạm. Những rule này có thể được tạo ra hoặc điều chỉnh để sử dụng trong ứng dụng.
Ví dụ cách sử dụng Snort như là một hệ thống IDS:
%systemroot%\snort\snort –dev -1 \snort\log –c snort.conf
Từ khóa “-c” có nghĩa là áp dụng các rule trong file snort.conf cho các gói tin được xử lý bởi snort.
Các rule của snort bao gồm 2 phần:
o   Rule Header: chỉ hành động của rule,  giao  thức, hướng xử lý, địa chỉ IP đích và nguồn, port đích và port nguồn.
o   Các lựa chọn của rule: là các thông điệp cảnh báo và các đặc tả xác định gói tin.
VD:
Rule Header
Rule Options
alert tcp any any -> any 80     (content: “adult”; msg: “Adult Site Access”)

2.      Header của rule:
VD:
Rule Action
Protocol
Source IP
Source Port
Direction
Destination IP
Destination Port
alert
tcp
any
any
->
any
80

Đầu tiên ta phải định nghĩa rule action. Rule action là hành động sẽ xảy ra khi một gói tin khớp với các điều kiện định nghĩa trong rule.
Bảng các rule action:
Rule Action
Mô tả
alert
Tạo một cảnh báo với bất kì phương thức nào được định nghĩa. Đồng thời cũng log gói tin với phương thức được định nghĩa bất kì.
log
Log gói tin theo định nghĩa.
pass
Snort sẽ bỏ qua gói tin này.
activate
Tạo một cảnh báo và kích hoạt dynamic rule.
dynamic
Duy trì ở trạng thái không sử dụng nếu không có rule khác gọi nó. Nếu được gọi, nó hành xử tương tự như một log rule.

Sau khi đã định nghĩa hành động, ta cần phải xác định giao thức. Trong vd ở đầu mục, ta định nghĩa giao thức của gói tin sẽ được xử lý là TCP. Snort hỗ trợ các giao thức: TCP, UDP, ICMP, và IP.
Tiếp đến là ta cấu hình địa chỉ IP. Từ khóa “any” trong ví dụ có nghĩa là mọi địa chỉ IP. Snort sử dụng định dạng netmask để chỉ định subnet mask. Từ đó, một địa chỉ lớp A đầy đủ sẽ có netmask là /8, địa chỉ lớp B đầy đủ sẽ là /16 và lớp C là /32.
Ta có thể định nghĩa một host đơn lẻ hoặc một subnet, snort có thể làm việc với một nhóm các địa chỉ IP trong cùng một rule. Ta tạo ra một IP list. Cú pháp như trong VD sau:
Alert tcp any any -> [10.0.10.0/24, 10.10.10.0/24] any (content: “Password”; msg: “Password Tranfer Possible!”;)
Sau khi chỉ định IP, ta cần phải xác định port cho snort kiểm tra. Các port như 80, 23… và nếu để “any” có nghĩa là snort sẽ kiểm tra trên tất cả các port đối với địa chỉ IP đó. Vd các kiểu định nghĩa port:
Log tất cả traffic từ tất cả địa chỉ IP trên tất cả các port tới port 23 của mạng 10.0.10.0/24:
Log tcp any any -> 10.0.10.0/24 23
Log tất cả traffic từ tất cả địa chỉ IP trên tất cả các port tới tất cả các port trong khoảng từ 1 tới 1024 tới mọi host trong mạng 10.0.10.0/24:
Log tcp any any -> 10.0.10.0/24 1:1024
Log toàn bộ traffic từ mọi địa chỉ IP có port nhỏ hơn hoặc bằng 1024 tới mọi host trên mạng 10.0.10.0/24 có port lớn hơn hoặc bằng 1024:
Log tcp any :1024 -> 10.0.10.0/24 1024:
Log toàn bộ traffic từ mọi host trừ (ta dùng dấu: “!”) host 172.16.40.50 trên mọi port tới mọi host trong mạng 10.0.10.0/24 trên mọi port:
Log tcp ! 172.16.40.50/32 any -> 10.0.10.0/24 any
Log toàn bộ traffic từ mọi host trên mọi port tới tới mạng 10.0.10.0/24 đang làm việc trên các port ngoài port 23:
Log tcp any any -> 10.0.10.0/24 ! 23
Kí hiệu “->” ta sử dụng trong các ví dụ trên chính là kí hiệu dùng để xác định hướng kiểm tra gói tin của snort. Ta có thể dùng “<>” để snort kiểm tra gói tin từ cả 2 hướng:
Log tcp 10.0.10.0/2 any <> 172.16.30.0/24 23

3.      Các Rule Option:
Snort thể hiện tính linh động và các chức năng của nó thông qua các rule option. Các rule option phân cách nhau bằng dấu “;”  một rule option bao gồm: keyword: “value”. VD: msg: “text”.
Một số keyword thông dụng:
Keyword
Mô tả
msg
In ra một thông điệp
ttl
Chỉ định điều kiện về giá trị Time To Live của IP header của gói tin mà rule muốn capture.
id
Chỉ định điều kiện về giá trị phân mảnh của một IP header cụ thể của gói tin mà rule muốn capture.
flags
Chỉ định điều kiện về các cờ tcp của gói tin.
ack
Chỉ định điều kiện về TCP ack của gói tin .
content
Chỉ định điều kiện về phần nội dung của gói tin.

Ngoài ra còn nhiều keyword khác nữa, có thể xem thêm trong mục help của snort.
a.      Msg option : Khi dùng msg option trong một rule, bộ máy log và cảnh báo của snort sẽ được báo là có một thông điệp cần phải được chèn vào một packet dump hay trong một cảnh báo. Vd:
msg: “thông điệp nào đó”;
b.      Đối với ttl option, snort sẽ biết một giá trị Time To Live cụ thể để làm điều kiện lọc. Chỉ gói tin nào có giá trị bằng đúng như vậy mới được lọc, điều này hữu dụng trong việc phát hiện hành động traceroute. VD:
ttl: “time-value”;
c.      Id option làm điều kiện để snort lọc gói tin với một giá trị chính xác của trường Fagment trong IP header. VD:
id: “id-value”;
d.      Flag option thì có các option phụ, bao gồm các cờ dùng làm điều kiện lọc. Các cờ được định nghĩa trong rule bởi các kí tự đơn lẻ:
·        F: FIN
·        S: SYN
·        R: RST
·        P: PSH
·        A: ACK
·        U: URG
·        2: Reserved bit 2
·        1: Reserved bit 1
·        0: không thiết lập cờ tcp

Các toán tử logic chuẩn cũng có thể được dùng cho các cờ, toán tử “+” chỉ tất cả các cờ, “*” chỉ nhiều cờ, và toán tử “!” dùng để chỉ tất cả trừ cờ được định nghĩa. Các reserved bit có thể được dùng để phát hiện hành vi quét hoặc truy dấu IP stack. Vd:
flags: value(s);
Vd rule dùng để phát hiện các SYN – FIN scan:
alert any any -> 10.0.10.0/24 any (flags: SF; msg: “SYN FIN Scan Possible”;)
e.      Ack option: ack option trong rule làm điều kiện để lọc gói tin dựa vào giá trị ACK cụ thể trong TCP header của gói tin. Công cụ network mapping Nmap dùng cờ ACK để quyết định xem một host từ xa có active hay không. VD:
ack: “ack-value”
f.       Từ khóa content: là từ khóa quan trọng nhất của snort. Khi sử dụng từ khóa này trong một rule, snort sẽ kiểm tra phần nội dung của một gói tin và đối chiếu với giá trị của keyword content để lọc. Snort sử dụng thuật toán Boyer-Moore để làm công việc đối chiếu đó.
Dữ liệu có thể nhập vào dưới dạng plaintext hoặc dưới dạng mixed binary bytecode. Cú pháp mẫu:
content: “content-value”;

4.      Một số rule ví dụ đơn giản:
Log tất cả các traffic đang cố kết nối tới port telnet:
log tcp any any -> 10.0.10.0/2 23
Log ICMP traffic tới mạng 10.0.10.0:
log icmp any any -> 10.0.10.0/24 any
Cho phép tất cả các truy cập web đi qua, không log:
pass tcp any 80 -> any 80
Tạo một cảnh báo với thông điệp bất kỳ:
alert tcp any any -> any 23 (msg: “Telnet Connection Attemp”;)
Cảnh báo khi có các hành vi scan SYN/FIN trong mạng:
alert tcp any any -> 10.0.10.0/24 any (msg: “SYN-FIN scan detected”; flags: SF;)
Cảnh báo khi có hành vi scan TCP NULL trong mạng:
alert tcp any any -> 10.0.10.0/24 any (msg: “NULL scan detected”; flags: 0;)
Cảnh báo khi có truy dấu vết OS :
alert tcp any any -> 10.0.10.0/24 any (msg: “O/S Fingerprint detected”; flags: S12;)
Lọc nội dung:
alert tcp any $HOME_NET -> !$HOME_NET any (content: “Hello”; msg: “Hello Packet”;)

5.      Snort rule ID:
Là một option được thêm vào Snort để phân loại nhiều loại Snort rule khác nhau. Nó cho phép người ở nhiều nơi khác nhau có thể sử dụng cùng một số cho rule của họ, và nó cũng làm cho các rule trở nên có tổ chức. Có nhiều vùng Snort ID cần nhớ:
·        <100: để dùng trong tương lai.
·        101 tới 1,000,000: dành cho các distribution rule của Snort.org
·        >=1,000,001: dùng cho các rule nội bộ.
Khi phát triển một rule nội bộ của riêng mình, miễn là rule đó là một số duy nhất đại diện cho mỗi rule, và số đó phải lớn hơn 1,000,000, thì sẽ không bị vấn đề SID. Tuy nhiên, tốt hơn là ta nên dùng một số lớn hơn vd như 4,000,000 hoặc lớn hơn nữa, vì các tổ chức viết các snort rule vd như Bleeding Snort có thể đã dùng vùng ID nhỏ hơn rồi.
6.      Tạo một ruleset đơn giản
Mục tiêu:  tạo một rule log tất cả TCP traffic, cảnh báo khi có ping, và cảnh báo khi có sử dụng từ “password”.
·        B1: mở notepad và gõ vào:

Log tcp any any -> any any (msg: “TCP Traffic Logged”; sid: 10000001;)
Alert icmp any any -> any any (msg: “ICMP Traffic Alerted”; sid: 10000002)
Alert tcp any any -> any any (content: “password”; msg: “Possible Password Transmitted”; sid: 10000003;)
·        B2: Lưu file với đường dẫn: C:\snort\rules\”myrule.rules” và đóng notepad lại. Phải để dấu ngoặc kép như vậy để Windows không cho nó một phần mở rộng là txt mà lấy “rules” làm phần mở rộng.
Test các Ruleset:
7.      Các tùy chọn Meta Data
Chứa các tính năng chi tiết của các rule.
·        Msg: được sử dụng để chèn một message cho người dùng đọc
·        Sid: được sử dụng để định nghĩa một ID riêng duy nhất cho một rule trong Snort.
·        Classtype: được dùng để phân loại các loại sự kiện
·        Priority: được sử dụng để định nghĩa các mức độ ưu tiên của sự kiện
·        Reference: Được sử dụng để định nghĩa một URL nhằm cung cấp thêm thông tin về sự kiện
·        Rev:được sử dụng để định nghĩa số lần được duyệt lại của rule

   Bảng classtype:
Classtype
Decription
Priority
Attempted-admin
Attempted-user
Shellcode-detect
Successful-admin
Trojan-activity
Web-application attack
Attempted-recon
Suspicuous-login
Successful-dos
Unusual-client-port-   connection
Icmp-activity
Network-scan
Attempted administrator privilege gain
Attempted user privilege gain
Executable code was detected
Successful administrator privilege gain
A network Trojan was detected
Web application attack
Attempted information leak
An attempted login using a suspicious user name detected
Denial-of-service attack
A network client was using an unusual port

Generic ICMP event
Detection of a network scan
High
High
High
High
High
High
Medium
Medium
Medium
Medium
Low
Low


8.      Các rule đã được thiết lập sẵn:
Một số IDS rule cơ bản đã được thiết lập sẵn và cho phép ta chọn sử dụng trong quá trình cài đặt Snort. Ngoài ra có thể download nhiều rule khác tại trang www.snort.org.
Có nhiều lựa chọn về thời điểm nhận Snort rule. Nếu muốn nhận các real-time rule, với các option mới nhất, phải là subscriber để nhận các Sourcefice VRT-certified rule. Các rule dành cho subscriber là những cái ta cần khi muốn xác định các vấn đề bảo mật, thường là những rule mới có trong ngày sử dụng cho các lỗ hổng bảo mật mới được giới thiệu.
Cách thứ hai để download các rule được thiết lập sẵn là đăng ký thành viên trên trang www.snort.org. Các thành viên đã đăng ký có thể nhận được tất cả các snort rule mới nhất, nhưng các rule đó chỉ có khi chúng đã được cung cấp cho các Sourcefice subscriber.
Người dùng không đăng ký trên trang www.snort.org cũng có thể download snort rule đã thiết lập sẵn. Họ chỉ có thể download các ruleset cung cấp kèm theo bản release chính thức của Snort.
Ta có thể kiểm tra các rule đã được thiết lập sẵn qua các bước như sau:
·        B1: Download rule về.
·        B2: copy các .rules file vào thư mục C:\Snort\rules.
·        B3: Truy cập tới thư mục C:\Snort\rules.
·        B4: Mở các file .rules xem
9.      Kiểm tra rule DDoS:
Tấn công từ chối dịch vụ là một trong những kiểu tấn công "cổ điển" nhưng chưa bao giờ mất đi tính nguy hiểm đối với một hệ thống mạng.
DDoS gây nghẽn một website hay một cơ sở hạ tầng, khiến người sử dụng không thể truy cập giống như hiện tượng nghẽn mạng di động trong dịp lễ tết do có quá nhiều người gọi cùng lúc. Phương pháp này bị coi là "bẩn thỉu" nhưng đem lại hiệu quả tức thì: website bị tê liệt kéo dài cho tới khi cuộc tấn công chấm dứt.
Bản chất của DDoS là không thể khống chế mà chỉ có giảm giảm bớt cường độ tấn công. Việc phát hiện kịp thời có thể giúp phần nào ngăn ngừa rất nhiều cuộc tấn công từ chối dịch vụ. Ví dụ khi đang bị tấn công, chủ website có thể mở rộng băng thông dù đây là giải pháp rất tốn kém.
Dưới đây là ví dụ mẫu:
alert tcp  $EXTERNAL_NET any -> $HOME_NET 27665
(msg: “DDOS Trin00 Attacker to Master default startup password”);flow: established,to_server;
content:“Betaalmostdone”;reference:arachnids,197; classtype:attempted-dos;sid: 233, rev: 3;)

 
 





Để kiểm tra DDoS rule, ta chỉnh sửa trong file ddos.rules nằm trong thư mục C:\Snort\rules
10. Kiểm tra rule Backdoor:
Trên máy chủ thường có các cổng dịch vụ chính thức, được xem là "cổng chính". Khi một máy chủ nào đó đã bị thâm nhập và đã đoạt được chủ quyền, kẻ tấn công cài vào máy chủ một dịch vụ nào đó để tạo "cổng sau" nhằm mục đích để trở lại máy chủ này một cách dễ dàng và kín đáo khi nào cần.
alert tcp $HOME_NET 12345:123456 -> $EXTERNAL_NET any
(msg: “BACKDOOR netbus active”);
flow: from_server,established; content “NetBus”;
reference:arachnids,401; classtype:misc-activity;
sid: 109, rev: 5;)

 

Khi thiết lập rule này, ta có thể phát hiện khi backdoor được cài vào hệ thống. Dưới đây là ví dụ mẫu cho rule để phát hiện backdoor:





Để kiểm tra backdoor rule, ta chỉnh sửa trong file backdoor.rules nằm trong thư mục C:\Snort\rules
11. Kiểm tra rule khi bị Web attack:
Một trong những phương thức tấn công phát triển nhanh nhất là tấn công trên các dịch vụ web. Từ khi các dịch vụ web bùng nổ, chúng đã trở thành mục tiêu tấn công cho các hacker từ nghiệp dư cho đến chuyên nghiệp. Do đó, Snort cũng có nhiều rule được thiết kế để kiểm tra các cuộc tấn công web.
Dưới đây là một rule mẫu nằm trong file nằm trong thư mục C:\Snort\rules:
alert tcp $EXTERNAL_NET 12345:123456 -> $EXTERNAL_NET any
(msg: “WEB-attack etc/shadow access”);
flow: to_server,established; content “/etc/shadow”;nocase;
classtype:web-application-activity;sid: 109, rev: 5;)

 
 




Để kiểm tra web attack rule, ta chỉnh sửa trong file web-attacks.rules nằm trong thư mục C:\Snort\rules

12. Kiểm tra rule dành cho IIS Server:
Khi Microsoft IIS Web Server ngày càng phổ biến, thì các cuộc tấn công lên hệ thống server này gia tăng theo cấp số mũ. Bởi vì thế, có một ruleset dành riêng cho IIS Server. Vd một ISS rule:
Alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg: “WEB-IIS Directory transversal attempt”; flow: to_server, established; content: “..|5C|..”; reference: bugtraq, 2218; reference:cve, 1999-0229; classtype: web-application-attack; sid: 974; rev: 10;)
Rule này xác định một lỗi bảo mật nổi tiếng: khi một người chỉ cần nhập vào một URL là đã có thể truy cập vào máy tính. Hành động này gọi là Directory Transversal Attack, attacker dùng ../.. trong URL như một phần của cuộc tấn công.
Trong rule này, cảnh báo được thiết lập trên TCP traffic hướng từ mạng bên ngoài trên tất cả các port tới các webserver trên các webserver port. Kết nối phải được thiết lập và hướng về phía server. Điểm mấu chốt của rule này đó chính là “..|5C|..” trong content option của rule. Nó chính là “../..” chuyển đổi từ mã ASCII. Điều này đã được phân loại là kiểu web attack, có Snort ID là 974 và có 10 luật phân nhánh.
Có thể kiểm tra các IIS rule qua các bước:
·        B1: tới thư mục C:\Snort\rules.
·        B2: Mở file web-iis lên bằng WordPad.
·        B3: xem một dòng rule nào đó, vd: Code Red exploit .ida? trong nội dung của rule:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-IIS ISAPI .ida attempt"; flow:to_server,established; uricontent:".ida?"; nocase; reference:arachnids,552; reference:bugtraq,1065; reference:cve,2000-0071; classtype:web-application-attack; sid:1243; rev:11;)
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-IIS ISAPI .ida access"; flow:to_server,established; uricontent:".ida"; nocase; reference:arachnids,552; reference:bugtraq,1065; reference:cve,2000-0071; classtype:web-application-activity; sid:1242; rev:10;)

Đây là rule dùng để phát hiện worm Code Red trong hệ thống WebServer IIS.
Worm Code Red khai thác một lổ hổng bảo mật trong phần mềm lập chỉ mục của IIS. Nó phát tán qua lỗi buffer overflow bằng cách sử dụng một chuỗi dài các ký tự ‘N’ lập lại để làm tràn bộ đệm, cho phép worm thực thi đoạn mã lệnh tùy ý là lây nhiễm vào máy tính.
III. Cấu hình Snort để sử dụng với Cơ sở dữ liệu
1. Snort Output Plug-in
Cho đến nay, chúng ta có thể thấy Snort phát sinh một lượng lớn dữ liệu trong các form cảnh báo, log và các thứ khác. Việc đọc dữ liệu trên màn hình trong khi Snort đang chạy là không thể. Vì thế ta cần phải có một số công cụ giúp cho việc đọc dữ liệu.
Snort cung cấp một vài hộp thoại output qua việc sử dụng output plug-in. Trong phần này, ta sẽ cấu hình Snort để xuất thông tin vào MySQL database. Snort không giới hạn việc sử dụng MySQL database, ta có thể output Snort tới Oracle, SQL Server, một vài UNIX ODBC database.
Để gửi logs và cảnh báo cho database, ta có thể hướng Snort truyền dữ liệu này tới remote loggin server qua Syslog. Lệnh để output tới định dạng Syslog: output alert_syslog: LOG_LOCAL2LOG_ALERT. Nếu ta muốn gửi dữ liệu tới remote server, ta cần phải đổi thông tin cục bộ với thông tin remote server.
Lệnhoutput trong định dạng tcpdump: output log_tcpdump: snort.dump
Trong file cấu hình snort.conf, ta có thể cấu hình kiểu output nào nếu muốn. Trong phần này, chúng ta sẽ cấu hình hệ thống để output database.
2.      Cấu hình Snort liên kết database
Ta phải khai báo database cho Snort và đưa cho nó thông tin cần thiết để tạo kết nối.
= Hiệu chỉnh File Snort.Conf
1.      Mở thư mục C:\Snort\etc
2.      Dùng WordPad mở Snort.
3.      Cuộn xuống file Output database plug-in
4.      Thêm lệnh:
Output database: log, mysql, user=roott password=root dbname=snortdb1 host=localhost
Lưu và đóng file snort.conf

3.   Cài đặt MySQL vào Snort
Để Snort sử dụng database, ta phải xây dựng nó. Ở phần này, ta sẽ làm việc với lượng lớn MySQL database. Chú ý là trên Windows, Snort, MySQL sẽ tốn nhiều tài nguyên, vì thế cần quản trị và phần cứng platform tốt
= Cài đặt MySQL
1.      Mở mysql-essential-5.1.49-win32.msi
2.      Click Next
3.      Chọn Custom à Next
4.      Chọn Change (để chúng ta có thể cài ở nơi mình thích)
5.      Trong tên Folder gõ C:\Snort\mysql à OK à Next à Install
6.      Chọn Skip Sign-Up à Next
7.      Check  vào Configure MySQL Server Now à Finish
8.      Next
9.      Chọn Standard Configuration à Next
10. Check Include BIN Directory In Windows PATH à Next
11. Chọn Root Password là root  (Không check Enable Root Access or Create An Anonymous Account) à Next
12. Để bắt đầu cấu hình, chọn Excute à Finish (kết thúc cài đặt)

= Tạo cơ sở dữ liệu Snort:
1.      Truy xuất thư mục C:\Snort\schemas, file create_mysql sẽ là file chúng ta sử dụng để xây dựng cơ sở dữ liệu.
2.      Chọn Startà All programsà MySQLàMySQL Server 5.0à MySQL Command Line Client.
3.      Gõ password cho MySQL là root
4.      Gõ lệnh create database snortdb1; à create database archivedb1; à show database;
5.      Kiểm tra 2 database mới được liệt kê
6.      Để qua database mới gõ connect snortdb1;
7.      entersource C:\Snort\schemas\create_mysql
8.      Show table; (để hiễn thị bảng trong quá trình tạo script)
9.      Để chọn qua database mới, chọn connect archivedb1;
10. entersource C:\Snort\schemas\create_mysql
11. show tables;
12. Mysql > prompt à quit;


4.      Tài khoản người dùng MySQL

= Tạo tài khoản người dùng MySQL:
1.      Start à All Programsà MySQLàMySQL Server 5.0à MySQL Command Line Client
2.      Gõ passwrod root MySQL
3.      Mysql> prompt, gõ show database;
4.      grant INSERT, SELECT, UPDATE on snortdb1.* to snort identified by ‘root’;
5.      grant INSERT, SELECT, UPDATE on snortdb1.* to snort@localhost identified by ‘root’;
6.      grant ALL on snortdb1.* to base identified by ‘basepass’;
7.      grant ALL on snortdb1.* to base@localhost identified by ‘basepass’;
8.      grant ALL on archivedb1.* to base identified by ‘basepass’;
9.      grant ALL on archivedb1.* to base@localhost identified by ‘basepass’;
10. flush privileges;
11. Exit;

12. C:\Snort\mysql folder, open my.ini bằng Wordpad
13. Thay đổi: ‘sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_=>USER,NO_ENGINE_SUBSTITUTION” bằng “sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_=>SUBSTITUTION”
14. Save & close my.ini
15. Restart máy tính.

5.      Kết nối Snort tới database
= Kiểm tra cấu hình mới:
1.      Mở command prompt
2.      C:\Snort\bin
3.      Snort –d –e –v –iX (X để sử dụng card mạng)
4.      Ta thấy rằng Snort có hiển thị gói tin trên màn hình. Nếu cần kiểm tra traffic mạng thì có thể ping 1 máy tính cùng mạng
5.      Nhấn Ctrl+C để kết thúc Snort
6.      Để xem full Snort chạy, gõ snort –d –e –v –iX –c C:\Snort\etc\snort.conf –l C:\Snort\log
7.      Nhấn Ctrl+C để dừng Snort

6.      Dịch vụ Snort
= Cấu hình dịch vụ Snort:
1.      Mở Command prompt
2.      Vào C:\Snort\bin>
3.      Tại C:\Snort\bin> gõ snort /SERVICE /INSTALL –c C:\Snort\etc\snort.conf –l C:\Snort\log –K ascii –iX. Sau đó sẽ có thông báo SNORT_SERVICE cài thành công
4.      Đóng command prompt
5.      Chọn Start àAdministrative ToolsàServices
6.      Trong pane bên phải, keo xuống và click đổi dịch vụ Snort
7.      Trong kiểu Startup, thay đổi thiết lập từ Manual sang Automatic
8.      Click Apply
9.      Để đóng cửa số Snort Properties, click OK (không click Start lúc này)
10. Đóng cửa sổ dịch vụ
11. Restart lại máy
12. Khi pc restar, log on quyền Administrator
13. Mở Task Manager
14. Chọn Process và thấy rằng cả Snort và mysql đang chạy
15. Chọn Snort process và thấy được dung lượng bộ nhớ cho Snort. Đó là memory-intensive
16. Đóng Task Manager.

IV. Cài đặt IDS trong LINUX
1.   Cài đặt IDS trong Linux:
Các gói cần cài đặt :
            Lần lượt cài các gói phụ thuộc:
     mysql
     mysql-bench
     mysql-server
     mysql-devel
     yum-utils
     php-mysql
     httpd
     gcc
     pcre-devel
     php-gd
      gd
     distcache-devel
     mod_ssl
     glib2-devel
     gcc-c++
     libpcap-devel
     php
     php-pear

chép snort vào /snort
cd /soft
Giải nén snort         
            tar -zxvf snort-2.8.4.1.tar.gz
            cd snort-2.8.4.1
- Lần lượt thực hiện các sau để cài đặt snort
#./configure --with-mysql --enable-dynamicplugin    
 
           


2. Cấu hình IDS .

File cấu hình /etc/snort/snort.conf
- Sửa dòng 46
            var HOME_NET 192.168.9.0/24
- Sửa dòng 49
            var EXTERNAL_NET !$HOME_NET
Sửa dòng:
110: var RULE_PATH /etc/snort/rules
688:  output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
Save lại

Thiết Lập Snort khởi động cùng hệ thống:

Tạo một liên kết mềm (symbolic link) của file snort binary đến /usr/sbin/snort
            ln -s /usr/local/bin/snort /usr/sbin/snort
Snort cung cấp các scrip để khởi động trong thư mục rpm/   ; (thư mục giải nén snort)
            cp /snort/snort-2.8.4.1/rpm/snortd /etc/init.d/
            cp /snort/snort-2.8.4.1/rpm/snort.sysconfig /etc/sysconfig/snort

Đặt quyền lại cho file snortd :
            chmod 755 /etc/init.d/snortd
            chkconfig snortd on
            service snortd start
Để khởi động snort ở chế độ debug nếu bạn muốn kiểm tra lỗi:

            /snort/snort-2.8.4.1/src/snort -u snort -g snort -d -c /etc/snort/snort.conf

Quản lý snort bằng webmin:
(bước này có thể bỏ qua làm tiếp phần 4)

            - Cài webmin
Log vào Webmin, chọn chức năng Webmin Modules, import thêm Snort module vào Webmin:

- Tích hợp snort vào webmin:
            chép snort-1.1.wbm vào thư mục bung snort
            http:/localhost:10000
            Webmin, chọn Webmin Configuration, Webmin Modules, From uploaded file,
            chỉ đến thư mục chứa snort-1.1.wbm
Tiến hành cài đặt

3. Cài đặt & quản lí cơ sở dữ liệu IDS:
      #service mysqld start
Trước tiên ta cần set password cho root trong MySQL.
            #mysqladmin -u root password 123456
            #mysql -p
Tạo password cho tài khoản snort.
            mysql> use mysql;
            mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY '123456';
Tạo CSDL cho snort.
            mysql> create database snort;
            mysql> GRANT CREATE, INSERT, SELECT, DELETE, UPDATE ON snort.* to snort@localhost;
            mysql> flush privileges;
            mysql> exit
Tạo các table từ /snort/snort-2.8.4.1/schemas/create_mysql cho database snort (thư mục gải nén snort)
            mysql -u root -p < /snort/snort-2.8.4.1/schemas/create_mysql snort
            mysql -p
            show databases;
            use snort;
            show tables;

4.Cài đặt BASE và ADODB
Web server và PHP đã cài đặt sẵn ta cần cài thêm vài gói pear cho PHP.
ñ cd snort/snort-2.8.4.1
ñ  pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman;

            Cài đặt ADODB
Tải ADODB tại: http://nchc.dl.sourceforge.net/sourceforge/adodb/
cp adodb480.tgz /var/www/html/
cd /var/www/html/
tar -xzvf adodb480.tgz

Cài BASE
Tải BASE tại:
http://nchc.dl.sourceforge.net/sourceforge/secureideas/base-1.4.2.tar.gz
#cp /snort/base-1.4.4.tar.gz /var/www/html/
#tar -zxvf base-1.4.4.tar.gz
#mv base-1.4.4/ base/
#cd base
#cp base_conf.php.dist base_conf.php
#vi base_conf.php
Sửa các dòng sau:

57       $BASE_urlpath = '/base';
79        $DBlib_path = '/var/www/html/adodb';
101     $alert_dbname   = 'snort';
105     $alert_password = '123456';
108     $archive_exists   = 1; # Set this to 1 if you have an archive DB
109     $archive_dbname   = 'snort';
112     $archive_user     = 'snort';
113     $archive_password = '123456';
355     $external_whois_link = 'index.php';
382     $external_dns_link = 'index.php';
385     $external_all_link = 'index.php';
Save lại
#service snortd restart
#service httpd restart


















TỔNG HỢP CÂU HỎI

Câu 1 :
ñ Hệ thống IDS có thể phòng chống tấn công từ bên ngoài không ?
Nhiệm vụ chính của hệ thống IDS là phát hiện những xâm nhập, tấn công từ bên trong lẫn bên ngoài hệ thống mà nó quản lý. IDS có thể phòng chống tấn công từ bên ngoài bằng cách đưa ra những cảnh báo cho người quản trị, để người quản trị hệ thống có biện pháp xử lý để phòng chống những tấn công đến từ bên ngoài

ñ Có công cụ ngăn chặn nào đi kèm với Snort hiệu quả không ?
Tùy từng trường hợp cụ thể xảy ra với mạng mà người quản trị sẽ có những giải pháp riêng phù hợp cho hệ thống của mình. VD khi có tấn công DDoS đến hệ thống, người quản trị có thể chủ động tắt các dịch vụ, hoặc dùng giải pháp nâng băng thông tạm thời cho mạng để chống lại việc bị DDoS,…

ñ Vì sao phải cài thêm IDS nếu như máy đã có Firewall ?
IDS có thêm nhiều chức năng, cấu hình để phát hiện xâm nhập nâng cao mà firewall không có. Ví dụ như nó có thể phát hiện port 1234 đang mở và xuất ra thông báo là máy đã bị nhiễm backdoor NetBus.

Câu 2 :
ñ Option Dynamic ? Cách cấu hình ?
Duy trì rule ở trạng thái không sử dụng nếu không có rule khác gọi nó. Nếu được gọi, nó hành xử tương tự như một log rule, tức là sẽ ghi lại những thông tin vào log. Điểm khác biệt của dynamic rule với log rule là nó chỉ được bật lên khi có một activate rule chỉ định bật nó lên, khi có một sự kiện, hay sự cố được quy định trước trong activate rule xảy ra trong mạng.
VD:   activate tcp !$HOME_NET any -> $HOME_NET 143 (flags:PA; \
          content:"|E8C0FFFFFF|/bin"; activates:1; \
          msg:"IMAP buffer overflow!";)
 dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by:1; count:50;)

Câu 3 :
ñ Sử dụng IDS có làm chậm hệ thống?
Khi lưu lượng mạng đi qua IDS, nó sẽ bắt luồng dữ liệu, sao chép lại thông tin diễn ra trong mạng và gần ngay tức thời trả luồng dữ liệu trở lại để đến các máy trong mạng, do đó thời gian delay là không đáng kể.

Câu 4 :
ñ Vị trí IDS trong hệ thống?
·        NIDS (Network IDS) : hệ thống IDS để bảo vệ cả hệ thống mạng hoặc một đoạn mạng, được sử dụng như một Gateway . Do đó IDS được đặt sau firewall, trước đoạn mạng cần được bảo vệ
·        HIDS (Host IDS) : Chức năng chính là bảo vệ tài nguyên trên máy chủ và một số hệ thống như WebHost,Mailhost v.v... do đó được đặt ngay tại máy cần bảo vệ.

Câu 5 : Giải thích về rule anti DDoS ?
alert tcp  $EXTERNAL_NET any -> $HOME_NET 27665
(msg: “DDOS Trin00 Attacker to Master default startup password”;flow: established,to_server;
content:“Betaalmostdone”;reference:arachnids,197; classtype:attempted-dos;sid: 233, rev: 3;)
Giải thích:
msg: “DDOS Trin00 Attacker to Master default startup password”: một message được gửi đến người quản trị khi có lượng kết nối TCP trong một đơn vị thời gian vượt ngưỡng cho phép là có thể đã có một cuộc tấn công DDoS đến server

flow: established,to_server; luồng tấn công được thiết lập đến server
classtype:attempted-dos loại sự kiện là có sự cố gắng tấn công DoS vào hệ thống
sid: 233 ID của rule DDoS
rev: 3  số lần được duyệt lại của rule là 3 lần

Câu 6 : Câu hỏi của thầy Quang :
ñ Tích hợp snort vào phần mềm do người dùng lập trình và hướng tiếp cận ?
Do việc viết rule cho Snort về mặc định quá đơn giản và bắt buộc người phát triển phải thuộc triệt để cấu trúc của câu lệnh hoặc phải liên tục tra cứu trong tài liệu hướng dẫn nên chúng ta có thể xây dựng một chương trình với giao diện đồ họa và tính năng nhắc lệnh cũng như kiểm tra và cảnh báo về độ chính xác của toàn bộ các rule mà người dùng viết ra.
Một hướng tiếp cận khác là việc áp dụng khai thác dữ liệu (data mining) vào hệ thống IDS, IPS bằng cách thống kê các loại gói tin, các dấu hiệu từ đó đưa ra các nhắc nhở hoặc tự động cấu hình để đảm bảo tính an toàn cho hệ thống. Thêm vào đó, để có một thống kê toàn diện hơn, ta có thể xây dựng 1 mạng cộng đồng gồm các nhóm sử dụng snort cho các công ty, các nhóm phù hợp với nhau có thể kích hoạt tính năng tự động trao đổi của chương trình, lúc bấy giờ thì chương trình sẽ kiểm tra hàng tháng và cập nhật kết quả cho nhà quản trị.
Một hệ thống cảnh báo thì luôn luôn phải có thể báo cáo ngay lập tức bất cứ điều bất thường nào đến cho nhà quản trị. Như ta biết thì phần lớn các cuộc tấn công với mục đích không tốt thường diễn ra vào những lúc mà các nhà quản trị không có mặt trực tiếp tại nơi làm việc, ví dụ như vào ban đêm. Vì vậy chúng ta sẽ xây dựng một chương trình có kết hợp với các tổng đài điện thoại nhằm gửi tin nhắn qua điện thoại hoặc email cho nhà quản trị khi có đầy đủ dấu hiệu tấn công.
Ngoài ra một hướng khá hay để tiếp cận việc phát triển Snort đó là xây dựng một giải thuật di truyền cho Snort. Một vài luận án thạc sĩ và tiến sĩ cũng nghiên cứu về vấn đề này.
Bảng sơ thảo một luận án điển hình :
Brian E. Lavende, Implementation of Genetic Algorithms into SNORT,  A Network Intrusion Detection System, xem ngày 25 tháng 8 năm 2011, <http://www.brie.com/brian/netga/Lavender_Proposal.pdf>





















Danh sách thành viên trong nhóm:
      Họ tên
 MSSV
Nguyễn Thế Anh
07520512
Nguyễn Tuấn Anh
07520011
Nguyễn Trọng Đăng Trình
07520371
Trương Đình Huy
07520151
Nguyễn Anh Linh
07520193




1 nhận xét: