Snort Là Gì

     

Bài 3: Xây dựng hệ thống IDS cùng với Snort

Snort là một ứng dụng IDS mã mối cung cấp mở, chuyển động trên những hệ điều hành trong số đó có Linux với Windows. Bài xích này thực hiện cài đặt và vận hành Snort như 1 IDS cơ chế network-based với host-based. Công việc thực hiện tại như sau:

cách 1: setup Snort. Bước 2: vận hành Snort chính sách IDS. Bước 3: tạo luật dễ dàng cảnh báo tróc nã nhập từ mặt ngoài. Cách 4: lưu ý truy nhập từ bên phía trong đến một nội dung nhạy cảm. Cách 5: lưu ý quét cổng (port scan) với preprocessor sfportscan. bước 1: thiết lập Snort

Cài đặt những thư viện phần mềm cần thiết:


C2 ~># yum install -y wget gcc flex bison zlib zlib-devel libpcap libpcap-devel libdnet libdnet-devel pcre pcre-devel tcpdump git libtool curl man

Thực hiện các bước download mã nguồn, dịch mã nguồn và setup tiếp theo như khuyên bảo trên home Snort:


C2 ~># mkdir snort_src C2 ~># cd snort_src C2 ~># tar xvfz ./daq-2.0.6.tar.gz . . . C2 ~># cd daq-2.0.6 C2 daq-2.0.6># ./configure . . . C2 daq-2.0.6># make . . . C2 daq-2.0.6># make install . . . C2 ~># cd ..

Bạn đang xem: Snort là gì

C2 ~># tar xvfz ./snort-2.9.8.3.tar.gz . . . C2 ~># cd snort-2.9.8.3 C2 daq-2.0.6># ./configure . . . C2 daq-2.0.6># make . . . C2 daq-2.0.6># make install . . .

Sau khi thiết đặt thành công, Snort tất cả thể vận động ở 3 chế độ:

Package sniffer: hiển thị thông tin header những gói tin Package log: ghi lại các tin tức vào tệp tin log nhằm xử lý về sau IDS: phân tích các gói tin hoặc những luồng TCP, thực hiện các tác dụng IDS theo qui định signature-based.

Kiểm tra Snort vận động ở chính sách package sniffer với thông số -dev. Trong lúc chạy Snort ở chính sách này, thực hiện ping mang đến Google, ta sẽ thấy Snort bắt được các gói tin ICMP Echo với Reply rồi hiển thị thông tin các gói tin này lên màn hình.

C2 snort-2.9.8.3># mkdir /var/log/snortC2 snort-2.9.8.3># snort -dev -l /var/log/snortRunning in packet logging mode --== Initializing Snort ==--Initializing đầu ra Plugins!Log directory = /var/log/snortpcap DAQ configured lớn passive.Acquiring network traffic from "eth1".Decoding Ethernet --== Initialization Complete ==-- ,,_ -*> Snort! trong những khi chạy Snort chính sách package log, cũng tiến hành ping đến Google. Hiệu quả là trong thư mục /var/log/snort xuất hiện file log của Snort đánh dấu các gói tin vẫn bắt được:


C2 snort-2.9.8.3># ls /var/log/snort/ snort.log.1476819559

Lưu ý rằng tệp tin log được lưu lại ở dạng nhị phân, theo kết cấu các gói tin. Rất có thể dụng lệnh file nhằm kiểm tra kết cấu của tệp tin nhị phân này:


C2 snort-2.9.8.3># file /var/log/snort/snort.log.1476819559 /var/log/snort/snort.log.1476819559: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 1514)

Để phát âm file này, yêu cầu sử dụng phần mềm tcpdump. Có thể thấy tác dụng hiển thị những gói tin lúc đầu là thương mại dịch vụ ARP nhằm xác định add MAC từ add IP lúc trạm thao tác làm việc cần gửi gói tin ra Gateway. Tiếp theo là các gói tin dịch vụ DNS để xác định add IP của Google. Cuối cùng là những gói tin ICMP Echo với Reply của lệnh ping:


bước 2: vận hành Snort chế độ IDS

