banner
 .::Defense::. Snort - A Preprocessor Go to original post Author: Chanhua - Translator:  - Entry Date: 30/05/2009 15:45:38
2.4.3 Cấu hình tiền xử lý (preprocessor)

Tiền xử lý phục vụ cho nhiều mục đích. Nó “bình thường hoá” traffic cho các services, để chắc chắn rằng dữ liệu trong các packet Snort đang theo dõi sẽ có cơ hội tốt nhất để so sánh với các tín hiệu nhận dạng (signatures ) mà Snort đuợc trang bị. Chức năng khác của quá trình tiền xử lý là tự phòng thủ. Các cuộc tấn công được phát triển để lẩn tránh hoặc làm tràn ngập NIDS sensor, vì thế attacker có thể lợi dụng làm những công việc mình cần. Chức năng frag2 và stream4 tiền xử lý có chức năng chính để chống lại các phương pháp này.
Và chức năng cuối cùng cũng là chức năng quan trọng nhất là làm cho Snort có thêm chút thông minh để phát hiện ra các cuộc tấn công mang phong cách không bình thuờng mà Snort không được trang bị trong rules.

Mô hình các gói tin đi vào ở mode preprocessor





2.4.3.1 FLOW

Flow preprocessor có một module là flow-portscan. Flow theo dõi tất cả traffic và giữ các track kết nối giữa hệ thống và port lạ, khi có 1 flow lạ mới thông tin sẽ chuyển qua hash (làm cho các track nhỏ hơn , nhanh hơn trong tracking các địa chỉ IP và PORTS) được lưu trữ trong bảng bộ nhớ dành sẵn. Các option cho flow preprocessor

Memcap

Chỉ định mức tối đa cho bộ nhớ khi tracking, mặc định là 10MB, thông số này để điều khỉên bộ nhớ của Snort khi cần

Rows

Chỉ định số dòng trên bảng hash, mặc định là 4,099 dòng

Stats_interval

Có thể chuyển tình trạng của flow preprocessor qua stdout, giá trị là một số nguyên đại diện cho thời gian tính bằng giây (s) , rất hữu ích khi dùng cho mục đích test

Hash
Phương pháp sử dụng hash thông tin vào bảng, có thể set hash có giá trị là 1 (byte) hoặc 2 (số nguyên ) dùng hash 2 nhanh hơn

Đây là cấu hình khuyên của các nhà phát triên dùng cho flow:

Preprocessor flow: stats_interval 0 hash 2

2.4.3.2 frag2

Khi một packet đi từ mạng này qua mạng khác, nó thường cần phân mảnh thành các packet nhỏ hơn, bởi vì mạng thứ 2 sẽ giới hạn kích thuớc của packet và tất nhiên nhỏ hơn mạng đầu tiên. Và tất cả các packet nhỏ sẽ đuợc sắp xếp lại khi đến nơi. Một trong những phương pháp của attacker là dùng các packet nhỏ để lừa firewall hoặc IDS. Ví dụ: rules của Snort đang dò tìm chuỗi /users.pwd trong các section của packet, một attacker có thể tạo ra một dãy các packet rất nhỏ chỉ chứa vài byte trong data của packet, mảnh đầu tiên có thể chứa /user , và cái packet phân mảnh thứ 2 có thể chứa s.pwd, các packet này sẽ không kích hoạt báo động bởi vì nó không giống các rules nào cả, frag2 preprocessor sẽ sắp xếp sự phân mảnh này vào chung và nó sẽ dễ dàng phát hiện sự ẩn dấu đó. Hoặc một ví dụ khác các attacker có thể đưa ra 1 dung lượng quá lớn các packet đã phân mảnh nó sẽ chiếm dung lưonng của hệ thống và làm overload có thể Snort sẽ từ chối tất cả và ảnh hưởng tới các packet không liên quan, các tools mà attacker thường dùng là Fragroute, frag2 có các options để chống lại các dạng tấn công này

Timeout:

Số dây trước khi tắt các sension để flush lại bộ nhớ, mặc định là 60s

Memcap

Số luợng bytes của memory set aside, mặc định là 4MB

Detect_state_problems

Bật chức năng báo động khi phát hiện điều kiện không bình thường trong các packet phân mảnh, nó nên được bật cho hầu hết các trường hợp

Min_ttl

Thiết lập time to live (TTL) tối thiểu đuợc chấp nhận của tiền xử lý, mặc định là 0

Ttl_limit

Thiết lập ttl maximum, nó không nên quá lớn ,mặc định là 5

