Đề tài này chúng em sẽ xem xét các kiểu tấn công cơ bản và cách phòng chống tấn công web server bằng công cụ Modsecurity trên hệ điều hành windown 7, từ đây chúng ta sẽ có một cách nhìn tổng thể về bảo mật web server apache.
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên hướng dẫn
ThS Nguyễn Thị Thanh Vân
Trang 2NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên phản biện
Trang 3MỤC LỤC
MỤC LỤC 3
DANH MỤC HÌNH ẢNH 6
PHẦN MỞ ĐẦU 10
GIỚI THIỆU 11
TÍNH CẤP THIẾT CỦA ĐỀ TÀI 11
PHẠM VI NGHIÊN CỨU 11
PHƯƠNG PHÁP NGHIÊN CỨU 12
PHẦN NỘI DUNG 13
CHƯƠNG 1 HTTP 14
1.1 GIỚI THIỆU VỀ HTTP: 14
1.1.1 Tổng quan về HTTP: 14
1.1.2 Lớp giao thức HTTP: 15
1.1.3 Cơ chế hoạt động chung: 16
1.1.4 Hoạt động HTTP: 18
1.1.4.1 Client and server 18
1.1.5 Thông điệp 28
1.1.5.1 HTTP Request: 28
1.1.5.2 HTTP Response 30
1.2 CÁC LỖI BẢO MẬT: 32
1.3 BIỆN PHÁP: 32
CHƯƠNG 2 APACHE 33
2 1 GIỚI THIỆU VỀ APACHE WEB SERVER: 33
2.2 TỔ CHỨC WEB SERVER: 34
2.3 CÀI ĐẶT: 35
2.4 KIỂM TRA APACHE 36
Trang 4CHƯƠNG 3 MODSECURITY 37
3.1 GIỚI THIỆU: 37
3.1.1 Sơ lược: 37
3.1.2 Chức năng: 37
3.1.3 Mô hình và các giai đoạn xử lý: 38
3.2 CÀI ĐẶT VÀ CẤU HÌNH: 40
3.3 VIẾT RULE: 44
3.3.1 Biểu thức chính quy: 44
3.3.2 Cấu trúc của rules: 45
3.3.2.1 Cấu tạo của rule: 45
3.3.2.2 Biến (variables) 46
3.3.2.3 Toán tử (operator) 56
3.3.2.4 Transformation functions 59
3.3.2.5 Actions 61
CHƯƠNG 4 NGĂN CHẶN CÁC TẤN CÔNG VỚI MODSECURITY 70
4.1 HTTP FINGERPRINTING 70
4.1.1 Cách thức HTTP Fingerprinting hoạt động 71
4.1.2 Thực nghiệm phát hiện và chặn HTTP Fingerprinting 76
4.2 BLOCKING PROXIED REQUEST 78
4.3 SQL INJECTION 79
4.3.1 Các hình thức tấn công Sql Injection cơ bản 80
a Lấy dữ liệu từ nhiều bảng với từ khóa Union 80
b Nhiều câu truy vấn trong một lời gọi 81
c Đọc nội dung của file 81
d Ghi dữ liệu ra file 81
4.3.2 Hình thức tấn công Sql injection nâng cao (Blind) 81
4.3.3 Ngăn chặn tấn công bằng SQL Injection 82
4.3.4 Thực nghiệm phát hiện và chặn SQL Injection 83
Trang 54.3.5 Thực nghiệm phát hiện và chặn Blind SQL Injection 92
4.4 TẤN CÔNG BRUTE FORCE 98
4.4.1 Thực nghiệm phát hiện và chặn Brute force: 100
4.5 NULL BYTE ATTACKS 107
4.6 DIRECTORY INDEXING 109
4.7 CROSS-SITE SCRIPTING 110
4.7.1 Tìm hiểu về Cross-site scripting 110
4.7.2 Phân loại XSS 111
4.7.3 Hoạt động của XSS 113
4.7.4 Thực nghiệm phát hiện và chặn XSS attack 115
PHẦN KẾT LUẬN 120
KẾT LUẬN 121
TÀI LIỆU THAM KHẢO 122
Trang 6DANH MỤC HÌNH ẢNH
Hình 1.1 Quá trình thực hiện yêu cầu và trao đổi thông tin 15
Hình 1.2 Mô hình HTTP đơn giản 17
Hình 1.3 Mô hình HTTP phức tạp 17
Hình 1.4 Mô hình HTTP phức tạp với bộ nhớ cache 18
Hình 1.5 Khởi tạo kết nối giữa Client và Server 19
Hình 1.6 Quá trình “bắt tay ba bước” 20
Hình 1.7 Hoạt động GET của HTTP 23
Hình 1.8 Hoạt động của Post 24
Hình 1.9 Hoạt động của PUT 24
Hình 1.10 Hoạt động của DELETE 25
Hình 1.11 Hoạt động của OPTIONS 26
Hình 1.12 Hoạt động của HEAD 27
Hình 1.13 Hoạt động của TRACE 27
Hình 1.14 Hoạt động của TRACE khi có nhiều Server 28
Hình 1.15 Cấu trúc của HTTP Request 28
Hình 1.16 Thông điệp thực tế được gửi từ Internet Explorer 29
Hình 1.17 Các thành phần của Request- Line 29
Hình 1.18 Bảng chi tiết phương thức của HTTP 30
Hình 1.19 Cấu trúc của HTTP Response 30
Hình 1.20 Nội dung thực tế của HTTP response 31
Hình 1.21 Thành phần của Status- Line 31
Hình 1.22 Bảng mã trạng thái trả về của web server 32
Hình 2.1 Biểu đồ so sánh giữa các Web Server 10/2012 33
Hình 2.2 Sơ đồ cung cấp tài nguyên của Apache Web Server 35
Hình 2.3 Giao diện quản lý của bộ công cụ phần mền 35
Hình 2.4 Giao diện phần mền xampp 36
Hình 3.1 Mô hình tổng quan của modsecurity 37
Hình 3.2 Quá trình xử lý các request của Apache và ModSecurity 38
Trang 7Hình 3.3 Các pha xử lý của modsecurity 40
Hình 3.4 Bảng biểu thức chính quy 44
Hình 3.5 Bảng các metacharacter 45
Hình 3.6 Bảng các chỉ thị của modsecurity 45
Hình 3.7 Bảng danh sách Request Variables 50
Hình 3.8 Bảng danh sách Server Variables 51
Hình 3.9 Bảng danh sách Response Variables 53
Hình 3.10 Bảng danh sách Miscellaneous Variales 54
Hình 3.11 Bảng danh sách các Parsing Flag 55
Hình 3.12 Bảng danh sách các biến collections 56
Hình 3.13 Bảng danh sách Time Variables 56
Hình 3.14 Bảng danh sách toán tử khớp chuỗi 57
Hình 3.15 Bảng danh sách toán tử số 58
Hình 3.16 Bảng danh sách toán tử kiểm chứng 58
Hình 3.17 Bảng danh sách toán tử hỗn hợp 59
Hình 3.18 Bảng danh sách các hàm biến đổi 61
Hình 3.19 Bảng danh sách các Disruptive Actions 63
Hình 3.20 Bảng danh sách Flow Action 63
Hình 3.21 Bảng danh sách Metadata Action 64
Hình 3.22 Bảng danh sách Variable Action 66
Hình 3.23 Bảng danh sách Logging Action 67
Hình 3.24 Bảng danh sách Special Action 68
Hình 3.25 Bảng danh sách Miscellaneous actions 69
Hình 4.1 Kết quả khi sử dụng phần mền httprecon 71
Hình 4.2 Kết quả thay đổi server banner với ModSecurity 72
Hình 4.3 Request HTTP DELETE không hợp lệ 73
Hình 4.4 Request sai phiên bản HTTP 74
Hình 4.5 Request sai giao thức 75
Hình 4.6 Giao diện httprecon 76
Trang 8Hình 4.7 Kết quả sau khi luật được áp dụng 78
Hình 4.8 Hình minh họa sự khác biệt giữa Blind SQL injection và Sql Injection .82 Hình 4.9 Các chuỗi giúp ngăn chặn Sql injection 83
Hình 4.10 Giao diện đăng nhập của dvwa 84
Hình 4.11 Giao diện của dvwa 84
Hình 4.12 Thực hiện kiểm tra SQL Injection 85
Hình 4.13 Kết quả thực hiện câu lệnh trên 86
Hình 4.14 Kết quả thực hiện câu lệnh trên 86
Hình 4.15 Kết quả thực hiện câu lệnh trên 87
Hình 4.16 Kết quả thực hiện câu lệnh trên 87
Hình 4.17 Kết quả thực hiện câu lệnh trên 88
Hình 4.18 Kết quả thực hiện câu lệnh trên 89
Hình 4.19 Kết quả thực hiện câu lệnh trên 89
Hình 4.20 Giao diện trang web md5decoder.org 90
Hình 4.21 Đăng nhập bằng username và password mới 90
Hình 4.22 Đăng nhập thành công với username và password mới 91
Hình 4.23 Kết quả sau khi thêm luật vào 92
Hình 4.24 Giao diện đăng nhập của dvwa 93
Hình 4.25 Chuyển đổi cấp độ bảo mật của dvwa 93
Hình 4.26 Chọn chế độ tấn công SQL Injection (Blind) 94
Hình 4.27 Kết quả thực hiện 94
Hình 4.28 Kết quả thực hiện 95
Hình 4.29 Kết quả thực hiện 95
Hình 4.30 Kết quả thực hiện 95
Hình 4.31 Kết quả thực hiện 96
Hình 4.32 Quá trình mã hóa chuỗi /xampp/passwords.txt 97
Hình 4.33 Kết quả thực hiện 98
Hình 4.34 Giao diện đăng nhập của wordpress 101
Hình 4.35 Thay đổi proxy của localhost 102
Trang 9Hình 4.36 Giao diện của phần mền Burp Suite 102
Hình 4.37 Bắt gói tin thành công 103
Hình 4.38 Chuyển sang Intruder để tấn công Brute force 103
Hình 4.39 Chọn chế độ tấn công Brute force ở thẻ Payloads 104
Hình 4.40 Khởi động quá trình tấn công 104
Hình 4.41 Kết quả của quá trình tấn công 105
Hình 4.42 Kết quả khi thêm luật 106
Hình 4.43 Kết quả khi thêm luật 107
Hình 4.44 Mô tả về Store XSS Attacks 111
Hình 4.45 Mô tả về Reflected XSS Attacks 112
Hình 4.46 Danh sách các kí tự 115
Hình 4.47 Danh sách các biểu thức chính quy 115
Hình 4.48 Giao diện đăng nhập của dvwa 116
Hình 4.49 Giao diện của dvwa 116
Hình 4.50 Quá trình nhập dữ liệu để tấn công 117
Hình 4.51 Kết quả khi submit bằng click vào nút Sign Guestbook 117
Hình 4.52 Quá trình để reset lại database 118
Hình 4.53 Rule để ngăn chặn tấn công xss 118
Hình 4.54 Kết quả khi thêm luật 119
Trang 10PHẦN MỞ ĐẦU
Trang 11GIỚI THIỆU
Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính và
sự phát triển của mạng Internet ngày càng đa dạng và phong phú Các dịch vụ trênmạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó có rất nhiều thông tincần được bảo mật cao hơn bởi tính kinh tế, tính chính xác và tính tin cậy của nó
Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạphơn Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật được đặt ra cho người quản trịmạng là hết sức quan trọng và cần thiết Xuất phát từ những thực tế đó, chúng ta sẽtìm hiểu về các cách tấn công phổ biến nhất hiện nay và các phòng chống các loại tấn công này thông qua một công cụ là mod_security
Chính vì vậy, thông qua việc nghiên cứu một số phương pháp tấn công và cách bảo mật các loại tấn công này, chúng em mong muốn góp một phần nhỏ vào việc nghiên cứu và tìm hiểu về các vấn đề an ninh mạng giúp cho việc học tập và nghiên cứu
TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Vấn đề An ninh trong hệ thống mạng luôn là một trong những mối quantâm trong lớn Tại Việt Nam, An ninh mạng vẫn chưa được nhìn nhận nghiêm túc
và hệ lụy là rất nhiều Website đã bị tấn công, thiệt hại gây ra là con số không nhỏ.Thiết nghĩ trong tương lai, Việt Nam sẽ cần đổi mới và tăng cường hệ thống phòngthủ trước những mối nguy cơ từ Internet
Chính vì vậy, đề tài “Phát hiện và chống xâm nhập web serverapache với Modsecurity” đã được chọn làm đề tài tiểu luận chuyên ngành vớimong muốn bổ sung kiến thức về an ninh mạng và cách xây dựng hệ thống phòngchống tấn công, phục vụ cho công việc sau này
PHẠM VI NGHIÊN CỨU
Đề tài này chúng em sẽ xem xét các kiểu tấn công cơ bản và cách phòng chống tấncông web server bằng công cụ Modsecurity trên hệ điều hành windown 7, từ đâychúng ta sẽ có một cách nhìn tổng thể về bảo mật web server apache
Trang 12PHƯƠNG PHÁP NGHIÊN CỨU
- Tìm đọc các tài liệu trên mạng, tham khảo nội dung trong đó
- Tải các ebook liên quan đến htpp, modsecurity
- Coi các video hướng dẫn
Trang 13PHẦN NỘI DUNG
Trang 14Chương 1 HTTP 14
CHƯƠNG 1 HTTP 1.1 Giới thiệu về HTTP:
1.1.1 Tổng quan về HTTP:
Tiêu chuẩn Hypertext Transfer Protocol (HTTP) – Giao thức truyền siêu vănbản được ứng dụng để truyền tải tài liệu và các tệp siêu văn bản giữa máy chủ Web(Web server) và máy khách Web (Web client) thông qua một trình duyệt Web Cụthể hơn, HTTP là một giao thức ở tầng ứng dụng trong các hệ thống thông tin phântán, cộng tác, siêu phương tiện (hypermedia), cho phép một máy khách gửi yêu cầuđơn giản dạng tệp siêu văn bản đến máy chủ và nhận đáp ứng từ máy chủ
Tim Berners-Lee, một nhà khoa học máy tính người Anh và nhóm dự án
“World Wide Web” là những người đầu tiên được công nhận phát minh
ra HTTP cùng với ngôn ngữ đánh dấu siêu văn bản HTML (HyperText MarkupLanguage), công nghệ liên quanđến máy chủ web và trình duyệt web dựa trên vănbản Cho đến nay, giao thức HTTP gồm có ba phiên bản là:
Phiên bản đầu tiên là HTTP 0.9, được Hiệp hội web toàn cầu (World WideWeb - W3C) công bố năm 1991 (có thể tham khảo tài liệu tại đây) Đây làgiao thức đơn giản để truyền dữ liệu thô trên Internet
Phiên bản thứ hai là HTTP 1.0, được định nghĩa tại RFC 1945 vào năm
1996 (RFC - Request for Comments, là những tài liệu kỹ thuật và tổ chức
về Internet, bao gồm những tài liệu đặc tả kỹ thuật và chính sách được tổchức IETF (Internet Engineering Task Force – Nhóm chuyên trách kỹthuật Internet) phát hành), cho phép thông điệp định dạng kiểu giao thức
mở rộng thư Internet đa chức năng (Multipurpose Internet MailExtensions - MIME), như kiểu văn bản phi cấu trúc (Text), kiểu hình ảnh(Image), kiểu âm thanh (Audio), kiểu phim (Video), kiểu ứng dụng(Application), chứa các thông tin mô tả về dữ liệu được truyền và cáctham số chỉnh sửa theo yêu cầu/đáp ứng Tuy nhiên, phiên bản này khôngtác động nhiều đến các proxy phân cấp, bộ nhớ đệm, nhu cầu kết nối liêntục hay đến các máy chủ lưu trữ ảo Proxy là một chương trình trung
Trang 15Chương 1 HTTP 15
gian hoạt động vừa như một máy chủ và vừa như một máykhách nhằm mục đích thực hiện các yêu cầu thay cho các máy khách khác
Phiên bản thứ ba là HTTP 1.1, lần đầu tiên được công bố tại RFC
2608 vào tháng 01 năm 1997 và sau đó được cập nhật tại RFC 2616 vàotháng 07 năm 1999 HTTP 1.1 có các yêu cầu nghiêm ngặt hơn HTTP 1.0
để đảm bảo tính tin cậy khi thực hiện các tính năng của nó
1.1.2 Lớp giao thức HTTP:
HTTP là một giao thức lớp ứng dụng trong mô hình OSI Dùng đểchuyển hoặc truyền tải thông tin trên mạng theo một giao thức đáng tin cậy (TCP)hoặc không đáng tin cậy (UDP) Nhưng TCP lại là giao thức thường được sử dụng
Hình 1.1 Quá trình thực hiện yêu cầu và trao đổi thông tinHình bên trái cho biết quá trình tạo và gửi thông điệp từ Client đến Server
Đầu tiên HTTP sẽ tạo ra thông điệp mà nó muốn gửi
Bước 1: HTTP sẽ đưa thông điệp đó đến tiến trình TCP (Transport layer) Ở
đâythông điệp sẽ được thêm các thông tin cụ thể của giao thức TCP vào thông
Trang 16Chương 1 HTTP 16điệp và tạo nên TCP segment Hành động này cũng tương tự như việc ta ghi thôngtin địa chỉ người nhận, người gửi trên phong bì khi gửi thư.
Bước 2: Tiến trình TCP sẽ đưa Segment này đến tiến trình IP (Network Layer).Giai
đoạn này, tiến trình IP sẽ thêm các thông tin vào Segment và tạo nên một
IP Datagram
Bước 3: Thực hiện các giao thức kiểm soát các công nghệ mạng của hệ thống Bước 4: Sau khi có đầy đủ các thông tin thì thông điệp HTTP sẽ được gửi
đếnWebServer Thông điệp này được gửi dưới dạng Packet hoặc Frame
Hình bên phải cho biết những gì sẽ xảy ra với gói tin HTTP khi nó đến WEB server.Trước khi đến được WEB server được chỉ định thì gói tin HTTP có thể đã đi quanhiều hệ thống khác và qua nhiều công nghệ mạng được triển khai, nhưng điều đókhông quan trọng cho cả Client và Web Server
Như ta đã thấy, những gì xảy ra ở Server là ngược lại với Client Ở mỗi Layersẽnhận thông điệp, xử lí (nếu cần) và gửi thông điệp đã được gỡ bỏ đi các thôngtin được thêm vào ở các tầng tương ứng bên Client đã thêm vào lên các tầng caohơn
Cuối cùng, ở bước 8 thông điệp yêu cầu sẽ được gửi đến ứng dụng Web server
1.1.3 Cơ chế hoạt động chung:
Giao thức HTTP là một giao thức có dạng yêu cầu/đáp ứng Khi một máykhách gửi một yêu cầu đến máy chủ gồm phương thức yêu cầu (gồm GET, POST,HEAD,…), URI, phiên bản giao thức, kèm với thông điệp kiểu MIME gồm cáctham số chỉnh sửa của yêu cầu, thông tin máy khách và nội dung chính thông quakết nối đến máy chủ Máy chủ sẽ đáp ứng bằng dòng trạng thái, gồm phiên bản giaothức thông điệp và mã thông báo thành công hay lỗi, kèm với thông điệp kiểuMIME có chứa thông tin về máy chủ, các thông tin thêm về đối tượng và nội dungchính của đối tượng
Hầu hết giao tiếp HTTP được khởi tạo từ UA và một yêu cầu sử dụng nguồntài nguyên trên máy chủ gốc (Origin Server - O) Trong trường hợp đơn giản nhất,
Trang 17Chương 1 HTTP 17giao tiếp này có thể được thực hiện thông qua một kết nối duy nhất (v) giữa UA và
O như
Hình 1.2 Mô hình HTTP đơn giản(Nguồn: RFC 2616 Hypertext Transfer Protocol)Tình huống phức tạp hơn xảy ra khi có một hoặc nhiều điểm trung gian trongchuỗi yêu cầu/đáp ứng Có ba dạng trung gian phổ biến như: proxy, gateway vàtunnel (Một chương trình trung gian hoạt động như một điểm trung chuyểngiữa hai kết nối) Proxy là một điểm chuyển tiếp, nhận các yêu cầu cho một URI,viết lại tất cả hoặc một phần của thông điệpvà chuyển tiếp yêu cầu đã định dạng lại
về phía máy chủ xác định bởi URI Ở đây, gateway hoạt động như một lớp phía trêncủa máy chủ khácvà nếu cần thiết, biên dịch các yêu cầu tới giao thức máy chủ cơ
sở Tunnel hoạt động như một điểm trung chuyển giữa hai kết nối mà không cầnthay đổi thông điệp, các tunnel được sử dụng khi giao tiếp cần phải đi qua một điểmtrung gian (như tường lửa) ngay cả khi điểm trung gian này không hiểu được nộidung của thông điệp
Hình 1.3 Mô hình HTTP phức tạp(Nguồn: RFC 2616 Hypertext Transfer Protocol)Hình 2 mô tả ba điểm trung gian (A, B và C) giữa tác nhân người dùng vàmáy chủ gốc Một thông điệp yêu cầu/đáp ứng sẽ truyền qua toàn bộ các điểm nàybằng bốn kết nối riêng biệt Mỗi điểm trung gian có thể được tham gia vào nhiều kết
Trang 18Chương 1 HTTP 18nối và các giao tiếp khác tại cùng một thời điểm Ví dụ, điểm B có thể nhận yêu cầu
từ nhiều máy khách khác ngoài A, hay chuyển tiếp yêu cầu đến nhiều máy chủ khácngoài C đồng thời với việc xử lý yêu cầu từ điểm A
Hình 1.4 Mô hình HTTP phức tạp với bộ nhớ cache(Nguồn: RFC 2616 Hypertext Transfer Protocol)Bất cứ thành phần nào tham gia kết nối mà không hoạt động như một tunnelđều có thể sử dụng một bộ nhớ đệm (cache) nội bộ để xử lý các yêu cầu Bộ nhớđệm giúp cho chuỗi yêu cầu/đáp ứng được xử lý nhanh hơn khi một trong các thànhphần tham gia trong chuỗi có yêu cầu về dữ liệu Hình 3 sau đây minh họa chuỗiyêu cầu/đáp ứng từ điểm UA đến điểm B khi tại điểm B có lưu trữ dữ liệu tạm thời
từ điểm O (thông qua điểm C), không được lưu trữ tạm thời tại UA hay tại điểm A
Thông tin liên lạc HTTP thường diễn ra trên các kết nối TCP / IP Các cổngmặc định là TCP 80
1.1.4 Hoạt động HTTP:
1.1.4.1 Client and server
Cũng giống như các giao thức khác thì HTTP cũng có sự phân biệtgiữa Client và Server Sự phân biệt này rất quan trọng vì nó thể hiện được vai tròcủa từng đối tượng tham gia vào một phiên làm việc Cụ thể, với HTTP thì Client
có thể được coi là các Browser thực hiện các yêu cầu HTTP, Server là nơi hostingtrang Web (lưu trữ tài nguyên) mà Client truy xuất đến
Khởi tạo kết nối:
Một kết nối được bắt đầu khi Client thực hiện một yêu cầu đến Server Chỉ
có Client mới là nơi bắt đầu một kết nối
Trang 19Do Client là nơi có trách nhiệm khởi tạo một kết nối nên Client cũng là nơi
có trách nhiệm thực hiện khởi tạo một kết nối TCP
Quá trình tạo một kết nối TCP giữa Client và Server được gọi là quátrình“bắt tay ba bước”
Trang 20Chương 1 HTTP 20
Hình 1.6 Quá trình “bắt tay ba bước”
Để kết thúc một kết nối thì chỉ cần 2 gói tin giữa Client và Server:
Server: gửi 1 flag FIN (finish) đến server
Client: phản hồi bằng cách thiết lập các cờ FIN và ACK
Duy trì trạng thái kết nối(Persistence):
Trong phiên bản đầu tiên của HTTP, thì mỗi yêu cầu của Client sẽ tạo thànhmột kết nối TCP riêng biệt Điều này sẽ không xảy ra vấn đề với những Web đơngiản, nhưng với những trang web ngày một phức tạp, đồ họa cao như hiện nay thìviệc mỗi yêu cầu tạo 1 kết nối sẽ trở thành vấn đề lớn vì sẽ chiếm băng thônghoạt động Điều đó ảnh hưởng đến hiệu suất hoạt động của Server
Trong phiên bản HTTP 1.1, thì vấn đề nhiều kết nối đã được loại bỏ và đượcthay thế bằng tính năng “duy trì kết nối” Tính năng này cho phép Client có thểsửdụng kết nối được chấp nhận ban đầu Các yêu cầu sau đó của Client sẽ đượcthực hiện trên cùng một kết nối
Sự duy trì kết nối cần phải có sự hợp tác của cả Client và Server Client sẽquyết định sử dụng kết nối liên tục Client được thực hiện điều này chỉ khi Serverchấp nhận Server sẽ không đóng kết nối TCP khi yêu cầu ban đầu của Client đượcchấp nhận
Trang 22Chương 1 HTTP 22
1.1.4.2 Thao tác:
HTTP định nghĩa 4 thao tác cơ bản: GET, POST, PUT, DELETE
GET – Wen Page Retrieval:
GET là thao tác đơn giản nhất trong 4 thao tác được định nghĩa trong HTTP.GET là cách mà Client lấy một đối tượng hoặc tài nguyên nào đó từ Server
Trang 23Chương 1 HTTP 23
Hình 1.7 Hoạt động GET của HTTP
Hoạt động của GET:
Hình trên cho thấy, Client bắt đầu và gửi thông điệp GET đến Server Thôngđiệp này xác định một đối tượng cụ thể mà Client yêu cầu bằng URI Nếu Server
có thểtrả đáp ứng được yêu cầu thì Server sẽ trả đối tượng về trong gói tin trả vềcùng với một mã trạng thái thành công là 200 OK Nếu Server không thể đáp ứngđược yêu cầu thì một mã trạng thái khác sẽ được trả về
3XX Chuyển hướng: Client được yêu cầu thực hiện lại yêu cầu
nhưng với một URI khác
4XX Lỗi Client: Yêu cầu của Client có lỗi xảy ra mà Server
không thể đáp ứng được
5XX Lỗi Server: Server không đáp ứng theo yêu cầu ngay cả khi
yêu cầu của Client là hợp lệ
POST – Web Form:
POST là cách thức mà Client gửi thông tin lên cho Server Cácbrowser thường sử dụng phương thức POST để gửi 1 form lên Server
Trang 24Chương 1 HTTP 24
Khi người dùng tìm kiếm trên “http://google.com” thì browser sẽ gửi mộtyêu cầu POST lên Server , yêu cầu đó sẽ chứa những thông tin tìm kiếm mà ngườidùng nhập vào
Hoạt động của POST cũng tương tự như GET Client sẽ gửi yêu cầu cùngvới thông tin đến Server thông qua URI Điểm khác biệt ở đây đó là, Với POST thìURI để xác đối tượng trên Server có thể xử lí thông tin (form) mà Client gửi lên.Đối tượng này có thể là 1 script hay chương trình
Cũng như GET, Server cũng có khả năng gửi thông tin phản hồi vềcho Client Thông thường thông tin trả về là 1 trang Web để hiển thị thông tinngười dùng đã nhập vào, đối với thông tin tìm kiếm thì sẽ trả về các kết quả tìmkiếm
Hình 1.8 Hoạt động của Post
PUT – File Upload:
PUT cũng là cách thức để Client gửi dữ liệu lên cho Server
Hình 1.9 Hoạt động của PUTTheo như hình trên, ta có thể thấy được sự tương tự trong hoạt độngcủa POST và PUT, cả 2 đều xác định một đối tượng trên Server, cùng truyền dữliệu và URI
Trang 25Chương 1 HTTP 25
Điểm khác biệt quan trong giữa POST và PUT đó là ở URI:
POST, thì URI xác định đối tượng có thể xử lí dữ liệu– chươngtrình hoặc script
PUT, thì URI xác định đối tượng mà Server có thể đặt dữ liệu(một đường dẫn hoặc tên file) mà Client gửi
Như hình dưới đây cho thấy hoạt động của DELETE cũng tương tự như các thaotác khác
Hình 1.10 Hoạt động của DELETEClient gửi yêu cầu cùng với URI của đối tượng cần xóa trên Server
Server sẽ trả về “status code” và dữ liệu kèm theo
Trang 26Nếu Client gửi thông điệp OPTIONS mà URI là dấu “*” thì Server sẽ hồiđáp 1 tùychọn chung nhất mà nó phù hợp với tất các đối tượng.
Các hoạt động của HEAD cũng giống như của GET Ngoại trừ, Server khôngtrả về đối tượng thật sự được yêu cầu Cụ thể, Server chỉ trả về mã trạng tháichứkhông trả về dữ liệu
Client sử dụng HEAD khi muốn kiểm tra một đối tượng có tồn tại hay chưanhưng không muốn lấy đối tượng đó
Ví dụ: Có thể sử dụng thông điệp HEAD để đảm bảo liên kết đến mộtđốitượng hợp lệ mà không tiêu tốn băng thông
Cache trong trình duyệt cũng có thể sử dụng thông điệp HEAD để xem mộtđối tượng đã thay đổi hay không
Trang 27 Các Server chuyển tiếp yêu cầu của Client thì Server đó sẽ chỉnh sửagói tin Request bằng cách thêm một tùy chọn VIA vào thông điệp.VIA là một phần thông điệp gửi Server đích
Server đích sẽ copy nội dung của thông điệp vào thông điệp phảnhồicủa mình
Trang 28Theo sau dòng Request-Line có thể có một hoặc nhiều thông điệpHeader và thông điệp Body.
Trang 29Chương 1 HTTP 29
Dòng trắng (Blank line) sẽ theo sau dòng Request-Line và các thông điệpHeader
Hình 1.16 Thông điệp thực tế được gửi từ Internet Explorer
Trong thông điệp trên, Request-Line chứa ba nội dung: phương thức, URI,phiênbản HTTP Mỗi thành phần cách nhau bởi một hoặc nhiều khoảngtrắng Thông điệp được đánh dấu kết thúc bằng dòng trắng và không có thông điệpBody
Hình 1.17 Các thành phần của Request- LineNhư hình trên, thông điệp được gửi bằng phương thức GET đã được chỉđịnh rõ trong dòng Request- Line Mục tiếp theo trong Request-Line đó làURI chứa tàinguyên cần truy cập, ở đây đó là “/” chỉ ra nguồn tài nguyên yêucầu là gốc Phần cuối cùng của Request- Line là phiên bản của HTTP, ở đây phiênbản được chỉ rõ là HTTP phiên bản 1.1
GET chỉ là một trong tám phương thức được định nghĩa bởi HTTP Bảng sauđây sẽ trình bày chi tiết các phương thức của HTTP
CONNECT Tùy chọn Yêu cầu server (thường là Proxy) để
thiết lập một đường hầm (tunnel)
Trang 30Chương 1 HTTP 30
DELETE Tùy chọn Yêu cầu server xóa tài nguyên được chỉ
định
GET Yêu cầu (bắt buộc) Yêu cầu server trả về tài nguyên đã
được yêu cầu
HEAD Yêu cầu (bắt buộc)
Yêu cầu server trả lời như làphươngthức GET nhưng không kèm theo tàinguyên trong thông điệp trả về
OPTIONS Tùy chọn Yêu cầu server chỉ rõ các tùy chọn mà
nó hỗ trợ cho tàinguyên được chỉ rõ.POST Tùy chọn Yêu cầu server đưa nội dung của Body
vào tài nguyên được chỉ định trên server.PUT Tùy chọn Yêu cầu server chấp nhận Body của
thông điệp như là tài nguyên trên server.TRACE Tùy chọn Yêu cầu server trả lời các yêu cầu
Hình 1.18 Bảng chi tiết phương thức của HTTP
1.1.5.2 HTTP Response
Hình 1.19 Cấu trúc của HTTP ResponseCấu trúc của HTTP response cũng tương tự như cấu trúc của HTTP request.Chỉcó một điểm khác nhau đó là HTTP response được bắt đầu bằng dòng Status-Line Status- Line cũng bao gồm 3 thành phần và được phân biệt bằng các khoảngtrắng Thành phần đầu tiên sẽ thể hiện phiên bản HTTP cao nhất mà Server hỗ
Trang 31Chương 1 HTTP 31trợ Thành phần thứ hai sẽ thể hiện mã trạng thái Thành phần thứ ba là Reason-Phrase.
Hình 1.20 Nội dung thực tế của HTTP response
Hình 1.21 Thành phần của Status- LineTrong thông điệp trên, ta thấy được ở dòng đầu tiên (Status-line) phiên bảncao nhất được hỗ trợ bởi server là 1.1 Hai thành phần còn lại là mã trạng thái(200) và Reason-Phrase (OK)
200-299 Thành công: Server có thể trả về theo yêu cầuthành công
300-399 Chuyển hướng: Client nên chuyển hướng yêu cầu sang một
Server hoặc tài nguyên khác
400-499 Lỗi Client: yêu cầu của Client chứa lỗi mà Server ko đáp ứng
được 500-599 Lỗi Server: Server không thể đáp ứng được yêu cầu của Client dù
yêu cầu hợp lệ
Hình 1.22 Bảng mã trạng thái trả về của web server
Trang 32Chương 1 HTTP 32
1.2 Các lỗi bảo mật:
An toàn bảo mật của giao thức HTTP phiên bản 1.1 cũng là một vấn đề hếtsức quan trọng đối với các nhà phát triển ứng dụng, nhà cung cấp thông tin vàngười dùng cuối Các vấn đề an toàn bảo mật cần xem xét bao gồm: Bảo vệ thôngtin cá nhân (lạm dụng thông tin đăng nhập máy chủ, truyền thông tin nhạy cảm, mãhóa thông tin nhạy cảm ở dạng URI, vấn đề riêng tư khi kết nối để nhận các tiêuđề), các tấn công tệp tin và tên đường dẫn, hệ thống tên miền (Domain NameSystem – DNS) giả, các tiêu đề giả, các vấn đề sắp xếp nội dung, vấn đề xác thực vàmáy khách không hoạt động, vấn đề về proxy và cache, các tấn công từ chối dịch vụtrên proxy
1.3 Biện pháp:
Để đảm bảo an toàn khi truyền thông trên mạng, có thể sử dụng HTTPS
(Hypertext Transfer Protocol Secure – đây là sự kết hợp giữa giao thức HTTP và
giao thức bảo mật SSL (Secure Socket Layer) hay TLS (Transport Layer Security)cho phép trao đổi thông tin một cách bảo mật trên Internet)
Trang 33Chương 2 Apache 33
CHƯƠNG 2 APACHE
2 1 Giới thiệu về Apache Web Server:
Một Web Server là một máy chủ có trách nhiệm chấp nhận các yêu cầuHTTP từ Web Client và phản hồi lại các HTTP đó, thường ở dạng của các trangweb có chứa tĩnh (văn bản, hình ảnh vv) và nội dung động (kịch bản) Apache WebServer đã được dung làm Web Sever phổ biến và sử dụng rộng rãi trong thập kỷqua Nó được sử dụng khoảng 50% của tất cả các website
Hình 2.1 Biểu đồ so sánh giữa các Web Server 10/2012Nguồn: http://www.slideshare.net/haidinhtuan/apache-http-server-16727394Apache là nền tảng, trọng lượng nhẹ, mạnh mẽ, và được sử dụng trong cáccông ty nhỏ cũng như các tập đoàn lớn Apache cũng là miễn phí và mã nguồn mở
Apache Web Server có khả năng gần như vô tận, do tính chất mô đun tuyệtvời của nó, cho phép nó được tích hợp với nhiều ứng dụng khác Phổ biến nhất làứng dụng ngăn xếp LAMP Web Server, bao gồm Apache Web Server với MySQL,
PHP, Perl và Python Apache Web Server được phát triển bởi Apache Software Foundation.
Khả năng cấu hình và bảo đảm của Apache Wed Server là một trong nhữngcông việc quan trọng đối với một quản trị hệ thống (Linux) Nếu bạn đang làm việccho một công ty (tổ chức) có các trang web công cộng, công việc trở nên phức tạphơn Các trang web được sử dụng để cung cấp nội dung cho hàng tỷ người dùng
Trang 34Chương 2 Apache 34hàng ngày Bất cứ ai cũng có thể kiểm soát nội dung này - kiểm soát World WideWeb, tin tức và blog để giao dịch tài chính Các Web Server là trung tâm thông tin
và quyền lực Máy chủ cấu hình sai hoặc bị xâm nhập có thể ảnh hưởng tới một sốlượng lớn người dùng không mong muốn và có khả năng phải chịu thiệt hại rất lớncác bên tham
Http_main.c
Thành phàn làm nhiệm vụ khởi động Server và tạo vòng lặp chính để đợi vàchấp nhận các kết nối Đồng thời cũng làm nhiệm vụ quản lý các bộ thời giantimeout
Http_request.c
Thành phần này làm nhiệm vụ quản lý các tiến trình xử lý bản tin request,đảm bảo chuyển các bản tin điều khiển tới các mobule phù hợp theo đúng thứ tự.Ngoài ra, nó còn đảm nhận vai trò quản lý các lỗi xảy ra trên Server
Trang 35Chương 2 Apache 35
Hình 2.2 Sơ đồ cung cấp tài nguyên của Apache Web Server
2.3 Cài đặt:
Để cài đặt apache ta sử dụng phần mền XAMPP Version: 1.8.2
Sau đây là quá trình cài đặt apache:
B1: Mở file setup của phần mềm lên, chọn Yes, rồi chọn Next
B2: Ở bảng Select Componets, ta chọn hết tất cả, sau đó Next
B3: Ta chọn thư mục để cài đặt XAMPP, ở đây ta chọn ổ E để cài đặt Ta cũng cóthể chọn thư mục khác Sau đó tiếp tục Next liên tục để tiến hành cài đặt
B4: Sau khi cài đặt xong, phần mền sẽ yêu cầu cài đặt thêm bộ công cụ quản lýphần mền
Hình 2.3 Giao diện quản lý của bộ công cụ phần mền
Trang 36Chương 2 Apache 36B5: Tiến hành cài đặt apache bằng cách click chuột vào ô Service, rồi chọn Yes đểcài đặt
Cuối cùng ta đã hoàn thành các bước cài đặt Apache bằng phần mền XAMPP
2.4 Kiểm tra apache
Lúc đầu khi chưa chạy apache, ta mở 1 trình duyệt bất kì (ở đây ta sử dụng googlechrome để thực hiện việc kiểm tra)
Sau khi mở trình duyệt, ta đánh vào ô địa chỉ localhost, ta sẽ không được kết quả gìBây giờ ta sẽ khởi động apache bằng phần mền XAMPP Click chuột vào Start đểbắt đầu
Sau đó ta lặp lại bước vào trinh duyệt, ta sẽ được kết quả sau:
Hình 2.4 Giao diện phần mền xamppĐiều này cho thấy ta thấy ta đã chạy thành công Apache Quá trình cài đặtkêt thúc
Lưu ý: Trường hợp ấn start không chạy, nguyên nhân là do port của apache
đã bị chiếm bởi phần mền khác, cụ thể ở đây là các service của máy ảo, ta cần tắtcác dịch vụ đó đi
Mở bộ công cụ chọn service, hộp thoại Services hiện ra, ta cần stop cácservice sau : VMware Authorization Service, VMware DHCP Service, VMwareNAT Service, VMware USB Arbitration Service Rồi tiến hành chạy lại
Trang 37Chương 3 Modsecurity 37
CHƯƠNG 3 MODSECURITY 3.1 Giới thiệu:
3.1.1 Sơ lược:
ModSecurity là một Opensource web application firewall được Ivan Risticphát triển dành cho Web Server Apache
Ivan Ristic cũng là tác giả quyển sách “Mod Security Handbook”
Theo Ivan Ristic tác giả của cuốn sách “modsercurity handbook” thìModsercurity giúp ta giải quyết các vấn đề một cách rõ ràng như: cho xemlưu lượng truy cập web, sự rõ ràng đó là chìa khóa của việc bảo mật: mộtkhi có thể nhìn thấy lưu lượng truy cập HTTP thì ta có thể phân tích nótrong thời gian thực, ghi lại khi cần thiết và tác động trở lại với các sự kiện
Modsercurity chỉ là một module của Web Apache mà thôi
Hiện tại ModSecurity sử dụng giấy phép GPL, hoàn toàn miễn phí
Hoạt động dựa trên Rule
3.1.2 Chức năng:
Hình 3.1 Mô hình tổng quan của modsecurity
Request filtering: Tất cả các request gửi đến web server đều được phân tích
và cản lọc (filter) trước khi chúng được đưa đến các modules khác để xử lý
Understanding of the HTTP protocol: ModSecurity là một tường lửa ứng
dụng nên nó có khả năng hiểu được giao thức HTTP ModSecurity có khảnăng cản lọc dựa trên các thông tin ở HTTP Header hay có thể xem xét đếntừng thông số hay cookies của các request vv
Trang 38Chương 3 Modsecurity 38
POST payload analysis: Ngoài việc cản lọc dựa trên HTTP Header,
ModSecurity có thể dựa trên nội dung (payload) của POST requests
Audit logging: Mọi requests đều có thể được ghi lại (bao gồm cả POST) để
người quản trị có thể theo dõi nếu cần
HTTPS filtering: ModSecurity có thể phân tích HTTPS
Compressed content filtering: ModSecurity sẽ phân tích sau khi đã giải nén
các các dữ liệu được yêu cầu
3.1.3 Mô hình và các giai đoạn xử lý:
Mô hình:
Hình 3.2 Quá trình xử lý các request của Apache và ModSecurity
Modsecurity cho phép chúng ta đặt rule tại một trong năm thời điểm trong chu
kỳ xử lý của Apache như sau:
Trang 39 application/x-www-form-urlencoded: Dùng để truyền form dữ liệu.
multipart/form-data: Dùng để truyền file
text/xml: Dùng để phân tích dữ liệu XML
3 Phase Response Header: Đây là thời điểm ngay sau khi phần response headerđược gửi trả về cho client Chúng ta đặt rule ở đây nếu muốn giám sát quá trình saukhi phần response được gửi đi
4 Phase Response Body: Đây là thời điểm chúng ta muốn kiểm tra những dữliệu HTML gửi trả về
5 Phase logging: Là thời điểm các hoạt động log được thực hiện, các rules đặt
ở đây sẽ định rõ việc log sẽ như thế nào, nó sẽ kiểm tra các error message log củaApache Đây cũng là thời điểm cuối cùng để chúng ta chặn các kết nối không mongmuốn, kiểm tra các response header mà chúng ta không thể kiểm tra ở phase 3 vàphase 4
Phase
1
REQUEST_HEADERS Ngay sau khi Apache đọc xong
header của request HTTP
Sau khi nội dung request được đọc Hầuhết các luật được đưa ra để xử lý trong phase này
3 RESPONSE_HEADERS Sau khi header của response được gửi
lại cho client
Trang 40Hình 3.3 Các pha xử lý của modsecurity
B4: Đổi tên ` modsecurity.conf-recommended ‘ sang tên modsecurity.conf sau đócopy tới \xampp\apache\conf\