Bảo mật máy chủ ứng dụng Web với ModSecurity

38 790 6
Bảo mật máy chủ ứng dụng Web với ModSecurity

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ngày nay rất nhiều doanh nghiệp, tổ chức sử dụng ứng dụng web để cung cấp dịch vụ thương mại trực tuyến, kết nối khách hàng, đối tác và nhân viên một cách hiệu quả nhất. Tuy nhiên, ứng dụng web cũng đem đến những rủi ro đáng kể cho hệ thống và dữ liệu. Đa số ứng dụng web có thể bị những lỗi mà các phương pháp và cách phòng chống mạng thông thường không bảo vệ được. Sau đây là một số nguy cơ tạo điểm yếu (lỗ hổng) trong ứng dụng web phổ biến hiện nay Nguy cơ đầu tiên xuất phát từ phiên bản máy chủ web và máy chủ cơ sở dữ liệu mà chúng ta đang sử dụng. Ở mỗi phiên bản sử dụng đều có những lỗ hổng mà nhờ đó kẻ tấn công có thể thâm nhập vào hệ thống của chúng ta. Để khắc phục nguy cơ này, người quản trị cần phải cập nhật các bản vá từ nhà cung cấp sản phẩm. Dễ dàng để trả lời là chưa an toàn, vì mỗi hệ thống sẽ có một cấu hình riêng, do đó sau khi cập nhật nó có thể làm cho hệ thống hoạt động không ổn định vì sự không tương thích này. Nguy cơ thứ hai xuất phát từ mã nguồn của Website. Với nguy cơ này ta có thể sửa đổi mã nguồn để hạn chế những lỗ hổng phát sinh do mã nguồn. Nguy cơ thứ ba xuất phát từ bên ngoài gồm có: -Nguy cơ tấn công từ chối dịch vụ (DoS, DDoS) làm cho hệ thống ngưng trệ, không có khả năng phục vụ các yêu cầu chính đáng -Nguy cơ bị thay đổi nội dung trang web, làm giảm uy tín hoặc bôi nhọ tổ chức -Nguy cơ đánh cắp các thông tin nhạy cảm như: thông tin tài khoản, mật khẩu truy cập hệ thống và thông tin thẻ tín dụng … -Nguy cơ do người lập trình chưa kiểm soát được dữ liệu đầu vào. Các tấn công phổ biến ở dạng này bao gồm oCross site scripting oLỗi tràn bộ đệm oTấn công Format string oSQL injection oCookie poisoning Hiện nay có rất nhiều cách khắc phục các điểm yếu trong ứng dụng web và đảm bảo cho máy chủ ứng dụng web vận hành an toàn và liên tục như -Kết nối bên ngoài bao gồm các thiết bị định tuyến kết nối ADSL, Lease-line… cùng các thiết bị cân bằng tải -Kết nối bảo mật: các thiết bị tường lửa, các hệ thống phòng chống tấn công IDS (Intrusion detection system), IPS (Intrusion prevention system) và phần mềm giám sát hệ thống mạng -Hệ thống máy chủ: các máy chủ cài phần mềm diệt virut, chống spam mail (thư rác), loại bỏ các dịch vụ không cần thiết… -Hệ thống lưu trữ: các thiết bị lưu trữ dữ liệu tích hợp SAN (Storage Area Network) Trong đề tài này nhóm em xin đi sâu vào phần bảo mật máy chủ ứng dụng web bằng Modsecurity