Thiết lập khuyến cáo nên dùng:

Preprocessor frag2

2.4.3.3 stream4

stream4 được thiết kế để bảo vệ Snort từ 1 dạng tấn công mới của attacker tới các NIDS sensor bằng cách gửi tràn ngập các packet chứa các chuỗi dữ liệu giống như trong rules để kích các báo động, cũng có khá nhiều tools dùng cho việc này nhưng Snort của có cách chống lại.

stream4 có 2 nhiệm vụ chính: sateful inspection ( kiểm tra tính nguyên ven ), awareness and session reassembly ( nhận biết và sắp xếp các session )

Các option của stream4

Detect_scans

Mặc định là tắt. nó sẽ báo động khi phát hiện các tools scan ports

Detect_state_problems

Mặc định tắt. sẽ báo động khi có vấn đề về tình trạng của cuộc thoại bị phát hiện

Disable_evasion_alerts

Cũng mặc định tắt luôn. nếu bật nó có thể phát hiện attacker đang cố gắng từ chối IDS bằng cách gởi các packet đuơc sắp xếp lộn xộn, hoặc các packet là SYN trong data

Min_ttl

Thiết lập thời gian sống ít nhất để chấp nhận các packet vào stream4 preprocessor

Ttl_limit

Giống như trong phần của frag2

keepstats [machine, binary]

Mặc định tắt, nếu bật nó sẽ hiển thị tình trạng các senssion đã theo dõi ở 2 chế độ machine là text file, định dạng binary và dùng tools barnyard để thống nhất

Noinspect

Mặc định cũng off. tắt chức năng statefull inspection của tất cả các packets
Ta có thể tham khảo về các tiến trình stateful ở hình này





Timeout mặc định là 30s

log_flushed_streams

Nếu một packet đang bị theo dõi và là nguyên nhân gây ra báo động, ta có thể dump session này và lưu thông tin từ stream4 vào đĩa cứng

Memcap

Giống phần frag2

Đây là câu lệnh khuyến cáo nên dùng

preprocessor stream4: detect scans, disable_evasion_alerts, timeout 60, ttl_limit 10

2.4.3.4 stream4_reassemble

Snort phản hồi những chuỗi kí tự nó đọc đuợc trong các gói tin đi qua nếu nó trùng với các kí tự nhận dạng trong signatures. Nếu attacker có thể phân chia các kí tự thành nhiều gói tin để tránh báo động của Snort, stream4_reassemble đóng vài trò sắp xếp lại các traffic giữa 2 hệ thống đàm thoại ( conversation ) của network, gia tăng khả năng match các signatures

Các conversation network thường là các chương trình dùng bằng command line như Telnet, Ftp, Smtp có thể là các nguyên nhân nội dung của các packet lọt qua được hệ thống. Reassemble các traffic các services này là cần thiết để ngăn chặn các báo động lầm hoặc bỏ sót.
Một kĩ thuật khác của attacker là nhúng các gói tin với các kí tự gây lỗi, reassemble vẫn có thể phát hiện được

Các option của reassemble

Clientonly

Chỉ bật chức năng này trên client

Serveronly

Chỉ bật chức năng này trên server

Both

Bật trên cả server và client

Noalerts

Chế độ báo động vẫn hoạt động nhưng chỉ tắt chức năng reassembly

Ports [list]

Chỉ định những ports cụ thể để reassembly

Câu lệnh khuyên dùng:

Preprocessor stream4_reassemble: both


2.4.3.5 Tiền xử lý các http inspect

Có nhiều cách thông tin có thể định dạng sang các http session và cũng có nhiều loại khác nhau biểu diễn các thông tin như là các http session như multimedia, .xml, .HTML, .asp, .php, .java,….và kết quả Snort phải “massage” nội dung của các HTTP conversation để định dạng lại data phục vụ cho quá trình phát hiện tốt nhất

Có 2 kiểu cấu hình http_inspect là global và server. Global ảnh huởng trực tiếp tới http traffic ,cấu hình Server chứa các phần setting cho 1 máy server và các group servers như vậy, cái này rất thường dùng để cấu hình cho web server dùng apache hoặc IIS

http_inspect ( global )

Có 3 option trong phần này dùng để config http traffic:

iis_unicode_map <filename> [codemap <interger]

Chỉ đuờng dẫn tới map file unicode.map. Nó sẽ chỉ cho bộ tiền xử lý biết làm cách nào để map các kí tự unicode sang ASCII dạng text đê match các signatures. Ta phải chỉ ra code dể map ví dụ 1252 là latin code

detect_anomalous_servers