Trong chế độ này, Snort thực hiện kiểm soát và điều hành các gói tin và triển khai các phản nghịch ứng theo các luật được khai báo trước. Các file thông số kỹ thuật của Snort được để trong folder /etc/snort. Nên copy toàn bộ các file cấu hình mặc định trong thư mục cài đặt (snort-2.9.8.3/etc) vào folder này:


C2 ~># cd ~/snort_src/snort-2.9.8.3 C2 snort-2.9.8.3># cp ./etc/* /etc/snort C2 snort># ls -l /etc/snort/ total 328 -rw-r--r--. 1 root root 1281 Oct 19 10:53 attribute_table.dtd -rw-r--r--. 1 root root 3757 Oct 19 10:53 classification.config -rw-r--r--. 1 root root 23058 Oct 19 10:53 file_magic.conf -rw-r--r--. 1 root root 31971 Oct 19 10:53 gen-msg.map -rw-r--r--. 1 root root 13257 Oct 19 10:53 Makefile -rw-r--r--. 1 root root 190 Oct 19 10:53 Makefile.am -rw-r--r--. 1 root root 12306 Oct 19 10:53 Makefile.in -rw-r--r--. 1 root root 687 Oct 19 10:53 reference.config -rw-r--r--. 1 root root 26804 Oct 19 10:53 snort.conf -rw-r--r--. 1 root root 2335 Oct 19 10:53 threshold.conf -rw-r--r--. 1 root root 160606 Oct 19 10:53 unicode.map

File cấu hình để vận hành Snort cơ chế IDS là /etc/snort/snort.conf. đề nghị sửa đổi một số thông số như sau:

HOME_NET: đó là mạng hoặc đồ vật trạm nhưng mà Snort sẽ đảm bảo (tùy theo cơ chế hoạt cồn là network-based xuất xắc host-based). Trong cách này, ta áp dụng Snort để bảo vệ một máy chủ Web trực thuộc vùng DMZ (xem hình vẽ trong bài thực hành thực tế số 1) có add IP là 192.168.2.10. EXTERNAL_NET: là vùng mặt ngoài, không rất cần được giám sát. Nó sẽ là toàn bộ các mạng & các máy trạm mà không nằm trong HOME_NET. RULE_PATH: thư mục chứa những luật giải pháp xử lý gói tin. Tùy chỉnh thiết lập giá trị để thư mục này là /etc/snort/rules. Tạm thời ta chưa áp dụng các tác dụng nhúng modul cồn (dynamic) vào Snort nên comment tham sô dynamicdetection. Tạm thời ta sẽ tự thiết lập cấu hình các rule cho Snort nhưng mà không dùng các rule bao gồm sẵn. Do vậy khai báo include file đựng rule (/etc/snort/rules/myrules.rules) và comment tất cả những lênh include các rule gồm sẵn. Khai báo thư mục chứa các danh sách white (các trạm an toàn) và black (các trạm nghi vấn) cũng chính là thư mục RULE_PATH.

Sau khi tùy chỉnh các thông số, file thông số kỹ thuật snort.conf có dạng sau:


C2 ~># cat /etc/snort/snort.conf . . . # thiết đặt the network addresses you are protecting ipvar HOME_NET 192.168.2.10

# phối up the external network addresses. Leave as "any" in most situations ipvar EXTERNAL_NET !$HOME_NET . . . # Path lớn your rules files (this can be a relative path) # lưu ý for Windows ktktdl.edu.vn: You are advised to make this an absolute path, # such as: c:snort ules var RULE_PATH ./rules . . . # path khổng lồ dynamic rules libraries # dynamicdetection directory /usr/local/lib/snort_dynamicrules . . . # my rules include $RULE_PATH/myrules.rules

# site specific rules # include $RULE_PATH/local.rules # include $RULE_PATH/app-detect.rules . . . var WHITE_LIST_PATH ./rules var BLACK_LIST_PATH ./rules


Khi khởi cồn Snort, khoác định nó đề xuất đọc các file white_list.rulesblack_list.rules để xử lý những trạm thuộc list white với black. Tạm thời ta chưa xử trí gì đặc biệt quan trọng đối với những trạm white và black bắt buộc tạo 2 file rỗng tương ứng. Tương tự, file myrules.rules cũng không được định nghĩa nguyên tắc nào:


