Bài tập lớn môn Cơ sở an toàn thông tin đề tài "Tìm hiểu và so sánh tính năng của một số IDS"
Bài tập lớn môn Cơ sở an toàn thông tin đề tài "Tìm hiểu và so sánh tính năng của một số IDS" giúp sinh viên tham khảo và phục vụ nhu cầu học tập của mình
Preview text:
lOMoARcPSD| 36477832 Đề tài:
TÌM HIỂU VÀ SO SÁNH TÍNH NĂNG CỦA MỘT SỐ IDS
Giảng viên hướng dẫn: Nguyễn Mạnh Thắng MỤC LỤC
CHƯƠNG 1: TỔNG QUAN IDS 2
1.1 KHÁI NIỆM IDS/IPS 2 1.2 PHÂN LOẠI IDS 2
1.2.1 PHÂN LOẠI THEO MÔ HÌNH CHỨC NĂNG 2
1.2.2 PHÂN LOẠI THEO PHƯƠNG THỨC HOẠT ĐỘNG 5
1.3 GIỚI THIỆU MỘT SỐ IDS PHỔ BIẾN 6
CHƯƠNG 2: HƯỚNG DẪN SỬ DỤNG SURICATA 82.1 GIỚI THIỆU SURICATA 9
2.2 CÀI ĐẶT SURICATA 9
2.2.1 CÀI ĐẶT THƯ VIỆN 9
2.2.2 CÀI ĐẶT MÃ NGUỒN 9 2.3 SURICATA RULES 10 2.3.2 RULE OPTION 12
2.4 CHẾ ĐỘ LÀM VIỆC (RUNMODES) 15
2.5 CẤU HÌNH CHO SURICATA 18
2.3.1 CẤU TRÚC RULES 10
CHƯƠNG 3: THỰC NGHIỆM 18 3.1 CHUẨN BỊ 18 3.2 CÀI ĐẶT 18
3.3 THỬ NGHIỆM DOS. 18 1 lOMoARcPSD| 36477832
CHƯƠNG 1: TỔNG QUAN IDS 1.1 KHÁI NIỆM IDS/IPS
IDS (Intrusion Detection System) là hệ thống phát hiện xâm nhập. Đây là các phần
mềm hoặc công cụ giúp người dùng bảo mật hệ thống và cảnh báo mỗi khi có xâm nhập.
IDS thường là một phần của các hệ thống bảo mật hoặc phần mềm khác, đi kèm với nhiệm
vụ bảo vệ hệ thống thông tin. Các tính năng quan trọng nhất của IDS bao gồm: giám sát
mạng lưu lượng và các hoạt động nghi ngờ; đưa ra cảnh báo về những điểm bất thường cho
hệ thống và mạng quản trị đơn vị; kết hợp với lửa tường, phần mềm diệt virus nên một hệ
thống hoàn chỉnh bảo mật.
IPS (Intrusion Prevention System) là hệ thống ngăn chặn xâm nhập. Như vậy, IPS bao
gồm IDS cùng hệ thống kiểm soát. Trong khi, IDS chỉ có thể phát hiện và đưa ra các cảnh
báo thì IPS có khả năng ngăn chặn phát tán dựa vào nội dung của các hành vi xâm nhập tới hệ thống. 1.2 PHÂN LOẠI IDS
1.2.1 PHÂN LOẠI THEO MÔ HÌNH CHỨC NĂNG Có 2 loại IDS chính :
- Host-based Intrusion Detection System (HIDS) – Một hệ thống có quyền truy cập trực
tiếp vào cả mạng nội bộ và internet, HIDS chụp một 'hình ảnh' của tập tin của toàn bộ
hệ thống và sau đó so sánh nó với một hình ảnh trước đó. Nếu hệ thống tìm thấy sự
khác biệt lớn, chẳng hạn như các tệp bị thiếu, v.v., thì nó ngay lập tức cảnh báo người quản trị.
- Network-based Intrusion Detection System (NIDS) - Một hệ thống phân tích lưu lượng
truy cập toàn bộ mạng con, NIDS theo dõi cả lưu lượng truy cập trong và ngoài, đến và
đi từ tất cả các thiết bị của mạng.
HOST-BASED INTRUSION DETECTION SYSTEMS (HIDS)
Host-based Intrusion Detection System (HIDS) sẽ kiểm tra các sự kiện trên máy tính
trong mạng của người dùng thay vì lưu lượng truy cập xung quanh hệ thống. Loại hệ thống
phát hiện xâm nhập này được viết tắt là HIDS và nó chủ yếu hoạt động bằng cách xem xét
dữ liệu trong các tệp quản trị trên máy tính mà nó bảo vệ, các tệp đó bao gồm tệp nhật ký (log) và tệp cấu hình.
HIDS sẽ sao lưu các tệp cấu hình của người dùng để người dùng có thể khôi phục cài
đặt nếu vi-rút độc hại làm mất an toàn hệ thống của người dùng bằng cách thay đổi thiết
lập của máy tính. Một yếu tố quan trọng khác mà người dùng muốn bảo vệ là quyền truy
cập root trên các nền tảng giống Unix hoặc thay đổi sổ đăng ký trên hệ thống Windows.
HIDS sẽ không thể chặn những thay đổi này, nhưng nó sẽ có thể thông báo cho người dùng
nếu có bất kỳ quyền truy cập nào như vậy xảy ra. 2 lOMoARcPSD| 36477832
NETWORK-BASED INTRUSION DETECTION (NIDS)
Network-based Intrusion Detection System (NIDS) còn được gọi là hệ thống phát hiện
xâm nhập mạng hoặc IDS mạng, kiểm tra lưu lượng trên mạng của người dùng. Như vậy,
một NIDS điển hình phải bao gồm một bộ dò tìm gói để thu thập lưu lượng mạng để phân tích.
Công cụ phân tích của NIDS thường dựa trên quy tắc và có thể được sửa đổi bằng cách
thêm các quy tắc của riêng người dùng. Với nhiều NIDS, nhà cung cấp hệ thống hoặc cộng
đồng người dùng, sẽ cung cấp các quy tắc cho người dùng và người dùng chỉ có thể nhập
các quy tắc đó vào quá trình triển khai của mình. Khi người dùng đã quen với cú pháp quy
tắc của NIDS đã chọn, người dùng sẽ có thể tạo quy tắc của riêng mình.
Với việc thu thập lưu lượng truy cập, người dùng không muốn tất cả lưu lượng truy cập
của toàn bộ hệ thống vào các tệp nhật kí. Bởi vì như vây người dùng sẽ không thể phân tích
tất cả dữ liệu đó. Vì vậy, các quy tắc phân tích trong NIDS cũng tạo ra việc thu thập dữ liệu
có chọn lọc. Ví dụ: nếu người dùng có quy tắc cho một loại lưu lượng HTTP đáng lo ngại,
NIDS của người dùng chỉ nên chọn và lưu trữ các gói HTTP hiển thị các đặc điểm đó.
Thông thường, NIDS được cài đặt trên một phần cứng chuyên dụng. Các giải pháp
doanh nghiệp trả phí cao cấp đi kèm như một phần của bộ mạng với phần mềm được tải
sẵn trên đó. Tuy nhiên, người dùng không phải trả nhiều tiền cho phần cứng chuyên dụng.
NIDS yêu cầu một mô-đun cảm biến để nhận lưu lượng, vì vậy người dùng có thể tải nó
vào một bộ phân tích mạng LAN hoặc người dùng có thể chọn phân bổ một máy tính để
chạy tác vụ. Tuy nhiên, hãy đảm bảo rằng thiết bị mà người dùng chọn cho nhiệm vụ có đủ
tốc độ xung nhịp để không làm chậm mạng của người dùng. 3 lOMoARcPSD| 36477832
Hình 1.1: Mô hình mạng HIDS và NIDS
SO SÁNH SỰ KHÁC GIỮA IDS/IPS VÀ FIREWALL
Sau khi đã tìm hiểu các khái niệm cách hoạt động hay mô hình của IDS/IPS trong hệ
thống. Dưới đây là sự khác nhau IDS/IPS và firewall:
Cả IDS và IPS đều là các hệ thống dựa trên dữ liệu những mối đe dọa. IDS cần quản
trị viên xem xét những mối nguy được cảnh báo, còn IPS có thể tự ngăn chặn các mối nguy này.
Về phía FIREWALL, thường được cấu hình để chặn tất cả truy cập, sau đó người dùng
sẽ cài đặt để cho phép một số loại truy cập nhất định. Trong khi đó, cách thức làm việc của
IPS và IDS hoàn toàn ngược lại, cho phép tất cả các truy cập và chỉ cảnh báo hoặc chặn
một số truy cập cụ thể. Vì vậy, tốt nhất người dùng nên sử dụng kết hợp FIREWALL với IPS hoặc IDS.
Dưới đây là 1 số ưu nhược điểm của IDS:
- Ưu điểm: Thích hợp sử dụng để thu thập số liệu, bằng chứng phục vụ công tác điều tra
và ứng cứu sự cố. Đem đến cái nhìn bao quát, toàn diện về toàn bộ hệ thống mạng, là
công cụ thích hợp phục vụ việc kiểm tra các sự cố trong hệ thống mạng. 4 lOMoARcPSD| 36477832
- Nhược điểm: Cần được cấu hình hợp lý, nếu không sẽ gây ra tình trạng báo động nhầm.
Khả năng phân tích traffic mã hóa tương đối thấp. Chi phí phát triển và vận hành hệ
thống tương đối cao. Ngoài ra, khi triển khai IDS, người dùng cần chú ý đến những
tiêu chí như: xác định công nghệ IDS; xác định thành phần; cài đặt cấu hình an toàn và
phù hợp cho IDS; xác định vị trí hợp lý lắp đặt IDS; xây dựng các cơ chế quản lý, tổ
chức; ngăn chặn tối đa các cảnh báo nhầm và những bất tiện không đáng có từ sự cố
này.Với những thông tin bài viết cung cấp, hi vọng người dùng đã hiểu được phần nào
IDS là gì, nắm được phân loại một số dạng IDS cũng như điểm mạnh và điểm yếu của
IDS. Trong thời đại công nghệ số hiện nay, trang bị một IDS cho doanh nghiệp là điều
cấp thiết và thiết thực, để bảo vệ chính doanh nghiệp của người dùng khỏi những nguy
cơ tiềm ẩn trên hệ thống.
1.2.2 PHÂN LOẠI THEO PHƯƠNG THỨC HOẠT ĐỘNG
Hầu hết các IDS đều sử dụng hai chế độ hoạt động, còn một số có thể chỉ sử dụng một
trong hai cách. Sau đây là phân loại IDS theo phương cách hoạt động: - Signature-based IDS - Anomaly-based IDS SIGNATURE-BASED IDS
Signature-based IDS (phát hiện dựa trện chữ kí) đây là phương pháp dựa trên chữ ký
(Signature) xem xét checksums và xác thực các thông điệp. Các phương pháp phát hiện dựa
trên chữ ký cũng có thể được áp dụng bởi NIDS cũng như HIDS. HIDS sẽ xem xét các tệp
nhật ký và cấu hình cho bất kỳ bản viết lại bất ngờ nào, trong khi NIDS sẽ xem xét các
checkums trong các gói được chụp lại và tính toàn vẹn xác thực tin nhắn của các hệ thống như SHA1.
NIDS có thể bao gồm một cơ sở dữ liệu chữ ký mà các gói được biết đến là nguồn hoạt
động độc hại mang theo. May mắn thay, hacker không ở máy tính của họ để bẻ khóa mật
khẩu hoặc truy cập vào user root. Thay vào đó, họ sử dụng các quy trình tự động được cung
cấp bởi các công cụ hacker nổi tiếng. Các công cụ này có xu hướng tạo ra các chữ ký lưu
lượng truy cập giống nhau mỗi lần vì các chương trình máy tính lặp đi lặp lại các cấu trúc
tương tự thay vì tạo ra các biến thể ngẫu nhiên. ANOMALY-BASED IDS
Anomaly-based IDS (Phát hiện dựa trên sự khác thường) tìm kiếm các mô hình hoạt
động bất ngờ hoặc bất thường. Danh mục này cũng có thể được thực hiện bởi cả hệ thống
phát hiện xâm nhập dựa trên máy chủ và mạng. Trong trường hợp HIDS, một sự bất thường
có thể là các nỗ lực đăng nhập thất bại lặp đi lặp lại hoặc hoạt động bất thường trên các cổng của thiết bị.
Trong trường hợp của NIDS, cách tiếp cận bất thường đòi hỏi phải thiết lập một đường
cơ sở của hành vi để tạo ra một tình huống tiêu chuẩn mà các mô hình lưu thông đang diễn
ra có thể được so sánh. Một loạt các mô hình lưu thông được coi là chấp nhận được và khi 5 lOMoARcPSD| 36477832
lưu lượng truy cập thời gian thực hiện tại di chuyển ra khỏi phạm vi đó, một cảnh báo bất thường được gửi.
1.3 GIỚI THIỆU MỘT SỐ IDS PHỔ BIẾN
Các nhà sản xuất phần mềm IDS tập trung vào các hệ điều hành giống Unix. Một số
sản xuất mã của họ theo tiêu chuẩn POSIX. Vì hệ điều hành Mac OS của Mac OS X và
macOS dựa trên Unix, các hệ điều hành này được phục vụ cho việc sử dụng IDS tốt hơn
nhiều so với Windows. Dưới đây là liệt kê một số công cụ IDS với mỗi hệ điều hành có thể được cài đặt:
Bảng 1.1: Danh sách một số công cụ IDS với hệ điều hành sử dụng SNORT
Snort được phát triển và tạo ra bởi Sisco, là công cụ mã nguồn mở và không có GUI,
mặc dù rất nhiều công cụ nguồn mở khác đã được tạo ra để giúp đỡ, chẳng hạn như BASE
và Sguil. Các công cụ này cung cấp giao diện web để truy vấn và phân tích các cảnh báo
đến từ Snort IDS. Snort với tuổi thọ sản phẩm lâu dài nên vì thế có cộng đồng lớn và đưa
ra rất nhiều giải pháp hỗ trợ ngoài ra hộ trợ nhiều giao diện quản trị. Dưới đây là một số
tính năng nổi bật của Snort:
- Thiết kế theo mô-đun xử lí
- Sử dụng cấu hình đơn giản vì có những cấu hình sẵn
- Hỗ trợ plugin framework (hơn 200 plugin) 6 lOMoARcPSD| 36477832
- Tự động tạo tài liệu tham khảo
- Cấu hình cho bộ nhớ có thể mở rộng thêm
- Phân tích quy tắc và cú pháp
Tuy nhiên dưới đây cũng là 1 số nhược điểm của Snort:
- Rất phức tạp, ngay cả với các quy tắc được định cấu hình sẵn, yêu cầu có kiến thức
chuyên môn sâu để hiểu rõ.
- Quá tin cậy vào cộng đồng để được hỗ trợ, đôi khi sẽ không thể phát hiện ra những cuộc tấn công mới. SURICATA
Mặc dù kiến trúc của Suricata khác với Snort, nhưng nó hoạt động giống như Snort và
có thể sử dụng các chữ ký giống nhau. Dưới đây là một số tính năng đáng chú ý của Suricata:
- Multi-Threaded: Snort chạy với một luồng duy nhất có nghĩa là nó chỉ có thể sử dụng
một CPU (core) tại một thời điểm. Suricata có thể chạy nhiều luồng để nó có thể tận
dụng tất cả các CPU mà người dùng có sẵn.
- Xây dựng tăng tốc phần cứng: Người dùng có thể sử dụng card đồ họa để kiểm tra lưu lượng mạng.
- Trích xuất tệp: Nếu phát hiện trên lưu lượng có tải xuống phần mềm độc hại. Người
dùng có thể chụp nó ngay từ Suricata và có thể phân tích nó.
- LuaJIT - Nó cũng là một công cụ kịch bản có thể được sử dụng với thông tin từ các gói
được kiểm tra bởi Suricata. Điều này làm cho việc kết hợp phức tạp thậm chí còn dễ
dàng hơn và người dùng thậm chí có thể đạt được hiệu quả bằng cách kết hợp nhiều
quy tắc vào một kịch bản.
- Khả năng thu thập log tốt: Suricata có thể lấy và ghi lại những thứ như chứng chỉ TLS
/ SSL,yêu cầu HTTP, yêu cầu DNS.
Nhược điểm và hạn chế của Suricata:
- Là một công cụ mã nguồn mở tuy nhiên không có cộng đồng lớn như các công cụ như Snort hoặc Zeek
- Tập lệnh tích hợp có thể khó sử dụng yêu cầu có hiểu biết. OSSEC
OSSEC chạy trên hầu hết các hệ điều hành lớn và bao gồm quản lý dựa trên client/server
và kiến trúc ghi nhật ký, điều này rất quan trọng trong hệ thống HIDS. Vì HIDS có thể bị
xâm phạm cùng một lúc hệ điều hành, điều quan trọng là thông tin bảo mật và pháp y rời
khỏi máy chủ và được lưu trữ ở nơi khác càng sớm càng tốt để tránh bất kỳ loại giả mạo
hoặc làm xáo trộn nào có thể ngăn chặn phát hiện. Kiến trúc client/server của OSSEC kết
hợp chiến lược này bằng cách cung cấp cảnh báo và nhật ký đến một máy chủ tập trung, 7 lOMoARcPSD| 36477832
nơi phân tích và thông báo có thể xảy ra ngay cả khi hệ thống máy chủ bị ngoại tuyến hoặc
bị xâm phạm. Một lợi thế khác của kiến trúc client/server là khả năng quản lý tập trung các
đại lý từ một máy chủ duy nhất. Vì việc triển khai có thể dao động từ một đến hàng ngàn
cài đặt, khả năng thực hiện các thay đổi toàn cầu từ máy chủ trung tâm là rất quan trọng đối
với sự tỉnh táo của quản trị viên. Việc cài đặt OSSEC cực kỳ nhẹ (trình cài đặt dưới 1MB)
và phần lớn phân tích thực sự xảy ra trên máy chủ có nghĩa là rất ít CPU được OSSEC tiêu
thụ trên máy. OSSEC cũng có khả năng gửi nhật ký hệ điều hành đến máy chủ để phân tích
và lưu trữ, điều này đặc biệt hữu ích trên các máy Windows không có cơ chế ghi nhật ký gốc và đa nền tảng. Ưu điểm của OSSEC:
- Hoàn toàn miễn phí và mã nguồn mở
- Sử dụng tổng kiểm tra để xác minh tính toàn vẹn của nhật ký và tệp
- Hỗ trợ giám sát tài khoản gốc trên hệ thống Unix/Linux
- Hỗ trợ cộng đồng mạnh mẽ cung cấp các mẫu mới và hồ sơ quét Nhược điểm và hạn chế OSSEC:
- Để nhận được các thông tin đáng tin cậy trên cộng đồng để được hỗ trợ túy nhiễn có
thể trả phí để nhận được hỗ trợ.
- Có thể sử dụng các tính năng báo cáo và hình ảnh hóa tốt hơn 8 lOMoARcPSD| 36477832
CHƯƠNG 2: HƯỚNG DẪN SỬ DỤNG SURICATA
2.1 GIỚI THIỆU SURICATA
Suricata là mã nguồn mở và được sở hữu bởi một tổ chức phi lợi nhuận do cộng đồng
điều hành, Open Information Security Foundation (OISF). Nó là một công cụ giám sát an
ninh mạng đồng thời vừa là IDS và IPS. Suricata và Snort có sử dụng rules tương đồng
nhau, tuy nhiên Snort chỉ chạy với 1 luồng duy nhất điều này có nghĩa là nó chỉ sử dụng
một CPU tại một thời điểm. Với Suricata, nó có chức năng chọn chạy đa luồng, chính vì
thế nó có thể tận dụng tất cả CPU sẵn có, có lẽ đây chính là tính năng nổi trội và cái tiến hơn của Suricata.
Suricata dử dụng chữ kĩ (signatures) để kích hoạt và đưa ra các cảnh báo, vì thế ta cần
thêm và cập nhật chữ kí trước khi chạy Suricata. Chữ kí trong Suricata còn được biết đến
là rules và nó chứa trong các tệp các bộ quy tắc. 2.2 CÀI ĐẶT SURICATA
2.2.1 CÀI ĐẶT THƯ VIỆN
Suricata sẽ cần một số thư viện để biên dịch và phát triển chúng. Theo mặc định,
Suricata hoạt động như một IDS, tuy nhiên để nó có thể sử dụng chức năng như IPS sẽ cần
phải cài thêm một số gói vào hệ thống. Dưới đây là một số câu lệnh để cài đặt thư viện: Tối thiểu:
apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \
libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \ make libmagic-dev
libjansson libjansson-dev Dùng tích hợp IDS iptables/nftables:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 \ libnetfilter-log-dev libnetfilter-log1 \
libnfnetlink-dev libnfnetlink0
2.2.2 CÀI ĐẶT MÃ NGUỒN
Đầu tiên, ta sẽ tải phiên bản mới nhất hiện tại Suricata là 6.0.3 tại trang chủ chính thức bằng câu lệnh sau: wget
https://www.openinfosecfoundation.org/download/suricata-6.0.3.tar.gz
Sau khi đã tải xong, giải nén tệp nén bằng câu lệnh sau:
tar -xvzf suricata-6.0.3.tar.gz
Tiếp theo, ta sẽ thực hiện chọn thư mục cho Suricata theo câu lệnh dưới đây (bước này
có thể không thực hiện vì mặc định Suricat được cài đặt trong /usr/local/bin cấu hình mặc
định /usr/local/etc/suricata và log được mặc định /usr/local/var/log/suricata): ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var 9 lOMoARcPSD| 36477832
Cuối cùng, cài đặt suricata bằng câu lệnh sau: make make install
Hoặc để đơn giản các bước chúng ta có thể cài đặt gói suricata với phiên bản mới nhất
và các thư mục để với đường dẫn mặc định bằng câu lệnh dưới đây: sudo apt install suricata jq
Sau khi hoàn tất quá trình tải và cài đặt Suricata, trong quá trình sử dụng ta có thể sử
dụng một số tùy chọn sau:
-V : Hiện thị phiên bản của Suricata
-c <đường dẫn>: Đường dẫn tới file configuration -T : Kiểm tra cấu hình -r
<đường dẫn> : Đọc file pcap ở chế độ ngoại tuyến. Nếu đường dẫn là thư
mụctất cả các tệp trong đó sẽ được xử lí theo thứ tự thời gian để duy truy trạng thái
sử lý luồng với thời gian thực.
-i : lựa chọn này ta sẽ nhập tên card mạng được cấu hình để bắt gói tin trong file configuration.
-q : Chạy nội tuyến hàng đợi NFQUEUE với số id. Có thể sử dụng tùy chọn này
nhiều lần, dùng tronh chế độ IPS.
-S <*.rules> : chọn 1 tệp chữ kí, tệp này chạy riêng với tệp được cấu hình trong file configuration. -s
<*.rules> : chọn 1 tệp chữ kí, tệp này tải lên cùng với tệp được cấu
hìnhtrong file configuration.
--runmode : tùy chọn này dùng để ghi đề runmode trong file
configuration. Có 3 chế độ là workers, autofp và single. Phần này sẽ làm rõ ở nội dung những phần sau. 2.3 SURICATA RULES 2.3.1 CẤU TRÚC RULES
Như đã giới thiệu phần đầu, chữ kí trong Suricata là vô cùng quan trọng, nó là cơ sở để
xác định giúp người giám sát đưa ra cho mình “phán đoán” về thông tin nhận được.
Sau đây là cấu trúc của 1 rule/signature được định dạng như sau:
- Action: Xác định hành vi sẽ thực hiện nếu mà trùng khớp signature.
- Header: Gồm có tên giao thức, địa chỉ IP, port và hướng của rule.
- Rule option: Gồm nhiều thành phần xác định nên rule. Dưới đây là 1 ví dụ cụ thể : 10 lOMoARcPSD| 36477832
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY curl
User-Agent Outbound"; flow:established,to_server; content:"curl/"; nocase; http_user_agent; depth:5;
reference:url,www.useragentstring.com/pages/useragentstring.php;
classtype:attempted-recon; sid:2013028; rev:4; metadata:created_at 2011_06_14, updated_at 2020_04_22;)
Trong ví dụ này, action có chữ màu đỏ, header có chữ màu xanh lá cây và rule option có chữ màu xanh dương. ACTION
Cung cấp một số hành động sau:
- Alert : Đưa ra 1 thông báo.
- Pass : Ngừng kiểm tra thêm gói.
- Drop : hủy và đưa ra cảnh báo về gói tin.
- Reject : thông báo lỗi đến người gửi và không đính kèm RST/ICMP cho gói tin.
- Rejectsrc : giống như reject nhưng chỉ từ chối
- Rejectdst : thông báo lỗi đến người gửi và kèm RST/ICMP cho gói tin.
- Rejectboth : thông báo lỗi đến người gửi và kèm RST/ICMP cho cả 2 phía. Lựa chọn
drop và reject sử dụng cho mode IPS PROTOCOL
Là từ khóa cho biết signature liên quan đến giao thức nào như các giao thức hoạt động
tầng 4 mô hình OSI như tcp, udp, icmp, ip. Hay thâm chí các giao thức ở tầng 7 như http, ftp, ssh, dns, smb, … IP(NGUỒN VÀ ĐÍCH)
Phần trước mũi tên là IP nguồn, sau mũi tên là IP đích có thể biểu diễn ở cả 2 dạng
IPv4 và IPv6. Ngoài việc có thể chọn giá trị IP ta có thể sử dụng biến $HOME_NET và
$EXTERNAL_NET được cấu hình trong file .yaml để làm giá trị.
PORT(NGUỒN VÀ ĐÍCH)
Tương tự như ip phần trước mũi tên là port nguồn và sau mũi tên là port đích
HƯỚNG CỦA GÓI TIN
Được kí hiệu là mũi tên có chiều từ trái sang phải ->. Tức là những gói tin có hướng
trùng với rule thì sẽ được so sánh để xem có khớp với rule hay không. Ngoài ra, một số rule
có thể khớp với cả 2 phía ta có thể sử dụng < >. Tuy nhiên trong quá trình viết rule khuyến
cáo không nên sử dụng kí hiệu này vì dễ làm quá trình giám sát trở nên khó khăn hơn. 11 lOMoARcPSD| 36477832 2.3.2 RULE OPTION
Gồm các từ khóa và các giá trị gán với từ khóa tưng ứng và ngăn cách chúng bởi các
dấu chấm phẩy, trong phần tiếp theo sẽ giới thiệu và một số từ khóa và công dụng của chúng sau.
TỪ KHÓA THÔNG THƯỜNG
Những từ khóa này không làm ảnh hưởng đến quá trình so khớp kiểm tra signature của
Suricata, chúng ảnh hướng đến cách Suricata đưa ra cảnh báo cho các sự kiện a. Msg (message)
Từ khóa này cung cấp thông tin cho người đọc về cảnh báo.
Định dạng cho msg: msg:"ET POLICY curl User-Agent
Outbound" b. SID (signature ID)
Từ khóa sid cung cấp cho signature một chữ kí riêng cho nó và phân biệt với các signature khác. Ví dụ : sid:2013028; c. Rev (revision)
Đó là từ khóa đi kèm với sid, người ta quy ước viết rev sau sid. Rev đại diện cho phiên
bản của chữ kí, nếu như chữ kí bị thay đổi(cập nhật, sửa đổi) thì người viết ra signature
tăng giá trị của rev thêm 1. Ví dụ: rev:2; d. Classtype
Đây là từ khóa phân loại quy tắc và đưa ra mức cảnh báo cho người dùng. Ví dụ: Class type Alert Priority Web Application web-application-attack 1 Attack not-suspicious Not Suspicious Traffic 3 classtype: not-suspicious; e. Reference
Từ khóa reference cung cấp thông tin về signature. Có thể sử dụng nhiều từ khóa reference. Ví dụ: reference:CVE-2014-1234 ;
reference:url,www.useragentstring.com/pages/useragentstring.php; f. Priority
Priority là từ khóa có giá trị từ 1-255, thông thường hay sử dụng từ 1-4. Trong Suricata
priority 1 là có giá trị cao nhất. Những signature có priority cao hơn sẽ được ưu tiên kiêm tra
trước. Ví dụ: priority:1; 12 lOMoARcPSD| 36477832
TỪ KHÓA VỀ PAYLOAD
Payload là từ khóa giúp kiếm tra nội dung payload của 1 gói tin trong đường truyền tải.
Người dùng có thể tìm kiếm từ khóa mà những gói tin chứa trong payload. Dưới đây chúng
ta cùng tìm hiểu từ khóa content, đây là từ khóa vô cùng quan trọng đối với signature. Nó
so khớp từng byte với giá trị mà cần phải so sánh, có thể khớp với tất cả kí tự, từ chữ thường
đến chữ hoa và các kí hiệu đặc biệt. Từ khóa content có cú pháp như sau:
content: “ nội dung cần khớp”;
Với nhiều chương trình máy tính kí hiệu 0x00 có thể coi như 1 dạng biểu diễn nhị phân,
với Suricata ta kí hiệu như sau |00|. Ví dụ: |61 61| : aa
Dưới đây là 1 số ví dụ khi sử dụng giá trị với từ khóa content:
content:”http|3A|//”; có nghĩa content lọc theo payload là http:// content:”NICK”;
Khi sử dụng từ khóa content nó xem xét toàn bộ payload xem có những từ khóa nào
khớp với giá trị mà chứ kí đang tìm kiếm không. Nó cố gắng tìm kiếm trùng khớp tất các
byte dữ liệu trong payload để đưa ra giá trị đúng. Và nó phân biệt chữ hoa và chữ thường.
Cùng xét ví dụ dưới đây:
Hình 2.1: Minh họa cách hoạt động từ khóa content
Để bộ trợ cho từ khóa content ngoài ra còn một số từ khóa khác như: -
Nocase: không phân biệt chữ hoa chữ thường. -
Depth: Số bít giá trị content từ đầu payload đến giá trị được chỉ định. -
Startswith: Kiểm tra giá trị content có ở vị trí bắt đầu hay không, không cần truyền đối số. 13 lOMoARcPSD| 36477832 -
Endswith: kiếm tra giá trị content có ở cuối vùng đệm hay không, không cần truyền đối số. -
Offset: kiểm tra content bắt đầu ở vị trí bit nào trong payload. -
Distance: kiểm tra khoảng cách giữa các bit của 2 content, trả về giá trị đúng nếu
khoảng cách này lớn hơn hoặc bằng với giá trị được kiểm tra.
Chỉ có 1 content được sử dụng cho 1 signature, nếu như có nhiều content Suricata sử
dụng content mạnh nhất. Có nghĩa là content được chọn sẽ là content dài nhất, có độ bao phủ
lớn nhất. Xét ví dụ sau: content:”User-Agent |3A|”; content:”badness”; distance:0;
Với ví dụ này ta thấy User-Agent |3A| sẽ luôn được khớp với signature vì nó dài hơn
Babness, nên nó sẽ luôn bị bỏ qua. Tuy nhiên để Suricata sử dụng cả từ khóa “fast_pattern”
nó sẽ kết hợp cả 2 content này như 1 điều kiện cần và đủ.
content:”User-Agent |3A|”;
content:”badness”; distance:0; fast_pattern; TỪ KHÓA VỀ FLOW
Flow là từ khóa so khớp hướng của luồng dữ liệu. Điều này giúp ta biết được gói tin
được đến từ client hay server hay là trạng thái của gói tin.
Dưới đây là 1 số giá trị dành cho từ khóa flow:
- to_client = from_server : gói tin được gửi từ server đến client.
- to_server = from_client : gói tin được gửi từ client đến server.
- established : đã thiết lập kết nối.
- not_ established : chưa thiết lập kết nối.
- stateless: tất cả các gói mà trạng thái gói tin không phải là established.
- only_stream : các gói tin đã được lắp ráp và được phát hiện bởi các stream engine. -
no_stream : các gói tin phân mảnh và được phát hiện bởi các stream engine.
Tuy nhiên việc xác định gói tin đã thiết lập kết nối hay chưa dựa vào từng giao thức.
Đối với TCP việc đã xác nhận 2 gói tin đã thiết lập trạng thái kết nối là sau khi hoàn thành
quá trình bắt tay 3 bước. Còn đối với UDP kết nói coi là thiết lập nếu có lưu lượng từ cả 2 phía
QUẢN LÍ RULES VỚI SURICATA
Theo mặc định Suricata sử dụng bộ chữ kí tại thư mục có đường dẫn:
/etc/suricata/rules/suricata.rules
Nếu như muốn thêm các quy tắc có thể thêm vào file suricata.rules hoặc sẽ tạo riêng
cho mình 1 tệp chữ kí với định dạng là file đuôi .rules. Sau đó thêm đường dẫn vào file config là suricata.yaml :
Cập nhật lại suricta để load lại bộ chữ kí mới được thêm bằng câu lệnh: suricata-update 14 lOMoARcPSD| 36477832
Để khởi động suricata dùng câu lệnh sau:
suricata –c /etc/suricata/suricata.yaml –i enss33
Log của suricata được mặc định lưu tại /var/log/suricata/fast.log
2.4 CHẾ ĐỘ LÀM VIỆC (RUNMODES)
Suricata được xây dựng hoạt động dựa trên các threads, thread-modules và hàng đợi.
Thread giống như tiến trình(process) trên máy tính, Như đã nói Suricata có thể chạy đa
luồng nên sẽ có nhiều thread chạy cùng lúc. Thread-module giống như các chức năng như
module phát hiện, module giải mã,… Một gói tin có thể được sử lí bởi nhiều luồng, gói tin
sẽ được chuyển đến luồng kế tiếp thông qua hàng đợi. Chế độ làm việc của Suricata là điều
chỉnh cách hoạt động của threads, thread-module và hàng đợi. Như đã nói ở phần trên
Suricata có 3 chế độ làm việc là single, worker và autofp.
Chế độ làm việc worker, card NIC giúp các gói tin được cân bằng tải trước khi vào các
threads để xử lí, sau đó các gói tin được đóng gói vào trong đường ống và được các module
xử lí. Hiện tại, chế độ làm việc của worker đêm lại hiệu năng và hiệu quả tốt nhất. Trong
trường hợp sử lí file PCAP hay đang làm việc với chế độ IPS, chế độ làm việc autofp được
sử dụng. Ở đây sẽ có 1 hoặc nhiều luồng bắt gói tin, các gói tin được bắt sẽ được giải mã.
Sau đó các gói tin sẽ được chuyển xuống các luồng làm việc tương tự như chế độ worker.
Cuối cùng với chế độ làm việc single nó hoạt động tương tự như woker tuy nhiên có chỉ có
1 thread duy nhất làm việc. 15 lOMoARcPSD| 36477832
Hình 2.2 : Chế độ làm việc worker 16 lOMoARcPSD| 36477832
Hình 2.3: Chế độ làm việc autofp 17 lOMoARcPSD| 36477832
Hình 2.5: Chế độ làm việc single
2.5 CẤU HÌNH CHO SURICATA
Thực hiện cấu hình cấu hình cho Suricata với đường dẫn /etc/suricata/suricata.yaml.
Sau đây là 1 số nhưng thông số cần thiết khi cài đặt:
$HOME_NET: địa chỉ, dải IP mà muốn giám sát.
$EXTERNAL_NET: địa chỉ hoặc các dải địa chỉ phía ngoài internet. 18 lOMoARcPSD| 36477832 Chọn dường dẫn cho log
Chọn card mạng bắt các gói tin
Có thể chọn chạy Suricata với chế độ user
Thiết lập mức ưu tiên các hành động, tuy nhiên có thể không thiết lập
Thêm đường dẫn signature cho Suricata tham chiếu khi hoạt động:
CHƯƠNG 3: THỰC NGHIỆM 3.1 CHUẨN BỊ
Dùng 2 máy dùng hệ điều hành Kali, dùng phần mềm giả lập với VMware với cấu hình
card mạng như mô hình dưới đây: 19 lOMoARcPSD| 36477832 Tên máy Card mạng IP IDS VMnet0 192.168.10.1 Attack VMnet0 192.168.10.2
Bảng 3.1: Cấu hình IP của mô hình thực nghiệm
Hình 3.1: Sơ đồ mô hình IDS thực nghiệm 3.2 CÀI ĐẶT 20 lOMoARcPSD| 36477832
Hình 3.2: Cài đặt một số thư viện cần dùng cho Suricata
Hình 3.3: Cài đặt Suricat
Tạo 1 file chữ kí tại có tên là csattt.rules tại đường dẫn /etc/suricata/rules/ Hình 3.4: Tạo chữ kí
Sau đây config file suricata.yaml: 21 lOMoARcPSD| 36477832
Hình 3.5: Set địa chỉ $HOME_NET và $EXTERNAL_NET
Hình 3.6: Chọn đường dẫn và cấu hình log 22 lOMoARcPSD| 36477832
Hình 3.7: Cấu hình card mạng bắt gói tin
Hình 3.8: Chọn đường dẫn signature để Suricata tham chiếu
Giờ thử khởi động Suricata với câu lệnh dưới đây:
Hình 3.9: Khởi động Suricata mode IDS
3.3 THỬ NGHIỆM DOS.
Trên máy attack ta cài tool dos slowloris:
git clone https://github.com/gkbrk/slowloris.git
Thực hiện dos với mục tiêu là máy server 192.168.10.1 23 lOMoARcPSD| 36477832
Hình 3.10: Sử dụng tool DoS slowloris trên máy tấn công Trên
IDS lúc này kiểm tra log, đã phát hiện ra tấn công:
Hình 3.11: Log IDS thu được
TÀI LIỆU THAM KHẢO
[1] https://www.comparitech.com/net-admin/network-intrusion-detection-tools/
[2] https://cybersecurity.att.com/blogs/security-essentials/open-source-intrusion-
detection-tools-a-quick-overview
[3] https://suricata.readthedocs.io/en/suricata-6.0.0/index.html
[4] https://github.com/gkbrk/slowloris 24