• FTP • WWW Các công cụ quản trị phức tạp cần được tự động hóa và phải dễ dàng quản lý cũng như sử dụng dẫn đến nhu cầu cần có phần mềm quản lý mà sẽ được giới thiệu trong mô hình tiếp t
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS TS Hà Quốc Trung
Hà Nội – Năm 2015
Trang 2L ỜI CAM ĐOAN
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, kết
quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ
công trình nào khác
Tôi 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
Tác giả luận văn xin chịu trách nhiệm về nghiên cứu của mình
Học viên thực hiện luận văn Nguyễn Thanh Tùng
Trang 3L ỜI CẢM ƠN
Trước tiên, tôi xin được gửi lời cảm ơn đến tất cả quý thầy cô đã giảng dạy trong chương trình Cao học Công nghệ thông tin khóa CH2013B – Viện Công nghệ thông tin và Truyền thông – Đại học Bách khoa Hà Nội Các thầy cô đã truyền đạt cho tôi những kiến thức hữu ích làm cơ sở để tôi hoàn thành luận văn này
Tôi xin chân thành cảm ơn PGS.TS Hà Quốc Trung đã tận tình hướng dẫn cho tôi trong thời gian thực hiện luận văn Những gì Thầy hướng dẫn, chỉ bảo đã cho tôi thêm nhiều kiến thức trong thời gian thực hiện luận văn
Sau cùng tôi xin gửi lời biết ơn sâu sắc đến gia đình đã luôn tạo điều kiện tốt nhất cho tôi trong suốt quá trình học cũng như thực hiện luận văn
Do thời gian có hạn và kinh nghiệm nghiên cứu chưa nhiều nên luận văn không tránh khỏi những thiếu sót, rất mong nhận được ý kiến đóng góp của các thầy/cô và các anh chị học viên
H ọc viên thực hiện luận văn
Nguyễn Thanh Tùng
Trang 4MỤC LỤC LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 3
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 4
CHƯƠNG 1: CÁC MÔ HÌNH WEB HOSTING 5
1.1 Định nghĩa 5
1.2 Các dịch vụ web hosting 6
1.3 Các mô hình web hosting 7
1.3.1 Một máy chủ với các máy ảo 7
1.3.2 Một máy chủ, máy ảo và phần mềm quản lý 7
1.3.3 Nhiều máy chủ và phần mềm quản lý máy ảo 9
1.3.4 Mô hình sử dụng proxy ngược 9
1.3.5 Mô hình lai 10
1.4 Các vấn đề bảo mật của web hosting 12
1.5 Sử dụng ModSecurity đảm bảo an toàn bảo mật cho web hosting 14
1.5.1 Giới thiệu về ModSecurity 14
1.5.2 Các khả năng của ModSecurity 14
1.5.3 Giới thiệu về Rules trong ModSecurity 16
CHƯƠNG 2: GIẢI PHÁP ĐỀ XUẤT ĐỂ ĐẢM BẢO AN TOÀN BẢO MẬT CHO WEB HOSTING 20
2.1 Mô hình đề xuất 20
2.2 Các thành phần của mô hình 20
2.3 Hoạt động của mô hình 23
2.4 Xây dựng hệ thống phần mềm 26
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG THỬ NGHIỆM 31
3.1 Môi trường thử nghiệm 31
3.2 Kịch bản thử nghiệm 31
3.2.1 Web Application Firewall 31
Trang 53.2.2 Reverse Proxy 31
3.2.3 Software Management 32
3.3 Kết quả thử nghiệm 32
3.3.1 Web Application Firewall 32
3.3.2 Reverse Proxy 33
3.3.3 Software Management 33
KẾT LUẬN 34
4.1 Những kết quả đạt được 34
4.2 Định hướng phát triển 34
TÀI LIỆU THAM KHẢO 35
PHỤ LỤC 36
Trang 6DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
WAF Web Application Firewall – tường lửa ứng dụng web XSS Cross Site Scripting – kiểu tấn công chèn những script độc hại SQLI SQL Injection – kiểu tấn công lợi dụng lỗ hổng SQL CPANEL Control Panel – phần mềm quản lý web hosting
Trang 7DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1 Mô hình với một máy chủ duy nhất 7
Hình 2 Mô hình một máy chủ, máy ảo và phần mềm quản lý 8
Hình 3 Mô hình các máy chủ, các máy ảo và phần mềm quản lý 9
Hình 4 Mô hình sử dụng proxy ngược 10
Hình 5 Mô hình lai 11
Hình 6 Quá trình xử lý các request của Apache và ModSecurity 15
Hình 7 Các biểu thức chính quy thường được sử dụng 18
Hình 8 Siêu ký tự thường được sử dụng trong biểu thức chính quy 18
Hình 9 Mô hình đề xuất đảm bảo an toàn bảo mật cho web hosting 20
Hình 10 Mô hình của một hệ thống Tường lửa ứng dụng Web (WAF) 21
Hình 11 Mô hình Proxy ngược 22
Hình 12 Hoạt động của Web Application Firewall 23
Hình 13 Hoạt động của Reverse Proxy 24
Hình 14 Template virtual host 26
Hình 15 Script tạo virtual host 27
Hình 16 Bảng chứa thông tin domain 28
Hình 17 Bảng tạm kiểm tra xử lý domain 28
Hình 18 Kết quả thử nghiệm Web Application Firewall 32
Hình 19 Kết quả thử nghiệm Reverse Proxy 33
Hình 20 Kết quả thử nghiệm Software Management 33
Trang 8CHƯƠNG 1: CÁC MÔ HÌNH WEB HOSTING 1.1 Định nghĩa
Web hosting là một dịch vụ cung cấp khả năng lưu trữ, ứng dụng cung
cấp chức năng tải lên/tải xuống giúp người dùng có thể cập nhật các ứng dụng
và các trang web của họ Các ứng dụng phổ biến nhất như: PHP, NET, Python, Cold Fusion, JSP, …LAMP (Linux, Apache, MySQL and PHP) được sử dụng
phổ biến cho các trang web động
Nhà cung cấp dịch vụ multiple hosting sẽ đảm bảo việc truy cập vào website là an toàn và bảo mật Khả năng lưu trữ, băng thông và khả năng xử lý được giới hạn để giúp nhà cung cấp hosting có thể cung cấp dịch vụ đến cho các khách hàng khác Trong thực tế, các tài nguyên quan trọng nhất thường được
nằm cùng trên một máy Mô hình này sẽ gây ra một số khó khăn trong việc quản
lý tài khoản, quản lý phân quyền và quản lý bảo mật của hệ thống Một số thành
phần và kiến trúc sẽ được thêm vào mô hình này để giải quyết các vấn đề vừa nêu trên
Có năm mô hình được đề xuất như sau:
• Một máy chủ với các virtual host
• Một máy chủ với các virtual host và phần mềm quản lý
• Nhiều máy chủ với các virtual host và phần mềm quản lý
• Nhiều máy chủ và sử dụng proxy ngược
• Mô hình lai
Trang 91.2 Các dịch vụ web hosting
Dựa trên việc khảo sát các nhà cung cấp web hosting nổi tiếng trên thế
giới, có một số tính năng sẽ được cung cấp như sau:
• Yêu cầu về mặt định lượng:
o Băng thông: lưu lượng mạng mà người dùng yêu cầu cho các
dịch vụ của họ
o Dung lượng ổ cứng: dung lượng ổ cứng mà người dùng yêu
cầu cho các dịch vụ của họ
o Hệ điều hành và phần mềm: hệ điều hành (Windows, Linux, like-Unix,…) và các phần mềm mà người dùng cần cài đặt để cung cấp được các dịch vụ mong muốn
• Yêu cầu về mặt chức năng:
o Cập nhật code và dữ liệu: nhà cung cấp dịch vụ phải đảm bảo người dùng có thế đẩy code và dữ liệu lên, thậm chí người truy
cập cũng có thể đẩy dữ liệu lên và nhà cung cấp dịch vụ sẽ
quản lý quyền truy cập và các quyền tương ứng
o Đảm bảo dữ liệu an toàn và bảo mật: nhà cung cấp dịch vụ phải đảm bảo về sự an toàn dữ liệu của người dùng Hơn nữa, nhà cung cấp dịch vụ cần phải cung cấp các kỹ thuật sao lưu dự phòng cho phép người dùng có thể sao lưu dữ liệu ở các nơi khác nhau
o Quản trị: đảm bảo vai trò của người quản trị: quản lý tên miền; theo dõi các tên miền đang được sử dụng; chặn các tên miền khi chúng bị nhiễm mã độc hoặc đang có dấu hiện tấn công các tên miền khác
Trang 101.3 Các mô hình web hosting
1.3.1 Một máy chủ với các máy ảo
Virtual host ánh xạ từ một tên miền đến các thư mục tương ứng (chứa code của web), khi người dùng truy cập tên miền, virtual host sẽ phân tích tên
miền và truy cập đến thư mục tương ứng
Virtual host đảm bảo người dùng có thể tải lên tập tin và thư mục theo ba cách sau:
• Truy cập trực tiếp đến thiết bị máy chủ
• FTP
• WWW
Các công cụ quản trị phức tạp cần được tự động hóa và phải dễ dàng quản
lý cũng như sử dụng dẫn đến nhu cầu cần có phần mềm quản lý mà sẽ được giới thiệu trong mô hình tiếp theo
1.3.2 Một máy chủ, máy ảo và phần mềm quản lý
Mô hình này sử dụng phần mềm quản lý cho phép chúng ta quản lý tất cả các máy ảo trên máy chủ vật lý và các tên miền
Trang 11Hình 2 Mô hình m ột máy chủ, máy ảo và phần mềm quản lý
Phần mềm này sử dụng một hệ cơ sở dữ liệu để quản lý toàn bộ user MySQL, tên miền và tài khoản FTP Giờ đây các công việc quản trị rời rạc có trong mô hình đầu tiên sẽ được thực hiện thông qua phần mềm quản lý này
Như vậy quá trình tự động hóa đã được giải quyết (nhờ vào việc sử dụng
phần mềm quản lý), tuy nhiên nó yêu cầu một cơ sở dữ liệu để quản lý tên miền,
cấu hình, do đó cơ chế đồng bộ hóa sẽ giúp chúng ta có thể quản lý nhiều máy
chủ, đây chính là mô hình sẽ được giới thiệu tiếp theo
Trang 121.3.3 Nhiều máy chủ và phần mềm quản lý máy ảo
Việc quản lý các máy ảo trên các máy chủ dẫn đến vấn đề cần quản lý tập trung đã được giải quyết với mô hình này Với mô hình này lại xuất hiện một
vấn đề liên quan đến bảo mật, đó là các máy ảo có thể bị tấn công trực tiếp khi không có bất kỳ thiết bị bảo vệ nào đứng trước, chính vì thế với mô hình tiếp theo sẽ sử dụng proxy ngược để có thể giải quyết vấn đề này
1.3.4 Mô hình sử dụng proxy ngược
Reverse Proxy thường được xây dựng trên một máy chủ Proxy để thực
hiện nhiệm vụ public các dịch vụ bên trong ra ngoài Internet, bao gồm các Website Reverse Proxy có thể giúp public dịch vụ tới người dùng với một địa
chỉ URL đơn giản, dễ nhớ và sẽ chuyển hướng yêu cầu từ client đến đúng server
với dịch vụ tương ứng với một địa chỉ URL đầy đủ thông tin (dài, bao gồm thông tin IP, port, ) Đứng trên góc độ bảo mật thì như vậy thông tin máy chủ public dịch vụ thật sẽ được giấu đi, hacker không thể dễ dàng có được thông tin
thực về server (IP, port, ứng dụng đang chạy, ) để tấn công
Trang 13Hình 4 Mô hình s ử dụng proxy ngược
Mỗi máy chủ web sẽ nằm trên một máy chủ riêng biệt và việc ánh xạ giữa tên miền và máy chủ web sẽ được quản lý bởi máy chủ proxy Với mô hình này thì chỉ có máy chủ proxy là được kết nối đến Internet, còn các máy chủ web thì không kết nối trực tiếp đến Internet, mọi truy vấn đến máy chủ web đều phải đi qua máy chủ proxy
Tuy nhiên mô hình này có một số nhược điểm như mỗi tên miền cần được ánh xạ đến một máy ảo và việc tất cả các kết nối đến và ra từ các máy chủ web đều phải đi qua máy chủ proxy sẽ dễ dẫn đến tình trạng thắt cổ chai khiến
hệ thống bị chậm hoặc dừng hẳn hoạt động
1.3.5 Mô hình lai
Trong khi mô hình 3.3 có nhược điểm khi gặp phải các vấn liên quan đến
bảo mật, còn mô hình 3.4 sử dụng proxy ngược sẽ giúp bảo mật hơn tuy nhiên
nó lại khá giống với mô hình một máy chủ với các máy ảo khi không sử dụng
Trang 14đến bảo mật được đảm bảo mà vấn đề liên quan đến quản lý cũng được giải quyết
Hình 5 Mô hình lai
Trong mô hình này, máy chủ master sẽ được sử dụng để quản lý tất cả các tên miền Máy chủ proxy chịu trách nhiệm chuyển hướng truy vấn HTTP được chứa trong URL đến đúng máy chủ đích bằng cách sử dụng phần tên miền
có trong URL đó Điểm khác biệt giữa mô hình này với mô hình sử dụng máy
chủ proxy trong mô hình trước đó là nhiều tên miền có thể được ánh xạ đến một địa chỉ IP riêng duy nhất Ở phía máy chủ proxy, kỹ thuật máy ảo được sử dụng
để ánh xạ các tên miền này tới các thư mục tương ứng Cơ sở dữ liệu hay các thư mục chứa mã nguồn web sẽ được quản lý bởi phần mềm quản lý
Vậy có một câu hỏi được đặt ra là làm thế nào người sở hữu tên miền có
thể truy cập phần mềm quản lý? Có hai lựa chọn được đưa ra: chỉ truy cập từ
mạng nội bộ hoặc truy cập qua proxy, việc này sẽ còn phụ thuộc vào chính sách
bảo mật của hệ thống
Trang 15Trong năm mô hình đã trình bày ở trên chúng ta có thể dễ dàng nhận thấy các mô hình 3.1, 3.2 và 3.3 được sử dụng rộng rãi nhất do việc triển khai cài đặt
là không gặp nhiều khó khăn, tuy nhiên các mô hình này lại gặp phải vấn đề lớn
về bảo mật, điều mà các mô hình 3.4 và 3.5 đã giải quyết được phần nào thông qua việc sử dụng máy chủ proxy ngược Tuy nhiên việc sử dụng thêm máy chủ proxy cũng chưa thể giúp giải quyết hoàn toàn vấn đề bảo mật, phần tiếp theo sẽ trình bày việc sử dụng ModSecurity để chống lại một số kiểu tấn công phổ biến cho máy chủ web Apache, phần mềm máy chủ web phổ biến nhất trên thế giới
hiện nay
1.4 Các vấn đề bảo mật của web hosting
Mạng Internet cùng với những ứng dụng của nó được coi là một trong
những phát minh vĩ đại của văn minh nhân loại Với sự kết nối rộng lớn của Internet, website xuất hiện và ngay lập tức nổi bật lên như một kênh thông tin
hữu dụng trong mọi hoạt động Có thể dễ dàng nhận thấy sự hiện diện của website trong hầu hết các lĩnh vực: các công ty giới thiệu, quảng cáo và ra mắt các sản phẩm dịch vụ của mình trên website; các tổ chức y tế sử dụng website để
tư vấn và mang thông tin sức khỏe đến mọi người; các trường học tiến hành tuyển sinh, thậm chí đào tạo ngay trên website…Các cơ quan chính phủ cũng sử
dụng website như một kênh truyền thông nhằm tuyên truyền những chủ trương, quy định mới hay tiếp xúc với người dân Đặc biệt trong những năm gần đây, trào lưu mạng xã hội đã đưa những Facebook, Twitter hay Linkedin trở thành
một phần không thể thiếu trong đời sống của nhiều người Những điều tuyệt vời
mà web mang lại cho xã hội là không thể phủ nhận Tuy nhiên, mặt trái của
những lợi ích đó là những hậu quả vô cùng nghiêm trọng mỗi khi website mắc các lỗ hổng an ninh Những lỗ hổng có thể bị hacker lợi dụng để gây hại tới chính tài nguyên của website hoặc tới những người truy cập, sử dụng nó Ngày nay, khi mà các dịch vụ như Internet Banking, ví điện tử hay giao dịch chứng khoán trực tuyến đang phát triển rất nhanh theo xu thế chung của thương mại điện tử thì tổn thất về tiền bạc sẽ chẳng thể đong đếm khi những hệ thống
Trang 16website này bị tấn công Không chỉ gây ra những tổn thất về kinh tế, website là
bộ mặt của các tổ chức, cá nhân, chính vì vậy, sẽ là một tổn thất cực kỳ lớn về
uy tín mỗi khi những website này bị tấn công Gần đây, sự việc báo điện tử Vietnamnet bị tấn công đã gây xôn xao dư luận và để lại những hậu quả vô cùng nghiêm trọng cho đơn vị này Hàng tháng có rất nhiều các website của Việt Nam
bị tấn công, chiếm quyền điều khiển Đáng chú ý trong số này có không ít các website của các ngân hàng, công ty chứng khoán, các tổ chức chính phủ và giáo
dục cũng mắc những lỗ hổng rất nghiêm trọng
Theo một số liệu khác của tổ chức Zone-H (http://zone-h.org), hàng năm ghi nhận có hàng triệu website bị deface (một hình thức tấn công thay đổi nội dung trang chủ) Con số này trên thực tế còn lớn hơn rất nhiều và đang không
ngừng tăng lên Điều này cho thấy tình trạng an ninh của các website là rất đáng báo động
Cùng sự phát triển của công nghệ thông tin, các phần mềm máy tính cũng càng ngày càng trở lên phức tạp hơn Số lượng các dòng mã cũng càng ngày càng nhiều hơn Được viết nên bởi chính con người nên việc tồn tại những lỗi
lập trình trong các dòng mã đó là điều khó tránh khỏi Không lập trình viên nào
có thể khẳng định chắc chắn những dòng mã được viết ra là an toàn tuyệt đối
Những lỗi lập trình đó chính là các lỗ hổng an ninh của phần mềm Những lỗ
hổng này được các hacker tấn công và khai thác, từ đó có thể gây ra các tổn hại cho hệ thống
Có rất nhiều loại lỗ hổng an ninh mà một website có thể mắc phải, tương ứng với nó là các kiểu tấn công khác nhau Tuy nhiên, hiện nay đang tồn tại phổ
biến các loại lỗ hổng sau: HTTP Fingerprinting, Cross-site scripting (XSS), Directory Traversal, SQL Injection, Brute Force,…
Lỗ hổng an ninh website xuất phát ngay từ khâu lập trình, khi mà hầu hết các lập trình viên chỉ quan tâm chương trình của mình có chạy đúng hay không
chứ chưa thực sự quan tâm tới việc chương trình chạy có an toàn không Các khâu vận hành, duy trì và quản trị website cũng thường được thực hiện bởi các
Trang 17đơn vị ít có kinh nghiệm về an ninh mạng Chính vì thế, việc hiểu sâu xa về các
lỗ hổng an ninh website là rất cần thiết
Đứng dưới góc độ là một người quản trị hệ thống, trong phạm vi của luận văn này em xin đề xuất, phân tích và trình bày về việc sử dụng Web Application Firewall để chống lại một số kiểu tấn công phổ biến và nguy hiểm nhất hiện nay,
mà một trong những đại diện tiêu biểu là phần mềm mã nguồn mở ModSecurity Trong phần tiếp theo em sẽ trình bày tổng quan về ModSecurity
1.5 Sử dụng ModSecurity đảm bảo an toàn bảo mật cho web hosting
1.5.1 Giới thiệu về ModSecurity
ModSecurity là một công cụ giúp bạn bảo mật các ứng dụng web của mình ModSecurity thường được gọi là một tường lửa ứng dụng web (web application firewall) hay một công cụ phát hiện thâm nhập HTTP dựa trên
những gì mà ModSecurity có thể làm được
ModSecurity được Ivan Ristic phát triển dành cho Web Server Apache Ông là một người có rất nhiều kinh nghiệm trong bảo vệ Web Server Apache Ông đã có nhiều thời gian nghiên cứu Web Application Security, Web Intrusion Detection, và Security Patterns Trước khi chuyển sang lĩnh vực security, Ivan
đã có nhiều năm làm việc như một Developer, System Architect, Technical Director trong việc phát triển phần mềm Ông là người sáng lập ra công ty ThinkingStone làm các dịch vụ liên quan đến web application security Hiện tại ModSecurity sử dụng giấy phép GPL, hoàn toàn miễn phí
1.5.2 Các khả năng của ModSecurity
ModSecurity có thể thực hiện các công việc như sau:
• Filter requests: Tất cả các request gửi đến web server đều được phân tích và cản lọc 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
Trang 18ModSecurity 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 đến từng thông số hay cookies của các request
• 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 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
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:
• Phase Request Header: Rule được đặt tại đây sẽ được thực hiện ngay say khi Apache đọc request header, lúc này phần request body vẫn chưa được đọc
Trang 19• Phase Request Body: Đây là thời điểm các thông tin chức năng chung đưa vào vào được phân tích và xem xét, các rule mang tính ứng dụng hướng kết nối (application-oriented) thường được đặt ở đây Ở thời điểm này, Server đã nhận đủ các thông số của request và phần request body đã được đọc Modsecurity hỗ trợ ba loại mã hoá request body:
o application/x-www-form-urlencoded: Dùng để truyền form dữ
liệu
o multipart/form-data: Dùng để truyền file
o text/xml: Dùng để phân tích dữ liệu XML
• 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 sau khi phần response được gửi đi
• 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ề
• 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ủa Apache Đâ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 mong muốn, kiểm tra các response header mà chúng ta không thể kiểm tra ở phase 3 và phase 4
1.5.3 Giới thiệu về Rules trong ModSecurity
1.5.3.1 Cú pháp SecRule
SecRule được sử dụng để tạo các rule cho ModSecurity, cú pháp cụ thể như sau:
SecRule VARIABLES OPERATOR ACTIONS
Ba tham số của SecRule có ý nghĩa như sau:
• VARIABLES: Quy định cụ thể vị trí, mục tiêu của request hoặc response mà SecRule sẽ kiểm tra ARGS là một loại biến đặc biệt, nó
chỉ ra rằng tất cả các tham số của request sẽ được kiểm tra
Trang 20• OPERATOR: xác định phương pháp và cách thức so sánh khớp dữ
liệu để kích hoạt ACTIONS
• ACTIONS: là một danh sách các hành động được thực hiện nếu phù
hợp (matching) rule Nếu không có action nào được quy định, các action mặc định của action SecDefaultAction sẽ được sử dụng (rule
chứa action này thường được khai báo đầu tiên)
1.5.3.1.1 Biến và bộ chọn lọc Collection
ModSecurity sử dụng hai loại biến: biến Standard, đơn giản chỉ chứa một giá trị duy nhất, và biến Collection, có thể chứa nhiều hơn một giá trị
Để truy cập vào một trường trong collection, chúng ta ghi tên collection,
tiếp theo là dấu hai chấm và sau đó là tên của trường hoặc tuỳ chọn mà chúng ta
muốn truy cập
Ví dụ: SecRule REQUEST_HEADERS:Referer "bad-referer.com"
1.5.3.1.2 Chuyển đổi giữa các Collection
TX collection còn được gọi là các Transaction collection, chúng ta có thể
sử dụng nó để tạo ra các biến phục vụ riêng cho mình, chẳng hạn như:
SecRule REQUEST_URI “passwd” “pass,setvar:tx.hackscore=+5”
SecRule TX:HACKSCORE “@gt 10” deny
Trong rule đầu tiên sử dụng action setvar để thiết lập các biến collection
Thực hiện tạo biến hackscore và tăng giá trị lên 5 nếu rule được thực thi Đến khi biến hackscore có giá trị bằng 10 thì thực thi rule thứ hai sẽ được thực thi
với action là deny
1.5.3.2 Biểu thức chính quy – Regular expressions
Biểu thức chính quy là một thành phần quan trọng trong việc viết rule ModSecurity Biểu thức chính quy đặc biệt mạnh trong việc tìm xâu hoặc chuỗi
ký tự theo điều kiện mong muốn Biểu thức chính quy hiện nay chúng ta có thể
thấy xuất hiện ở khắp mọi nơi và chúng thường được biết đến theo những cái tên
viết tắt như regexp hay regex
Trang 21Khi sử dụng biểu thức chính quy để tìm xâu hoặc chuỗi ký tự thì nó sẽ tìm trong xâu hoặc chuỗi ký tự đích để xem nó có hợp lệ với biểu thức chính quy được sử dụng để viết rule hay không Ví dụ, rule sau sẽ tìm thấy trong dòng protocol của bất kỳ request nào có chứa xâu HTTP , giống như HTTP/1.0 hoặc HTTP/1.1:
Cách viết rule ModSecurity sử dụng biểu thức chính quy như trên khá
giống với công cụ grep trong Linux
Phần trình bày này không đi mô tả chi tiết về biểu thức chính quy, nhưng
để có thể hiểu được hơn về cách thức hoạt động của biểu thức chính quy thông qua một số ví dụ sau Các ví dụ sau đây bao gồm một số kiểu biểu thức chính quy chính thường được sử dụng:
Biểu thức chính quy cũng có thể chứa siêu ký tự Bảng sau đây sẽ liệt kê các siêu ký tự thường được sử dụng trong biểu thức chính quy:
Trang 22Ví dụ nếu muốn tìm favorite hoặc favourite thì chúng ta có thể sử dụng
biểu thức chính quy favou?rite Tương tự nếu muốn previous hoặc previously
chúng ta có thể sử dụng biểu thức chính quy previous(ly)?, dấu ngoặc đơn ()
dùng để nhóm ký tự l và y, đồng nghĩ với việc khi sử dụng ? đằng trước ly có nghĩa là ly xuất hiện một lần hoặc không xuất hiện
1.5.3.3 Phases và sắp xếp Rules
Điều quan trọng là hiểu được việc sắp xếp rule của ModSecurity Điều này tránh các tình huống mà mọi phương thức, hoạt động đều bất ngờ bị chặn
hoặc cho phép không đúng với mục đích
Có 5 phase theo thứ tự như sau:
chặn nào vì response đã được gửi cho người truy cập Vì vậy, chúng ta phải cẩn
thận không để cho bất kỳ action nào trái quy định được truyền vào rule ở phase
5
Trang 23CHƯƠNG 2: GIẢI PHÁP ĐỀ XUẤT ĐỂ ĐẢM BẢO AN TOÀN
BẢO MẬT CHO WEB HOSTING 2.1 Mô hình đề xuất
Dựa vào các mô hình đã trình bày trong phần 1, em xin đề xuất sử dụng
mô hình lai với kiến trúc như sau để đảm bảo an toàn bảo mật cho web hosting:
2.2 Các thành phần của mô hình
Mô hình đề xuất ở trên bao gồm các thành phần như sau:
• Client: đối tượng truy cập dịch vụ từ Internet
• 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 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 24Hình 10 Mô hình c ủa một hệ thống Tường lửa ứng dụng Web (WAF)
Máy chủ 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
Một WAF hoạt động dựa theo 2 mô hình bảo mật: Positive và Negative Mô 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