C2 rules># touch /etc/snort/rules/black_list.rules C2 rules># touch /etc/snort/rules/white_list.rules C2 rules># touch /etc/snort/rules/myrules.rules C2 rules># ls -l /etc/snort/rules/ total 4 -rw-r--r--. 1 root root 0 Oct 19 10:25 black_list.rules -rw-r--r--. 1 root root 0 Oct 19 10:24 white_list.rules -rw-r--r--. 1 root root 0 Oct 19 10:26 myrules.rules

Sau khi chuẩn bị các file thông số kỹ thuật làm việc, chạy Snort chế độ IDS với yêu cầu bắt gói tin trên liên kết mạng eth2. Giả dụ thành công, Snort bước đầu thực hiện bắt gói tin bằng dòng thông báo “Commencing packet processing (pid=23464)”:


C2 ~># snort -i eth2 -l /var/log/snort -c /etc/snort/snort.conf Running in IDS mode

--== Initializing Snort ==-- . . . Acquiring network traffic from "eth2". Reload thread starting... Reload thread started, thread 0x7f3ee96d0700 (23465) Decoding Ethernet

--== Initialization Complete ==--

Rules Engine: SF_SNORT_DETECTION_ENGINE Version 2.6 Preprocessor Object: SF_SIP Version 1.1 Preprocessor Object: SF_POP Version 1.0 Preprocessor Object: SF_SDF Version 1.1 Preprocessor Object: SF_FTPTELNET Version 1.2 Preprocessor Object: SF_IMAP Version 1.0 Preprocessor Object: SF_REPUTATION Version 1.1 Preprocessor Object: SF_SSH Version 1.1 Preprocessor Object: SF_DNP3 Version 1.1 Preprocessor Object: SF_DCERPC2 Version 1.0 Preprocessor Object: SF_SMTP Version 1.1 Preprocessor Object: SF_GTP Version 1.1 Preprocessor Object: SF_DNS Version 1.1 Preprocessor Object: SF_SSLPP Version 1.1 Preprocessor Object: SF_MODBUS Version 1.1 Commencing packet processing (pid=23464)


bước 3: Luật dễ dàng cảnh báo truy hỏi nhập từ phía bên ngoài

Snort đã quản lý ở chế độ IDS thành công. Bước tiếp theo sau là khai báo những luật cách xử trí cho Snort. Ta bắt đầu với luật đơn giản nhất - phát hiện nay các truy cập từ bên phía ngoài với ssh hoặc ping. a) phạt hiện truy vấn ssh trả sử cần lưu ý khi xuất hiện thêm truy nhập ssh xuất phát từ một máy làm việc xa vào HOME_NET. Qui định được tùy chỉnh thiết lập trong file myrules.rules như sau:


C2 rules># cat /etc/snort/rules/myrules.rules alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"incoming SSH connection!"; flags:S; sid:10000;)

Cú pháp của khí cụ này như sau:

alert: triển khai cảnh báo lúc xuất hiện chuyển động khớp cùng với khai báo của luật. tcp: quy định được cấu hình thiết lập dựa trên thông số của gói tin TCP. Hoàn toàn có thể thay thông số kỹ thuật này bằng những loại gói tin khác như UDP, IP, ICMP, v.v.. $EXTERNAL_NET any -> $HOME_NET 22: điều kiện kiểm tra là gói tin mang đến từ bất cứ trạm nào trong EXTERNAL_NET cùng từ bất kể cổng nào, gửi mang đến HOME_NET cổng 22 (là cổng mà thương mại & dịch vụ SSH đã hoạt động). Msg:"incoming SSH connection!": hiện thông báo cảnh báo. flags:S: điều kiện hạn chế thanh lọc gói tin. Khi thực hiện một liên kết TCP đến cổng 22, có không ít gói tin được gửi đến. Điều kiện lọc dựa trên nguồn cùng đích (địa chỉ & cổng) sẽ khởi tạo ra nhiều lưu ý cho thuộc một hành động ssh. Thủ thuật ở đó là dựa vào thông điệp SYN. Ta biết rằng các kết nối TCP luôn phải ban đầu bằng quy trình bắt tay 3 bước với các thông điệp SYN, ACK SYN, ACK. Vậy cần nếu lọc bổ sung thêm các thông điệp này (flags:S tương xứng với thông điệp SYN) sẽ chỉ tạo nên 1 cảnh bảo cho 1 hành đụng SSH. sid:10000: mã số để khớp giữa cảnh báo với luật. Ví dụ như khi nên liệt kê những cảnh báo theo từng giải pháp thì rất có thể căn cứ vào sid của nguyên lý để lọc các cảnh báo.