Bảo mật máy chủ ứng dụng Web với ModSecurity MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC CÁC BẢNG CHƯƠNG I –TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ VẤN ĐỀ VỀ BẢO MẬT HIỆN NAY 1.1 Khái niệm ứng dụng web 1.2 Cấu trúc mô tả hoạt động ứng dụng web 1.2.1 Cấu trúc ứng dụng web 1.2.2 Mô tả hoạt động ứng dụng web 1.3 Các nguy an toàn ứng dụng web vấn đề bảo mật CHƯƠNG II - MODSECURITY .9 2.1 Tìm hiểu ModSecurity 2.1.1 Khái niệm Modsecurity 2.1.2 Các khả ModSecurity 2.1.3 Quá trình xử lý request Apache ModSecurity .10 2.2 Các luật (Rules) .12 2.2.1 ModSecurity Core Rule 12 2.2.2 Cấu hình thị (Directive) .12 2.2.3 Biến (Variables ) chọn lọc (Collection) 15 2.2.4 Chức chuyển đổi 17 2.2.5 Toán tử (Operators) 18 2.2.6 Hành động (Actions) 19 2.3 Logging 21 2.3.1 Debug Log 21 2.3.2 Audit logging .21 Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity 2.3.3 Tuỳ biến thông tin log .22 2.4 Biểu thức quy (Regular expressions) 23 2.4.1 Giới thiệu biểu thức quy 23 2.4.2 Ứng dụng biểu thức quy Modsecurity 24 2.5 Viết phân tích số luật .24 CHƯƠNG III - XÂY DỰNG CHÍNH SÁCH TRÊN MODSECURITY CHỐNG LẠI MỘT SỐ TẤN CÔNG LÊN ỨNG DỤNG WEB 26 3.1 Mô hình triển khai ModSecurity xây dựng kịch Demo 26 3.1.1 Xây dựng kịch demo 26 3.1.2 Cài đặt ModSecurity máy chủ CentOS 27 3.1.3 Cấu hình 28 3.2 Xây dựng sách ModSecurity chống lại số công lên ứng dụng Web .29 3.2.1 Ngăn chặn HTTP Fingerprinting 29 3.2.2 Ngăn chặn công Brute Force 31 3.2.3 Ngăn chặn công Cross-Site Scripting (XSS) .32 3.2.4 Ngăn chặn công SQL injection 34 TÀI LIỆU THAM KHẢO .38 Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity DANH MỤC HÌNH ẢNH DANH MỤC CÁC BẢNG LỜI MỞ ĐẦU Trong năm gần đây, Việt Nam ngày phát triển mặt công nghệ thông tin Đặc biệt ứng dụng Web, người nghe làm việc ứng dụng web Website trở nên phổ biến trở thành phần quan trọng người doanh nghiệp, tổ chức Ứng dụng Web phổ biến công ứng dụng Web trở nên phức tạp Điều đặt vấn đề cần thiết bảo mật ứng dụng web Nhiều tổ chức, công ty xây dựng tường lửa ứng dụng web để bảo vệ hệ thống máy chủ ứng dụng web sản phẩm Imperva, CheckPoint hay ModSecurity Trong Imperva Checkpoint sản phẩm thương mại, ModSecurity sản phẩm mã nguồn mở Do đề tài nhóm em xin thực triển khai “Bảo mật máy chủ ứng dụng web với ModSecurity” Với mục đích xây dựng nên sách để phòng chống số công phổ biến lên ứng dụng Web công HTTP Fingerprinting, công Brute Force, Cross Site Scripting (XSS), SQL Injection … Trong giới hạn đề tài này, nhóm em xin trình bày chuyên đề gồm chương chính, sau: Chương 1: Tổng quan ứng dụng web vấn đề bảo mật Chương nhóm em xin trình bày khái quát ứng dụng web, nguy an toàn ứng dụng web vấn đề bảo mật Từ thấy tầm quan trọng bảo mật ứng dụng web Chương 2: ModSecurity Ở phần nhóm em xin giới thiệu tổng quan ModSecurity cách thức ModSecurity hoạt động trình xử lý request Apache Modsecurity Đồng thời giới thiệu cú pháp rule thành phần Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Chương 3: Xây dựng sách ModSecurity chống lại số công lên ứng dụng web Trong trình thực đề tài này, nhóm em xin gửi lời cảm ơn chân thành đến thầy cô Học viện Kỹ thuật Mật Mã nói chung thầy cô khoa Công nghệ thông tin truyền đạt kiến thức quý báu cho nhóm em suốt thời gian qua Đặc biệt, nhóm em xin gửi lời cảm ơn sâu sắc tới thầy giáo Ths Nguyễn Đào Trường nhiệt tình hướng dẫn nhóm em hoàn thành đề tài Do thời gian chuẩn bị hạn chế nên đề tài không tránh khỏi thiếu sót Nhóm em mong nhận đánh giá, ý kiến quý báu từ phía thầy cô bạn để hoàn thiện Hà Nội, ngày 18 tháng 12 năm 2013 CHƯƠNG I –TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ VẤN ĐỀ VỀ BẢO MẬT HIỆN NAY 1.1 Khái niệm ứng dụng web Ứng dụng web ứng dụng khách/chủ truy cập qua mạng Internet hay intranet sử dụng giao thức HTTP/HTTPS để tương tác với người dùng hay hệ thống khác Trình khách dành cho người sử dụng phần mềm phổ biến chung cho ứng dụng web Internet Explorer, Nescape, Firefox … Ứng dụng web phổ biến cập nhật trì mà không cần phần mềm phân phối, cài đặt hàng nghìn máy tính người sử dụng Các ứng dụng web phổ biến là: webmail, bán hàng trực tuyến, đấu giá, mạng xã hội nhiều chức khác Trước ứng dụng web xây dựng mô hình tập trung, nghĩa ứng dụng chạy máy chủ kết nối vào sở liệu máy chủ Hiện ứng dụng web xây dựng theo mô hình phân tán, nhiều máy chủ đáp ứng yêu cầu kết nối tới nhiều nguồn sở liệu Trình chủ viết ngôn ngữ : PHP, ASP, ASP.NET, JSP… 1.2 Cấu trúc mô tả hoạt động ứng dụng web 1.1 Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity 1.1 1.2 1.2.1 Cấu trúc ứng dụng web Cấu trúc đơn giản ứng dụng Web chia thành tầng: Model – View - Controller, tầng đảm nhận nhiệm vụ chuyên biệt - Tầng truy vấn (Model): Chứa mã lệnh kết nối tới database, truy vấn, thêm, xóa sửa liệu - Tầng nhập hiển thị (View): Chứa code tạo giao diện tương tác với người dùng, tái liệu dẫn dắt người dùng tương tác với liệu - Tầng điều khiển (Controller): Chứa code điều khiển dòng liệu, gắn kết tầng Model tầng View lại với Cấu trúc giúp chia nhỏ trình xử lý, làm việc thành phần riêng lẻ thành phần khác không bị ảnh hưởng tới Chẳng hạn muốn ứng dụng truy xuất di động cần tạo tầng View mà tầng Model Controller không thay đổi Hay ta muốn thay đổi database ta cần tạo tầng Model mới, phần View Controller không bị ảnh hưởng Hình 1.1 Mô hình phân tầng đơn giản cấu trúc ứng dụng Web 1.2.2 Mô tả hoạt động ứng dụng web Hoạt động ứng dụng web biểu diễn hình sau: Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Hình 1.2 Mô tả hoạt động ứng dụng web Một ứng dụng web bao gồm hai phía: - Phía Client: trình duyệt web - Phía Server: kiến trúc ứng dụng web bao gồm lớp: lớp logic (Web Server, Web Application Server) lớp liệu (Database Server) - Ngoài tường lửa sử dụng để chống lại truy cập trái phép, bảo vệ nguồn thông tin nội hạn chế xâm nhập vào hệ thống Mô tả hoạt động sau: Đầu tiên Client gửi yêu cầu (request) đến Web Server thông qua lênh GET, POST… giao thức HTTP/HTTPS, Web Server lúc thực thi chương trình xây dựng từ nhiều ngôn ngữ Perl, C/C++… yêu cầu diễn dịch thực thi trang ASP, JSP… theo yêu cầu trình duyệt Tùy theo tác vụ chương trình cài đặt mà xử lý, tính toán, kết nối đến sở liệu, lưu thông tin trình duyệt gửi đến từ trả cho Client luồng liệu có định dạng theo giao thức HTTP, gồm phần: - Header: mô tả thông tin gói liệu thuộc tính, trạng thái trao đổi trình duyệt Web Server - Body: phần nội dung liệu mà Server gửi Client, file HTML, hình ảnh, video hay văn Theo hình 1.2, với Firewall luồng thông tin trình duyệt Web Server luồng thông tin hợp lệ, hacker tìm thấy vài lỗ hổng ứng dụng web firewall không hữu dụng việc ngăn chặn hacker Do kỹ thuật công vào hệ thống mạng ngày chủ yếu tập trung vào lỗ hổng trình tạo ứng dụng nhà phát triển web công trực tiếp vào hệ thống mạng Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity 1.3 Các nguy an toàn ứng dụng web vấn đề bảo mật Ngày nhiều doanh nghiệp, tổ chức sử dụng ứng dụng web để cung cấp dịch vụ thương mại trực tuyến, kết nối khách hàng, đối tác nhân viên cách hiệu Tuy nhiên, ứng dụng web đem đến rủi ro đáng kể cho hệ thống liệu Đa số ứng dụng web bị lỗi mà phương pháp cách phòng chống mạng thông thường không bảo vệ Sau số nguy tạo điểm yếu (lỗ hổng) ứng dụng web phổ biến Nguy xuất phát từ phiên máy chủ web máy chủ sở liệu mà sử dụng Ở phiên sử dụng có lỗ hổng mà nhờ kẻ công thâm nhập vào hệ thống Để khắc phục nguy này, người quản trị cần phải cập nhật vá từ nhà cung cấp sản phẩm Dễ dàng để trả lời chưa an toàn, hệ thống có cấu hình riêng, sau cập nhật làm cho hệ thống hoạt động không ổn định không tương thích Nguy thứ hai xuất phát từ mã nguồn Website Với nguy ta sửa đổi mã nguồn để hạn chế lỗ hổng phát sinh mã nguồn Nguy thứ ba xuất phát từ bên gồm có: - Nguy công từ chối dịch vụ (DoS, DDoS) làm cho hệ thống ngưng trệ, khả phục vụ yêu cầu đáng - Nguy bị thay đổi nội dung trang web, làm giảm uy tín bôi nhọ tổ chức - Nguy đánh cắp thông tin nhạy cảm như: thông tin tài khoản, mật truy cập hệ thống thông tin thẻ tín dụng … - Nguy người lập trình chưa kiểm soát liệu đầu vào Các công phổ biến dạng bao gồm o Cross site scripting o Lỗi tràn đệm o Tấn công Format string o SQL injection o Cookie poisoning Hiện có nhiều cách khắc phục điểm yếu ứng dụng web đảm bảo cho máy chủ ứng dụng web vận hành an toàn liên tục - Kết nối bên bao gồm thiết bị định tuyến kết nối ADSL, Lease-line… thiết bị cân tải - Kết nối bảo mật: thiết bị tường lửa, hệ thống phòng chống công IDS (Intrusion detection system), IPS (Intrusion prevention system) phần mềm giám sát hệ thống mạng - Hệ thống máy chủ: máy chủ cài phần mềm diệt virut, chống spam mail (thư rác), loại bỏ dịch vụ không cần thiết… - Hệ thống lưu trữ: thiết bị lưu trữ liệu tích hợp SAN (Storage Area Network) Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Trong đề tài nhóm em xin sâu vào phần bảo mật máy chủ ứng dụng web Modsecurity Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity CHƯƠNG II - MODSECURITY 2.1 Tìm hiểu ModSecurity 2.1.1 Khái niệm Modsecurity ModSecurity open source web application firewall Ivan Ristic phát triển dành cho Apache Web Server Nó xem máy phát phòng chống xâm nhập dành cho ứng dụng web Hoạt động module Web Server Apache đứng độc lập reverse proxy để bảo vệ nhiều loại webserver IIS, Tomcat, Apache Hình 2.1 Mô hình tổng quan ModSecuriy ModSecurity sử dụng hai hình thức Open source thương mại với nhiều hỗ trợ từ nhà cung cấp Nó hoạt động tốt hàng loạt hệ điều hành như: Linux, Windows, Solaris, FreeBSD, Mac OS 2.1.2 - - - Các khả ModSecurity Lọc request (Request filtering): Tất request gửi đến web server phân tích cản lọc (filter) trước chúng đưa đến modules khác để xử lý Chống kỹ thuật công (Anti-evasion techniques): đường dẫn (paths) thông số (parameters) chuẩn hóa trước phân tích để chống kỹ thuật công Hiểu giao thức HTTP (Understanding of the HTTP protocol): ModSecurity tường lửa ứng dụng nên có khả hiểu giao thức HTTP ModSecurity có khả cản lọc dựa thông tin HTTP Header hay xem xét đến thông số hay cookies request Học viện Kỹ thuật Mật Mã - Trang - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity - - Phân tích nội dung phương thức POST (POST payload analysis): Ngoài việc cản lọc dựa HTTP Header, ModSecurity dựa nội dung (payload) POST requests Tự động ghi log (Audit logging): Mọi requests ghi lại (bao gồm POST) để người quản trị theo dõi cần Lọc giao thức HTTPS (HTTPS filtering): ModSecurity phân tích HTTPS Phân tích yêu cầu nén (Compressed content filtering) ModSecurity phân tích sau giải nén các liệu yêu cầu 2.1.3 Quá trình xử lý request Apache ModSecurity Hình 2.2 Quá trình xử lý request Apache Modsecurity ModSecurity cho phép đặt rule năm thời điểm chu kỳ xử lý Apache sau: - Phase Request Header (phase 1): Các luật đặt thực sau Apache đọc request header (Post-read-request), lúc phần request body chưa đọc Phần quan trọng để phân tích khai thác dựa vào HTTP method dựa vào URL SQL Injection, Local file include, Cross Site Script (XSS)… Học viện Kỹ thuật Mật Mã - Trang 10 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity 2.4.2 Ứng dụng biểu thức quy Modsecurity Qua ta thấy việc sử dụng biểu thức quy việc lập trình đặc biệt ứng dụng vào việc thiết lập luật cho ModSecurity hữu ích Biểu thức quy giúp cho việc tối ưu hóa luật cách đơn giản mà đảm bảo khả kiểm tra luồng liệu Bình thường dựa vào mẫu biểu thức quy số ký tự phải đầy đủ, độ dài luật lớn Dẫn tới việc xử lý chậm nhiều 2.5 Viết phân tích số luật Ví dụ 1: cấm request có chưa từ “script” SecRule REQUEST_URI "script" "phase:2,deny,status:404" Với biểu thức so sánh ModSecurity thực thi kiểm tra liệu URI từ phía người dùng xác định có tồn chuỗi “script” hay không Nếu chuỗi “script” xuất URI hành động (action) thực Trong trường hợp này, ta sử dụng hành động deny status để cấm truy cập tới server đưa thông báo mã trạng thái lỗi 404 (Not found) Chú ý: Một rule không tồn action nhiều action Nếu ta sử dụng nhiều action rule, ta phân cách dấu phẩy (,) hay khoảng trắng action - Liên kết luật (chain) Sử dụng toán tử phủ định ModSecurity cho phép liên kết SecRule riêng lẽ với thành SecRule thông qua từ khóa “chain” Liên kết giảm thiểu tình cảnh báo không xác, giúp đơn giản hóa việc viết luật trường hợp cần kiểm tra điều kiện mang tính Ngoài ModSecurity cho phép sử dụng phương pháp phủ định thành phần rule Ví dụ 2: Người quản trị web server muốn chặn tất người dùng truy cập có UserAgent “hacker” , Trừ địa IP 192.168.1.15 truy cập ta viết sau: SecRule HTTP_User-Agent "hacker" "chain,deny" SecRule REMOTE_ADDR "!^192\.168\.1\.15" Trong ví dụ ta sử dụng “chain” để liên kết luật với Luật thứ ta sử dụng biến HTTP_User-Agent để lọc User-Agent có tên “hacker” Và thực Học viện Kỹ thuật Mật Mã - Trang 24 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity hành động deny để chặn truy cập User-Agent hacker Luật thứ sử dụng biến REMOTE_ADDR để định địa IP trường hợp 192.168.1.15 Sử dụng dấu (!) có chức phủ định lại luật Giả sử luật thứ ta không sử dụng dấu chấm than (!) luật có ý nghĩa User-Agent “hacker” từ địa IP 192.168.1.15 Còn ta sử dụng dấu chấm than (!) luật thứ địa IP 192.168.1.15 có User-agent “hacker” truy cập tới server, lại địa IP khác có User-Agent “hacker ” bị cấm Ví dụ 3: Khi hacker sử dụng kỹ thuật biến đổi liệu nhằm thực câu truy vấn công SQL Injection sau “id=1&UniON%20SeLeCT%201,2,3,4,5,6” Trong trường hợp ta cần chuyển đổi ký tự sang chữ thường (lowercase) trước kiểm tra Ví dụ ta sử dụng luật sau: SecRule ARGS "@contains union t:compressWhitespace,deny,status:404" select " "phase:2,t:lowercase, Ở luật ta đưa chuỗi “union select” biểu thức so sánh, chúng không chứa ký tự đặc biệt để xác định mẫu biểu thức Để tối ưu ta sử dụng toán tử @contains Khi sử dụng hành động lowercase, compressWhitespace ModSecurity thực lọc tự khóa có dạng sau: union select uNioN SeLect … UNION SELECT Học viện Kỹ thuật Mật Mã - Trang 25 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity CHƯƠNG III - XÂY DỰNG CHÍNH SÁCH TRÊN MODSECURITY CHỐNG LẠI MỘT SỐ TẤN CÔNG LÊN ỨNG DỤNG WEB 3.1 Mô hình triển khai ModSecurity xây dựng kịch Demo Do điều kiện hệ thống máy chủ nên đề tài nhóm em xin trình bày mô hình xây dựng mạng LAN Và mô lại số kiểu công phổ biến vào ứng dụng web từ xây dựng sách ModSecurity để chống lại công Mô hình triển khai sau: Hình 3.1 Mô hình triển khai Modsecurity Các thành phần mô hình triển khai: Hacker - Webserver Sử dụng Hệ điều hành Windows (Windows 7) IP: 192.168.1.15 Sử dụng hệ điều Hành CentOS 6.3 IP: 192.168.1.99 - Cài đặt Web server Apache - Cài đặt Damn Vulnerable Web App (DVWA) - Cài đặt ModSecurity 2.5.12 Bảng 3.1 Thành phần mô hình 3.1.1 - Xây dựng kịch demo Hacker sử dụng công cụ để thực HTTP FingerPrinting nhằm khai thác thông tin Web Server sau Hacker thực phân tích lỗ hổng Học viện Kỹ thuật Mật Mã - Trang 26 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity - website DVWA (website tạo với mục đích để lộ lỗ hổng để tiến hành demo), Hacker thực công HTTP Fingerprinting, Brute Force, SQL Injection, XSS Người quản trị phát website đặt web server bị công liền cài đặt ModSecurity tiến hành thiết lập Luật (Rule) để ngăn chặn công tương tự xảy sau 3.1.2 Cài đặt ModSecurity máy chủ CentOS Trước cài đặt, cần phải đảm bảo Web Server Apache hoạt động tốt ModSecurity cài đặt nhiều hệ điều hành, sau nhóm em xin giới thiệu cách cài đặt ModSecurity máy chủ CentOS (6.3) - Download ModSecurity website: https://www.modsecurity.org/tarball/2.5.12/modsecurity-apache_2.5.12.tar.gz - Các thư viện cần thiết cho việc cài đặt ModSecurity: apxs, libxml2, pcre cần file mod_unique_id.so [root@webserver ~]# yum -y install http-devel (cài đặt apxs) [root@webserver ~]#yum –y install libxml2-devel (cài đặt libxml2) [root@webserver ~]#yum -y install pcre-devel(cài đặt pcre) Thêm dòng sau vào file http.conf (/etc/http/conf/http.conf) dòng sau: LoadModule unique_id_module module/mod_unique_id.so - Giải nén tập tin [root@webserver ~]#tar xfvz modsecurity-apache_2.5.12.tar.gz - Cài đặt ModSecurity [root@webserver ~]#cd modsecurity-apache_2.5.12/apache2 [root@webserver apache2]# /configure [root@webserver apache2]# make [root@webserver apache2]# make install • Tích hợp Modesecurity với Apache Học viện Kỹ thuật Mật Mã - Trang 27 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Sau cài đặt thành công tập tin mod_security2.so tạo thư mục /etc/httpd/modules/ Tiếp tục ta cần thêm vào file httpd.conf để thực load module ModSecurity thêm dòng sau restart lại dịch vụ httpd: LoadModule security2_module modules/mod_security2.so [root@webserver ~]#service httpd restart 3.1.3 Cấu hình ModSecurity tường lửa ứng dụng thuộc loại rules-based, cần phải thiết lập luật để ModSecurity hoạt động Các rules thể dạng đường dẫn (directive) đặt trực tiếp tập tin cấu hình Apache (httpd.conf) Ngoài ta đặt cấu hình vào tập tin riêng cách copy file modsecurity.conf-minimal vào thư mục conf.d đổi tên thành Modsecurity.conf : cp modsecurity.conf-minimal /etc/httpd/conf.d/Modsecurity.conf Tiếp theo ta cần thêm vào tập tin httpd.conf Include conf.d/Modsecurity.conf Theo mặc định rule engine bị disable Để kích hoạt ModSecurity ta cần thêm thị sau vào file cấu hình SecRuleEngine On Để kiểm tra hoạt động ModSecurity ta xây dựng kịch sau: Tiến hành tạo hai file thư mục web (hacker.html index.html) Khi truy cập vào file index.html trình duyệt trả kết bình thường truy cập vào hacker.html trình duyệt báo lỗi 403 Hình 3.2 Trước cấu hình ModSecurity Hình cho ta thấy chưa cấu hình ModSecurity để chặn request có chứa từ hacker người dùng truy cập trang web bình thường Tiến hành kiểm Học viện Kỹ thuật Mật Mã - Trang 28 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity tra cách thêm rule sau vào file Modsecurity.conf sau khởi động lại Apache kiểm tra kết quả: #xây dựng rule thử nghiệm block tất request có uri chứa “hacker” SecRule REQUEST_URI “hacker” “phase:2,deny,log,status:403” Hình 3.3 Sau thực cấu hình Modsecurity Kết hình cho ta thấy ModSecurity hoạt động Khi người dùng truy cập tới http://192.168.1.19/hacker.html bị chặn ModSecurity đưa thông báo lỗi 3.2 Xây dựng sách ModSecurity chống lại số công lên ứng dụng Web 3.2.1 - Ngăn chặn HTTP Fingerprinting HTTP Fingerprinting hoạt động cách gửi request tới web server kiểm tra đặc tính riêng web server response trả thăm dò lấy thông tin thu thập đem so sánh với sở liệu thông tin cho web server biết đến để xác định tên web server phiên mà chạy Có nhiều cách để phần mềm HTTP Fingerprinting phát phiên web server chạy hệ thống Sau số phương pháp phổ biến sau: o Server banner: chuỗi trả server response header (ví dụ: Server: Apache/2.2.15 (CentOS)) mang thông tin phần mềm chạy web server hệ điều hành server o Các response giao thức HTTP: để lấy thông tin web server, sử dụng request phi tiêu chuẩn (non - standard) request bất thường để web server gửi response kèm theo thông tin server cần thu thập Các request sử dụng để lấy thông tin từ web server như:  Request HTTP DELETE không hợp lệ Học viện Kỹ thuật Mật Mã - Trang 29 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity  Request sai phiên HTTP  Request sai giao thức - Xây dựng sách ModSecurity để phòng chống công HTTP Fingerprinting o Ý tưởng: Sử dụng ModSecurity để tùy chỉnh thông số web server để đánh lừa công cụ HTTP Fingerprinting nhằm cung cấp thông tin sai lệch cho hacker Cụ thể sau:  Chỉ cho phép phương thức GET, POST HEAD  Chặn request với giao thức ngoại trừ giao thức HTTP 1.0 1.1  Chặn request không chưa Host header  Đổi thông tin server thành Microsoft-IIS/6.0 o Thực công trước viết luật ngăn chặn công  Sử dụng công cụ httprecon để thực công server 192.168.1.99 Kết trả cho ta thấy máy chủ sử dụng Apache phiên 2.2.15 sử dụng hệ điều hành CentOS: Hình 3.4 Kết công HTTP Fingerprinting - Sau phát công, dựa vào ý tưởng phân tích xây dựng tập luật # Chỉ cho phép GET,POST HEADvà phiên HTTP 1.0,1.1 SecRule REQUEST_METHOD !^(GET|POST|HEAD)$ "phase:1,t:lowerCase,deny" Học viện Kỹ thuật Mật Mã - Trang 30 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity SecRule REQUEST_PROTOCOL !^HTTP/1\.(0|1)$ "phase:1,t:lowercase,deny" # Từ chối request không chứa host,accept header SecRule &REQUEST_HEADERS:Host "@eq 0" "phase:1,deny" SecRule &REQUEST_HEADERS:Accept "@eq 0" "phase:1,deny" #Thay đổi chữ ký server thành Microsoft-IIS/6.0 SecServerSignature "Microsoft-IIS/6.0" - Kết sau viết luật thông tin server thay đổi thành Microsoft-IIS/6.0, request thăm dò tới server bị chặn (thông điệp trả mã lỗi 403 Forbidden) Hình 3.5 Kết ngăn chặn công HTTP Fingerprinting 3.2.2 Ngăn chặn công Brute Force - Bản chất công kẻ công (hacker) thực đoán thông tin đăng nhập tên người dùng, mật khẩu, email … nạn nhân thực đăng nhập đến thông tin đăng nhập Hầu hết người dùng sử dụng thông tin đăng nhập giống tất website mà họ thường đăng nhập, dẫn đến tài khoản họ bị xâm nhập hàng loạt website thông tin đăng nhập bị lộ website khác - Để ngăn chặn hình thức công cách tốt giới hạn số lần đăng nhập không Ví dụ người sử dụng đăng nhập không lần, thực khóa đăng nhập người phút lâu - Sau rules ModSecurity cho phép ta thực điều Học viện Kỹ thuật Mật Mã - Trang 31 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity # khởi tạo collection IP SecAction "initcol:ip=%{REMOTE_ADDR},pass,log,msg:'faile login'" # phát đăng nhập không thành công SecRule RESPONSE_BODY "Login failed" setvar:ip.brute_force=+1, expirevar:ip.brute_force=300" "phase:4,log,pass, # chuyển hướng sang trang nobru.html đăng nhập sai lần SecRule IP:BRUTE_FORCE "@gt 3" "redirect:/nobru.html" Các luật dựa vào điểm trả website người ta truy cập không thành công “Login failed” Các luật khởi tạo collection IP tăng giá trị biến ip.brute_force lên đơn vị sau lần đăng nhập không thành công Action expirevar thiết lập biến ip.brute_force sau phút Vì vậy, biến BRUTE_FORCE lớn 3, rule cuối khoá đăng nhập người dùng phút Kiểm tra tập luật cách thực đăng nhập lần sai liên tiếp vào trang http://192.168.1.99/login.php Kết trả redirect tới trang cảnh báo nobru.html luật cuối định Như ngăn chặn công brute force thành công Hình 3.6 Kết ngăn chặn công Brute-force 3.2.3 Ngăn chặn công Cross-Site Scripting (XSS) Học viện Kỹ thuật Mật Mã - Trang 32 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Bản chất công XSS request gửi từ máy client tới server nhằm chèn vào thông tin vượt tầm kiểm soát server Nó request gửi từ form liệu có nằm request URI, ví dụ: http://192.168.1.99/vulnerabilities/xss_r/?name=alert("xss atack"); XSS gây tổn hại website phía client mà nạn nhân trực tiếp người khách duyệt site Tất nhiên hacker sử dụng kĩ thuật đề chiếm quyền điều khiển website công vào bề mặt website XSS Client-Side Script, đoạn mã chạy trình duyệt phía client XSS không làm ảnh hưởng đến hệ thống website nằm server Mục tiêu công XSS người sử dụng khác website, họ vô tình vào trang có chứa đoạn mã nguy hiểm hacker để lại, họ bị chuyển tới website khác, đặt lại trang chủ, hay nặng mật khẩu, cookie chí máy tính người truy cập bị cài loại virus, backdoor, worm … Để ngăn chặn công XSS, ta phải đảm bảo tất liệu mà người dùng gửi lên cản lọc Cụ thể, thay loại bỏ ký tự, chuỗi thường sử dụng công XSS dấu lớn (>), nhỏ ( > ( ( ) ) # # & & “ " ‘ ' Bảng 3.2 Các ký tự nên mã hoá để ngăn chặn công XSS - Tập luật thực chặn công XSS SecRule ARGS "&\{.+}" "t:lowercase,redirect:/noxss.html,msg:'XSS'" Học viện Kỹ thuật Mật Mã - Trang 33 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity SecRule ARGS "" "t:lowercase,redirect:/noxss.html,msg:'XSS'" SecRule ARGS "javascript:" "t:lowercase,redirect:/noxss.html,msg:'XSS'" SecRule ARGS "script:" "t:lowercase,redirect:/noxss.html,msg:'XSS'" SecRule ARGS "alert" "t:lowercase,redirect:/noxss.html,msg:'XSS'" - Thực công XSS cách tiêm vào URL câu lệnh sau: http://192.168.1.99/vulnerabilities/xss_r/?name=alert(‘at7a’) - Kết sau viết rules ngăn chặn công XSS Hình 3.7 Kết ngăn chặn công XSS 3.2.4 Ngăn chặn công SQL injection Bản chất công SQL Injection kỹ thuật cho phép hacker lợi dụng lỗ hổng việc kiểm tra liệu đầu vào ứng dụng web thông báo lỗi hệ quản trị sở liệu trả để tiêm vào câu lệnh SQL bất hợp pháp Ví dụ, ta xét câu lệnh truy vấn thực đăng nhập đây: SELECT * FROM user WHERE username = '%s' AND password = '%s'; Với truy vấn trên, hacker muốn đăng nhập vào với tài khoản admin mà chưa biết mật khẩu, hacker thực nhập tên đăng nhập admin mật ‘ OR ‘1’ = ‘1 Khi thực truy vấn, thông tin đăng nhập đưa vào trở thành: SELECT * FROM user WHERE username = 'admin' AND password = '’ OR ‘1’ = ‘1 Câu lệnh có nghĩa: Truy vấn lấy thông tin tất trường từ bảng user với điều kiện trường username có giá trị admin mật trống ‘’ = Mà = Học viện Kỹ thuật Mật Mã - Trang 34 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity nên mật không đúng, câu lệnh thực thi truy vấn lấy thông tin user admin thành công Đăng nhập chấp nhận Sau bảng liệt kê danh sách lệnh thường sử dụng công SQL Injection với biểu thức quy dùng để ngăn chặn SQL code Biểu thức quy UNION SELECT union\s+select UNION ALL SELECT union\s+all\s+select INTO OUTFILE into\s+outfile DROP TABLE drop\s+table ALTER TABLE alter\s+table LOAD_FILE load_file SELECT FROM select\s+from OR or\s AND and\s Bảng 3.3 Các lệnh thường sử dụng công SQL Injection - Xây dựng tập luật ModSecurity để phòng chống công SQL Injection SecRule ARGS "union\s+select" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "union\s+all\s+select" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "into\s+outfile" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "drop\s+table" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "alter\s+table" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "load_file" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "select\s+from" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "or\s" "t:lowercase,deny,msg:'SQL injection'" SecRule ARGS "and\s" "t:lowercase,deny,msg:'SQL injection'" - Thực kiểm tra tập luật câu lệnh truy vấn sau http://192.168.1.99/vulnerabilities/sqli/?id=1+or+1%3D1&Submit=Submit# - Kết trước cấu hình ModSecurity Học viện Kỹ thuật Mật Mã - Trang 35 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity Hình 3.8 Kết công trước cấu hình ModSecurity - Kết sau cấu hình ModSecurity Hình 3.9 Kêt ngăn chặn công SQL Injection Học viện Kỹ thuật Mật Mã - Trang 36 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity KẾT LUẬN Qua thời gian tìm hiểu đề tài “Bảo mật máy chủ ứng dụng web với ModSecurity ” nhóm em có hội tìm hiểu tường lửa ứng dụng, cụ thể phần mềm mã nguồn mở ModSecurity Do điều kiện thời gian thiết bị triển khai thiếu nhóm em chưa có điều kiện triển khai vào thực tế  Trong đề tài nhóm đạt kết định sau: - Về lý thuyết tìm hiểu tầm quan trọng ModSecurity - Hiểu nguyên tắc hoạt động nhiệm vụ ModSecurity - Có khả viết Rule - Về mặt thực hành nhóm em tiến hành cài dịch vụ Web ModSecurity máy chủ CentOS, đồng thời thực viết rules ngăn chặn số công như: HTTP FingerPrinting, công Brute Force, XSS, SQL Injection  Những việc chưa làm - Do chưa có hệ thống máy chủ thực tế, mô hình triển khai lab đề tài xây dựng mạng LAN - Sử dụng rules chưa linh hoạt  Hướng phát triển - Triển khai phát triển thêm luật cho thêm số hình thức công - Kết hợp ModSecurity Iptable chống công Dos DDos - Xây dựng triển khai ModSecurity hệ thốngWeb Server thực tế Học viện Kỹ thuật Mật Mã - Trang 37 - Khoa Công Nghệ Thông Tin Bảo mật máy chủ ứng dụng Web với ModSecurity TÀI LIỆU THAM KHẢO [1] ModSecurity 2.5 - Securing your Apache installation and web applications, Packt Publishing Ltd, Magnus Mischel (11-2009) [2] Modsecurity Handbook: The Complete Guide to the Popular Open Source Web Application Firewall Ristic, Ivan S.l.: Feisty Duck, 2010 Web [3] Đề tài tìm hiểu ModSecurity – Học viện kỹ thuật Mật Mã [4] Bảo mật Web server Apache với modsecurity – diễn đàn HVA http://www.hvaonline.net/hvaonline/posts/list/1754.hva [5] https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#args Học viện Kỹ thuật Mật Mã - Trang 38 - Khoa Công Nghệ Thông Tin

Ngày đăng: 26/06/2016, 09:05

Từ khóa liên quan

Mục lục

  • 1.1. Khái niệm ứng dụng web

  • 1.2. Cấu trúc cơ bản và mô tả hoạt động của ứng dụng web

  • 1.3. Các nguy cơ mất an toàn ứng dụng web và vấn đề bảo mật hiện nay

  • 2.1. Tìm hiểu về ModSecurity

  • 2.2. Các luật (Rules)

  • 2.3. Logging

  • 2.4. Biểu thức chính quy (Regular expressions)

  • 2.5. Viết và phân tích một số luật cơ bản

  • 3.1. Mô hình triển khai ModSecurity và xây dựng kịch bản Demo

  • 3.2. Xây dựng chính sách trên ModSecurity chống lại một số tấn công lên ứng dụng Web

Tài liệu cùng người dùng

Tài liệu liên quan