Phát hiện xâm nhập - Detecting Intrusions
Phát hiện xâm nhập đơn giản là phát hiện những tín hiệu , biểu hiện của người xâm nhập trước khi thiệt hại xảy ra như các services bị denied hay mất dữ liệu và chúng ta có thể ngăn chặn thông qua các kĩ thuật khác nhau. Config những log của hệ thống mà lưu giữ những thông tin về services, user hay data. Người quản trị có thể phát hiện những thông tin lý thú trong các log này, nó thực sự quan trọng khi coi các log và là bước đầu tiên cơ bản nhất để phát hiện xâm nhập và system log đã cho thấy giá trị thực sự của nó
Kế tiếp của sự phát hiện xâm nhập là dùng các tools tự động thường được xem là 1 HIDS ( host-based intrusion detection).HIDS tools bao gồm các software antivirus, persional firewall, NIDS đựơc cài đặt trên các host và nhiều software bảo vệ chống tràn bộ đệm hoặc sự cố gắng bẻ gãy policy của attacker
Và cuối cùng là NIDS
Ví dụ về các HIDS
NIDS - Network Instrusion Detection System là gì ?
Trên cấp độ căn bản, phát hiện xâm nhập được xem như là 1 tiến trình được quyết định khi 1 người không xác chứng thực đang cố gắng để bẻ gãy hệ thống của bạn. Phát hiện những kết nối không hợp lệ là bước khởi đầu tốt nhưng không phải là tẩt cả câu chuyện. Những hệ thống như Snort có thể phát hiện những sự cố gắng đang login vào hệ thống, truy cập vào những vùng share không được bảo vệ và nhiều điều khác nữa, nhưng nhiều loại xâm nhập không rõ ràng để chúng ta có thể phát hiện dễ dàng như là các các cuộc tấn công dùng phương pháp DoS tuy nó không thiệt hại nhiều chỉ chiếm bandwidth và Cpu, dung lượng ổ cứng trên IDS nhưng nó cũng là tín hiệu để có biện pháp phòng chống hữu hiệu
NIDS như Snort có thể scan network traffic để phát hiện những tín hiệu nghi ngờ và các gói dữ liệu xấu, và bạn cũng có thể dùng những tools khác như Tcpdump hay ethereal để để xem các luồng thông tin trên các subnet khác nhau, từ những tools này chúng ta có thể sniff các packet để phân tích và debug hệ thống
Một IDS sẽ kiểm tra tất cả các packet đi qua hệ thống và quyết định packet có vấn đề khả nghi. Bằng cách nào nó có thể biết packet đó khả nghi ? như Snort sẽ có các danh sách các loại packet được mô tả tỷ mỉ giúp hệ thống dựa vào đó mà phán quyết packet nào khả nghi ví dụ như nếu bạn nhận được 1 gói ICMP có kích thước lớn hơn bình thường và bạn có thể đoán được 1 người nào đó đang cố gắng ping of death vào mạng của bạn hoặc như bạn nhận đuợc các packet đựơc phân mảnh ra cực kì ngắn bạn cũng có thể suy ra rằng ai đó đang dùng kĩ thuật tấn công phản hồi làm đảo lộn các gói để lừa firewall thường đuợc gọi là fragmentation attack. Snort cũng như các IDS khác đuợc trang bị hàng ngàn tình huống để nhận dạng tấn công và đuợc cập nhật thường xuyên trên Snort website. Snort và các IDS khác thực sự quan trọng và là lựa chọn hàng đầu để phòng thủ, nếu một attacker xâm nhập và Server của bạn, bạn có thể phát hiện ở system log, mặc dù nhiều attacker tinh ranh xóa đi log của bạn
Ví dụ đây là mô hình của NIDS
Trong đó:
- IDS sensor: Giám sát các traffic ở các segment / zone, gửi dữ liệu về centralize database server
- Centralize database server: nơi tập trung các dữ liệu lấy từ sensor vào database (mysql chẳng hạn)
- User interface: admin dùng giao diện web UI để giám sát
Và đây là các module của nó ở mức luận lý
Giải thích cụ thể hơn 1 chút:
Gói tin bị capture từ sensor - host system or network sniffer (có thể là ở cấp độ host hoặc là cấp độ mạng) sẽ được chuyển qua pre-processing
Pre-processing: gồm bộ phận decoder và preprocess:
- Decoder: đọc packet, nhận biết các trường trong packet
- Preprocess: sắp xếp hoặc modify lại packet trước khi đi vào detection engine. Một số module này có khả năng phát hiện các packet dị thường trong header và sinh ra alert. Ngoài ra, nó có thể tái định dạng gói tin (defragment), sắp xếp lại chuỗi.
Detection engine: xảy ra quá trình phân tích packet: so sánh mẫu (signature matching) hoặc phân tích các dị thường trong packet (statictical analysis) để đưa ra output (alert manager) quyết định.
Knowledge base: database signature.
Long-term storage: nơi chứa các phát hiện dị thường của packet (không được định nghĩa trước)
Response manager: thực thi đáp ứng của alert manager như: ghi log, popup....
GUI: giao diện đồ họa tương tác.
Nhìn vào các sơ đồ trên ta có thể hình dung được phần nào về hệ thống của IDS, IDS can thiệp vào phần payload của các packet sâu hơn là các firewall, hình minh hoạ sau giúp ta phần biệt firewall và IDS dễ dàng hơn, rất dễ hiểu phần đầu là việc của firewall còn phần sau IDS làm tiếp việc kiểm tra của nó
Tại sao Snort là một NIDS ?
Snort được coi như là NIDS mang lại nhiều lợi ích và là 1 NIDS mạnh mẽ phù hợp cho nhiều công ty vì nhiều lý do
Giá cả
Là một software mã nguồn mở và tất nhiên là free nhưng dễ dùng đựơc đóng gói thành nhiều sản phẩm phù hợp cho từng doanh nghiệp. Snort đuợc phát triển do công ty Soucefire điều hành bởi Martin Roesch. Hiện tại công ty Check point đã mua lại Soucefire với giá 225 triệu USD
Ổn định, Nhanh, Mạnh mẽ
Ngay từ đầu đây là mục đích chính để các nhà phát triển Snort luôn luôn giữ nó nhỏ gọn, nhanh, và trong sáng dễ dùng, không chiếm dụng nhiều đường truyền.
Tính năng tiền xử lý
Dùng để xử lý trước các message trong network ở thời gian thực tăng khả năng nhận dạng các packet nghi ngờ, tăng khả năng nhận diện attacker dùng các kĩ thuật tấn công nhằm đánh lạc hướng IDS
Tính Uyển Chuyển
Có thể dễ dàng thiết lập những rules trên những mode khác nhau phù hợp với thực trạng của công ty. Có thể dùng các tools để quản lý tập trung như ACID hay SnortCenter. Nhiều Scripts có thể plug-ins để mở rộng chức năng Snort có thể tạo những Access Control List tự động trên các thiết bị Cisco routers là 1 ví dụ điển hình
Được Support mạnh mẽ
Nhiều công ty thường xuyên test và kiểm tra các lỗ hổng của Snort đưa ra nhiều biện pháp khắc phục như CERT và SANS. Là sản phẩm nguồn mở nên được support rất nhiều bởi cộng đồng người sử dụng trên internet và các thông báo sẽ gửi đến từng người sử dụng qua mail nếu đăng kí và quan tâm đến Snort.
TÀI LIỆU THAM KHẢO: SNORT COOKBOOK---OREILLY, SNORT INSTRUSION DETECTION 2.0--- SYNGRESS
Bài viết sử dụng 1 số hình ảnh của omicron trong bài IDS/IDP vs firewall
::: Phần 2 Cài Đặt Và Cấu Hình Snort:::
Trong phần này em sẽ trình bày các kĩ thuật thường dùng để bắt các packet và phân tích nội dung của chúng, các kinh nghiệm cài đặt và sử dụng. Em sẽ bắt đầu với cách sử dụng Snort như là Sniffer, Packet logger và cuối cùng là sử dụng Snort thực sự là NIDS
2.1.Vài dòng về Snort
Ngày nay Snort có lẽ là sản phẩn IDS mã nguồn mở nổi tiếng nhất. Snort đuợc thiết kế dùng command line và nó có thể tích hợp chung với các sản phẩm khác và được dùng trên nhiều platforms khác nhau .
Snort lần đầu tiên được phát triển năm 1998 lúc đó chức năng chính của nó là sniff các packet và đến nay nó phát triển vượt bậc với nhiều tính năng mạnh như đã biết. Hàng tuần Snort được download bởi hàng ngàn người và các nhà phát triển.Hiện nay nó được sử dụng như là IDS từ người dùng nhỏ đến các công ty lớn trên toàn thế giới trên nhiều platform khác nhau như Windows,FreeBSD,Linux,Solaris..
2.2.Cài Đặt Snort
Chúng ta có thể cài đặt Snort từ Souce code hay là các gói RPM .Theo kinh nghiệm nên download source code và sau đó biên dịch để cài đặt hơn là dùng các gói binary có sẵn. Ta có thể config Snort kết hợp với MySQL. Hiện tại phiên bản mới nhất của Snort là 2.4.3 ngày 18/10/05 và khuyên nên dùng bản này trước đó ngày 6/10/05 CERT và SANS đã phát hiện lỗ hổng của Snort trong phần tiền xử lý Back Orifice.
2.2.1Cài đặt từ Source code
Cài Snort khá dễ dàng, có nhiều tuỳ chọn phù hợp với nhu cầu ngừơi dùng; phần quan trọng nhất của Snort là kết hợp với nhiều database để lưu trữ. Download và giải nén Snort từ địa chỉ
http://www.Snort.org . tôi thường cài đặt vào thư mục /usr/local/src bạn có thể sử dụng các lệnh sau để cài đặt
$ tar -xvft Snort-2.4.3.tar.gz
$ cd Snort-2.4.3
$ ./ configure
$ make
$ make install
Nó sẽ cài vào thư mục /usr/local/bin, mọi user có thể chạy nó. Nếu nó không chạy lệnh configure sẽ thông báo cho bạn biết. Hầu hết các trường hợp đều do 2 thư viện libpcap và PCRE ( pert-compatible regular Expression ) có thể download libpcap ở
http://www.tcpdump.org và PCRE ở
http://www.pcre.org
2.2.2 Cài đặt trên windows
Nếu muốn sử dụng Snort trên Windows bạn phải download thư viện winpcap từ địa chỉ
http://winpcap.polito.it. Sau khi cài đặt winpcap rồi ta sẽ download bản cho windows ỏ
http://www.Snort.org/dl/binaries/win32. Snort sẽ chạy với các dòng lệnh trên windows
Một phiên bản khác có thể download từ địa chỉ
http://winSnort.com được quản lý bởi Michael E.Steele và tất nhiên cũng free. Bản dùng cho windows làm việc tốt với cơ sở dữ liệu Microsoft SQL server và cũng có rất nhiều tài liệu về Snort trên website này rất bổ ích.
Nhiều cuộc thảo luận dài diễn ra bàn luận về các hệ điều hành dùng Snort cái nào nhanh nhất. Tổng hợp từ nhiều nguồn tin từ các người dùng bằng cách đo điểm benchmarks chỉ ra rằng bản dùng cho windows nhanh hơn trên Linux và BSD
Các option trong câu lệnh của Snort
Các option này cũng được mô tả rất kĩ trong file config của Snort ,nếu chỉ muốn thử và tìm hiểu thì ta nên dùng các command line còn nếu muốn lưu giữ luôn trong file lúc setting nên vào config file
-A altert-mode
Nhiều mode được hỗ trợ ở đây như : fast , full, none, unsock
-b
Log packet dạng tcpdump. file với format dạng tcmdump sẽ nhỏ hơn và là phương pháp tốt nhất khi cần lưu trữ với số luợng lớn log data và packet. dĩ nhiên nhỏ sẽ nhanh hơn và là sự lựa chọn trên các mạng tốc độ cao
-B address-conversion-mask
Giúp ẩn địa chỉ thực sự của internal network trong binary logs
-c config-file
Chỉ định conifg file nào muốn sử dụng, cần thiết khi Snort chạy ở mode NIDS
-C
In ra những kí tự tìm thấy trong packet payload, có thể hiển thị ở dạng hex
-d
Hiển thị dữ liệu ở tầng application khi dùng chế độ hiển thị đầy đủ hoặc trong packet logging mode
-D
Chạy Snort ở mode daemon. Daemon mode cần thiết khi ta cần chạy Snort tự động mỗi khi startup và sẽ hiển thị trong event khi ta khởi động, không có message nào được hiển thị trong console khi chạy ở mode này
-e
Hiển thị hoặc log các lớp liên kết paket headers. thường dùng khi capture packet khi chạy Snort ở chế độ Sniffing
-F bpf-file
Đọc Berkeley Packet Filters (BPF) từ bpf file.
-g group
Thay đổi group ID hoặc GID mặc định. Thường dùng khi ta muốn Snort chỉ cho dùng bởi những group đặc biệt mục đích để security hơn
-h home-net
Thiết lập "home network" chỉ định địa chỉ trong định dạng CIDR. Thường sử dụng để tạo biến HOME_NET trong file config
-i interface
Chỉ định interface nào Snort sẽ lắng nghe
-I
Trong thông báo, hiển thị interface nào mỗi packet khi packet đến nếu ta có nhiều interface cùng lúc sử dụng nhìêu sensor và các sensor gửi các packet đến database quản lý cùng 1 lúc
-k checksum-mode
Điều khiển các packet checksums Snort. Nhiều giá trị checksum mode bao gồm all,noip,notcp,noudp,noicmp,none
-l logging-directory
Chỉ định thư mục để log các alter. Mặc định thư mục log là /var/log/Snort, nhưng mặc định chỉ sử dụng khi Snort chạy ở -A mode
-L binary-log-file
Thiết lập filename của file binary, mặc định sẽ là thời gian thêm vào trước chữ Snort.log được lưu trong log
-m umask
Thiết lập chế độ tạo mặt nạ file, đơn giản chỉ là ngăn chặn xem log file trong khi đang capture packet, tránh hacker xoá log
-n packet-count
Đếm số luợng packet đang tồn tại. thường dùng khi muốn capture một traffic ở mạng nhỏ trong thời gian ngắn
-N
Tắt packet logging nhưng chế độ alert vẫn hoạt động và chỉ hiển thị trên màn hình console. thường dùng để test những file cấu hình mới
-o
Thay đổi thứ tự các rules đựoc áp đặt đến packet. Thay vì các rules áp đặt theo dạng chuẩn alert pass Log, ta có thể áp đặt lại Pass Alert Log. Khuyên dùng đối với người dùng chạy SnortCenter hoặc các web interfaces khác. Option này thường sử dụng khi chắc chắn rằng nhựng pass rules sẽ applied trước những detection rules.
-O
Khi ở mode ASCII, nó sẽ thay thế địa chỉ ip hiển thị trên màn hình hoặc logfile với dạng”xxx.xxx.xxx.xxx”. nếu home-net đựoc set ở -h , chỉ có ip của home-net được hiển thị còn lại sẽ được thay thế. Sử dụng khi capture nhưng packet dùng để làm mẫu và share với mọi người trong các cuộc thảo luận ỏ các group hoặc qua mailing list
-p
Tắt chế độ sniff hỗn tạp, chỉ dùng để bảo vệ 1 host duy nhất.
-P snap-length
Thiết lập chiều dài tối đa cho các packet capture.Thiết lập để có thể bắt hết các packet, nếu thiết lập chiều dài quá ngắn có thể không coi hết được nội dung của packet khi cần thiết
-q
Không hiển thi banner hay những thông tin khi khởi động
-r tcpdump-file
Sử dụng option này khi dùng với file định dạng tcpdump
-s
Gửi alert message đến syslog server. Có thể gửi ở local hay remote server
-S variable=value
Gán giá trị cho biết ví dụ home-net, dn-server….
-t chroot
Thay đổi thư mục root của Snort là chroot sau khi khởi động. đường dẫn cho logfiles và các files alert sẽ liên quan trực tiếp đến thư mục mới này
-T
Khởi động Snort ơ chế độ selt-test. Hữu ích khi debug Snort trước khi chạy ở chế độ deamon
-u user
Thay đổi ID và UID của user giống như –g phía trước
-U
Áp đặt thời gian vào log files. Dùng trong các truờng hợp capture từ nhiều sources trên 1 syslog server và các sensor gửi thông qua WAN
-v
In toàn bộ packet trên console. Cẩn thận khi dùng, nó làm cho Snort chậm đi khi drop packet
-V
Hiển thị Version của Snort
-x
Hiển thị các packet “thô” cần dùng khi xem các ethernet headers và trailers
-y
Bao gồm năm trong log files
-z
Bật chức năng stream4
-?
Danh sách các option và thoát
2.3. Các chế độ hoạt động của Snort
Trong phần này, em sẽ trình bày tại sao cần Snort trong khi nó có vẻ giống các phần mềm khác như tcpdump cũng sniff packet và có thể đọc từ định dạng của libpcap. Sau đây là những lý do chứng tỏ Snort có nhiều điểm tốt trong giải pháp sniffing và phát hiện xâm nhập.
Mô tả sâu sắc về các dòng dữ liệu
Linh hoạt hơn tcpdump về khả năng đọc và output
Có thể dễ dàng chỉnh sửa , hiển thị nhiều trường đa dạng trong các headers
Viết các rules liên quan dễ dàng dễ hiểu và dễ chỉnh sửa
Có thể report trên các mạng wireless riêng biệt bằng cách sử dụng những patches đặc biệt
Nhìn tổng quan về cơ chế hoạt động của snort
channhua - HVA