Sẽ báo động khi gặp các ports lạ không tiêu chuẩn. thường không bật chế độ này

proxy_alert

Nếu bạn sử dụng proxy server cho các internet user, bật chức năng này để giám sát các user không dùng proxy để kết nối internet

Đề nghị setting cho mode này:

preprocessor http_inspect: global iis_unicode_map unicode.map 1252

http_inspect_server

Có thể dùng option này cho servers bất kì hoặc các servers trong môi truờng làm việc của mình. hầu hết các administrator đều dùng 1 server riêng dùng cho IIS và cái khác dùng Apache servers. Trong phần trình bày này sẽ có ví dụ cụ thể.

Có 2 kiều cấu hình cho http_inspetct_server là “default” và “by IP address”, kiểu “default” chỉ cấu hình cho tất cả web traffic không liên quan gì đến IP address, còn kiểu “IP address” chỉ cấu hình cho các IP đựơc chỉ định hoặc 1 dãy các IP. Có các option là:

Default hoặc < IP address >

Như đã trình bày ở trên

Profile <all | apache | iis >

Có thể dùng apache hoặc chỉ dùng cho iis ta cũng có thể dùng all cho cả 2. Các bảng sau sẽ trình bày cụ thể của profile khi dùng từng loại

Bảng setting cho profile "all"


Option Setting

flow_depth 300
chunk_encoding Báo động khi các chunks lớn hơn 500,000 bytes
lis_unicode_map Map sử dụng cho mode globle
ascii No
non_refc_char On
multi_slash No
directory No
apache_whitespace Yes
double_decode Yes
j_encode Yes
bare_byte Yes
lis_unicode Yes
lis_backslash No
lis_delimiter Yes


Bảng setting cho profile "apache"


Option Setting

flow_depth 300
chunk_encoding Báo động khi các chunks lớn hơn 500,000 bytes
ascii No
non_rfc_char On
multi_slash No
directory No
apache_whitespace Yes



Bảng setting cho profile "iis"


Option Setting

flow_depth 300
lis_unicode_map Map sử dụng cho mode globle
ascii No
multi_slash No
directory No
double-decode Yes
u_encode Yes
bare_byte Yes
lis_unicode Yes
lis_backslash No
lis_delimiter Yes
apache_whitespace Yes

utf_8 No
non_strict On



Đây là phần cấu hình mặc định cho http_inspect_server:

Preprocessor http_inspect_server: server default profile all ports {80 8080 }

Đây là phần cấu hình cho IIS server http_inspect_server :

Preprocessor http_inspect_server: server 10.10.10.33 profile iis ports { 80 8080 }

Còn đây là cấu hình điển hình cho Apache server:

Preprocessor http_inspect_server 10.1.1.125 profile apache ports { 80 8080 }

2.4.3.6 rpc_decode

RPC’s traffic có thể phân chia ra nhiều packet và mã hoá theo nhiều kiểu khác nhau. Rpc_decode preprocessor sẽ bình thường hoá các traffic này cũng chỉ mục đích giúp nhận diện tốt hơn trong singnatures list. List của các ports mà RPC services đang chạy đuợc cung cấp trong các dòng cấu hình. Ở đây có 4 options cho rpc_decode

Alert_fragments

Báo động khi có fragmented RPC traffic

No_alert_multiple_requests

Không báo động khi nhiều hơn một RPC request đuợc chứa trong một packet.

No_alert_large_fragments

RPC fragments có thể lớn hơn size của các fragment hiện hành. Nếu bạn tìm lỗi xác thực, ta phải dùng chức năng này để disable

No_alert_incomplete

RPC messages có thể rất lớn, có khi nó lớn hơn có MTU của mạng nó đang đi qua, nó có thể gây nhiều lỗi cho các RPC network services. Có thể tắt chức năng này để phát hiện lỗi

Đây là đề nghị config rpc_decode

Preprocessor rpc_decode: 111 32771 1024


2.4.3.7 bo

Bo- Back orifice con virust nổi tiếng của các hacker trong các năm qua, dùng để điều khiển từ xa các client bị nhiễm nó, Snort có option để ngăn chặn điều này và phát hiện khá dễ dàng chỉ bằng một dòng lệnh ngắn gọn.

Preprocessor bo

2.4.3.8 telnet_decode

Dùng chức năng này để bình thuờng hoá các kí tự ,chuổi không tiêu chuẩn , lạ của traffic FTP và telnet cũng đơn giản dùng 1 câu lệnh đơn giản.

Preprocessor telnet_decode

