Professional Documents
Culture Documents
SNORT Bao Cao
SNORT Bao Cao
MỞ ĐẦU
Trong những năm gần đây công nghệ thông tin có những bước tiến vượt bậc hầu
hết các doanh nghiệp và cá nhân đã dần đưa công nghệ thông tin vào phục vụ cho công
việc của mình với những phần mềm hệ thống hoặc ứng dụng phù hợp, nhưng đối với
những doanh nghiệp và cá nhân không có đủ điều kiện về kinh tế thì việc lựa chọn
Phần mềm thương mại là không khả thi vì vậy phần mềm mã nguồn mở là một sự lựa
chọn đúng đắn cho các doanh nghiệp và cá nhân.
An ninh thông tin nói chung và an ninh mạng nói riêng đang là vấn đề được quan
tâm không chỉ ở Việt Nam mà trên toàn thế giới. Cùng với sự phát triển nhanh chóng
của mạng Internet, việc đảm bảo an ninh cho các hệ thống thông tin càng trở nên cấp
thiết hơn bao giờ hết.
Trong lĩnh vực an ninh mạng, phát hiện và phòng chống tấn công xâm nhập cho
các mạng máy tính là một đề tài hay, thu hút được sự chú ý của nhiều nhà nghiên cứu
với nhiều hướng nghiên cứu khác nhau. Vì vậy nhóm em lựa chọn đề tài “Tìm hiểu và
khai thác dịch vụ Snort”. Với mong muốn tìm hiểu cũng như triển khai hệ thống trên
thực tế nâng cao kiến thức và ứng dụng cho công việc sau này.
MỤC LỤC
MỞ ĐẦU....................................................................................................................... 1
MỤC LỤC.................................................................................................................... 2
CHƯƠNG I : TỔNG QUAN VỀ HỆ THỐNG PHÁT HIỆN XÂM NHẬP.............3
1. Hệ thống phát hiện xâm nhập là gì?.............................................................3
1.1. Khái niệm.......................................................................................................3
1.2. Chức năng của IDS.......................................................................................3
2. Phân loại hệ thống IDS...................................................................................4
2.1. Host-base IDS................................................................................................4
2.2. Network-base IDS..........................................................................................6
CHƯƠNG II: XÂY DỰNG VÀ TRIỂN KHAI HỆ THỐNG PHÁT HIỆN XÂM
NHẬP VỚI SNORT.....................................................................................................9
1. Giới thiệu về Snort.........................................................................................9
2. Các thành phần của Snort.............................................................................9
2.1. Bộ phận giải mã gói tin (Packet Decoder)...................................................10
2.2. Bộ phần tiền xử lý (reprocessors)................................................................10
2.3. Bộ phận phát hiện (Detection Engine)........................................................11
2.4. Bộ phận ghi nhận và thông báo (Loging and alerting system)...................12
2.5. Bộ phận đầu ra (Output Modules)...............................................................12
3. Cơ chế hoạt động của Snort.........................................................................13
3.1. Sniff mode....................................................................................................13
3.2. Packet logger mode......................................................................................14
3.3. Inline mode...................................................................................................15
3.4. NIDS mode (Network Instrusion Detection System mode).........................15
4. Cài đặt và cấu hình Snort............................................................................15
4.1. Mô hình triển khai.......................................................................................15
4.2. Cài đặt gói dịch vụ yêu cầu..........................................................................16
4.3. Tạo rule phát hiện và ngăn chặn.................................................................25
CHƯƠNG III: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.......................................29
TÀI LIỆU THAM KHẢO...........................................................................................31
Giải thích :
♦ Giám sát : Giám sát các lưu lượng mạng, các hành động bất thường và
các hoạt động khả nghi.
♦ Báo cáo : Khi đã biết được các hoạt động bất thường của một (hoặc
một nhóm) truy cập nào đó, IDS sẽ đưa ra cảnh báo cho hệ thống và người
quản trị.
♦ Bảo vệ : Dùng những thiết lập mặc định và những cấu hình từ người
quản trị để có những hành động chống lại kẻ thâm nhập và phá hoại.
1.2.2. Chức năng mở rộng
Ngoài những chức năng chính đã giới thiệu trên, IDS còn có các chức năng
khác như :
♦ Phân biệt "Thù trong giặc ngoài" : Đây là chức năng rất hay của
IDS, nó có thể phân biệt được đâu là những truy cập hợp lệ (không hợp lệ) từ
bên trong và đâu là cuộc tấn công từ bên ngoài vào hệ thống.
♦ Phát hiện : Dựa vào sự so sánh lưu lượng mạng hiện tại với Baseline,
IDS có thể phát hiện ra những dấu hiệu bất thường và đưa ra các cảnh báo và
bảo vệ ban đầu cho hệ thống.
2. Phân loại hệ thống IDS
Cách thông thường nhất để phân loại các hệ thống phát hiện xâm nhập là dựa
vào đặc điểm của nguồn dữ liệu thu thập được. Trong trường hợp này, các hệ thống
phát hiển xâm nhập được chia thành các loại sau: Host-base IDS và Network-base
IDS.
2.1. Host-base IDS
HIDS thường được cài đặt trên một máy tính nhất đinh. Thay vì giám sát hoạt
động của một network segment, HIDS chỉ giám sát các hoạt động trên một máy
tính. HIDS thường được đặt trên các host quan trọng, và các server trong vùng
DMZ thường là mục tiêu bị tấn công đầu tiên. Ngoài ra, HIDS có thể ghi nhận
những việc mà người tấn công đã làm trên máy chủ bị tấn công (compromised
host). Nhiêm vụ chính của HIDS là giám sát các thay đổi trên hệ thống, bao gồm:
Các tiến trình.
Các entry của registry.
Mức độ sử dụng CPU.
Kiểm tra tính toàn vẹn và truy cập trên file hệ thống.
Một vài thông số khác.
Các thông số này vượt qua một ngưỡng định trước hoặc thay đổi khả nghi
trên hệ thống sẽ gây ra cảnh báo.
Thích nghi tốt với môi trường chuyển mạch, mã hoá: Việc chuyển mạch và mã
hoá thực hiện trên mạng và do HIDS cài đặt trên máy nên nó không bị ảnh hưởng
bởi hai kỹ thuật trên.
Không yêu cầu thêm phần cứng: Được cài đặt trực tiếp lên hạ tầng mạng có sẵn
(FTP Server, WebServer) nên HIDS không yêu cầu phải cài đặt thêm các phần
cứng khác.
Nhược điểm:
Khó quản trị: các hệ thống host-based yêu cầu phải được cài đặt trên tất cả các
thiết bị đặc biệt mà bạn muốn bảo vệ. Đây là một khối lượng công việc lớn để cấu
hình, quản lí, cập nhật.
Thông tin nguồn không an toàn: một vấn đề khác kết hợp với các hệ thống host-
based là nó hướng đến việc tin vào nhật ký mặc định và năng lực kiểm soát của
server. Các thông tin này có thể bị tấn công và đột nhập dẫn đến hệ thống hoạt
động sai, không phát hiện được xâm nhập.
Hệ thống host-based tương đối đắt: nhiều tổ chức không có đủ nguồn tài chính
sử dụng các hệ thống host-based để bảo vệ toàn bộ các đoạn mạng của mình.
Những tổ chức đó phải rất thận trọng trong việc chọn các hệ thống nào để bảo vệ.
Nó có thể để lại các lỗ hổng lớn trong mức độ bao phủ phát hiện xâm nhập. Ví dụ
như một kẻ tấn công trên một hệ thống láng giềng không được bảo vệ có thể đánh
tìm thấy các thông tin xác thực hoặc các tài liệu dễ bị xâm phạm khác trên mạng.
Chiếm tài nguyên hệ thống: Do cài đặt trên các máy cần bảo vệ nên HIDS phải
sử dụng các tài nguyên của hệ thống để hoạt động như: bộ vi xử lí, RAM, bộ nhớ
ngoài.
2.2. Network-base IDS
Hệ thống IDS dựa trên mạng sử dụng bộ dò và bộ bộ cảm biến cài đặt trên toàn
mạng. Những bộ dò này theo dõi trên mạng nhằm tìm kiếm những lưu lượng trùng
với những mô tả sơ lược được định nghĩa hay là những dấu hiệu. Những bộ bộ cảm
biến thu nhận và phân tích lưu lượng trong thời gian thực. Khi ghi nhận được một
mẫu lưu lượng hay dấu hiệu, bộ cảm biến gửi tín hiệu cảnh báo đến trạm quản trị
và có thể được cấu hình nhằm tìm ra biện pháp ngăn chặn những xâm nhập xa hơn.
Bị hạn chế với Switch: Nhiều lợi điểm của NIDS không phát huy được trong
các mạng chuyển mạch hiện đại. Thiết bị switch chia mạng thành nhiều phần độc
lập vì thế NIDS khó thu thập được thông tin trong toàn mạng. Do chỉ kiểm tra
mạng trên đoạn mà nó trực tiếp kết nối tới, nó không thể phát hiện một cuộc tấn
công xảy ra trên các đoạn mạng khác. Vấn đề này dẫn tới yêu cầu tổ chức cần phải
mua một lượng lớn các bộ cảm biến để có thể bao phủ hết toàn mạng gây tốn kém
về chi phí cài đặt.
Hạn chế về hiệu năng: NIDS sẽ gặp khó khăn khi phải xử lý tất cả các gói tin
trên mạng rộng hoặc có mật độ lưu thông cao, dẫn đến không thể phát hiện các
cuộc tấn công thực hiện vào lúc "cao điểm". Một số nhà sản xuất đã khắc phục
bằng cách cứng hoá hoàn toàn IDS nhằm tăng cường tốc độ cho nó. Tuy nhiên, do
phải đảm bảo về mặt tốc độ nên một số gói tin được bỏ qua có thể gây lỗ hổng cho
tấn công xâm nhập.
Tăng thông lượng mạng: Một hệ thống phát hiện xâm nhập có thể cần truyền
một dung lượng dữ liệu lớn trở về hệ thống phân tích trung tâm, có nghĩa là một
gói tin được kiểm soát sẽ sinh ra một lượng lớn tải phân tích. Để khắc phục người
ta thường sử dụng các tiến trình giảm dữ liệu linh hoạt để giảm bớt số lượng các
lưu thông được truyền tải. Cũng thường thêm các chu trình tự đưa ra các quyết
định vào các bộ cảm biến và sử dụng các trạm trung tâm như một thiết bị hiển thị
trạng thái hoặc trung tâm truyền thông hơn là thực hiện các phân tích thực tế. Điểm
bất lợi là nó sẽ cung cấp rất ít thông tin liên quan cho các bộ cảm biến; bất kỳ bộ
cảm biến nào sẽ không biết được việc một bộ cảm biến khác dò được một cuộc tấn
công. Một hệ thống như vậy sẽ không thể dò được các cuộc tấn công đồng thời
hoặc phức tạp.
Một hệ thống NIDS thường gặp khó khăn trong việc xử lý các cuộc tấn công
trong một phiên được mã hoá. Lỗi này càng trở nên trầm trọng khi nhiều công ty và
tổ chức đang áp dụng mạng riêng ảo VPN.
Một số hệ thống NIDS cũng gặp khó khăn khi phát hiện các cuộc tấn công
mạng từ các gói tin phân mảnh. Các gói tin định dạng sai này có thể làm cho NIDS
hoạt động sai và báo lỗi.
thành các luồng riêng giúp Snort có thể hiểu được các phiên làm việc khác nhau từ
đó giúp đạt được hiệu quả cao hơn trong việc phát hiện xâm nhập.
Giải mã và chuẩn hóa giao thức (decode/normalize): công việc phát hiện xâm
nhập dựa trên dấu hiệu nhận dạng nhiều khi bị thất bại khi kiểm tra các giao thức
có dữ liệu có thể được thể hiện dưới nhiều dạng khác nhau. Nếu Snort chỉ thực hiện
đơn thuần việc so sánh dữ liệu với dấu hiệu nhận dạng sẽ xảy ra tình trạng bỏ sót
các hành vi xâm nhập. Do vậy, một số module tiền xử lý của Snort phải có nhiệm
vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào này để thông tin khi đưa
đến module phát hiện có thể phát hiện được mà không bỏ sót. Hiện nay Snort đã hỗ
trợ việc giải mã và chuẩn hóa cho các giao thức: telnet, http, rpc, arp.
Phát hiện các xâm nhập bất thường (nonrule /anormal): các plugin tiền xử lý
dạng này thường dùng để đối phó với các xâm nhập không thể hoặc rất khó phát
hiện được bằng các luật thông thường hoặc các dấu hiệu bất thường trong giao
thức. Các module tiền xử lý dạng này có thể thực hiện việc phát hiện xâm nhập
theo bất cứ cách nào mà ta nghĩ ra từ đó tăng cường thêm tính năng cho Snort. Ví
dụ: một plugin tiền xử lý có nhiệm vụ thống kê thông lượng mạng tại thời điểm
bình thường để rồi khi có thông lượng mạng bất thường xảy ra nó có thể tính toán,
phát hiện và đưa ra cảnh báo (phát hiện xâm nhập theo mô hình thống kê). Phiên
bản hiện tại của Snort có đi kèm hai plugin giúp phát hiện các xâm nhập bất thường
đó là portscan và backoffice. Portcan dùng để đưa ra cảnh báo khi kẻ tấn công thực
hiện việc quét các cổng của hệ thống để tìm lỗ hổng. Backoffice dùng để đưa ra
cảnh báo khi hệ thống đã bị nhiễm trojan backoffice và kẻ tấn công từ xa kết nối tới
backoffice thực hiện các lệnh từ xa.
2.3. Bộ phận phát hiện (Detection Engine)
Bộ phận phát hiện: Đây là module quan trọng nhất của Snort. Nó chịu trách
nhiệm phát hiện các dấu hiệu xâm nhập. module phát hiện sử dụng các luật được
định nghĩa trước để so sánh với dữ liệu thu thập được từ đó xác định xem có xâm
nhập xảy ra hay không. Rồi tiếp theo mới có thể thực hiện một số công việc như
ghi log, tạo thông báo và kết xuất thông tin.
Một vấn đề rất quan trọng trong module phát hiện là vấn đề thời gian xử lý các
gói tin: một IDS thường nhận được rất nhiều gói tin và bản thân nó cũng có rất
nhiều các luật xử lý. Có thể mất những khoảng thời gian khác nhau cho việc xử lý
các gói tin khác nhau. Và khi thông lượng mạng quá lớn có thể xảy ra việc bỏ sót
hoặc không phản hồi được đúng lúc. Khả năng xử lý của module phát hiện dựa trên
một số yếu tố như: số lượng các luật, tốc độ của hệ thống đang chạy Snort, tải trên
mạng. Một số thử nghiệm cho biết, phiên bản hiện tại của Snort khi được tối ưu
hóa chạy trên hệ thống có nhiều bộ vi xử lý và cấu hình máy tính tương đối mạnh
thì có thể hoạt động tốt trên cả các mạng cỡ Giga.
Một module phát hiện cũng có khả năng tách các phần của gói tin ra và áp dụng
các luật lên từng phần nào của gói tin đó. Các phần đó có thể là:
IP header
Header ở tầng giao vận: TCP, UDP
Header ở tầng ứng dụng: DNS header, HTTP header, FTP header, …
Packet payload (Phần tải của gói tin bạn cũng có thể áp dụng các luật lên các
phần dữ liệu được truyền đi của gói tin)
Một vấn đề nữa trong module phát hiện đó là việc xử lý thế nào khi một gói tin
bị phát hiện bởi nhiều luật. Do các luật trong Snort cũng được đánh thứ tự ưu tiên,
nên một gói tin khi bị phát hiện bởi nhiều luật khác nhau, cảnh báo được đưa ra sẽ
là cảnh báo ứng với luật có mức ưu tiên lớn nhất.
Phiên bản 1.x: Việc xử lý gói tin còn hạn chế trong trường hợp các dấu hiệu
trong gói tin đó phù hợp với dấu hiệu trong nhiều rule. Khi đó nếu có rule nào được
áp dụng trước thì các rule còn lại sẽ bị bỏ qua mặc dù các rule có độ ưu tiên khác
nhau. Như vậy sẽ nảy sinh trường hợp các rule có độ ưu tiên cao hơn bị bỏ qua.
Phiên bản 2.x: Nhược điểm trên của phiên bản 1.x được khắc phục hoàn toàn nhờ
vào cơ chế kiểm tra trên toàn bộ rule. Sau đó lấy ra rule có độ ưu tiên cao nhất để
tạo thông báo.
Tốc độ của phiên bản 2.x nhanh hơn rất nhiều so với phiên bản 1.x nhờ phiên
bản 2.x được biên dịch lại.
2.4. Bộ phận ghi nhận và thông báo (Loging and alerting system)
Bộ phận ghi nhận và thông báo: khi bộ phận detection engine phát hiện ra các dấu
hiệu tấn công thì nó sẽ thông báo cho bộ phận Logging and Alerting System. Các
ghi nhận, thông báo có thể được lưu dưới dạng văn bản hoặc một số định dạng
khác. Mặc định thì chúng được lưu tại thư mục /var/log/snort.
2.5. Bộ phận đầu ra (Output Modules)
Bộ phận đầu ra: module này có thể thực hiện các thao tác khác nhau tùy theo
việc bạn muốn lưu kết quả xuất ra như thế nào. Tùy theo việc cấu hình hệ thống mà
nó có thể thực hiện các công việc như là:
Ghi log file
Ghi syslog: syslog và một chuẩn lưu trữ các file log được sử dụng rất nhiều trên
các hệ thống Unix, Linux.
Ghi cảnh báo vào cơ sở dữ liệu.
Tạo file log dạng xml: việc ghi log file dạng xml rất thuận tiện cho việc trao đổi
và chia sẻ dữ liệu.
Cấu hình lại Router, firewall.
Gửi các cảnh báo được gói trong gói tin sử dụng giao thức SNMP. Các gói tin
dạng SNMP này sẽ được gửi tới một SNMP server từ đó giúp cho việc quản lý các
cảnh báo và hệ thống IDS một cách tập trung và thuận tiện hơn.
Gửi các thông điệp SMB (Server Message Block) tới các máy tính Windows.
Nếu không hài lòng với các cách xuất thông tin như trên, ta có thể viết các module
thể hiện thông tin riêng tuỳ theo mục đích sử dụng.
3. Cơ chế hoạt động của Snort
3.1. Sniff mode
Ở chế độ này, Snort hoạt động như một chương trình thu thập và phân tích gói
tin thông thường. Không cần sử dụng file cấu hình, các thông tin Snort sẽ thu được
khi hoạt động ở chế độ này:
Ngày và giờ thu thập gói tin (Date and time).
Địa chỉ IP nguồn (Source IP address).
Cổng Nguồn (Source port number).
Địa chỉ IP đích (Destination IP address).
Địa chỉ IP đích (Destination port).
Giao thức ở tầng giao vận được dùng trong gói tin (Transport layer protocol
used in this packet).
Thời gian hoạt động của gói tin trên mạng (Time to live or TTL value in this
packet).
Thông số gói tin (Packer ID).
Độ dài phần tiêu đề của IP (Length of IP header).
Trong câu lệnh này Snort sẽ hiển thị đang chạy ở mode nào, thư mục chứa log,
interface nào đang lắng nghe. Khi bắt đầu chạy và bắt gói tin hiển thị lên màn hình.
Phần hiển thị ra chỉ ở mức độ đơn giản, nó chỉ hiện thị ip và TCP/UDP/ICMP
headers và một số thông tin khác.
Ngoài ra còn kết hợp với một số thông số để hiển thị được nhiều thông tin hơn.
-v đưa ra packet headers trong phần output
-d hiển thị packet payload
-a hiển thị ARP packets
-e hiển thị dữ liệu lớp data link
3.2. Packet logger mode
Khi chạy ở chế độ này, Snort sẽ tập hơp tất cả các packet nó thấy được và đưa
vào log theo cấu trúc phân tầng. Nói cách khác, một thư mục mới sẽ được tạo ra
ứng với mỗi địa chỉ nó bắt được, và dữ liệu sẽ phụ thuộc vào địa chỉ mà nó lưu
trong thư mục đó. Snort đặt các packet vào trong file ASCII, với tên liên quan đến
giao thức và cổng. Sự sắp xếp này dễ dàng nhận ra ai đang kết nối vào mạng của
mình và giao thức, cổng nào đang sử dụng. Đơn giản sử dụng ls -R để hiện danh
sách các thư mục. Tuy nhiên sự phân cấp này sẽ tạo ra nhiều thư mục trong giờ cao
điểm nên rất khó để xem hết tất cả thư mục và file này. Nếu ai đó sử dụng full scan
với 65536 TCP Port và 65535 UDP ports và sẽ tạo ra 131000 hoặc từng ấy file.
Log với dạng nhị phân (binary) tất cả những gì có thể đọc được bởi Snort, nó làm
tăng đốc độ khả năng bắt gói tin của Snort. Hầu hết các hệ thống có thể capture và
log ở tốc độ 100Mbps mà không có vấn đề gì. Để log packet ở chế độ nhị phân sử
dụng thông số -b:
Khi đã thu thập được thông tin ta có thể đọc file vừa tạo ra ngay với thông số -r
và phần hiển thị giống như ở mode sniffer:
Trong phần này Snort không giới hạn để đọc các file nhị phân trong chế độ
sniffer. Ta có thể chạy Snort ở chế độ NIDS với việc set các rule hoặc filters để tìm
những traffic nghi ngờ.
# cd libpcap-1.7.2
# cd libdnet-1.12
#cd snort-2.9.7.2
#mkdir /etc/snort
#mkdir /var/log/snort
#mkdir /usr/local/lib/snort_dynamicrules
#mkdir /etc/snort/rules
#vi /etc/snort/snort.conf
config logdir:/var/log/snort
Test snort
#cd /tmp/barnyard2-1.9
# mkdir /var/log/barnyard2
# touch /var/log/snort/barnyard2.waldo
# cp /tmp/barnyard2-1.9/etc/barnyard2.conf /etc/snort
# vi /etc/snort/barnyard2.conf
config interface:eth0
Test barnyard2
Xây dựng môt hệ thống phát hiện và ngăn ngừa xâm nhập trên thực tế từ mô
hình lớn hơn.
Hệ thống gửi các thông báo alert đa dạng: gửi ra tin nhắn sms.
Xây dựng một bộ rule hoàn chỉnh áp dụng vào mô hình thực tế.
Kết hợp Snort với một số phần mềm quản lý mạng như Cacti để xây dựng một
hệ thống mạng hoàn chỉnh.