Mục Lục
Trích Yếu iv
Mục Lục v
Lời Cảm Ơn vii
Nhận Xét Của Người Hướng Dẫn viii
Nhập Đề 9
I. Nguyên Lý Hoạt Động Của Snort 10
1. Quá trình khởi động của snort 10
2. Xử lý gói tin trong snort 11
3. Detection Engine 15
4. Khảo sát Detection Engine 17
5. Snort Inline Mode 20
II. Preprocessor 22
1. Preprocessor frag3 23
2. Preprocessor stream5 25
3. Một số preprocessor khác 29
III. Hệ Thống Rule Trong Snort 31
1. Tổng quan về rule trong snort 31
2. Cấu trúc rule 31
3. Thứ tự các rule trong rule base của snort 34
4. Oinkmaster 34
IV. Snort Output Plug-in 35
1. Output log và alertvới tốc độ nhanh 35
2. Output log và alert vào database 38
3. Output log và alert vào Unix syslog 38
4. Output log và alert vào một file cụ thể 39
5. Output log và alert vào file CSV 39
6. Output log và alert ra nhiều dạng khác nhau 40
V. Network-Based và Host-Based IDS 41
1. Nework-Based IDS 41
2. Host-Based IDS 42
3. Triển Khai IDS Trong Mạng 44
VI. Các Hình Thức Khai Thác Và Tấn Công Hệ Thống Phổ Biến 46
1. Port scan 46
2. DOS (Denial of Services) 49
3. ARP Spoofing 52
VII. Cài Đặt Snort 53
1. Một số tùy chọn khi biên dịch snort 53
2. Cấu trúc database của snort 54
3. Cài đặt Snort với Snort Report (Single Snort Sensor) 55
4. Cài đặt Snort với BASE (Single Snort Sensor) 62
5. Cài đặt snort với BASE (Multiple SnortSensors) 71
6. Cài đặt Snort inline 80
VIII. Lab Kiểm Tra Hoạt Động Của Snort 90
1. Rule để kiểm tra hoạt động của snort 90
2. Rule phát hiện truy cập web 91
3. Phát hiện portscan trong Snort 93
4. Phát hiện DOS với snort 94
5. Phát hiện ARP attack 95
Kết Luận 100
Tài Liệu Tham Khảo 101
102 trang |
Chia sẻ: netpro | Lượt xem: 5174 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng hệ thống IDS - Snort trên hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
le mặc định của Snort theo ý mình để phát hiện những cuộc tấn công mới mà không phụ thuộc vào nhà sản xuất.
Rule là một tập hợp những chỉ dẫn được đặt ra để tìm những luồng dữ liệu trùng khớp với mẫu định trước và thực hiện hành động được chọn cho luồng dữ liệu đó.
Mỗi Rule tương ứng với 1 dòng trong file snort.conf.
Cấu trúc rule
Rule Header
Rule Options
Rule Header
Action
Protocol
Address
Port
Direction
Address
Port
Action: hành động thực hiện khi đúng điều kiện và Rule hoàn toàn trùng khớp với với gói tin đi qua.
Alert: gửi thông điệp báo động khi gói tin đi qua trùng khớp với điều kiện của Rule. Báo động có thể gửi đi bằng nhiều cách.
Log: ghi nhận lại gói tin vào cơ sở dữ liệu để có thể phân tích về sau.
Pass: cho gói tin đi qua không cần kiểm soát, hành động này nhằm tăng tốc độ xử lý của Snort đối với những gói tin không cần thiết hay ứng dụng trong trường hợp đánh giá mức bảo mật của hệ thống bẳng cách thử tấn công.
Activate: gửi báo động đồng thời kích hoạt một Rule khác để kiểm tra thêm điều kiện.
Dynamic: là hành động cho thấy rule này chỉ sẽ được kích hoạt bởi các rule có hành động là Activate.
Protocol: chỉ ra giao thức của gói tin cần xét, đây là điều kiện đầu tiên để xem gói tin có trùng hợp với Rule hay không. Ví dụ: TCP, ICMP, UDP …
Address: địa chỉ nguồn và đích của gói tin cần kiểm tra. Có thể dùng địa chỉ của một host, nhiều host hoặc địa chỉ mạng của một subnet. Ví dụ: 192.168.1.2, 172.16.1.0/24 …
Port: chỉ ra port nguồn và port đích của gói tin cần kiểm tra đối với các gói TCP và UDP.
Direction: chỉ ra hướng đi của gói tin từ nguồn tới đích bằng dấu “->” “<-” nên trường address nhắc đến ở trên dù đặt trước hay đặt sau đều có thể là nguồn hoặc đích của gói tin.
Rule option
Rule Option là thành phần theo sau Rule header và được đặt trong dấu ngoặc đơn. Có thể có một hoặc nhiều rule Option và chúng được chia cách bời dấu chấm phẩy (;). Khi sử dụng nhiều option cùng lúc thì sẽ có ý nghĩa là phải thỏa tất cả các option đó (toán tử AND). Tất cả các option được định nghĩa bằng các keyword, một số rule còn sử dụng thêm các argument. Argument và keyword cách nhau bở dấu hai chấm (:)
Ví dụ: msg: “DOS Detected”;
Các loại keyword
ack: dùng để đặt ra điều kiện về trường ACK của gói tin cần xét. Keyword này được sử dụng trong những trường hợp truy tìm những gói tin ping thăm dò của hacker với trường ack mang những giá trị đặc biệt nhằm mục đích foot printing.
classtype: dùng để phân loại cái rule nhằm tạo điều kiện thuận lợi trong việc phân tích và thống kê các ghi nhận của Snort. Argument của classtype được liệt kê trong file classification.config với định dạng như sau:
config classification: name,description,priority
(name: được sử dụng cùng với keyword classtype, priority có thể được điều chỉnh thông qua keyword priority trong option.)
content: dùng để rà soát thành phần bên trong gói tin dưới dạng ASCII hay Hecxa.
Ví dụ: content: “GET”; (dùng để tìm chuỗi GET trong gói tin)
offset: dùng kèm theo với keyword content để chỉ ra vị trí offset đầu tiên để bắt đầu tìm kiếm.
depth: dùng kèm theo content và offset để định ra một khoảng cần tìm kiếm sau offset đã định bằng keyword offset.
content-list: khi có nhiều nội dung cần dò tìm thay vì dùng nhiều lần content ta sẽ đưa những từ cần tìm vào một file và tên file đó sẽ trở thành argument cho keyword content-list.
dsize: dùng để xác định chiều dài phần dữ liệu của gói tin trong những trường hợp dò tìm tấn công tràn bộ đệm bằng cách gửi những gói tin có chiều dài dữ liệu bất thường.
flags: dùng để dò tìm bit flag của gói tin theo các argument như sau:
FIN
F
SYN
S
RST
R
PSH
P
ACK
A
URG
U
Reserved Bit 1
1
Reserved Bit 2
2
No Flag set
0
Trên đây là một số keyword thông dụng trong việc viết Rule của Snort, một số keyword khác sẽ đề cập tiếp trong phần thực hiện LAB với Snort.
Thứ tự các rule trong rule base của snort
Rule có thể phân thành 3 loại dựa trên trường Action của Rule: AlertàPass àLog
Khi một gói tin đi vào IDS Snort, nó sẽ được kiểm tra theo thứ tự nêu trên để đảm bảo mọi gói tin đều được kiểm tra thông qua những rule Alert nhằm loại bỏ những mối nguy hại cho hệ thống. Tuy nhiên nếu thực hiện theo cơ chế này thì sẽ hao tốn vi xử lý rất nhiều vì khi hệ thống hoạt động có rất nhiều gói tin đi qua mà phần lớn là các gói tin bình thường không gây hại. Vì thế Snort đã đưa ra một thứ tự khác nhằm giải quyết tình trạng này đó là: PassàAlertàLog.
Cơ chế này giải quyết được vấn đề vi xử lý tuy nhiên lại nguy hiểm hơn nếu người quản trị không cẩn thận trong việc viết các pass rule khiến cho các gói tin lẽ ra phải báo động thì lại cho qua dễ dàng. Người dùng có thể điều chỉnh thứ tự rule thông qua file snort.conf ở dòng
config order
Alert -> Pass -> Log
Oinkmaster
Oinkmaster là một phần mềm mã nguồn mở cho phép người dùng có thể cập nhật những rule mới từ website snort.org. Oinkmaster sẽ tự động so sánh giữa tập rule hiện tại trong hệ thống và những rule mới trên website snort.org để từ đó onikmaster sẽ cập nhật những rule mới nhất vào hệ thống.
Oinkmaster sẽ download tập rule đã được nén từ website snort.org sau đó
Oinkmaster sẽ tự động giải nén tập rule và bắt đầu xem xét và so sánh những rule mới và những rule hiện tại trong hệ thống, từ đó oinkmaster sẽ quyết những rule nào sẽ cần uptates những rule nào sẽ không cần.
Tùy chỉnh oinkaster
Một số option cho oinkmaster
-C
Chỉ định file cấu hình thay vì sử dụng file cấu hình mặc định.
-c
Chỉ định snort sẽ chạy ở chế độ careful mode, trong chế độ này
-o
Thư mục mà oinkmaster sẽ ghi rule mới vào
-b
Thư mực mà oinkmaster sẽ backup các rule cũ
-u
Chỉ định đường dẫn đến tập rules, oinkmaster hỗ trợ những loại url như sau: file://, ftp://, http://, https://, scp://
Snort Output Plug-in
Snort out-put có nhiều plugin khác nhau và các plugin có nhiều điểm khác và giống nhau. Với snort người dùng có thể tạo ra plug-in riêng của mình. Snort cho phép người dùng tạo output theo nhiều cách khác nhau.
Output log và alertvới tốc độ nhanh
Cấu hình file snort.conf đề sử dụng unified log, unified log là một dạng binary log được thiết kế cho việc hoạt động với tốc độ nhanh, hiệu quả ở dạng bằng cách định dạng file log ở dạng binary format, điều này nhằm giảm tải cho tài nguyên của hệ thống so với các dạng log khác.Hầu hết các công cụ report hiện nay như barnyard, snortreport…điều hỗ trợ dạng unified log làm input. Unified log gồm có 2 thông số chính: tên file log và kích thước file log.
Unified log góp phần làm giảm gánh nặng cho snort trong việc ghi log và tập trung tài nguyên vào giám sát và phân tích traffic hơn là tập trung ghi log. Điểm lợi nhất của unified log là tốc độ. Hiện tại barnyard là công cụ tốt nhất trong việc xử lý file unified log.
output alert_unified: filename snort.alert, limit 128
output log_unified: filename snort.log, limit 128
Unified2 là plugin thay thế cho unified. Unified2 có đặc tính tương tự như unified nhưng có sự khác biệt về định dạng file log. Unified2 có 3 loại log: packet log, alert log và true unified log. Packet log sẽ log toàn bộ header của gói tin mà nó bắt được và được cấu hình là trong file snort.conf là log_unified2. Alert log là log dành riêng cho alert và được cấu hình là alert_unified2. Nếu người dung muốn log cả packet và alert ta chỉ cần cấu hình trong file snort.cong như sau: unified2.
Khi cần log MPLS ta có thể log được nhãn của gói tin MPLS bằng cách cấy hình mpls_event_types.
output alert_unified2: filename snort.alert, limit 128, nostamp
output log_unified2: filename snort.log, limit 128, nostamp
output unified2: filename merged.log, limit 128, nostamp
output unified2: filename merged.log, limit 128, nostamp, mpls_event_types
Người dùng có thể xuất file binary log với tên vào nơi lưu trử theo ý muốn của mình bằng cách dùng lệnh snort -l /snort/log -L test2. File log Này có thể được đọc và phân tích bởi các chương trìn hỗ trợ binary log.
Banryard
Snort cùng lúc tiếp nhận traffic từ các host đi đến snort, do đó khi traffic tăng lên thì tài nguyên của IDS lúc này sẽ càng hao tốn nhiền hơn nhất là CPU và bộ nhớ của hệ thống. Giải pháp cho việc này là ta có thể chia traffic ra cho nhiều sensor khác nhau để tránh tập trung lên một sensor duy nhất. Nhưng giải pháp này tốn kém trong việc triển khai thêm nhiều sensor.
Một giải pháp khác là sử dụng barnyard, barnyard đọc file unified log được xuất ra từ snort sau đó tiến hành phân tích. Nhiệm vụ của snort chỉ đơn giản là xuất ra định dạng Unified Binary.
Dữ liệu cần được thu thập lại, định dạng sau đó xuất ra. Trong trường hợp snort ghi trực tiếp và database thì snort lúc này phải alert đến database và ghi trực tiếp và database và phải đợi database xác nhận công việc ghi dữ liệu đã thành công. Việc này sẽ khó khăn hơn khi database nằm trên một host khác.
Snort có khả năng xuất thông tin về một alter nào đó thành một binary file. Điều này diễn ra rất nhanh và không cần bất cứ tiến trình nào khác. Barnyard sau đó học file này vào sau đó xuất ra snort logfile, syslog, CSV hoặc xuất vào database. Barnyard có thể được cấu hình để chạy cùng với snort và việc cấu hình cũng khá giống với snort.
Cấu hình file Unified Binary của Snort
Trước khi sử dụng banryard ta cần cấu hình file output bên trong file snort.conf. Barnyard chỉ hỗ trợ duy nhất input là file unified2.
output unified2: filename snort.log, limit 128
filename
Tên của file log của snort. File này được tạo ra tại thư mục ghi log mặc định của snort (/var/log/snort)
limit
Kích thước tối đa của file binary mặc định là 128 MB. Khi file đầy thì snort sẽ ghi vào một file khác nhưng cùng một tên chỉ khác thời gian ghi.
Cấu hình barnyard
File cấu hình barnyard.conf chủ yếu bao gồm những khai báo cấu hình barnyard và các output plug-in:
config daemon
Cấu hình barnyard chạy ở background như là một daemon
config localtime
Cấu hình barnyard sử dụng giờ UTC
config hostname: sensor1
Cấu hình tên của sensor khi xuất alert vào database.
config interface:eth0
Interface mà sensor tiếp nhận traffic
config filter: not port 22
Barnyard sẽ không ghi alert trên port 22, trong trường hợp interface dùng để monitor traffic với interface sử dụng SSH là cùng một interface.
Mô tả hoạt động của Barnyard
Output log và alert vào database
Snort cho phép người dùng log trực tiếp vào database bằng cách cấu hình như sau:
output database: alert, , user= password= test dbname= host= sensor_name=
Snort hỗ trợ output vào các loại database sau: MSSQL, MySQL, Oracle, PostgreSQL…
Đồng thời snort cũng cung cấp script để tạo database như sau:
Database
Script Tạo Database
Hệ Điều Hành
MS SQL
create_mssql
Microsft Windows Server
MySQL
create_mysql
Linux, Unix, Windows
Oracle
create_oracle.sql
Linux, Unix, Windows
PostgreSQL
create_postgresql
Linux, Unix, Windows
Output log và alert vào Unix syslog
Alert_syslog cho phép snort ghi log và syslog, syslog là hệ thống log chủ yếu của linux và unix, syslog cung cấp thông tin về hệ thống, kernel, phần cứng và những thông tin quan trọng khác. Snort cho phép người dùng linh hoạt trong việc ghi log vào syslog.
Output alert_syslog:
Với facility mặc định là LOG_AUTH và những tùy chọn sau đây:
LOG_AUTH
LOG_AUTHPRIV
LOG_DAEMON
LOG_LOCAL0
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
LOG_USER
Với priority mặc định là LOG_ALERT là những tùy chọn sau đây:
LOG_EMERG
LOG_ALERT
LOG_CRIT
LOG_ERR
LOG_WARNING
LOG_NOTICE
LOG_INFO
LOG_DEBUG
Ví dụ: output alert_syslog: LOG_AUTH LOG_ALERT
Output log và alert vào một file cụ thể
Snort hỗ trợ fast alert và alert full mode, fast alert sẽ xuất alert ra với chỉ một dòng vào file log. Dạng log này sẽ nhanh hơn so với full alert mode vì snort không cần in ra toàn bộ header của gói tin vào file log như với full alert mode.
output alert_fast: alert.fast
output alert_full: alert.full
Output của fast alert có dạng sau đây
11/05-22:08:59.705515 [**] [1:469:3] ICMP PING NMAP [**] [Classification: Attempted Information Leak][Priority: 2] {ICMP} 192.168.206.129 -> 192.168.100.5
Output log và alert vào file CSV
Snort cho phép xuất log ra thành file CSV (comma-separated value)
Cú pháp như sau: output alert_csv: [ [ []]]
filename: tên của log file
format: định dạng của file log. File log được xuất ra theo option mặc định sau đây:
timestamp
siggenerator
sigid
sigrev
msg
proto
src
srcport
dst
dstport
ethsrc
ethdst
ethlen
tcpflags
tcpseq
tcpack
tcplen
tcpwindow
ttl
tos
id
dgmlen
iplen
icmptype
icmpcode
icmpid
icmpseq
limit: kích thước giới hạn của file log
Ví dụ:
output alert_csv: /var/log/snort/csv.out timestamp,msg,srcip,sport,dstip,dport,protoname,itype,icode
Phần output được định dạng như sau:
"2004-11-06 00:32:05",ICMP PING NMAP,192.168.206.129,,192.168.100.5,,"ICMP",8,0
"2004-11-06 00:32:10",ICMP PING NMAP,192.168.206.129,,192.168.100.5,,"ICMP",8,0
"2004-11-06 00:35:35",SNMP request tcp,192.168.206.129,36252,192.168.100.5,161,"TCP",,
Output log và alert ra nhiều dạng khác nhau
Người dùng có thể cấu hình để snort xuất ra theo nhiều dạng log như ví dụ dưới đây:
output log_tcpdump: tcpdump.log
output database: log, mysql, user=root password=test dbname=db host=localhost
output alert_unified: filename snort.alert, limit 128
output log_unified: filename snort.log, limit 128
Network-Based và Host-Based IDS
Nhân tố làm cho snort trở nên hoạt động hiệu quả chính là vị trí và phạm vi mà snort hoạt động, trước khi tiến hành cài đặt snort ta cần phải quan tâm đến là hệ thống snort IDS đang bảo vệ đối tượng nào:
Một server riêng lẻ
Một hệ thống gồm nhiều server
Một subnet
Nework-Based IDS
Snort là một hệ NIDS, snort chuyển trạng thái card mạng sang chế độ promiscuous và xem xét từng gói tin mà snort bắt được và cảnh báo trên gói tin đó. Muốn NIDS hiệu quả thì NIDS cần kết hợp với span sport. Span port cho phép tất cả traffic trong mạng được sao chép và chuyển đến NIDS, điều này làm cho NIDS có thể giám sát được tất cả traffic trong mạng, do đó hiệu quả của việc trong việc sử dụng NIDS là rất lớn.
NIDS giám sát và giữ lại traffic theo giời gian thực ngay khi dữ liệu di qua mạng. NIDS thường sử dụng 2 interface một dùng để giám sát và giữ lại traffic, một interface còn lại dùng cho việc quản lý. Interface dùng để giám sát và giữ lại traffic thường sẽ không được gán địa chỉ, chính điều này làm cho nó trở thành một đối tượng trong suốt trong mạng và tránh bị phát hiện.
Ứng dụng mà snort NIDS sử dụng để monitor và capture traffic là libpcap. Libpcap là một thư viện được dùng bởi tcpdump, libpcap được thiết kế để thu thập dữ liệu của các gói tin từ kernel của hệ điều hành. Libpcap cung cấp dữ liệu cho NIDS từ đó có thể phân tích được nội dung dữ liệu, phát hiện được dấu hiệu của sự tấn công, công cụ dùng để tấn công…
Phương pháp và NIDS thường dùng để phát hiện phòng chống tấn công là:
Mẫu dữ liệu từ những cuộc tấn công trước
Tần số truy xuất vào hệ thống
Những sự kiện diễn ra không như bình thường
NIDS sẽ trở thành một vấn đề khó khăn khi triển khai nếu switch mà hệ thống mạng đang sử dụng không có span port và span sport không phải lúc nào cũng được hỗ trợ trên switch.
Host-Based IDS
Giống như network-based IDS, host-based IDS cũng có khả năng giám sát và giữ lại các gói tin. Thay vì hoạt động ở chế độ promiscuous mode giống như NIDS. HIDS chỉ giữ lại những gói tin của riêng cho host đó và HIDS có thể được cài lên nhiều hệ điều hành khác nhau, tuy nhiên không phải hệ điều hành nào củng có thể cài IDS. HIDS có thể giám sát từng host trong mạng ở mức độ chi tiết hơn so với NIDS. HIDS có thể giám sát từng port, từng sự kiện diễn ra trong host như sự thay đổi về quyền của user, sự thay đổi về những file quan trọng trong hệ thống. Ngoài ra HIDS có thể kiểm tra sự toàn vẹn của những file hệ thống cũng như giám sát những tiến trình khả nghi. Về phương pháp phát hiện và phòng chống tấn công HIDS hầu như giống so với NIDS.
Sau đây là bảng so sánh giữa HIDS và NIDS
Ưu điểm
Nhược điểm
Host-based
Có thể kiểm tra được liệu sự tấn công đã thành công hay thất bại.
Việc hoạt động không bị ảnh hưởng bởi băng thông hay mã hóa.
Biết được chi tiết tình trạng của host và có thể ngăn cản được sự tấn công
Có thể giám sát được một sự kiện cụ thể
Không phụ thuộc vào hệ thống switch
Ảnh hưởng đến tài nguyên của host.
Hoạt động phụ thuộc vào hệ điều hành.
Tốn kém khi mở rộng
Network-based
Cho phép triển khai trên toàn mạng với chi phí rẻ hơn so với HIDS
NIDS hoạt động ở chế độ thời gian thực
NIDS có thể phát hiện những cuộc tấn không thành công hoặc những hành động cố tình gây hại đến hệ thống.
NIDS độc lập với hệ điều hành. NIDS không phụ thuộc vào hệ điều hành được cài đặt trên host.
Thách thức trong việc triển khai trong môi trường switch.
Không thể chủ động ngăn cản tấn công.
Bảng so sánh giữa HIDS và NIDS
Triển Khai IDS Trong Mạng
Cách kết nối IDS vào mạng
Có nhiều cách để kết nối IDS vào mạng nhằm đảm bảo rằng IDS có thể giám sát và giử lại traffic hiệu quả nhất có thể. Nhưng bằng cách này hay cách khác traffic cần được tập trung vào IDS để dễ dàng cho việc phân tích.
Có 3 phương pháp chính sau đây:
Hình 1: IDS kết nối vào span port của switch
Hình 2: IDS được kết nối vào network TAP để monitor traffic
Hình 3: IDS được đặt inline
Trong hình trên, đường màu đỏ dùng để monitor traffic và đường đứt nét dùng cho việc quản lý IDS.
Trong hình 1, span port được sử dụng để giám sát và giử lại traffic, span port là một chức năng của switch, span port có thể được cấu hình đề chuyển tất cả traffic trên switch vào span port. Bằng cách này IDS có thể thấy được tất cả các traffic lưu thông trên mạng. Mặc dù hub có thể được dùng cho trường hợp này nhưng hub không phải là một sự lựa chọn tốt nhất.
Trong hình 2, IDS được kết nối vào network tap, network sẽ sao chép traffic và gửi đến IDS. Network TAP rất hữu hiệu trong việc khi hệ thống switch trong mạng không có span port. Network TAP hỗ trợ nhiều tốc độ traffic khác nhau từ 1Gbps đến 10 Gbps.
Trong hình 3, IDS sử dụng 3 interface và đặt trong chế độ inline có nghĩa là tất cả các traffic phải đi vào IDS sau đó mới được chuyển vào mạng. Nếu IDS kết nối vào span port thì đôi khi gói tin có thể bị bỏ sót, với trường hợp này thì tất cả các gói tin đi vào mạng đều được IDS giám sát và có thể giảm tải cho switch.
Vị trí triển khai snort
Tùy vào tính quan trọng và nhu cầu bảo mật mà của từng network segment là ta đưa ra từng chính sách cho từng network segment trong mạng. Ta có thể đặt snort tại một số vị trí sau đây:
Giám sát traffic trong vùng DMZ
Snort có thể được triển khai sau một SSL proxy hoặc trên một VPN server để IDS có thể giám sát được traffic sau khi được giải mã.
IDS có thể được triển khai trong mạng LAN
Đối với những server quan trọng như web, mail, database ta có thể triển khai HIDS.
Triển khai IDS bên ngoài router hoặc firewall để giám sát traffic trước khi đi và trong mạng.
IDS có thể được dùng để giám sát traffic để giám sát trafic giữa các subnet
Các Hình Thức Khai Thác Và Tấn Công Hệ Thống Phổ Biến
Port scan
Giới thiệu
Phương pháp scan port thường được thực hiện trực tiếp trên một host hoặc một mạng nhằm mục đích nhận biết các dịch vụ mà host đó cung cấp. Ví dụ: web server thường mở port 80, FTP server thường mở port 21…Attacker có thể dựa trên thông tin thu nhận được để tìm cách tấn công, khai thác vào server đó.
Nguyên lý
Dựa trên phương thức truyền thông TCP ta có thể scan xem server mở port nào cũng như đóng port nào.
Sau đây là hai phương pháp scan port phổ biến:
SYN Scan: Máy attacker sẽ gửi hàng loạt các gói tin TCP có port đích lần lượt là các port cần scan của server cần khai thác. Đặc điểm của các gói tin TCP này là chỉ bật cờ SYN như bước đầu trong quá trình bắt tay 3 bước của giao thức TCP. Từ đó server khi nhận được những gói tin này thì sẽ trả về gói SYN ACK nếu port đó có mở và attacker sẽ biết được dịch vụ nào đang được bật ở server đó.
ACK Scan: đây là phương pháp scan thường được dùng kết hợp với SYN Scan nhằm phát hiện sự có mặt của Firewall trong hệ thống. Nguyên tắc của ACK Scan là attacker sẽ gửi các gói TCP có bật cờ ACK lên. Server nhận được gói ACK sẽ trả về gói RST, khi đó attacker sẽ nhận biết được không có sự giám sát về session trong hệ thống. Còn khi có sự xuất hiện của một Firewall lớp Transport hay Multilayer Firewall thì những gói tin ACK gửi vào như thế chắc chắn sẽ bị drop.
Scan port về mức độ không gọi là nguy hiểm cho hệ thống và lại có tính tương đồng với việc truy cập bình thường.
Nguyên lý về sfPortscan preprocessor trong Snort
Nguyên lý chung để phát hiện có cá nhân scan port của một máy nào đó trong hệ thống đó là dựa trên những gói tin từ chối khi có truy cập đến những port không mở trên hệ thống (gói tin RST của TCP khi port đó đóng). Việc xuất hiện những gói tin từ chối đó là rất ít khi vì khi một người bình thường truy nhập sẽ chỉ sử dụng đúng chức năng của máy chủ đó như truy cập website ở web server, mail ở mail server … chứ không kết nối đến những port khác ở các server thông dụng đó. Và càng bất thường hơn nếu hàng loạt các gói tin từ chối được gửi về trong một thời gian ngắn (do chương trình scan port như Nmap gửi hàng loạt gói tin một lúc). Snort sẽ dựa vào những yếu tố đó để phát hiện port scan đối với hệ thống.
Cấu hình preprocessor sfportscan
Trong file snort.conf ta bỏ dấu # ở dòng sau đây để kích hoạt chức năng phát hiện port scan
preprocessor sfportscan: proto {all} memcap {10000000} sense-level {low}
proto: chỉ ra giao thức theo dõi.
TCP
UDP
ICMP
ALL
memcap: dung lượng tối đa (byte) để lưu trữ những phát hiện port scan.
sense-level: các mức độ phát hiện port scan
low: chỉ theo dõi dựa trên các gói tin từ chối từ máy bị scan port và số lượng gói tin trong một khoảng thời gian đặt trước (60 giây) do đó có tính chính xác khá cao. Tuy nhiên nếu không có các gói tin từ chối gửi về (trong trường hợp máy bị scan port theo kiểu ACK scan có thiết bị quản lý session như Firewall lớp 4 thì các gói tin gửi vào sẽ bị drop và không có gói tin trả lời ) thì mức độ này không báo động.
medium: theo dõi số lượng kết nối nên sẽ khắc phục được nhược điểm của mức độ low đó là vẫn phát hiện dù không có gói tin từ chối trả về. Tuy nhiên mức độ này sẽ thiếu chính xác đối với những dịch vụ mà một máy có thể tạo ra nhiều kết nối như NAT.
high: liên tục theo dõi một host trong hệ thống để tính toán và ước lượng khả năng scan port đối với host đó.
DOS (Denial of Services)
Giới thiệu
Một cuộc tấn công từ chối dịch vụ (tấn công DoS) hay tấn công từ chối dịch vụ phân tán (tấn công DDoS) là sự cố gắng làm cho tài nguyên của một máy tính không thể sử dụng được nhằm vào những người dùng của nó. Mặc dù phương tiện để tiến hành, động cơ, mục tiêu của tấn công từ chối dịch vụ là khác nhau, nhưng nói chung nó gồm có sự phối hợp, sự cố gắng ác ý của một người hay nhiều người để chống lại Internetsite hoặc service (dịch vụ Web) vận hành hiệu quả hoặc trong tất cả, tạm thời hay một cách không xác định. Thủ phạm tẩn công từ chối dịch vụ nhằm vào các mục tiêu site hay server tiêu biểu như ngân hàng, cổng thanh toán thẻ tín dụng và thậm chí DNS root servers.
Nguyên lý
Teardrop
Như ta đã biết, tất cả các dữ liệu chuyển đi trên mạng từ hệ thống nguồn đến hệ thống đích đều phải trải qua 2 quá trình: dữ liệu sẽ được chia ra thành các mảnh nhỏ ở hệ thống nguồn, mỗi mảnh đều phải có một giá trị offset nhất định để xác định vị trí của mảnh đó trong gói dữ liệu được chuyển đi. Khi các mảnh này đến hệ thống đích, hệ thống đích sẽ dựa vào giá trị offset để sắp xếp các mảnh lại với nhau theo thứ tự đúng như ban đầu. Lợi dụng sơ hở đó, ta chỉ cần gửi đến hệ thống đích một loạt gói packets với giá trị offset chồng chéo lên nhau. Hệ thống đích sẽ không thể nào sắp xếp lại các packets này, nó không điều khiển được và có thể bị crash, reboot hoặc ngừng hoạt động nếu số lượng gói packets với giá trị offset chồng chéo lên nhau quá lớn.
SYN Attack
Trong SYN Attack, hacker sẽ gởi đến hệ thống đích một loạt SYN packets với địa chỉ ip nguồn không có thực. Hệ thống đích khi nhận được các SYN packets này sẽ trả lời các gói SYN này đồng thời lưu các request này vào bộ nhớ để xử lý. Với hàng loạt gói tin như thế được chờ xử lý sẽ làm cho hệ thống quá tải, reboot … đạt được mục đích của tấn công DOS.
Land Attack
Land Attack cũng gần giống như SYN Attack, nhưng thay vì dùng các địa chỉ IP không có thực, hacker sẽ dùng chính địa chỉ IP của hệ thống nạn nhân. Điều này sẽ tạo nên một vòng lặp vô tận giữa trong chính hệ thống nạn nhân đó.
Smurf Attack
Smurf Attack, cần có ba thành phần: hacker (người ra lệnh tấn công), mạng khuếch đại (sẽ nghe lệnh của hacker) và hệ thống của nạn nhân. Hacker sẽ gởi các gói tin ICMP đến địa chỉ broadcast của mạng khuếch đại. Điều đặc biệt là các gói tin ICMP packets này có địa chỉ ip nguồn chính là địa chỉ ip của nạn nhân . Khi các packets đó đến được địa chỉ broadcast của mạng khuếch đại, các máy tính trong mạng khuếch đại sẽ tưởng rằng máy tính nạn nhân đã gởi gói tin
Các file đính kèm theo tài liệu này:
- KLTN_Snort_ver10.1 (1).docx