2.4.3.9 flow-portscan

Flow-portscan thay thế portscan2 nó nhiều chức năng hơn và mạnh hơn. Có 3 components cơ bản cho flow-portscan

Scoreboards

Nó phát hiện đuợc 2 loại khác nhau của host , talker và scanner. Talker là tất cả các host đang active trong mạng. còn scanner là host đang connection tới 1 port trên server ở trong mạng

Uniqueness tracker

Theo dõi nếu có duy nhất 1 kết nối

Server statistics tracker

Sử dụng để theo dõi thời gian của các service trên các server nhằm theo dõi các kết nối

Để phát hiện các attacker scan port rất khó vì hacker có thể dùng nhiều cách khác nhau:
Sau đây là các option ta có thể dùng để nâng cao hiệu quả của flow-portscan


scoreboard-memcap-talker < bytes>
scoreboard-rows-talker < count>
scoreboard-rows-scanner < count>
scoreboard-memcap-scanner < bytes>
scanner-fixed-threshold < integer>
scanner-sliding-threshold < integer>
scanner-fixed-window < integer>
scanner-sliding-window < integer>
scanner-sliding-scale-factor < float>
talker-fixed-threshold < integer>
talker-sliding-threshold < integer>
talker-fixed-window < integer>
talker-sliding-window < integer>
talker-sliding-scale-factor < float>
unique-memcap < bytes>
unique-rows < integer>
server-memcap < bytes>
server-rows < integer>
server-watchnet < ip list in Snort notation>
src-ignore-net < ip list in Snort notation>
dst-ignore-net < ip list in Snort notation>
tcp-penalties <on|off>
server-learning-time < seconds>
server-ignore-limit < hit count>
server-scanner-limit < hit count>
alert-mode <once|all>
output-mode <msg|pktkludge>
base-score < integer>
dumpall <1>



Đây là dòng cấu hình mẫu cho flow-portscan

preprocessor flow-portscan: server-watchnet [10.10.10.0/24,10.10.20.0/24]

2.4.3.10 arpspoof

Arpspoof được thiết kế cho preprocessor dể detech các hoạt động spoof arp bất hợp pháp trên local nétwork. Các hacker dùng các tools man-in-the-middle attacks như ettercap hoặc arpspoof để nghe trộm giữa các máy trong mạng nội bộ. để cấu hình administrator phải biết địa chỉ MAC của card mạng, điều này thì quá dễ dàng:

Sau đây là cấu hình đề nghị:

# preprocessor arpspoof

# preprocessor arpspoof_detect_host: 192.168.1.1 F0:AB:GH:10:12:53



2.4.3.11 perfmonitor

Một trong những khả năng rất hay của Snort là monitor tình trạng hiện tại của hể điều hành các thông số nó thể hiện nêu lên nhiều ý nghĩa mà dựa vào đó ta có thể đoán được nhiều đìều và đưa ra nhiều biện pháp điều chỉnh theo ý muốn, các thông số Snort monitor


Packets received
Packets dropped
Percentage of packets dropped
Packets Received
Kpackets per second
Average bytes per packets
Mbits per second (wire)
Mbits per second (rebuilt) (Mbits trung bình Snort nhúng vào sau khi rebuil các packet)
Mbits per second (total)
Pattern-matching percent (Phần trăm dữ liệu average percent of data received that Snort processes
in pattern matching)
CPU usage (user time, system time, idle time)
Alerts per second
SYN packets per second
SYN/ACK packet per second
New sessions per second
Deleted sessions per second
Total sessions
Max sessions during time interval
Stream flushes per second
Stream faults per second
Stream timeouts
Frag completes per second
Frag inserts per second
Frag deletes per second
Frag flushes per second
Frag timeouts
Frag faults


Khi dùng thêm từ “flow” , nó sẽ hiển thị tình trạng các traffic của protocal mà Snort dang soi, dùng “event” Snort sẽ mở chức năng reporting và hiển thị trạng thái số lượng signatures match, dùng từ “max” sẽ kích hoạt Snort hoạt động hết sức để nâng cao hiệu quả, dùng tư “pktcnt” điều chỉnh số lượng packets đang thực thi trước khi check thời gian sample mặc định set là 10,000.

Ví dụ config và bật chức năng perfmonitor preprocessor:

Preprocessor perfmonitor : time 30 events flow file stats.profile max console pktcnt 10000

Preprocessor perfmonitor: time 30 file /var/tmp/Snortstat pktcnt 10000

2.4.4 Cấu hình OUTPUT

