Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
1,24 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - BÙI THANH HIỀN MỘT GIẢI PHÁP KỸ THUẬT TRONG VIỆC PHÁT HIỆN TẤN CÔNG DOS BẰNG PHƯƠNG PHÁP PHÂN TÍCH LOG CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN KHANH VĂN HÀ NỘI – NĂM 2015 MỤC LỤC Danh mục ký hiệu, chữ viết tắt iii Danh mục hình vẽ, đồ thị iv MỞ ĐẦU .1 CHƢƠNG – TỔNG QUAN VỀ DOS .3 DoS gì? Phân loạ DoS Phát phòng chống DoS .9 CHƢƠNG – PHÁT HIỆN TẤN CÔNG DOS BẰNG PHƢƠNG PHÁP PHÂN TÍCH LOG 12 Giới thiệu .12 Mô hình chung .13 Lựa chọn giải pháp cho thành phần 14 Hoạt động thành phần 16 CHƢƠNG – THƢ VIỆN HỖ TRỢ PHÂN TÍCH LOG VÀ THỬ NGHIỆM .25 Lý cần có thƣ viện hỗ trợ 25 Tổng quan thƣ viện 25 Cấu trúc thƣ viện 27 Thử nghiệm 30 Đánh giá .37 KẾT LUẬN .38 TÀI LIỆU THAM KHẢO 39 PHỤ LỤC A – CHI TIẾT THƢ VIỆN HỖ TRỢ PHÂN TÍCH LOG 40 PHỤ LỤC B – CÁC CẤU HÌNH VÀ SCRIPT SỬ DỤNG KHI THỬ NGHIỆM 53 i LỜI CAM ĐOAN Trƣớc tiên xin chân thành gửi lời cảm ơn lòng biết ơn sâu sắc tới TS Nguyễn Khanh Văn – Viện Công nghệ Thông tin – Truyền thông, ngƣời tận tình hƣớng dẫn, bảo suốt trình hoàn thiện luận văn Đồng thời xin bày tỏ lòng biết ơn thầy cô giáo Viện Công nghệ Thông tin – Truyền thông nói riêng Đại học Bách Khoa Hà Nội nói chung dạy, cung cấp kiến thức quý báu cho suốt trình học tập nghiên cứu trƣờng Tôi xin gửi lời cảm ơn sâu sắc tới gia đình, bạn bè, ngƣời quan tâm giúp đỡ suốt thời gian học tập hoàn thành luận văn Tôi cam đoan công trình nghiên cứu riêng Các số liệu, kết luận văn trung thực chƣa đƣợc công bố công trình khác ii DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT STT Giải nghĩa Từ viết tắt DoS Denial of Service: Tấn công từ chối dịch vụ DDoS Distributed Denial of Service: Tấn công từ chối dịch vụ phân tán TCP Transmission Control Protocol: Giao thức tầng Transport giao thức TCP/IP UDP User Datagram Protocol: Giao thức tầng Transport giao thức TCP/IP ICMP Internet Control Message Protocol: Giao thức tầng Network giao thức TCP/IP IP Internet Protocol: Giao thức tầng Network giao thức TCP/IP DNS Domain Name System: Giao thức tầng Application giao thức TCP/IP HTTP Hypertext Transfer Protocol: Giao thức tầng Application giao thức TCP/IP SYN Synchronize: Cờ trạng thái gói tin TCP 10 FIN Finish: Cờ trạng thái gói tin TCP 11 ACK Acknowledge: Cờ trạng thái gói tin TCP 12 JSON JavaScript Object Notation: Định dạng trao đổi liệu 13 API Application Programming Interface: Giao diện lập trình ứng dụng 14 IIS Internet Information Services: Web server Microsoft 15 CSDL Cơ sở liệu iii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình Quá trình bắt tay ba bƣớc .5 Hình Mô hình công SYN Flood Hình Mô hình công Smurf Hình Mô hình Botnet Hình Chi tiết phần log firewall 12 Hình Mô hình giải pháp 14 Hình Luồng xử lý kiện Logstash .16 Hình Cấu trúc phân cấp nhóm class LogDoc 28 Hình Cấu trúc phân cấp nhóm class LogType 29 Hình 10 Quan hệ class thƣ viện 29 Hình 11 Mô hình thử nghiệm 31 Hình 12 Danh sách Index CSDL Elasticsearch 32 Hình 13 Tấn công HTTP Flood sử dụng LOIC .32 Hình 14 Trạng thái Apache bị công HTTP Flood 33 Hình 15 Phát công HTTP Flood 34 Hình 16 Tấn công SYN Flood sử dụng hping 35 Hình 17 Phát công SYN Flood 36 iv MỞ ĐẦU Tấn công từ chối dịch vụ (Denial of Service – DoS) vấn đề làm đau đầu nhà quản trị hệ thống chuyên gia an ninh mạng Nó hình thức công mạng khó chống đỡ Ngày nay, việc sở hữu sử dụng botnet trở nên dễ dàng khiến cho công từ chối dịch vụ ngày phát triển khó kiểm soát DoS không gây thiệt hại kinh tế mà gây tổn thất nghiêm trọng uy tín, danh dự tổ chức bị công Trong năm vừa qua, nhiều quan, tổ chức, báo điện tử lớn Việt Nam bị công DoS, gây thiệt hại lớn cho tổ chức Để chống lại công DoS, nhiều giải pháp kỹ thuật đƣợc nghiên cứu áp dụng thực tế Hiện nay, biện pháp nhƣ tăng lực xử lý, tối ƣu hóa phần mềm, load balacing cho hệ thống,… nhà quản trị thƣờng lựa chọn hai giải pháp chính: sử dụng thiết bị chống công DoS, sử dụng dịch vụ chống công DoS Đối với giải pháp thứ nhất, thiết bị chuyên dụng đƣợc đặt trƣớc mạng cần đƣợc bảo vệ Thiết bị có nhiệm vụ theo dõi lƣu lƣợng mạng, phát ngăn chặn gói tin công vào hệ thống theo thời gian thực Các gói tin phải qua thiết bị trƣớc vào hệ thống Việc lắp đặt thiết bị gần nhƣ không ảnh hƣởng tới hoạt động hệ thống Ở giải pháp thứ hai, cách sử dụng DNS, toàn lƣu lƣợng mạng trƣớc tới hệ thống phải qua hạ tầng mạng nhà cung cấp dịch vụ chống công Tại đây, gói tin công đƣợc loại bỏ, gói tin bình thƣờng đƣợc chuyển tới hệ thống đƣợc bảo vệ Giải pháp dựa lực đáp ứng lớn nhà cung cấp nên khả bảo vệ cho hệ thống cao khả lọc, phân biệt gói tin tốt/xấu nhà cung cấp tốt Cả hai giải pháp có ƣu điểm là: (1) chế phân tích lọc bỏ gói tin theo thời gian thực giúp phát ngăn chặn sớm đƣợc công, (2) việc triển khai nhanh chóng, thuận tiện không cần hiểu biết nhiều hệ thống cần đƣợc bảo vệ Tuy nhiên chúng có nhƣợc điểm thành phần phát ngăn chặn công lại tạo nút thắt cổ chai cho toàn hệ thống Trong khuôn khổ luận văn này, xin trình bày hƣớng tiếp cận khác việc phát công DoS, phát công dựa việc phân tích log Đối với ngƣời quản trị hệ thống, log thành phần quen thuộc công việc hàng ngày Chúng lƣu trữ thông tin hầu hết hoạt động diễn hệ thống Dựa vào thông tin đó, ta trích xuất liệu nhằm phát nhiều công an ninh mạng vào hệ thống, có công DoS Nội dung giải pháp đƣợc trình bày chi tiết chƣơng chƣơng luận văn Trong đó, chƣơng giới thiệu tổng quan giải pháp; cách thức thu thập lƣu trữ liệu log; cách thức phân tích log để phát công; nhƣ việc lựa chọn công nghệ nguyên lý hoạt động thành phần Ngoài ra, việc phát triển đoạn mã phân tích log thƣờng phức tạp nhiều thời gian, luận văn đề xuất thƣ viện hỗ trợ ngƣời phân tích nhằm đơn giản hóa toàn trình này, đƣợc giới thiệu chi tiết chƣơng Chƣơng trình bày mô hình, kịch thử nghiệm, kết thu đƣợc đánh giá giải pháp CHƯƠNG – TỔNG QUAN VỀ DOS DoS gì? Denial of Service[8] – công từ chối dịch vụ hình thức công nhằm ngăn chặn ngƣời dùng hợp lệ truy cập, sử dụng dịch vụ mạng nhƣ website, webservice hay hệ thống máy tính Về chất, DoS không đánh cắp thông tin hay làm mát liệu mà làm gián đoạn hoạt động bình thƣờng hệ thống Tuy nhiên, hệ thống tồn mà cung cấp thông tin, dịch vụ cho ngƣời sử dụng, tồn vô nghĩa Vì thiệt hại công từ chối dịch vụ gây không nhỏ, đặc biệt với hệ thống lớn Lịch sử DoS đƣợc ghi nhận vào năm 90, bắt nguồn từ số chuyên gia bảo mật phát điểm yếu hệ điều hành Windows 98, cần gửi gói ping với kích thƣớc lớn tới máy tính chạy Windows 98 khiến cho máy tính không xử lý đƣợc bị tê liệt Phát sau đƣợc hacker lợi dụng để công vào hệ thống Từ đó, hình thức sơ khai DoS đời Hình thức công DoS nhƣ dựa vào điểm yếu thiết kế hệ thống, kẻ công cần gửi gói tin để làm tê liệt mục tiêu Trên thực tế, kiểu công không phổ biến cách công gửi số lƣợng lớn gói tin tới hệ thống, làm cạn kiệt tài nguyên, băng thông, lực xử lý hệ thống Distributed Denial of Service[8] (DDoS) – công từ chối dịch vụ phân tán sử dụng botnet, mạng lƣới gồm nhiều máy tính tay sai để tiến hành công vào mục tiêu Việc sử dụng mạng lƣới tay sai đem lại lực công cực lớn khả ẩn danh tốt việc điều tra kẻ huy từ máy tính tay sai đơn giản Vào tháng năm 2000, công DDoS lớn công vào Yahoo.com, khiến cho trang web tê liệt vòng phục vụ hàng ngàn ngƣời dùng toàn giới, gây thiệt hàng trăm nghìn USD Tại Việt Nam, vào tháng 12 năm 2005, website cộng đồng bảo mật HVA bị công DDoS phƣơng thức X-flash, đƣợc cho vụ công DDoS Việt Nam Từ đến nay, nhiều công khác đƣợc ghi nhận, điển hình công vào báo điện tử lớn nhƣ dantri.com, vietnamnet.vn gây thiệt hại lớn cho công ty Dựa vào mức độ phổ biến khả gây thiệt hại cho nạn nhân, nghiên cứu DoS chủ yếu tập trung vào DDoS, hình thức công sử dụng số lƣợng lớn máy tính trung gian làm cạn kiệt tài nguyên hệ thống Luận văn giới hạn nghiên cứu hình thức công Phân loại DoS Có nhiều tiêu chí để phân loại DoS, dƣới cách phân loại dƣới góc nhìn ngƣời quản trị hệ thống, dựa vào giao thức thực công 2.1 Tấn công DoS tầng Network/Transport Những kiểu công đƣợc thực gửi gói tin TCP, UDP, ICMP hay IP Có bốn loại công[7]: a Tấn công gây tràn: Kẻ công làm gián đoạn kết nối ngƣời dùng hợp lệ cách làm tràn băng thông mạng Kiểu công bao gồm UDP Flood, ICMP Flood, DNS Flood, VoIP Flood có không giả mạo địa IP, b Tấn công dựa điểm yếu giao thức: Kẻ công khai thác vài điểm yếu giao thức đƣợc sử dụng để làm cạn kiệt tài nguyên hệ thống Ví dụ điển hình kiểu công TCP SYN Flood[8] Thông thƣờng bắt đầu phiên kết nối TCP, client server phải trải qua trình bắt tay ba bƣớc[4] nhƣ sau: - Client yêu cầu kết nối cách gửi gói SYN tới server - Server xác nhận yêu cầu cách gửi lại mộ gói SYN-ACK - Client gửi lại server gói ACK, kết nối đƣợc thiết lập Hình Quá trình bắt tay ba bước Tấn công SYN Flood đƣợc thực cách client không trả lời server gói tin ACK bƣớc cuối Server chờ gói ACK khoảng thời gian định trƣớc, đồng thời cấp phát sẵn số tài nguyên cho kết nối Nếu số gói SYN đủ lớn, lƣợng tài nguyên cấp phát cho kết nối không hợp lệ vƣợt khả server, khiến phục vụ cho ngƣời dùng hợp lệ Hình Mô hình công SYN Flood c Tấn công dựa phản xạ: Kẻ công gửi gói tin giả mạo địa chi IP nguồn địa server nạn nhân tới máy reflector Các reflector gửi gói tin trả lời tới server nạn nhân, làm cho bị tê liệt Visibility Tên Mô tả public source_port Port nguồn public destination_port Port đích public sequence_number Sequence number public ack_number Acknowledge number public flags Flag gói tin (SYN, ACK, RST,…) public window Window gói tin public checksum Checksum header Phƣơng thức: Visibility public Tên bind_data(JsonDoc) Mô tả Bind liệu từ Elasticsearch vào thuộc tính UDPLogDoc Mô tả: Class ứng với log gói tin UDP Kế thừa từ: IPLogType Thuộc tính: Visibility Tên Mô tả public source_port Port nguồn public destination_port Port đích public length Kích thước toàn gói tin public checksum Checksum gói tin Phƣơng thức: Visibility public Tên bind_data(JsonDoc) Mô tả Bind liệu từ Elasticsearch vào thuộc tính AppLogDoc Mô tả: Class ứng với log ứng dụng Kế thừa từ: LogType Phƣơng thức: 42 Visibility public Tên bind_data(JsonDoc) isAbstract true Mô tả Bind liệu từ Elasticsearch vào thuộc tính WebLogDoc Mô tả: Class ứng với log HTTP request Kế thừa từ: AppLogType Class kế thừa: Các class ứng với loại log web server khác Thuộc tính: Visibility Tên Mô tả public timestamp Thời gian nhận request public ip Địa IP nguồn public method Giao thức (GET, POST, PUT,…) public http_version Phiên giao thức HTTP public referrer Referrer request public agent User agent public request_path Đường dẫn request public request_bytes Kích thước request public response_code Mã trả response public response_bytes Kích thước response Phƣơng thức: Visibility public Tên bind_data(JsonDoc) Mô tả Bind liệu từ Elasticsearch vào thuộc tính DNSLogDoc Mô tả: Class ứng với log DNS request Kế thừa từ: AppLogType Class kế thừa: Các class ứng với loại log DNS server khác Thuộc tính: 43 Visibility Tên Mô tả public client_ip Địa IP client public client_port Port nguồn public log_category_queries Log category query public log_module_query Log module query public level Level public namebuf Tên miền query public class_name Tên class public type_name Tên kiểu public client_signer Client signer public client_opt Client options public client_attributes Client attributes public flags Flags Phƣơng thức: Visibility public Tên bind_data(JsonDoc) Mô tả Bind liệu từ Elasticsearch vào thuộc tính FTPLogDoc Mô tả: Class ứng với log FTP request Kế thừa từ: AppLogType Class kế thừa: Các class ứng với loại log FTP server khác Thuộc tính: Visibility Tên Mô tả public current_time Thời gian bắt đầu request public transfer_time Lượng thời gian tranfer public ip Địa IP client public byte_count Dung lượng tranfer tính theo byte public filename Tên file public transfer_type Kiểu transfer (ascii, binary) public special_action_flag Special action flag public direction Outgoing or incoming 44 public access_mode Cách thức truy cập public username User name public service_name Service name public authentication_meth od Authentication method public login_status Login status public completion_status Completion status Phƣơng thức: Visibility public Tên Mô tả bind_data(JsonDoc) Bind liệu từ Elasticsearch vào thuộc tính 10 LogIndex Mô tả: Class ứng với log index Thuộc tính: Visibility Tên Mô tả protected host Host Elasticsearch chứa index protected port Port Elasticsearch protected index Tên index Phƣơng thức: Visibility Tên Mô tả public init (host, port, index) Hàm khởi tạo public Response search(types, query) Tìm kiếm đối tượng LogDoc Index Trả về: Response object từ Elasticsearch 11 LogType Mô tả: Class ứng với log type Class kế thừa: IPLogType, AppLogType Thuộc tính: Visibility protected Tên host Mô tả Host Elasticsearch chứa index 45 protected port Port Elasticsearch protected index Tên index protected type Tên type Phƣơng thức: Visibility Tên Mô tả public init (host, port, index, type) Hàm khởi tạo public int doc_count(range) Đếm số LogDoc có LogType theo range (khoảng thời gian) public Response search(query) Tìm kiếm đối tượng LogDoc Type Trả về: Response object từ Elasticsearch 12 IPLogType Phƣơng thức: Visibility public Mô tả int packet_count(range, protocol, source_ip, destination_ip) Đếm số gói tin có type Tham số mặc định: range = All, protocol = All, source_ip = All, destination_ip = All public List packet_search(range, protocol, source_ip, destination_ip, return_count) Tìm kiếm gói tin Tham số mặc định: range = All, protocol = All, source_ip = All, destination_ip = All, return_count = 10 Trả về: List object kiểu IPLogDoc public List protocol_analyze(range, source_ip, destination_ip) Thống kê gói tin IP theo protocol Tham số mặc định: range = All, source_ip = All, destination_ip = All Trả về: List object chứa thông tin protocol public List source_analyze(range, protocol, destination_ip) Thống kê gói tin theo địa nguồn Tham số mặc định: range = All, protocol = All, destination_ip = All Trả về: List object chứa thông tin địa IP nguồn 46 public List flood_detect(range, protocol, destination_ip, threshold) Liệt kê danh sách IP có tần suất vượt ngưỡng Tham số mặc định: protocol = All, destination_ip = All Trả về: Danh sách địa IP 13 ICMPLogType Phƣơng thức: Visibility public Mô tả int packet_count(range, code, source_ip, destination_ip) Đếm số gói tin có type Tham số mặc định range = All, code = All, source_ip = All, destination_ip = All public List packet_search(range, code, source_ip, destination_ip, return_count) Tìm kiếm gói tin Tham số mặc định range = All, code = All, source_ip = All, destination_ip = All, return_count = 10 Trả về: List object kiểu ICMPLogDoc public List code_analyze(range, source_ip, destination_ip) Thống kê gói tin theo code Tham số mặc định: range = All, source_ip = All, destination_ip = All Trả về: List object chứa thông tin code public List source_analyze(range, destination_ip) Thống kê gói tin theo địa nguồn Tham số mặc định: range = All, destination_ip = All Trả về: List object chứa thông tin địa nguồn public List flood_detect(range, destination_ip, threshold) Liệt kê danh sách IP có tần suất vượt ngưỡng Tham số mặc định: destination_ip = All Trả về: Danh sách địa IP public List ping_of_death_detect(range) Liệt kê danh sách IP công ping of death Tham số mặc định: range = All Trả về: Danh sách địa IP 47 14 TCPLogType Phƣơng thức: Visibility public Mô tả int segment_count(range, flags, source_ip, source_port, destination_ip, destination_port) Đếm số gói tin có type Tham số mặc định: range = All, flags = All, source_ip = All, destination_ip = All, source_port = All, destination_port = All public List segment_search(range, flags, source_ip, source_port, destination_ip, destination_port, return_count) Tìm kiếm gói tin Tham số mặc định: range = All, flags = All, source_ip = All, destination_ip = All, source_port = All, destination_port = All, return_count = 10 Trả về: List object kiểu TCPLogDoc public List port_analyze(range, source_ip, destination_ip) Thống kê gói tin theo port Tham số mặc định: range = All, source_ip = All, destination_ip = All Trả về: List object chứa thông tin port public List flags_analyze(range, source_ip, source_port, destination_ip, destination_port) Thống kê gói tin theo flags Tham số mặc định: range = All, source_ip = All, destination_ip = All, source_port = All, destination_port = All Trả về: List object chứa thông tin flags public List source_analyze(range, destination_ip, destination_port) Thống kê gói tin theo địa nguồn Tham số mặc định: range = All, destination_ip = All, destination_port = All Trả về: List object chứa thông tin địa nguồn public List flood_detect(range, destination_ip, destination_port, threshold) Liệt kê danh sách IP có tần suất vượt ngưỡng Tham số mặc định: destination_ip = All, destination_port = All Trả về: Danh sách địa IP 15 UDPLogType Phƣơng thức: 48 Visibility Mô tả int segment_count(range, source_ip, source_port, destination_ip, destination_port) public Đếm số gói tin có type Tham số mặc định: range = All, source_ip = All, destination_ip = All, source_port = All, destination_port = All public List segment_search(range, source_ip, source_port, destination_ip, destination_port, return_count) Tìm kiếm gói tin Tham số mặc định: range = All, source_ip = All, destination_ip = All, source_port = All, destination_port = All, return_count = 10 Trả về: List object kiểu UDPLogDoc List port_analyze(range, source_ip, destination_ip) public Thống kê gói tin theo port Tham số mặc định: range = All, source_ip = All, destination_ip = All Trả về: List object chứa thông tin port List source_analyze(range, destination_ip, destination_port) public Thống kê gói tin theo địa nguồn Tham số mặc định: range = All, destination_ip = All, destination_port = All Trả về: List object chứa thông tin địa nguồn List flood_detect(range, destination_ip, destination_port, threshold) public Liệt kê danh sách IP có tần suất vượt ngưỡng Tham số mặc định: destination_ip = All Trả về: Danh sách địa IP 16 AppLogType Phƣơng thức: Visibility isAbstract Mô tả public true flood_detect(range, threshold) Liệt kê request có tần suất vượt ngưỡng 17 WebLogType Phƣơng thức: 49 Visibility public Mô tả int request_count(range, ip, response_code) Đếm số request Tham số mặc định: range = All, ip = All, response_code = All public List request_search(range, ip, response_code, return_count) Tìm kiếm request Tham số mặc định: range = All, ip = All, response_code = All, return_code = 10 Trả về: List object kiểu WebLogDoc public List ip_analyze(range, response_code) Thống kê request theo client IP Tham số mặc định: range = All, response_code = All Trả về: List object chứa thông tin client IP public List response_code_analyze(range, ip) Thống kê request theo response code Tham số mặc định: range = All, ip = All Trả về: List object chứa thông tin response code public List referrer_analyze(range, ip, response_code) Thống kê request theo referrer Tham số mặc định: range = All, response_code = All, ip = All Trả về: List object chứa thông tin referrer public List traffic_analyze(range, ip) Thống kê request theo dung lượng traffic Tham số mặc định: range = All, ip = All Trả về: List object chứa thông tin traffic public List flood_detect(range, threshold) Liệt kê IP có tần suất request vượt ngưỡng Trả về: Danh sách địa IP 18 DNSLogType Phƣơng thức: Visibility public Mô tả int query_count(range, ip, name, class_name, type_name) 50 Đếm số query Tham số mặc định: range = All, ip = All, name = All, class_name = All, type_name = All public List query_search(range, ip, name, class_name, type_name, return_count) Tìm kiếm query Tham số mặc định: range = All, ip = All, name = All, class_name = All, type_name = All, return_count = 10 Trả về: List object kiểu DNSLogDoc public List ip_analyze(range, name, class_name, type_name) Thống kê query theo địa IP Tham số mặc định: range = All, name = All, class_name = All, type_name = All Trả về: List object chứa thông tin địa IP public List class_name_analyze(range, ip, name, type_name) Thống kê query class name Tham số mặc định: range = All, name = All, ip = All, type_name = All Trả về: List object chứa thông tin class name public List type_name_analyze(range, ip, name, class_name) Thống kê query theo type name Tham số mặc định: range = All, name = All, class_name = All, ip = All Trả về: List object chứa thông tin type name public List flood_detect(range, threshold) Liệt kê IP có tần suất query vượt ngưỡng Trả về: Danh sách địa IP 19 FTPLogType Phƣơng thức: Visibility public Mô tả List request_count(range, ip, file_name, direction, login_status, completion_status) Đếm số request Tham số mặc định: range = All, ip = All, file_name = All, direction = All, login_status = All, completion_status = All public List request_search(range, ip, file_name, direction, login_status, 51 completion_status, return_count) Tìm kiếm request Tham số mặc định: range = All, ip = All, file_name = All, direction = All, login_status = All, completion_status = All, return_count = 10 Trả về: List object kiểu FTPLogDoc public List ip_analyze(range, file_name, direction, login_status, completion_status) Thống kê request theo địa IP Tham số mặc định: range = All, file_name = All, direction = All, login_status = All, completion_status = All Trả về: List object chứa thông tin địa IP public List file_name_analyze(range, ip, direction, login_status, completion_status) Thống kê request theo file name Tham số mặc định: range = All, ip = All, direction = All, login_status = All, completion_status = All Trả về: List object chứa thông tin file name public List login_status_analyze(range, ip, file_name, direction, completion_status) Thống kê request theo login status Tham số mặc định: range = All, file_name = All, direction = All, ip = All, completion_status = All Trả về: List object chứa thông tin file name public List completion_status_analyze(range, ip, file_name, direction, login_status) Thống kê request theo completion status Tham số mặc định: range = All, file_name = All, direction = All, login_status = All, ip = All Trả về: List object chứa thông tin completion status public List traffic_analyze(range, ip, direction) Thống kê request theo dung lượng traffic Tham số mặc định: range = All, ip = All, direction = All Trả về: List object chứa thông tin traffic public List flood_detect(range, threshold) Liệt kê IP có tần suất request vượt ngưỡng Trả về: Danh sách địa IP 52 PHỤ LỤC B – CÁC CẤU HÌNH VÀ SCRIPT SỬ DỤNG KHI THỬ NGHIỆM Cấu hình thu thập Apache log input { file { path => "/var/log/httpd/access_log" start_position => "beginning" } } filter { if [path] =~ "access" { mutate { replace => { "type" => "apache_access" } } mutate { replace => { "time_stamp" => "%{+YYYY-MM-dd'T'hh:mm:ss}" } } grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } } output { elasticsearch { host => "192.168.10.3" index => "logstash-webserver-%{+YYY.MM.dd}" } stdout { codec => rubydebug } } Cấu hình thu thập Firewall log (Chỉ giới hạn gói tin TCP tới cổng 80) input { pipe { command => "tcpdump -i any -nntttts tcp port 80" } 53 } filter { grok { match => ["message", "%{TIMESTAMP_ISO8601:timestamp} IP %{IP:sourceIP}.%{INT:sourcePort} > %{IP:destinationIP}.%{INT:destinationPort}: Flags \[(?[AZ.]+)\]"] remove_field => [ "command" ] } } output { elasticsearch { host => "192.168.10.3" index => "logstash-firewall-tcp-80-%{+YYY.MM.dd}" } stdout { codec => rubydebug } } Script giả lập request người dùng #!/bin/bash target="http://192.168.5.222/" pages=("config.html""developers.html" "glossary.html" "objects.inv" "require.html" "setup.html" "vendors.html" "copyright.html" "faq.html" "index.html" "other.html" "search.html" "transformations.html" "credits.html" "genindex.html" "intro.html" "privileges.html" "searchindex.js" "user.html") length=${#pages[@]} while : r=$((RANDOM % $length)) i="eth$((RANDOM % 10))" s="$((RANDOM % 2))s" echo "`date` sending request to " $target${pages[$r]} ", interface" $i ", sleep " $s curl interface $i $target${pages[$r]} > /dev/null 2>&1 sleep $s done 54 Script phát công SYN Flood sử dụng thuật toán CUSUM alpha = 0.5 a = SYN = FIN = delta = Y = n = XM = H = T = 60 # Get SYN and FIN counts SYN, FIN = countPacket("s"), countPacket("f") delta = SYN - FIN F = FIN print "Number of SYNs: %d / Number of FINs: %d" % (SYN, FIN) while True: n = n + F = alpha * F + (1 - alpha) * FIN delta = SYN - FIN X = float(delta) / F XM = (XM * (n - 1) + X) / n x = X - a Y = Y + x if Y + x > else print "Average of F = %d / delta of F = %d\nX = %.2f / Xm = %.2f / x = %.2f" % (F, delta, X, XM, x) print "Y = %.2f" % Y if Y > H: print "Y > Threshold H, SYN Flood Attack!!!" time.sleep(5) SYN, FIN = countPacket("s"), countPacket("f") print "*" * 60 print datetime.datetime.now().strftime('%H:%M:%S') print "Number of SYNs: %d / Number of FINs: %d" % (SYN, FIN) 55 56 ... CHƢƠNG – TỔNG QUAN VỀ DOS .3 DoS gì? Phân loạ DoS Phát phòng chống DoS .9 CHƢƠNG – PHÁT HIỆN TẤN CÔNG DOS BẰNG PHƢƠNG PHÁP PHÂN TÍCH LOG 12... thành phần phát ngăn chặn công lại tạo nút thắt cổ chai cho toàn hệ thống Trong khuôn khổ luận văn này, xin trình bày hƣớng tiếp cận khác việc phát công DoS, phát công dựa việc phân tích log Đối... có công DoS Nội dung giải pháp đƣợc trình bày chi tiết chƣơng chƣơng luận văn Trong đó, chƣơng giới thiệu tổng quan giải pháp; cách thức thu thập lƣu trữ liệu log; cách thức phân tích log để phát