Trong lúc Snort đang quản lý ở cơ chế IDS, xuất phát từ 1 trạm như thế nào đó thực hiện kết nối ssh vào sever 192.168.2.10, một thông điệp lưu ý sẽ được gửi đến file log:


C2 rules># tail -f /var/log/snort/alert

b) phân phát hiện liên kết ping tất cả thể bổ sung luật new để phát hiện nay ai đó đã ping vào hệ thống:


C2 rules># cat /etc/snort/rules/myrules.rules alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"incoming SSH connection!"; flags:S; sid:10000;) alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"soomeone ping me!"; sid:10001;)

Khởi cồn lại Snort và dùng một trạm không giống ping đến showroom 192.168.2.10. Công dụng cảnh báo như sau:


C2 rules># tail -f /var/log/snort/alert
bước 4: chú ý truy nhập từ bên trong đến một văn bản nhạy cảm

Cần kiểm soát điều hành các trạm ở trong HOME_NET và phát hiện tại trạm nào truy nhập đến một ngôn từ nhạy cảm không được phép. Lấy ví dụ đưa định ngôn từ nhạy cảm là “terrorism” (khủng bố). Tất cả thể thiết lập cấu hình luật kiểm tra các truy nhập từ bên trong đến câu chữ này và chú ý như sau:


alert tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"terrorism contact!"; content:"terrorism"; nocase; sid:10003;)

Khởi hễ lại Snort cơ chế IDS và chất vấn file lưu ý /var/log/snort/alert.

Xem thêm: Văn Biểu Cảm Và Cách Làm Bài Văn Biểu Cảm, Soạn Bài Đề

Tiếp theo, dung website browser kiếm tìm kiếm một website nào đó có tên chứa từ bỏ khóa terrorism, đưa sử là http://www.merriam-webster.com/dictionary/terrorism. Click vào links để truy nhập đến website này. Lưu ý sẽ được phạt ra:


 Trường hòa hợp luật lưu ý không phát hiện được lúc truy nhập cho trang web, trong số những lý bởi là Snort ko bắt được gói tin nhờ cất hộ đi trong những khi tực tế trang web vẫn được truy nhập cùng hiển thị trong browser. Lý do phổ biến là sự việc offload checksum. Trước khi gửi gói tin, mặt truyền cần thống kê giám sát checksum và gửi vào ngôi trường checksum của gói tin. Nếu thẻ mạng có công dụng tính toán checksum, ứng dụng ứng dụng sẽ không còn tính checksum nữa mà đưa gói tin tất cả trường checksum bằng 0 xuống cho thẻ mạng xử lý. Thư viện libpcap (thư viện ứng dụng bắt gói tin bên trên Linux) chuyển động ở giữa phần áp dụng và card mạng do thế khi mừng đón gói tin đã thấy checksum chưa hợp lệ và không xử trí gói tin này. Dẫn đến vẻ ngoài alert ko được thực thi. Hoàn toàn có thể chạy Snort cùng với thám số -k none để thông báo Snort không đánh giá trường checksum:


C2 ~># snort -d -c /etc/snort/snort.conf -i eth1 -k none . . .
cách 5: chú ý quét cổng (port scan) cùng với preprocessor sfportscan
C1 ~># yum install nmap . . . Package 2:nmap-5.51-4.el6.x86_64 already installed and latest version Nothing to bởi vì

C1 ~># nmap -v -A 192.168.2.10

Uptime guess: 0.171 days (since Fri Oct 21 00:51:40 2016) Network Distance: 1 hop TCP Sequence Prediction: Difficulty=257 (Good luck!) IP ID Sequence Generation: All zeros Service Info: OS: Unix

TRACEROUTE HOP RTT ADDRESS 1 0.47 ms 192.168.2.10

Read data files from: /usr/share/nmap OS & Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 19.26 seconds Raw packets sent: 1111 (52.918KB) | Rcvd: 1079 (46.702KB)