Snort có thể output vào các file log hoặc output ra console, nhiều administrator thích dùng các phần mềm của hãng thứ 3 (third party ) để tăng thêm chức năng giám sát của Snort, các phần mềm data database đều có thể dùng được, lưu ý trước khi cài đặt Snort muốn dùng database nào thì cần chỉ rõ khi cài đặt ví dùng dùng MySQL , khi biên dịch source thêm vào - -mysql
ví dụ: ./configure - - mysql





2.4.4.1 alert_syslog

Output cấu hình theo kiểu

Output alert_syslog : <facility> <priority>

Các option sau là một trong nhưng syslog chuẩn và syslog mặc định là

LOG_AUTH

LOG_AUTH
LOG_AUTHPRIV
LOG_DAEMON
LOG_LOCAL0
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
LOG_USER

Các option ưu tiên sau cũng là các syslog ưu tiên chuẩn, mặc định là LOG_ALERT

LOG_EMERG
LOG_ALERT
LOG_CRIT
LOG_ERR
LOG_WARNING
LOG_NOTICE
LOG_INFO
LOG_DEBUG

Đây là câu cấu hình mẫu cho alert_syslog

output alert_syslog: LOG_AUTH LOG_ALERT

và câu lệnh này dành cho bản windows của Snort nhìn vào cũng dễ hiểu

output alert_syslog: host=192.168.1.100:80 LOG_AUTH LOG_ALERT

2.4.4.2 log_tcpdump

Log này sẽ định dạng sang dạng log_tcpdump, do có rất nhiều phần mềm có thể đọc được dạng log này, khi log sẽ có timestamp đính vào file name

ví dụ: câu lệnh cấu hình

output log_tcpdump /var/log/Snort/tcpdump.out

2.4.4.3 database

Khi log vào database , một khối luơng lớn thông tin của Snort sẽ được lưu trữ như các báo động (alert) , các host liên quan, các packet gây ra báo động, và ta dễ dàng log các báo động thật sự và các báo động lỗi, sai nhanh và nhiều hơn
Đôi khi log vào database cũng quá tải gây ra hiện tượng thắt cổ chai dẫn đến 1 alert chỉ có thể được log trong một thời gian. Và phương pháp cấu hình Snort làm sao hợp lý nhất là các kinh nghiệm của các admin sau này ví dụ có thể dùng tuning hoặc thresholding để tạo hiệu quả hơn.

Cấu trúc của câu lệnh output ra database

output database: <log | alert>,<database type>,<parameter list>

Câu lệnh trên nhìn vào ta có thể hiểu ngay được ý nghĩa của nó, còn <parameter list> bao gồm các phần sau :

host

Địa chỉ IP của database server

port
Port của database đang lắng nghe

dbname=<database name>

Loại database ta đang logging

user

username Snort sử dụng để log trong database

password

Tất nhiên là có user phải có pass để vào rồi

sensor_name

Tên của sensor cấu hình, có thể thểm -I trong command line sử dụng IP address thay cho tên

encoding

Sử dụng mã hoá để log vào database, ví dụ kiểu hex,base64,ascii và khuyên dùng ascii

detail

Có thể chỉ định details level nào log vào database, ví dụ dùng full,fast và full được khuyên dùng nhất

Với các loại database cụ thể ta phải biên dịch cho đúng khi cài đặt như đã nói phần trước

CODEMySQL
./configure - -with-mysql

POSTGRESQL
./configure - -with-postresql

ODBC
./configure - -with-odbc

MSSQL
Chỉ dùng cho bản windown, dùng odbc để log vào MSMSQL server

ORACLE
./configure - -with-oracle

và các log khác ta sẽ coi trong phần khuyến cáo của database kèm theo

2.4.5 File Inclusion

Trong file Snort.conf, câu lệnh include chỉ cho Snort đọc các file sau từ include được lưu trong filesystem của Snort sensor, giống như trong lập trình vậy

ví dụ :

$ include $RULE_PATH/bad-traffic.rules
$ include $RULE_PATH/exploit.rules
$ include $RULE_PATH/scan.rules

Các rules trên ta có thể download trên internet, khi down về ta muốn phân nhóm hoặc chỉnh sửa,độ ưu tiên các rules ta có thể cấu hình trong file classification.config, file reference.config gồm các links tới web site với các thông tin cho tất cả các alerts, include nó rất hữu tích , nhanh gọn
ví dụ:

# include classification & priority settings

include classification.config

# include reference systems

include reference.config

channhua - HVA
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Other posts in the same group:

Snort - A Preprocessor
Go to top Go to original post  

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|