--- HUỲNH TRUNG LƯU HỆ THỐNG TÍCH HỢP WEB APPLICATION FIREWALL VÀ VẤN ĐỀ BẢO VỆ TẤN CÔNG ỨNG DỤNG WEB TẠI TRƯỜNG CAO ĐẲNG KIÊN GIANG Chuyên ngành: Khoa học máy tính Mã số: 848.01.01
Trang 1-
HUỲNH TRUNG LƯU
HỆ THỐNG TÍCH HỢP WEB APPLICATION FIREWALL
VÀ VẤN ĐỀ BẢO VỆ TẤN CÔNG ỨNG DỤNG WEB TẠI
TRƯỜNG CAO ĐẲNG KIÊN GIANG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Đà Nẵng - 2019
Trang 2-
HUỲNH TRUNG LƯU
HỆ THỐNG TÍCH HỢP WEB APPLICATION FIREWALL
VÀ VẤN ĐỀ BẢO VỆ TẤN CÔNG ỨNG DỤNG WEB TẠI
TRƯỜNG CAO ĐẲNG KIÊN GIANG
Chuyên ngành: Khoa học máy tính
Mã số: 848.01.01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS NGUYỄN GIA NHƯ
Đà Nẵng - 2019
Trang 3Để hoàn thành luận văn thạc sĩ này, trước tiên cho phép tôi được bày
tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn là Tiến sĩ Nguyễn Gia Như, người đã tận tình giúp đỡ, chỉ bảo tôi trong quá trình học tập, nghiên cứu khoa học và tạo mọi điều kiện tốt nhất để tôi hoàn thành được luận văn này Tôi cũng xin bày tỏ lòng biết ơn đến Quý Thầy, Cô khoa Sau đại học - trường Đại học Duy Tân, các thầy cô trực tiếp giảng dạy, giúp đỡ và tạo điều kiện thuận lợi cho tôi trong quá trình học tập và nghiên cứu
Tôi xin gửi lời cảm ơn chân thành đến gia đình, đồng nghiệp, bạn bè cùng các học viên lớp khoa học máy tính K15MCS.KG đã luôn ủng hộ, giúp đỡ, khuyến khích tôi trong suốt quá trình học tập và thực hiện luận văn này
Xin chân thành cảm ơn!
Trang 4
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu và kết quả nghiên cứu trong luận văn này là trung thực và không trùng lặp với các đề tài khác Tôi cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc
Trang 51 Lý do chọn đề tài 1
2 Mục đích và nhiệm vụ 1
3 Đối tượng nghiên cứu 2
4 Phạm vi nghiên cứu 2
5 Ý nghĩa khoa học và thực tiễn 2
5 Bố cục luận văn 3
CHƯƠNG 1 TỔNG QUAN VỀ AN NINH MẠNG VÀ ỨNG DỤNG WEB 4
1.1 Tổng quan về an ninh mạng 4
1.1.1 Giới thiệu về an ninh mạng 4
1.1.2 Đánh giá vấn đề an toàn, bảo mật hệ thống mạng 8
1.2 Tổng quan về ứng dụng Web 10
1.2.1 Giới thiệu về Website 10
1.2.2 Khái niệm về ứng dụng Web 12
1.2.3 Một số thuật ngữ trong ứng dụng Web 13
1.2.4 Cấu trúc cơ bản của ứng dụng Web 16
1.2.5 Nguyên lý hoạt động một ứng dụng Web 18
1.2.6 Vấn đề bảo mật ứng dụng web 20
1.3 OWASP Mutillidae II 21
CHƯƠNG 2 BẢO MẬT ỨNG DỤNG WEB 23
2.1 KiếnTrúc Web Application Firewall 23
2.1.1 Khái niệm Firewall 23
2.1.2 Khái niệm Web Application Firewall 23
2.1.3 Chức năng 25
2.1.4 Vị trí đặt Web Application Firewall 26
2.1.5 Các mô hình Web Application Firewall 26
Trang 62.2.1 Giới thiệu về SSL 37
2.2.2 Chức năng của SSL 38
2.2.3 Các thuật toán sử dụng trong SSL 39
2.2.4 Ứng dụng SSL trên Web Server 41
2.2.5 Giao thức TLS (Transport Layer Security) 43
2.3 Phân tích một số kịch bản bảo vệ ứng dụng web sử dụng WAF 46
2.3.1 Một số phương thức tấn công ứng dụng web 46
2.3.2 Phân tích một số kịch bản bảo vệ ứng dụng web sử dụng WAF bằng ModSecurity 51
2.4 Kết luận về bảo vệ ứng dụng WEB 61
CHƯƠNG 3 TRIỂN KHAI HỆ THỐNG WEB APPLICATION FIREWALL TẠI TRƯỜNG CAO ĐẲNG KIÊN GIANG 63
3.1 Hiện trạng mô hình mạng tại Trường Cao đẳng Kiên Giang 63
3.1.1 Mô tả mạng 63
3.1.2 Sơ đồ mạng logic 63
3.1.3 Hạn chế của hệ thống mạng trường Cao đẳng Kiên Giang 63
3.2 Đề xuất hệ thống mạng tích hợp Web Application Firewall 64
3.2.1 Giải pháp 64
3.2.2 Đề xuất mô hình mạng tích hợp hệ thống WAF 65
3.2.3 Phân tích 65
3.3 Triển khai một số kịch bản bảo vệ ứng dụng Web sử dụng WAF 65
3.4 Kết luận sau khi áp dụng hệ thống Web Application Firewall 79
KẾT LUẬN 80 TÀI LIỆU THAM KHẢO
QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (Bản sao)
Trang 7WAF Web Application Firewall Tường lửa ứng dụng web Web Website Trang mạng
IC3 Internet Crime Complaint
Center
Trung tâm khiếu nại tội phạm trên Internet FTP File Transfer Protocol Giao thức truyền tập tin DOS Disk Operating System Hệ điều hành đĩa
Hot-plug,
hot-swap
Hot-plug, hot-swap Trao đổi nóng
Server web Server web Máy chủ web
HTTP Hyper Text Transfer
Protocol
Giao thức truyền tải siêu văn bản
DNS Domain Name System Hệ thống tên miền
DOM Document Object Model Mô hình Đối tượng Tài liệu SSL Transport Layer Security Bảo mật tầng truyền tải TLS Secure Sockets Layer Tầng ổ bảo mật
Mô hình tham chiếu kết nối các hệ thống mở
HTML Hyper Text Markup
Trang 82.1 Mô hình của một hệ thống Tường lửa ứng dụng Web
2.2 Một ví dụ triển khai WAF trong máy chủ web Windows 26 2.3 Mô hình Reverse Proxy 27 2.4 Mô hình Transparent Proxy 28 2.5 Mô hình Layer 2 Brigde 28 2.6 Mô hình tổng quan ModSecurity 29 2.7 Kiểm soát HTTP Traffic 31 2.8 Port phổ biến của những ứng dụng đi kèm SSL 41 2.9 Mô hình Client - Server 41 2.10 Các loại Web Server 42 2.11 Một số phương pháp bảo vệ Web Server an toàn hơn 42
2.13 Thử nghiệm Web OWASP Multilidae 52
Trang 92.14 File log 52 2.15 Kết quả nhận được trên trình duyệt 53 2.16 Kiểm tra IP kết nối đến Web Server 53
2.17 Kết quả khi áp dụng Rules ngăn chặn User-Agent
2.18 Đăng nhập vào OWASP Mutillidae II và truy cập vào
2.19 Kết quả của câu truy vấn SQL Injection 55
2.20 Đăng nhập vào OWASP Mutillidae II và truy cập vào
lỗi Cross-site Scripting 57 2.21 Tiêm đoạn Script vào nội dung 58 2.22 Đoạn Script được thực thi khi nội dung load 58 2.23 Web hiển thị iframe được chèn vào nội dung 59 2.24 Kết quả sau khi tấn công XSS lại 61 3.1 Hệ thống sơ đồ cũ 63 3.2 Hệ thống sơ đồ mới 65 3.3 Truy cập website http://localhost/mutillidae/ 66 3.4 Kết quả sau khi cấu hình IP 68 3.5 Ping từ máy Window XP sang TurboLinux 68 3.6 Kết quả đạt được sau khi thêm rules 69 3.7 Thử nghiệm trên trình duyệt 70
3.8 Những dòng báo lỗi của sự tấn công trên đến máy chủ
3.9 Kết quả ta nhận được khi ta đặt quy tắc trên 71
Trang 103.10 File log chứa các chuỗi user-agent có tên
Trang 11MỞ ĐẦU
1 Lý do chọn đề tài
Hiện nay, công nghệ thông tin được áp dụng rộng rãi trên toàn cầu, tại Việt Nam việc áp dụng công nghệ thông tin đã đi vào các lĩnh vực như kinh doanh, quản lý, mua sắm, phục vụ nhu cầu của cá nhân, doanh nghiệp Một trong những dịch vụ công nghệ hàng đầu được sử dụng phổ biến nhất là dịch
vụ web Với sự phổ biến và tiện dụng của công nghệ web hiện tại có thể đáp ứng mọi nhu cầu của các đối tượng sử dụng
Web được sử dụng phổ biến không chỉ đối với các doanh nghiệp, tổ chức mà còn cá nhân với nhiều mục đích sử dụng khác nhau Ngoài ra, xu hướng thanh toán online phát triển là một trong các mục tiêu của tin tặc Trong vai trò là người quản trị hệ thống thì vấn đề an ninh cho mạng máy tính luôn được đặt lên hàng đầu Web Application Firewall chính là phương thức giúp chúng ta thực hiện việc này một cách tối ưu nhất, ngăn chặn các truy cập bất hợp pháp từ bên ngoài và lọc các gói tin ra vào mạng nội bộ
Đứng trước các rủi ro trong quá trình trao đổi, giao dịch thông tin thông qua website, việc bảo mật các ứng dụng web là điều rất cần thiết trong thời đại số hiện nay Đó là lý do tôi chọn đề tài “Hệ thống tích hợp Web Application Firewall và vấn đề bảo vệ tấn công ứng dụng Web tại Trường cao đẳng Kiên Giang” để thực hiện luận văn tốt nghiệp Luận văn sẽ tập trung vào các kỹ thuật tấn công và bảo mật ứng dụng web, đồng thời qua đó đưa ra các giải pháp ngăn chặn, bảo vệ hệ thống website thông qua tường lửa lớp ứng dụng ModSecurity
2 Mục đích và nhiệm vụ
Đưa ra chuẩn, mô hình chung khi xây dựng hệ thống tích hợp WAF (Web Application Firewall)
Trang 12Tìm hiểu về WAF và xây dựng hệ thống bảo mật có tích hợp WAF Triển khai một số kịch bản tấn công ứng dụng web và cách phòng chống bằng WAF
Các firewall truyền thống không đủ mạnh để bảo vệ các web server ModSecurity cho phép bảo vệ web server (một/nhiều) thông qua cơ chế can thiệp trực tiếp ở mức độ ứng dụng Vì thế, luận văn nhằm nghiên cứu và ứng dụng ModSecurity để bảo vệ hệ thống web được an toàn hơn
3 Đối tượng nghiên cứu
Tìm hiểu các hệ thống web, ứng dụng web
Tổng quan về an ninh mạng và bảo mật ứng dụng web
Tìm hiểu về Web application firewall và triển khai cài đặt cho hệ thống Các giao thức bảo mật cho web
Một số lỗi của ứng dụng web và cách phòng chống
4 Phạm vi nghiên cứu
Triển khai xây dựng hệ thống Web server
Triển khai Firewall Pfsense
Triển khai Web application firewall
Thực hiện một số kịch bản tấn công, phòng thủ cho hệ thống
5 Ý nghĩa khoa học và thực tiễn
Ý nghĩa khoa học:
- Hệ thống hóa một số vấn đề về an ninh mạng và tường lữa
- Hiểu được sự cần thiết của WAF trong hệ thống Web server
- Hiểu thêm về một số lỗi trong Ứng dụng web và tác dụng của WAF trong ứng dụng web
- Hiểu được một số bảo mật Web server
Ý nghĩa thực tiễn:
- Chỉ ra lỗi trong hệ thống Web server và tầng ứng dụng web
Trang 13- Chỉ ra tác dụng của WAF trong hệ thống Web server
- Đưa ra cách phòng chống của các lỗi ứng dụng web
- Triển khai hệ thống có Web application firewall bảo vệ
5 Bố cục luận văn
Chương 1: Tổng quan về an ninh mạng và ứng dụng Web
Chương 2: Bảo mật ứng dụng Web
Chương 3: Triển khai hệ thống Web Application Firewall tại Trường Cao đẳng Kiên Giang
Trang 14CHƯƠNG 1 TỔNG QUAN VỀ AN NINH MẠNG VÀ ỨNG DỤNG WEB
đó, vấn đề bảo vệ thông tin cũng đồng thời xuất hiện và như thế an ninh mạng
ra đời
Ví dụ: User A gởi một tập tin cho User B trong phạm vi là nước Việt Nam thì nó khác xa so với việc User A gởi tập tin cho User C ở Mỹ Ở trường hợp đầu thì dữ liệu có thể mất mát với phạm vi nhỏ là trong nước nhưng trường hợp sau thì việc mất mát dữ liệu với phạm vi rất rộng là cả thế giới Một lỗ hổng trên mạng đều là mối nguy hiểm tiềm tàng Từ một lổ hổng bảo mật nhỏ của hệ thống, nhưng nếu biết khai thác và lợi dụng kỹ thuật hack điêu luyện thì cũng có thể trở thành mối tai họa
Theo thống kê của tổ chức IC3 thì số tội phạm internet ngày càng gia tăng nhanh chóng chỉ trong vòng 8 năm từ năm 2001 đến năm 2009 số lượng tội phạm đã tăng gần gấp 20 lần1
Trang 15
Hình 1.1 Thống kê tội phạm internet của tổ chức IC3 năm 2001 – 2009
Nhưng trong những năm 2010 – 2015 tội phạm internet có giảm nhưng không đáng kể dù vẫn dùng nhiều cách để bảo vệ mạng internet2
Hình 1.2 Thống kê tội phạm Internet IC3 trong những năm 2010 - 2015
Như vậy, số lượng tội phạm tăng sẽ dẫn đến tình trạng các cuộc tấn công tăng đến chóng mặt Điều này cũng dễ hiểu, vì một thực thể luôn tồn tại
Trang 16
hai mặt đối lập nhau Sự phát triển mạnh mẽ của công nghệ thông tin và kỹ thuật sẽ là miếng mồi béo bở của các Hacker bùng phát mạnh mẽ
Tóm lại, Internet là môi trường tồn tại nhiều rủi ro trong quá trình giao dịch, tương tác trao đổi thông tin Công nghệ càng phát triển thì mạng lưới trao đổi thông tin càng phát triển và phạm vi bảo mật thông tin càng rộng rãi qua mạng Vì vậy công nghệ càng phát triển thì tội phạm công nghệ càng nhiều trên thế giới ngày nay
1.1.1.2 Kẻ tấn công
Kẻ tấn công người ta thường gọi là Hacker Là những kẻ tấn công vào
hệ thống mạng với nhiều mục đích khác nhau Có nhiều cách phân loại hacker tùy theo mục đích hacker, trình độ của hacker,… Dựa vào mục đích của hacker, có thể chia thành 3 loại như sau:
Hacker mũ đen: Đây là tên trộm chính hiệu, với những Hacker có
kinh nghiệm thì đặc biệt nguy hiểm đối với hệ thống mạng Mục tiêu của chúng là đột nhập vào hệ thống mạng của đối tượng để lấy cấp thông tin, nhằm mục đích bất chính Hacker mũ đen là những tội phạm thật sự cần sự trừng trị của pháp luật
Hacker mũ trắng: Họ là những nhà bảo mật và bảo vệ hệ thống Họ
cũng xâm nhập vào hệ thống, mục đích là tìm ra những kẽ hở, những lỗ hổng chết người và sau đó tìm cách vá lại chúng Tất nhiên, hacker mũ trắng cũng có khả năng xâm nhập và cũng có thể trở thành hacker mũ đen
Hacker mũ xám: Loại này được sự kết hợp giữa hai loại trên Thông
thường họ là những người còn trẻ, muốn thể hiện mình trong một thời điểm, họ đột nhập vào hệ thống để phá phách Nhưng trong thời điểm khác họ có thể gửi đến nhà quản trị những thông tin về lỗ hổng bảo mật và đề xuất cách vá lỗi
Trang 17Ranh giới phân biệt các Hacker rất mong manh Một kẻ tấn công là Hacker mũ trắng trong thời điểm này nhưng ở thời điểm khác họ lại là một tên trộm chuyên nghiệp
1.1.1.3 Lỗ hổng bảo mật
Các lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép các truy nhập không hợp pháp vào hệ thống Các lỗ hổng cũng có thể xuất hiện ngay trong hạ tầng mạng hoặc nằm ngay trên các dịch vụ cung cấp như: Send mail, Web, Ftp, Ngoài ra các lỗ hổng còn tồn tại ngay chính các hệ điều hành như: Windows XP, 7, Linux, hoặc trong các ứng dụng mà người sử dụng thường xuyên sử dụng như: Office, trình duyệt,
Các lỗ hổng bảo mật một hệ thống thông thường được chia làm nhiều mức khác nhau tuỳ thuộc vào mức độ nguy hiểm, tầm ảnh hưởng đối với hệ thống Nếu phân chia theo mức độ nguy hiểm, có thể tạm chia làm 3 nhóm cấp
độ như sau [9]:
Lỗ hổng thuộc nhóm nguy hiểm: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể truy nhập vào hệ thống bất hợp pháp Lỗ hổng này bao gồm từ nguy hiểm đến rất nguy hiểm, thậm chí có thể phá hủy toàn bộ hệ thống
Lỗ hổng thuộc nhóm trung bình: Các lỗ hổng này cho phép người sử dụng thêm các quyền trên hệ thống mà không cần thực hiện kiểm tra tính hợp
lệ Mức độ nguy hiểm trung bình Những lỗ hổng này thường có trong các ứng dụng trên hệ thống, có thể dẫn đến mất hoặc lộ thông tin dữ liệu
Lỗ hổng thuộc nhóm thấp: Các lỗ hổng loại này cho phép thực hiện các phương thức tấn công theo DoS, hoặc các mức độ thu thập thông tin của hệ thống chưa xâm nhập hoặc có tác động làm thay đổi dữ liệu của hệ thống Mức
độ nguy hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng
Trang 18trệ, gián đoạn hệ thống, không làm phá hỏng dữ liệu hoặc được quyền truy nhập bất hợp pháp
1.1.2 Đánh giá vấn đề an toàn, bảo mật hệ thống mạng
Để đảm bảo an ninh cho hệ thống mạng, cần phải xây dựng một số tiêu chuẩn đánh giá mức độ an ninh, an toàn cho hệ thống mạng Một số tiêu chuẩn
đã được thừa nhận là thước đo mức độ an ninh của hệ thống mạng
1.1.2.1 Phương diện vật lý
Có thiết bị dự phòng nóng cho các tình huống hỏng đột ngột Có khả năng thay thế nóng từng phần hoặc toàn phần (hot-plug, hot-swap)
Bảo mật an ninh nơi lưu trữ các máy chủ
Khả năng cập nhật, nâng cấp, bổ sung phần cứng và phần mềm
Yêu cầu nguồn điện, có dự phòng trong tình huống mất điện đột ngột Các yêu cầu phù hợp với môi trường xung quanh: độ ẩm, nhiệt độ, chống sét, phòng chống cháy nổ,…
1.1.2.2 Phương diện logic
Tính bí mật (Confidentiality)
Là giới hạn các đối tượng được quyền truy xuất đến thông tin Đối tượng truy xuất thông tin có thể là con người, máy tính và phần mềm Tùy theo tính chất của thông tin mà mức độ bí mật của chúng có thể khác nhau
Ví dụ : User A gởi email cho User B thì email đó chỉ có User A và User B mới biết được nội dung của lá mail, còn những User khác không thể biết được Giả sử có User thứ 3 biết được nội dung lá mail thì lúc này tính bí mật của email
Trang 19cuối đến máy chủ, có hai vấn đề sau: Thứ nhất tại thời điểm khởi tạo kết nối, dịch vụ đảm bảo rằng hai thực thể là đáng tin Mỗi chúng là một thực thể được xác nhận Thứ hai, dịch vụ cần phải đảm bảo rằng kết nối là không bị gây nhiễu do một thực thể thứ ba có thể giả mạo là một trong hai thực thể hợp pháp để truyền tin hoặc nhận tin không được cho phép
Tính toàn vẹn (Integrity)
Tính toàn vẹn đảm bảo sự tồn tại nguyên vẹn của thông tin, loại trừ mọi
sự thay đổi thông tin có chủ đích hoặc do hư hỏng, mất mát thông tin vì sự cố thiết bị hoặc phần mềm
Ví dụ : User A gởi email cho User B, User A gởi nội dung như thế nào thì User B chắc chắn sẽ nhận được đúng y nội dung như vậy có nghĩa là User
A gởi gì thì User B nhận y như vậy không có sự thay đổi
Tính không thể phủ nhận (Non repudiation)
Tính không thể phủ nhận bảo đảm rằng người gửi và người nhận không thể chối bỏ một bản tin đã được truyền Vì vậy, khi một bản tin được gửi đi, bên nhận có thể chứng minh được rằng bản tin đó thật sự được gửi từ người gửi hợp pháp Hoàn toàn tương tự, khi một bản tin được nhận, bên gửi có thể chứng minh được bản tin đó đúng thật được nhận bởi người nhận hợp lệ
Ví dụ: User A gởi email cho User B thì User A không thể từ chối rằng
A không gởi mail cho B
Tính sẵn sàng (Availability)
Một hệ thống đảm bảo tính sẵn sàng có nghĩa là có thể truy nhập dữ liệu bất cứ lúc nào mong muốn trong vòng một khoảng thời gian cho phép Các cuộc tấn công khác nhau có thể tạo ra sự mất mát hoặc thiếu về sự sẵn sàng của dịch vụ Tính khả dụng của dịch vụ thể hiện khả năng ngăn chặn và khôi phục những tổn thất của hệ thống do các cuộc tấn công gây ra
Ví dụ : Server web là hoạt động hàng ngày để phục vụ cho web client
Trang 20nghĩa là bất cứ khi nào, ở đâu Server web cũng sẵn sàng để phục vục ho web client
Khả năng điều khiển truy nhập (Access Control)
Trong một hệ thống mạng được coi là bảo mật, an toàn thì người quản trị viên phải điều khiển được truy cập ra vào của hệ thống mạng, có thể cho phép hay ngăn chặn một truy cập nào đấy trong hệ thống
Ví dụ: Trong công ty có các phòng ban, để bảo mật thông tin nội bộ của công ty, người quản trị viên có thể ngăn chặn một số phòng ban gởi thông tin
ra ngoài và từ ngoài vào trong
1.2 Tổng quan về ứng dụng Web
1.2.1 Giới thiệu về Website
Website là một “trang web” được lưu trữ tại các máy chủ hay các hosting hoạt động trên Internet Đây là nơi giới thiệu những thông tin, hình ảnh về doanh nghiệp, sản phẩm và dịch vụ của doanh nghiệp hay giới thiệu bất
cứ thông tin gì để khách hàng có thể truy cập bất kì ở đâu, bất cứ lúc nào Website là tập hợp của nhiều web page Khi doanh nghiệp, công ty xây dựng website nghĩa là đang xây dựng nhiều trang thông tin về sản phẩm, dịch
vụ hay giới thiệu Để tạo nên một website cần có 3 yếu tố sau:
Tên miền (domain)
Thực chất một website không cần đến tên miền nó vẫn có thể hoạt động bình thường vì nó còn có địa chỉ IP của trang web đấy, chúng ta chỉ cần gõ vào trình duyệt IP của trang web thì ngay lập tức trình duyệt sẽ load trang web đấy
về trình duyệt của bạn Sở dĩ chúng ta cần phải có tên miền thay cho IP là vì IP
là mỗi chuỗi số thập phân, có những địa chỉ IP thì rất là dễ nhớ nhưng đa số địa chỉ IP thì rất là khó nhớ Với cái tên nó rất gần gũi với ngôn ngữ tự nhiên của con người nên rất là dễ nhớ cũng chính vì vậy mà người ta đã thay tên miền cho IP và từ đó công nghệ DNS ra đời
Trang 21Ví dụ đơn giản để hiểu thêm tính năng của tên miền: Trong danh bạ điện thoại của chúng ta nếu chúng ta lưu số điện thoại mà không gán với một tên thì chắc chắn một điều là chúng ta không thể nhớ hết được số điện thoại của từng người và cũng không thể nào biết được số điện thoại này là của ai nhưng nếu chúng ta lưu số một ai đó với một cái tên thì sau này khi cần gọi cho người đó sẽ tìm trong danh bạ dễ dàng hơn
Nơi lưu trữ website (hosting)
Nơi lưu trữ website thì bắt buộc chúng ta phải có, nó có thể là một máy chủ để lưu trữ hay một hosting chúng ta thuê từ nhà cung cấp dịch vụ
Nội dung các trang thông tin (web page)
Nội dung trang thông tin này thì phải có rồi vì mục đích của chúng ta lập nên website nhằm đăng thông tin của chúng ta lên website hay giới thiệu các thông tin của công ty
Nói đến một website người ta thường nói website đấy là web động hay tĩnh, đa số các website bây giờ đều là website động
Website tĩnh có thể hiểu như thế này người dùng gửi yêu cầu một tài nguyên nào đó và máy chủ sẽ trả về tài nguyên đó Các trang Web không khác
gì là một văn bản được định dạng và phân tán Lúc mới đầu phát triển website thì web tĩnh được sử dụng rất nhiều vì lúc đấy nhu cầu của việc đăng tải trên website là chưa cao như đăng thông tin về các sự kiện, địa chỉ hay lịch làm việc qua Internet mà thôi, chưa có sự tương tác qua các trang Web
Website động là thuật ngữ được dùng để chỉ những website được hỗ trợ bởi một phần mềm cơ sở web, nói cho dễ hiểu thì web động là web có cơ sở
dữ liệu Ngày nay, đa số các trang web đều có cơ sở dữ liệu vì mục đích, nhu cầu của con người càng ngày gia tăng Thực chất, website động có nghĩa là một website tĩnh được “ghép” với một phần mềm web (các modules ứng dụng cho Web) Với chương trình phần mềm này, người chủ website thực sự có
Trang 22quyền điều hành nó, chỉnh sửa và cập nhật thông tin trên website của mình mà không cần phải nhờ đến những người chuyên nghiệp
Trước đây, năm 1995 đến 2004 thì sử dụng công nghệ web 1.0 với công nghệ này thì chỉ được đọc nội dung trang web mà người dùng không thể chỉnh sửa, bình luận hay nói cách khác website lúc bấy giờ chỉ hoạt động một chiều
mà thôi
Hiện nay, đã phát triển công nghệ web 2.0 hoạt động hai chiều có nghĩa
là người dùng cũng có thể chỉnh sửa, bình luận hay xóa nội dung trang web Trên đà phát triển đó người ta tiếp tục nghiên cứu và phát triển web 3.0 hứa hẹn rất nhiều điều thú vị còn ở phía trước
1.2.2 Khái niệm về ứng dụng Web
Ứng dụng WEB là một ứng dụng máy chủ/ máy khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác Trình duyệt WEB giành cho người dùng như Internet Explore hoặc Firefox hay Chrome, Người dùng gởi và nhận các thông tin từ máy chủ WEB thông qua việc tác động vào các trang WEB Các ứng dụng WEB có thể là trang trao đổi mua bán, các diễn đàn, gửi và nhận email, games online, Với công nghệ hiện nay, website không chỉ đơn giản là một trang tin cung cấp các bài tin đơn giản Những ứng dụng web viết trên nền web không chỉ được gọi là một phần của website nữa, giờ đây chúng được gọi là phần mềm viết trên nên web Có rất nhiều phần mềm chạy trên nền web như Google Word (xử lý các file văn bản), Google spreadsheets (xử lý tính bảng tính), Google Translate (từ điển, dịch văn bản), Ngày nay, ứng dụng web phát triển rất cao, gần như bây giờ người ta đều sử dụng ứng dụng web như: Xem phim online, nghe nhạc online, chia sẻ mạng xã hội (facebook, zing), chơi games online, ngân hàng trực tuyến, và bắt đầu xuất hiện những Hacker muốn thu lợi ích về phần mình từ các ứng
Trang 23dụng web Và sau đây là thống kê bảo mật ứng dụng web mà hacker sử dụng3
Hình 1.3 Thống kê bảo mật ứng dụng WEB 1.2.3 Một số thuật ngữ trong ứng dụng Web
1.2.3.1 Javascript
Netscape đã tạo ra một ngôn ngữ kịch bản gọi là JavaScript JavaScript được thiết kế để việc phát triển dễ dàng hơn cho các nhà thiết kế Web và các lập trình viên không thành thạo Java Microsoft cũng có một ngôn ngữ kịch bản gọi là VBScript JavaScript ngay lập tức trở thành một phương pháp hiệu quả để tạo ra các trang Web động
Việc người ta coi các trang như là một đối tượng đã làm nảy sinh một khái niệm mới gọi là Document Object Model (DOM) Lúc đầu thì JavaScript
và DOM có một sự kết hợp chặt chẽ nhưng sau đó chúng được phân tách DOM hoàn toàn là cách biểu diễn hướng đối tượng của trang Web và nó có thể được sửa đổi với các ngôn ngữ kịch bản bất kỳ như JavaScript hay VBScript
1.2.3.2 HTTP header
HTTP header là phần đầu gói tin giao thức HTTP Những thông tin máy khách gởi cho máy chủ WEB được gọi là HTTP requests (yêu cầu) còn máy chủ gởi cho máy khách được gọi là HTTP reponses (trả lời) Thông thường
Trang 24
một HTTP header gồm nhiều dòng, mỗi dòng chứa một tham số và các giá trị Một số tham số được dùng chung cho cả hai trường hợp
1.2.3.3 Session
HTTP là giao thức hướng đối tượng phi trạng thái, nó không lưu trữ trạng thái làm việc giữa máy chủ và máy khách Điều này gây khó khăn cho việc quản lý một số ứng dụng web bởi vì máy chủ không biết rằng trước đó trình khách đã ở trạng thái nào Để giải quyết vấn đề này, người ta đưa ra Session (phiên làm việc) vào giao thức HTTP
Session ID là một chuỗi để chứng thực phiên làm việc, một số máy chủ
sẽ cấp phát Session cho người dùng khi họ xem trang web trên máy chủ
Để duy trì phiên làm việc Session ID thường được lưu trữ vào:
Biến trên URL
Biến ẩn from
Cookie
Phiên làm việc chỉ tồn tại trong khoảng thời gian cho phép, thời gian này được quy định tại máy chủ hoặc bởi ứng dụng thực thi Máy chủ tự động giải phóng phiên làm việc để khôi phục tài nguyên hệ thống
Để hiểu rõ thêm về Session thông qua ví dụ sau: User A chơi facebook thì thấy thông tin bổ ích muốn User B thấy những thông tin này User A liền copy đường link trên cho User B nhưng kết quả là User B đọc không được bởi
vì facebook cấp mỗi user với mỗi phiên làm việc khác nhau
1.2.3.4 Cookie
Là một phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa máy chủ và trình duyệt người dùng Các Cookie được lưu trữ dưới dạng những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ truy tìm nhận biết những người dùng đã ghé thăm trang web và những vùng họ đã ngang qua trang Những thông tin nay có thể bao gồm thông tin người dùng, tài khoản, mật khẩu,…
Trang 25Cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của mình Nhiều trình duyệt không tự động lưu trữ Cookie mà còn phụ thuộc vào người dùng có chấp nhận lưu nó hay không
Những lần truy cập sau vào trang web đó ứng dụng có thể sử dụng lại những thông tin trong Cookie (các thông tin tài khoản liên quan) mà người dùng không cần phải đăng nhập hay cung cấp thêm thông tin gì cả Cookie có các loại như sau:
Persistent Cookies được lưu trữ dưới dạng tập tin txt hoặc lưu thành
nhiều tập tin *.txt trong đó mỗi tập tin là một Cookie trên máy khách trong một khoảng thời gian xác định
Non-persistent Cookie thì được lưu trữ trên bộ nhớ RAM của máy
khách và sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web
Secure Cookies chỉ có thể được gửi thông qua HTTPS (SSL) cung
cấp cơ chế truyền bảo mật
Non-Secure Cookie có thể được gửi bằng cả hai giao thức HTTPS
hay HTTP
Ví dụ sau minh chứng điều ở trên Giả sử lần đầu tiên bạn vào trang facebook.com thì máy tính của bạn sẽ tải trang này rất lâu vì nó phải tải nội dung trang WEB về máy của bạn Sau khi tải xong đăng nhập vào hệ thống và
sử dụng như bình thường Sang ngày hôm sau, vào lại trang facebook.com thì vào rất nhanh và nhiều khi cũng không cần phải đăng nhập tài khoản nữa nguyên nhân chính là do trình duyệt đã lưu Cookie các thông tin hôm qua bạn
đã vào Cookie là một con dao hai lưỡi, lợi ích của nó thì bạn có thể thấy được
sự tiện lợi đỡ tốn thời gian tải lại trang WEB nhưng ngượi lại nhược điểm của
nó là các Hacker có thể dựa vào các file Cookie để lấy các thông tin tài khoản Rất là nguy hiểm nên tốt nhất không để trình duyệt lưu Cookie nhưng đa số
Trang 26người dùng hiện nay đều để chế độ lưu Cookie vì người dùng không biết đến
sự nguy hiểm của nó hoặc là thấy nó tiện cho công việc của mình
1.2.3.5 Proxy
Hiện nay, người dùng sử dụng Internet đa số là đi Internet trực tiếp nghĩa là người dùng tự mình đi đến máy chủ hỏi xin các yêu cầu Đi trực tiếp như thế này thì có cái khuyết điểm là băng thông sẽ tốn rất nhiều cũng chính vấn đề về băng thông nên mới ra đời khái niệm “proxy”
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệt Những chương trình máy khách của người sử dụng sẽ qua trung gian máy chủ proxy thay thế cho máy chủ thật sự mà người sử dụng cần giao tiếp Máy chủ proxy xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng máy chủ proxy sẽ kết nối với máy chủ thật thay cho máy khách và tiếp tục chuyển tiếp những yêu cầu từ máy khách đến máy chủ, cũng như trả lời của máy chủ đến máy khách Vì vậy máy chủ proxy giống cầu nối trung gian giữa máy chủ và máy khách
1.2.4 Cấu trúc cơ bản của ứng dụng Web
Việc thiết kế ứng dụng web có thể được thực hiện theo nhiều mô hình khác nhau Trong đó, mô hình MVC được ứng dụng rộng rãi và phần lớn trong các ứng dụng web hiện nay do tính tiện lợi, phổ dụng và thuận tiện trong việc nâng cấp, bảo trì
Mô hình MVC (Model - View - Controller) bao gồm 3 thành phần như sau:
Model: Chứa các code connect tới database, truy vấn và thêm xóa sửa
Trang 27kết tầng Mode và tầng View lại với nhau
Ứng dụng được chia thành các layer như thế sẽ tăng tính tái sử dụng và
dễ dàng mở rộng Chẳng hạn nếu chúng ta muốn ứng dụng có thể truy xuất trên di dộng, chúng ta chỉ cần tạo một tầng view mới riêng cho di động, tầng model và controller không thay dổi Hay nếu chúng ta muốn thay đổi database, việc đó cũng dễ dàng hơn, chỉ cần ta tạo tầng model mới, phần view và controller không bị ảnh hưởng
Mô hình thể hiện quan hệ của ba lớp trong ứng dụng web:
Hình 1.4 Mô hình 3 tầng của một ứng dụng web
Còn đây làm mô hình của một dịch vụ ứng dụng web:
Hình 1.5 Mô hình dịch vụ ứng dụng web đơn giản
- Tầng Presentation: Được dùng để giao tiếp với người dùng, nhiệm vụ chính là hiển thị dữ liệu và nhận dữ liệu từ người dùng, đồng thời gởi các yêu cầu đến tầng nghiệp vụ để hệ thống ứng dụng web xử lý, trả kết quả về cho
Trang 28người dùng
- Tầng Business Logic: Thông thường bao gồm các máy chủ ứng dụng web, có nhiệm vụ chính là cung cấp các chức năng của phần mềm như: Xử lý các yêu cầu nghiệp vụ của người dùng, quản lý các chức năng của ứng dụng web, phần mềm,
- Tầng Data: Tương tác với database, lưu trữ dữ liệu, cho phép lớp Business Logic có thể tìm kiếm, trích xuất, cập nhật … dữ liệu
1.2.5 Nguyên lý hoạt động một ứng dụng Web
Trong dạng tính toán chủ khách trước đây, mỗi ứng dụng có chương trình khách riêng của nó sẽ phục vụ như giao diện người dùng và phải được cài đặt riêng rẽ trên mỗi máy tính cá nhân của người dùng Sự nâng cấp phần máy chủ của ứng dụng sẽ cần nâng cấp tất cả máy khách đã được cài trên mỗi máy trạm người dùng, thêm vào đó là chi phí hỗ trợ và giảm năng suất
Ứng dụng web linh hoạt tạo ra một loạt các tài liệu Web ở định dạng chuẩn được hỗ trợ bởi những trình duyệt phổ biến như HTML/XHTML Ngôn ngữ kịch bản phía người dùng ở dạng ngôn ngữ chuẩn như JavaScript thường được thêm vào để có thêm những yếu tố động trong giao diện người dùng Nói chung, mỗi trang Web đơn lẻ được gửi tới người dùng như một tài liệu ổn định, nhưng thứ tự các trang có thể cung cấp cảm giác trực quan, khi những gì người dùng nhập vào sẽ được trả về thông qua thành phần mẫu Web được nhúng vào trong đánh dấu trang Trong quá trình giao dịch đó, trình duyệt Web sẽ thông dịch và hiển thị trang, và hoạt động như một người dùng chung cho bất kỳ ứng dụng Web nào
Trang 29Theo mô hình MVC (Model - View - Controller)
Hình 1.6 Mô tả hoạt động của một ứng dụng web
Các bước hoạt động của một ứng dụng web đơn giản được thiết kế với ngôn ngữ Java Web (JSP):
Bước1: Browser tạo một HTTP Request gửi tới ứng dụng web
Bước 2: Controller chính của Struts là class ActionServlet sẽ bắt request này, phân tích URL của nó, và dựa vào file struts-config.xml để gửi request này tới Action class tương ứng
Bước 3: Action class là một class của Struts Framework Ứng dụng của chúng ta thường extends từ class này và viết code để sử lý những business tương ứng Chẳng hạn ta sẽ có một LoginAction để xử lý việc user login, logout
Bước 4: Action class có thể truy xuất, cập nhật database nếu cần thiết Bước 5: Khi Action class thực hiện việc xử lý business xong, nó sẽ gửi yêu cầu forward/redirect, cùng với dữ liệu (nếu có) về controller
Bước 6: Controller chuyển control đến trang JSP tương ứng ở tầng view Nếu trang JSP này có sử dụng dữ liệu, controller sẽ cung cấp cho nó
Trang 30(đây chính là dữ liệu mà action đã tạo ra và đưa cho controller
Bước 7: Sau khi trang JSP đã chuẩn bị xong, Controller tạo một HTTP Response gửi về cho browser, để browser hiển thị ra màn hình
1.2.6 Vấn đề bảo mật ứng dụng web
Khi mà ứng dụng web phát triển rất nhanh về mọi mặt, khả năng ứng dụng một cách rộng rãi thì vấn đề bảo mật cho ứng dụng web cũng được chú trọng hơn Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, nhưng vấn đề về bảo mật trong ứng dụng Web vẫn không ngừng tăng lên Nguyên nhân có thể xuất phát từ các đoạn mã không phù hợp Nhiều điểm yếu nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ sở dữ liệu tách lấy dữ liệu nhạy cảm Nhiều cơ sở dữ liệu chứa thông tin giá trị (như chi tiết cá nhân, thông tin tài chính) khiến chúng trở thành đích nhắm thường xuyên của hầu hết hacker Mặc dù hoạt động tấn công phá hoại website doanh nghiệp vẫn diễn ra thường xuyên, nhưng bây giờ tin tặc thích tăng cường khả năng truy cập dữ liệu nhạy cảm nằm trên trình chủ chứa database hơn vì lợi nhuận khổng lồ từ các vụ mua bán dữ liệu đem lại
Hiện nay, hacker có rất nhiều cách tấn công một ứng dụng web từ các
kỹ thuật cơ bản cho đến những kỹ thuật đòi hỏi kỹ thuật và công nghệ cao Các công cụ (tool) hỗ trợ ra đời ngày càng nhiều, hỗ trợ rất nhiều cho người quản trị mạng, tìm ra những lỗ hổng để có bản vá lỗi kịp thời nhưng đồng thời
nó cũng là một con dao hai lưỡi
Hacker có thể dùng những công cụ này để phát hiện những lỗ hổng của một ứng dụng web và từ đó sẽ có cách tấn công tương ứng vào lỗ hổng này gây ra rất nhiều tổn thất Vì vậy việc nghiên cứu về các kỹ thuật tấn công và những công cụ cơ bản hiện nay là một nhu cầu tất yếu trong việc nghiên cứu bảo mật ứng dụng web
Trang 311.3 OWASP Mutillidae II
OWASP Mutillidae II là một ứng dụng miễn phí, mã nguồn mở, cố ý dễ
bị tổn thương, cung cấp một mục tiêu cho những người đam mê bảo mật web Mutillidae có thể được cài đặt trên Linux và Windows bằng cách sử dụng LAMP, WAMP và XAMMP Nó được cài đặt sẵn trên SamuraiWTF và OWASP BWA Các phiên bản hiện tại có thể được cập nhật trên các nền tảng này
Với hàng chục lỗ hổng và gợi ý để giúp người sử dụng; Đây là một môi trường web hacking dễ sử dụng được thiết kế cho các phòng thí nghiệm, những người đam mê bảo mật, các lớp học, CTF, và các công cụ đánh giá tính
dễ tổn thương Mutillidae đã được sử dụng trong các khóa học an toàn sau đại học, các khóa đào tạo về web sec và như là một mục tiêu đánh giá phần mềm
dễ bị tổn thương
Tính năng, đặc điểm:
Có hơn 40 lỗ hổng và thách thức Bao gồm ít nhất một lỗ hổng cho
mỗi OWASP Top Ten 2007, 2010 và 2013
Mutillidae có thể được cài đặt trên Linux, Windows XP và
Windows 7 sử dụng XAMMP làm cho người dùng không muốn cài đặt hoặc quản trị máy chủ web của họ dễ dàng Mutillidae được xác nhận để làm việc trên XAMPP, WAMP, và LAMP
Cài đặt dễ dàng bằng cách thả tệp dự án vào thư mục "htdocs" của
XAMPP
Sẽ cố gắng để phát hiện nếu cơ sở dữ liệu MySQL có sẵn cho người
dùng
Được cài sẵn trên Rapid 7 Metasploitable 2, Khung kiểm tra
Samurai Web (WTF), và OWASP Broken Web Apps (BWA)
Chứa 2 cấp độ gợi ý để giúp người dùng bắt đầu
Trang 32 Bao gồm các gợi ý bong bóng để giúp chỉ ra các vị trí dễ bị tổn
Cho phép SSL được thi hành để thực hiện việc tước SSL
Được sử dụng trong khóa học an toàn sau đại học, trong các khóa đào tạo về web sec và như là một mục tiêu "đánh giá người đánh giá" cho phần mềm dễ bị tổn thương
Trang 33CHƯƠNG 2 BẢO MẬT ỨNG DỤNG WEB
2.1 KiếnTrúc Web Application Firewall
2.1.1 Khái niệm Firewall
Tường lửa là một thiết bị phần cứng và/hoặc một phần mềm hoạt động trong một môi trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của cá nhân hay tổ chức
Nhiệm vụ cơ bản của tường lửa là kiểm soát dữ liệu giữa hai vùng có độ tin cậy khác nhau Các vùng tin cậy (zone of trust) điển hình bao gồm: mạng Internet (vùng không đáng tin cậy) và mạng nội bộ (một vùng có độ tin cậy cao) Mục đích cuối cùng là cung cấp kết nối có kiểm soát giữa các vùng với độ tin cậy khác nhau thông qua việc áp dụng một chính sách an ninh và
mô hình kết nối dựa trên nguyên tắc quyền tối thiểu (principle of least privilege)
Cấu hình đúng đắn cho các tường lửa đòi hỏi kỹ năng của người quản trị
hệ thống Việc này yêu cầu hiểu biết đáng kể về các giao thức mạng và về an ninh máy tính Những lỗi nhỏ có thể biến tường lửa thành một công cụ an ninh
vô dụng
Có hai loại tường lửa thông dụng là tường lửa bảo vệ để bảo vệ an ninh cho máy tính cá nhân hay mạng cục bộ, tránh sự xâm nhập, tấn công từ bên ngoài và tường lửa ngăn chặn thường do các nhà cung cấp dịch vụ Internet thiết lập và có nhiệm vụ ngăn chặn không cho máy tính truy cập một số trang web hay máy chủ nhất định, thường dùng với mục đích kiểm duyệt Internet
2.1.2 Khái niệm Web Application Firewall
Tường lửa ứng dụng web WAF (Web Application Firewall) được thiết
kế để kiểm soát truy cập từ một mạng không tin cậy đến mạng tin cậy và
Trang 34ngược lại Mọi luồng dữ liệu đi qua tường lửa được kiểm soát theo chính sách bảo mật định sẵn
Trong những năm gần đây, xu hướng tấn công vào ứng dụng web đang ngày càng trở nên phổ biến Các kỹ thuật tấn công được sử dụng chủ yếu là cross-site scripting, SQL injection, và nhiều các kỹ thuật khác… tất cả các kỹ thuật này đều nhắm vào lớp ứng dụng trong mô hình OSI Các lỗ hổng trong ứng dụng web chủ yếu xảy ra do người lập trình không kiểm tra kỹ các tham
số hay ký tự do người dùng nhập vào để tương tác với ứng dụng web Để khắc phục các lỗi trên ứng dụng web, người lập trình cần hiểu và viết được các đoạn
mã ở mức độ bảo mật nhất, tuy nhiên việc viết đoạn mã sao cho “bảo mật” nhất thường khó thực hiện, bởi các lẽ sau: Thứ nhất, các đơn vị lập trình thường không có hoặc thiếu đội ngũ chuyên trách về việc kiểm tra và sửa lỗi bảo mật
mã nguồn ứng dụng Thứ hai, đôi khi áp lực phải hoàn thành ứng dụng web trong thời gian nhanh khiến cho các ứng dụng web được đưa vào vận hành mà không qua các khâu kiểm thử Thứ ba, việc dùng các công cụ kiểm tra lỗi web
tự động đôi khi cũng không tìm ra hết các lỗi khi được thực hiện bằng tay Do vậy, việc bảo mật một ứng dụng web đó là một quá trình phòng thủ theo chiều sâu bao gồm các khâu phát triển, vận hành, xây dựng cơ sở hạ tầng bảo vệ tốt
và có một đội ngũ chuyên trách vấn đề bảo mật riêng cho web
Tường lửa ứng dụng web (Web Application Firewall – WAF) là một giải pháp nhằm bảo vệ cho ứng dụng web tránh khỏi các lỗi bảo mật nói trên WAF là một thiết bị phần cứng hoặc phần mềm được cài lên máy chủ có chức năng theo dõi các thông tin được truyền qua giao thức http/https giữa trình duyệt của người dùng và máy chủ web tại lớp 7 Một WAF có khả năng thực thi các chính sách bảo mật dựa trên các dấu hiệu tấn công, các giao thức tiêu chuẩn và các lưu lượng truy cập ứng dụng web bất thường Đây là điều mà các tường lửa mạng khác không làm được
Trang 35Hình 2.1 Mô hình của một hệ thống Tường lửa ứng dụng Web (WAF)
Hình vẽ trên cho chúng ta thấy rõ hệ thống WAF: Luồng dữ liệu kết nối Web từ bên ngoài vào bên trong qua port 80/443, truy xuất tới hệ thống dữ liệu Database của Web Server thì sẽ có rất nhiều lỗ hổng như SQL Injection, XSS, CSRF, … để các hacker có thể xâm nhập vào bên trong Nhưng hệ thống có sự giám sát của tưởng lửa ứng dụng web (WAF) và những biện pháp bảo mật giúp phòng chống các lỗ hổng của hệ thống, giúp cho hệ thống được an toàn khi kết nối dữ liệu từ bên ngoài vào bên trong và từ bên trong ra bên ngoài
Trang 36Bảo vệ các rủi ro bảo mật ứng dụng web quan trọng nhất, chẳng hạn như SQL injection, cross-site scripting, truy cập tài nguyên bất hợp pháp, tích hợp tệp từ xa và các mối đe dọa OWASP khác Sự bảo vệ tối ưu chống lại các
lỗ hổng mới được phát hiện để ngăn chặn sự gián đoạn ứng dụng của bạn và cải thiện hiệu suất trang web
2.1.4 Vị trí đặt Web Application Firewall
Các thiết bị WAF cứng thường được đặt sau tường lửa mạng và trước máy chủ ứng dụng web Việc đặt WAF được thực hiện sao cho tất cả các lưu lượng đến ứng dụng web cần qua WAF trước Tuy nhiên, đôi khi cũng có ngoại lệ khi WAF chỉ được dùng để giám sát cổng đang mở trên máy chủ web Ngoài ra, các chương trình WAF còn được cài đặt trực tiếp lên máy chủ web
và thực hiện các chức năng tương tự như các thiết bị WAF là giám sát các lưu lượng đến và ra khỏi ứng dụng web
Hình 2.2 Một ví dụ triển khai WAF trong máy chủ web Windows
Trong hình trên các WAF cứng được đặt trước máy chủ ứng dụng web và đặt sau tường lửa mạng để thực hiện sao cho tất cả lưu lượng đến ứng dụng web cần qua WAF trước và giám sát các lưu lượng đến và ra khỏi ứng dụng web
2.1.5 Các mô hình Web Application Firewall
2.1.5.1 Mô hình bảo mật
Một WAF hoạt động dựa theo 2 mô hình bảo mật: Positive và Negative
Trang 37Mô hình Positive chỉ cho phép các lưu lượng hợp lệ được định nghĩa sẵn đi qua và chặn tất cả các lưu lượng còn lại Mô hình Negative sẽ cho phép tất cả các lưu lượng vượt qua và chỉ chặn các lưu lượng được mà WAF cho là nguy hại Đôi khi cũng có các WAF cung cấp cả 2 mô hình trên, tuy nhiên thông thường WAF chỉ cung cấp 1 trong 2 mô hình Với mô hình Postitive thì đòi hỏi nhiều cấu hình và tùy chỉnh, còn mô hình Negative chủ yếu dựa vào khả
năng học hỏi và phân tích hành vi của lưu lượng mạng
2.1.5.2 Mô hình hoạt động
WAF có thể hoạt động ở các mô hình riêng biệt, dưới đây là một số mô hình tham khảo:
Reverse Proxy: Đây là chức năng được sử dụng phổ biến khi triển
khai WAF trong mô hình này, WAF giám sát tất cả các lưu lượng đi đến ứng dụng web, sau đó thay vì cho các địa chỉ IP bên ngoài gửi yêu cầu trực tiếp đến máy chủ web thì WAF đứng ra làm trung gian để gửi các yêu cầu này đến máy chủ web thay cho trình duyệt gốc rồi gửi trả lại kết quả cho các địa chỉ IP kia
Mô hình này có nhược điểm là tạo ra độ trễ khi kết nối từ trình duyệt đến ứng dụng web
Hình 2.3 Mô hình Reverse Proxy
Trang 38 Transparent Proxy: Ở mô hình này, WAF đứng giữa tường lửa mạng
và máy chủ web và hoạt động tương tự ở mô hình Reverse Proxy nhưng không đứng ra làm trung gian kết nối như bên Reverse Proxy Mô hình này không đòi hỏi phải thay đổi điều gì trong hạ tầng mạng nhưng có thể không cung cấp được một số dịch vụ như mô hình Reverse Proxy có thể
Hình 2.4 Mô hình Transparent Proxy
Layer 2 Brigde: Ở mô hình này, WAF đứng giữa tường lửa mạng và
máy chủ web, nhưng hoạt động giống như một thiết bị Switch ở lớp 2 Mô hình này giúp mạng hoạt động với hiệu năng cao và mạng thay đổi không đáng kể, tuy nhiên nó lại không thể cung cấp các dịch vụ cao cấp khác mà các
mô hình WAF khác có thể
Hình 2.5 Mô hình Layer 2 Brigde
Host/Server Based: Đây là các phần mềm được cài trực tiếp lên máy
chủ web Các loại Host based không cung cấp các tính năng tương tự như các loại WAF network base Tuy nhiên mô hình này có thể khắc phục được vài điểm yếu mà các mô hình network base (các thiết bị WAF cứng) có Tuy
Trang 39nhiên nó cũng làm tăng mức độ tải của máy chủ web
2.1.6 Giới thiệu tổng quan về Modsecurity
2.1.6.1 Mục đích
Modsecurity là một giải pháp nguồn mở (open source), là một tường lửa lớp ứng dụng web (web application firewall), được Ivan Ristic phát triển dành cho Apache web sever Nó được xem là một bộ máy phát hiện và phòng chống xâm nhập dành cho các ứng dụng web (Web application firewall) Hoạt động như module của web server apache, hoặc có thể đứng độc lập một mình như là một Reverxe proxy để bảo vệ nhiều loại Webserver như là: IIS, Tomcat, Apache [10]
Hình 2.6 Mô hình tổng quan ModSecurity
Hiện nay với 70% các cuộc tấn công là nhằm vào web application khiến cho việc bảo vệ chúng trở thành một vấn đề cần phải quan tâm hàng đầu Web application firewall được triển khai để thiết lập một lớp bảo vệ bên ngoài và tăng thêm tính năng bảo mật, chống lại hàng loạt các cuộc tấn công đã biết và chưa biết trước khi chúng tác động vào ứng dụng web Một số kiểu tấn công phổ biến như là FingerPrinting, XSS, SQL Injiection, XXs Session hacking, Denial of sevices, …
Trang 40Dựa trên hình 2.6 có thể dễ dàng nhận thấy ModSecurity là một tường lửa mức ứng dụng Đứng trước Webserver và có khả năng xử lý traffic trước khi đưa vào Webserver Mọi yêu cầu gửi đến Webserver từ phía client sẽ được gửi qua modsecurity
Modsecurity có thể:
- Theo dõi HTTP traffic để phát hiện những dấu hiệu bất thường
- Lọc các dữ liệu ra vào webserver
- Ghi lại các tương tác giữa client và webserver
Modsecurity hoạt động dựa trên các rules Modsecurity có hoạt động hiệu quả hay không phụ thuộc rất lớn vào khả năng thiết lập rule của người quản trị
Có khả năng phân tích tỉ mỉ và log toàn bộ các hoạt động của giao thức http như Request, response
Có khả năng theo dõi lưu lượng gói tin http (HTTP trafic) theo thời gian thực để sớm phát hiện các cuộc tấn công tương tự như hệ thống web intrustion detection
Chủ động theo dõi những request để phát hiện những điểm không bình thường, các gói tin này sẽ bị loại bỏ
Sử dụng Modsecurity dưới hai hình thức Open source hoặc thương mại với nhiều hỗ trợ nhà cung cấp
Modsecurity được biết là có thể hoạt động tốt trên hàng loạt các hệ điều hành như: Linux, Windows, Solaris, FreeBSD, Open BSD, Net BSD, AIX, Mac OSX, và HP-UX
2.1.6.2 Các tính năng và vai trò của ModSecurity
(Filter): Phân tích và ghi nhật ký (log) luồng dữ liệu HTTP: HTTP,
HTTPS, TrafficInput, Reject