Hệ thống phát hiện xâm nhập sử dụng snort
Trang 1Nhóm 2
GVHD : TS.Phạm Văn Tính
Trang 3• Là một hệ thống (phần mềm, phần cứng, hoặc kết hợp cả hai) để phát hiện các hành vi xâm nhập bất hợp phát vào mạng.
• Phát hiện các hành động trong tiến trình tấn
công (FootPrinting, Scanning, Sniffer…), cung cấp thông tin nhận biết và đưa ra cảnh báo
• Kỹ thuật sử dụng trong IDS có thể là :
signature hoặc anomaly-based , cũng có thể
kết hợp cả hai
Trang 4• Cài đặt như một agent trên một host cụ thể Phân tích log của hệ điều hành hoặc các ứng dụng so sánh các sự kiện với cơ sở dữ liệu để phát hiện
các vi phạm về bảo mật và đưa ra cảnh báo
• Nếu có vi phạm HIDS ghi nhận lại các hành động
đó, đưa ra cảnh báo, và có thể ngừng hành động lại trước khi nó xảy ra.
• HIDS có thể dùng để theo dõi log (log monitors), giám sát tính toàn vẹn (intergrity monitors), phát hiện xâm nhập ở mức kernel (kernel module)
Trang 5• Dùng để bắt các gói tin trong môi trường
mạng, so sánh giữa dữ liệu thu thập được với
cơ sở dữ liệu nhằm phát hiện các dấu hiệu tấn công
• Khi có tấn công NIDS sẽ log các gói tin vào cơ
sở dữ liệu, cảnh báo hoặc đưa vào Firewall
Trang 6Host IDS - HIDS Network - NIDS
HIDS chỉ quan sát các host , hệ điều
hành, hoạt động của ứng dụng (thường
làm những công việc như phân tích log,
kiểm tra tính toàn vẹn…)
NIDS nhìn toàn cảnh luồng dữ liệu trên mạng (NIDS thường được coi như là sniffer)
Chỉ phát hiện những cuộc tấn công đã
thành công. NIDS phát hiện những cuộc tấn công
tiềm năng.
Hoạt động hiệu quả trong những môi
trường chuyển mạch, mã hóa, tốc độ cao. Rất khó hoạt động trong những môi trường này.
Trang 7DETECTION ENGINE PREPROCESSORS
OUTPUT
ALERT SYSTEMS
Trang 14• Hệ thống IDS (signature-based) cần một cơ sở dữ liệu đã có sẵn về các kiểu tấn công để nhận biết các cuộc tấn công có thể xảy ra, dựa vào dấu hiệu
nhận biết nào đó (signatures) cập nhật
signatures mới.
• Bản thân IDS không chống lại các cuộc tấn công, hay ngăn chặn quá trình khai thác lỗi, mà nó chỉ
dò tìm và đưa ra cảnh báo.
Đặt IDS ở đâu trong hệ thống mạng để mang
lại hiệu quả cao nhất ????
Trang 16Chiến lược triển khai IDS phụ thuộc vào chính sách bảo mật và tài nguyên cần bảo vệ Càng nhiều IDS thì đồng nghĩa với việc hệ thống chậm
đi và chi phí bảo trì sẽ tăng lên.
Trang 18• Snort là một IDS kiểu signature – based Chạy
được trên cả Windows và Linux.
• Snort có các tập luật lưu trữ trong các file text, các luật được nhóm thành các loại khác nhau và được chứa trong những file riêng cho từng nhóm Các file này được chỉ ra trong file cấu hình
snort.conf
• Snort sẽ đọc các luật lúc khởi động và xây dựng một cấu trúc dữ liệu hoặc các chuỗi để áp dụng các luật đó lên dữ liệu thu thập được.
Trang 19• Snort được cung cấp 1 tập hợp phong phú các luật
đã được định nghĩa trước, tuy nhiên người dùng
có thể tự định nghĩa và đưa thêm các luật mới
hoặc loại bỏ một số luật không cần thiết.
• Snort là stateful IDS, nó có thể sắp xếp và ghi
nhận các cuộc tấn công dựa trên phân đoạn TCP.
• Snort có thể phát hiện được nhiều loại xâm nhập như : buffer overflows, stealth port scans, CGI
attacks, SMB probes, OS fingerprinting attempts …
Trang 20• Snort có thể cài đặt ở 2 chế độ là inline hoặc passive.
• Inline: Snort tích hợp với tường lửa để kích
hoạt tường lửa khóa hay drop hoặt các hành
động khác nhằm ngăn chặn cuộc tấn công mà
nó phát hiện
• Passive: Snort chỉ phát hiện xâm nhập, nghi
log và cảnh báo
Trang 22• Sử dụng
rpm –qa | grep <tên gói>
Để kiểm tra xem gói đó đã cài đặt đủ chưa
• Sử dụng :
yum install <tên gói>
Để cài đặt những gói còn thiếu
• Đối với những gói rpm :
rpm –ivh <tên gói rpm>
Trang 23• Sử dụng :
wget <url>
Để download các gói cài đặt từ một trang web
• Đối với những gói tar.gz :
tar –xvzf <tên gói.tar.gz>
cd <tên gói>
./configure [option]
make && make install
Trang 27• Ngoài ra còn cần có prel (đã cài sẵn), libpcap, libnet Bạn nên cài từ source Sử dụng lệnh:
Trang 28• Những gói trên là tối thiểu phải có Nếu thiếu bất kỳ gói nào dùng lệnh :
yum install <tên gói>
để cài thêm vào
• Start apache và mysql lên:
service httpd start
service mysqld start
Trang 29thêm iptables-devel, khởi động lại dịch vụ, ok.
Trang 31• Tạo thư mục snort trong /etc
Trang 33• Để snort chạy như một dịch vụ chúng ta cần user, usergroup cho snort:
#groupadd snort
#useradd –g snort snort
Trang 34• Tạo và set quyền chủ nhân, quyền thực thi của snort cho file log.
#mkdir/var/log/snort
#chown –R snort:snort /var/log/snort
#chown 664 /var/log/snort
Trang 35#vim /etc/snort/snort.conf
Tìm đến dòng:
var RULE_PATH /rules sửa lại thành.
var RULE_PATH /etc/snort/rules đây là thư mục chứa tập luật.
Chỉ ra output database – database lưu trữ những log
output database: log, mysql , user =snort, password =
long dbname =snort host =localhost
Trang 37#mysql –u root
>set password ‘root’@‘ localhost’ =
Trang 38> create database snort;
> GRANT CREATE, INSERT, SELECT,
DELETE, UPDATE ON snort.* to
Trang 39• Do web sevrer và php đã được cài đặt sẵn, chúng ta chỉ cần cài thêm pear cho php
# pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
Trang 40# wget http://nchc.dl.sourceforge.net/sourceforge/secureideas/base-1.4.2.tar.gz
# cp base-1.4.2.tar.gz /var/www/html/
# cd /var/www/html/
#tar -xzvf base-1.4.2.tar.gz
# cp base_conf.php.dist base_conf.php
Trang 42• http://127.0.0.1/base-1.4.2
• Chỉ đường dẫn đến thư viện adodb
• Khai báo các giá trị cho co sở dữ liệu lưu file log Như là : Database Name, Database Host, Database User, Database Password là
username và password để truy cập cơ sở dữ
liệu
• Tạo BASE AG (tạo cơ sở dữ liệu cho BASE)
Trang 48• #snort –A : Cài đặt chế độ cảnh báo
Trang 49• #snort –v : bật chế độ sniffer In toàn bộ gói dữ liệu bắt được trên console (hiển thị các header
IP,TCP/UDP/ICMP) Card mạng phải ở chế độ
promiscuous mode
• #snort –d: hiển thị dữ liệu ở layer Application
• #snort –e: hiển thị thông tin về header ở layer 2.
• #snort –vde: 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
Trang 50• Lưu thông tin xuống file:
– snort –dev –l [filename]
• Lưu thông tin ở dạng binary:
Trang 51• #snort –l /var/log/Snort : chỉ định thư mục lưu file log Quá trình lưu trữ theo kiểu phân cấp Mỗi một địa chỉ sẽ có một thư mục và những
gì liên quan đến địa chỉ đó sẽ được lưu trong đây
• 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
• #snort –b: Log gói tin dạng tcpdump Ghi log rất nhanh
Trang 52• #snort –c :Config-file ,chỉ định file cấu nào muốn
sử dụng.
• #snort –D :Chạy Snort ở chế độ background.
• #snort –I :Interface, Chỉ định interface nào Snort
sẽ lắng nghe.
• #snort –s :Gửi alert message đến syslog
• #snort –T : Kiểm tra và báo cáo về cấu hình hiện tại của snort.
• #snort –y : Thêm năm và ngày giờ vào thông điệp cảnh báo và file log.
Trang 53• Nhận gói và xử lý nó trước khi rule áp dụnglên gói (input plug_in)
Trang 55• Snort dựa vào các tập luật để phát hiện tấn
công
• Các luật thường được lưu trữ trong file
snort.conf Có thể sử dụng nhiều file bằng
cách thêm đường dẫn đến các file luật này vào file cấu hình chính
• Mỗi luật được viết trên một dòng
• Một rule có thể phát hiện nhiều loại xâm nhập
Trang 56• Gồm 2 phần rule header, rule option.
• Rule header : chứa thông tin về hành động mà luật sẽ thực hiện Tiêu chuẩn của việc so sánh luật trên một gói tin
• Rule option: chứa thông điệp cảnh báo Và
thông tin thông tin về phần nào của gói tin
được sử dụng để tạo ra cảnh báo
Trang 57action protocol address port \
direction address port \(option1 : <value1> ;option2: <value2>;… )
Lưu ý : dấu “\” ở đây nghĩa là xuống hàng Mỗi luật nên viết trong một dòng.
Trang 58• Action : các định kiểu hành động khi gói tin thỏa các điều kiện Thường là tạo cảnh báo và ghi log (alert, log).
nếu cài snort ở chế độ inline có thể chọn drop
để iptables hủy gói dữ liệu
Action Protocol Address Port Direction Address Port
Trang 59• Protocol : snort có thể phân tích được giao
thức bao gồm : TCP, UDP, ICMP,IP
• Address : địa chỉ nguồn, đích Address có thể của một host, nhiều host hoặc địa chỉ mạng
• Direction: xác định địa chỉ và cổng của nguồn
và đích đến ( -> , <-,< > )
• Port: chỉ dùng trong giao thức TCP, UDP để xác định cổng ngồn và đích của một gói tin mà luật được áp dụng
Trang 60• Theo sau rule header, được đặt trong ‘( )’, các option ngăn cách nhau ‘;’
• Một action chỉ được thực hiện khi tất cả option đều thỏa
• Một option bao gồm từ khóa và tham số
• Các tham số phân biệt nhau ‘:’
• Nếu có nhiều option chúng sẽ AND lại với
nhau
Trang 61• classtypes: <name>; phân loại luật cho một kiểu tấn công cụ thể Kết hợp với file
/etc/snort/classification.config
config classification: name,description,priority
– Name là tên được sử dụng để phân loại Tên được sử dụng với từ khóa classtype trong viết luật.
– Description : mô tả ngắn về kiểu phân loại.
– Priority : thứ tự ưu tiên mặc định cho sự phân loại, có thể thay đổi được bằng từ khóa priority trong Rule
Option
Trang 62• ack: <number> ; thường được dùng để biết có đang bị quét cổng hay không Chỉ có nghĩa khi
cờ ack trong TCP header được bật
• msg: <message>; ghi thêm chuỗi ký tự vào log
và cảnh báo Thông điệp để trong “”
• content: < straight text>; or content: <hex data
>; Tìm ra chữ ký (signature) trong header của gói dữ liệu
Trang 63• offset: < value>; dùng với content cho biết bắt đầu tìm kiếm từ đâu.
• depth: < value>; dùng với content xác định vị trí kết thúc của đoạn dữ liệu cần so sánh với vị trí ban đầu
• dsize: [<|>|=] < number>; tìm chiều dài của
một gói tin (các tấn công buffer overflows)
Trang 64• rev: < revision integer>; cho biết số phiên bản của snort.
• priority: < value>; từ khóa priority gán độ ưu tiên cho một luật
• nocase: dùng kết hợp với content, để tìm nội dung mà không phân biệt hoa thường
Xem file đính kèm để biết các tùy chọn khác
Trang 65• Luật được đặt ở cuối file snort.conf có thể tạo
ra nhiều luật sử dụng các biến đã định nghĩa trong file này
• Có thể định nghĩa file rules Trong file
snort.conf dùng include để chỉ đến file này
# include $RULE_PATH/web-attacks.rules
• Có rất nhiều luật đã được định nghĩa sẵn chứa trong thư mục /etc/snort/rules
Trang 66• alert tcp192.168.1.0/24 23-> any any (content:
“confidential”; msg: “Detect confidential”;)
bắt các gói dữ liệu đến từ địa chỉ nguồn thuộc mạng 192.168.1.0 /24và cổng nguồn 23, tới tất
cả các địa chỉ trong mạng đích và tất cả các
cổng đích Tìm signature trong header của gói
dữ liệu có nội dung “confidential” Giao thức
sử dụng là tcp
Trang 67• alert tcp any any -> 192.168.1.0/24 80 \
(flags: A; ack: 0; msg: “TCP ping detected”;)
Phát hiện ai đó sử dụng Nmap để quét cổng Với gói dữ liệu gửi đi có trường ack = 0, gửi tới cổng 80 bằng giao thức tcp
Từ khóa flags được sử dụng đề tìm cờ được thiết lập trong header TCP của gói tin
Trang 68• config classification: denial-of-service,Detection
of a Denial of Service Attack,2
• alert udp any any -> 192.168.1.0/24 6838 (msg:
“Dos”;content: “server” ;classtype:
denial-of-service;)
• alert udp any any -> 192.168.1.0/24 6838 (msg :
“Dos”;content: “server”;classtype:
denial-of-service;priority: 1;)
Trang 69• alert tcp 192.168.1.0/24 any -> any any
(content: “HTTP”; offset: 4; depth: 40; msg:
Trang 70• Smurf attack
• Jolt attack.
• Teardrop attack.
Trang 71Alert icmp $EXTERNAL_NET any ->
192.168.77.129 any (msg: ”Demo smurf
attack”; sid:1000010;dsize>32;itype:0;
icmp_seq:0; icmp_id:0;)
Trang 72alert ip $EXTERNAL_NET any ->
192.168.77.129 any (msg:“Demo DOS Jolt
attack"; dsize:408; fragbits:M;sid:268;rev:4; )
Trang 73• alert udp $EXTERNAL_NET any -> 192.168.77.129 any (msg:“Demo DOS
Teardrop attack"; fragbits:M;
id:242;sid:270;rev:6;)
Trang 74• Managing security with Sornt and IDS tool
• Snort Cookbook (2005)
• Snort2.1IntrusionDetectionSecondEdition
• snort.forum.org
• securityfocus.com