Trên Windows, phiên phiên bản đồ họa của nmap có tên zenmap được cho phép quét cổng của sản phẩm nạn nhân cùng hiển thị tất cả các thông số kỹ thuật liên quan đến những dịch vụ đang làm việc trên đồ vật nạn nhân.

Xem thêm: Dris, Rda Là Gì ? Rta Là Gì ? So Sánh Rda Và Rta Rba, Rda, Rdta, Rta Là Gì

*

Nguyên lý hoạt động vui chơi của các mức sử dụng quét cổng là lần lượt nhờ cất hộ gói tin đặc trưng (chẳng hạn TCP SYN) đến tất cả các cổng của sản phẩm nạn nhân và hóng gói tin trả về. Một thương mại & dịch vụ đang vận động tại cổng tương xứng không sáng tỏ được đó là một liên kết từ trạm sử dụng thông thường hay là một hành vi trong cuộc tiến công quét cổng, do vậy sẽ vấn đáp bằng một gói tin phù hợp (ví dụ, cùng với TCP SYN vẫn là SYN ACK). Dựa vào tác dụng trả về này, phương tiện quét cổng khẳng định được dịch vụ đang “nghe” trên vật dụng nạn nhân và tiếp tục gửi các gói tin cân xứng khác để trinh sát thêm tin tức về dịch vụ thương mại tương ứng. Để phát hiện và chú ý một cuộc tấn công quét cổng như vậy, các luật dễ dàng kiểm tra thông tin của từng gói tin riêng rẽ rẽ sẽ không xử lý được. Snort hỗ trợ cơ chế preprocessor và các luật prepresessor để phát hiện những dạng tấn công “tổ hợp” như vậy. Một biện pháp khái quát, preprocessor là phương pháp Snort đồng ý thêm các modul (plugin) tiền cách xử trí gói tin. Các modul này được fan dùng setup thêm (bằng cách sử dụng thư viện hàm Snort API) với gắn vào Snort để dìm được các gói tin và xử lý chúng trước lúc gói tin được chuyển đến máy giải pháp xử lý trung trọng điểm của Snort. Tùy từng từng mục tiêu riêng nhưng mỗi modul rất có thể kiểm tra những thông tin vào gói tin, chuyển đổi các thông tin này, rồi chuyển đến Snort xử lý. Một ví dụ là modul xử lý các gói tin tiến công dịch vụ web. Trả sử vùng chứa các script website admin (cần được bảo về) được để ở URL http://example.com/admin cùng Snort được tùy chỉnh cấu hình cảnh báo hoặc cấm truy tìm nhập từ bên phía ngoài đến URL này. Mặc dù nhiên, một số trong những biến thể của URL đang cho hiệu quả tương tự, ví dụ như http://example.com/./admin. Modul chuẩn hóa các gói tin HTTP thiết đặt dạng preprocessor sẽ chất vấn và chuyển toàn bộ các biến chuyển thể URL này trở thành URL đúng với chuyển đến Snort xử lý. Sơ đồ dưới mô tả vai trò với vị trí của các preprocessor trong phong cách xây dựng Snort.

*
Hình vẽ 5‑9 : Sơ đồ các preprocessor trong bản vẽ xây dựng Snort

Với tiến công quét cổng, preprocessor sfportscan vẫn được cải cách và phát triển để xử lý. Nó tích lũy nhiều gói tin và phân tích sự tương quan giữa những gói tin này để ra quyết định chúng có phải là chuối những gói tin quét cổng giỏi không. Để kích hoạt preprocessor này, quan trọng lập tham số cấu hình sfportscan và include tập phương pháp preprocessor.rules vào /etc/snort/snort.conf:


C2 tmp># cat /etc/snort/snort.conf | grep sfportscan # Portscan detection. For more information, see README.sfportscan preprocessor sfportscan: proto all scan_type all sense_level low

C2 tmp># cat /etc/snort/snort.conf | grep preprocessor.rules include $PREPROC_RULE_PATH/preprocessor.rules


Khởi hễ lại Snort và thực hiện quét cổng xuất phát từ một máy khác bởi nmap như mô tả bên trên. Cuộc tiến công quét cổng sẽ tiến hành Snort phân phát hiển và cảnh báo: