Đề tài tập trung nghiên cứu áp dụng giải pháp WAF sử dụng ModSecurity có khả năng bảo vệ hệ thống trước các lỗ hổng của ứng dụng web và phòng chống được một số nguy cơ phổ biến như SQL i
Trang 1ĐỖ HỒNG NHỰT
GIẢI PHÁP NÂNG CAO TÍNH AN TOÀN CHO HỆ THỐNG ERP DOANH NGHIỆP
LUẬN VĂN THẠC SĨ
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA
TS LƯU THANH TRÀ
THÀNH PHỐ HỒ CHÍ MINH - 2014
Trang 3Công trình được hoàn thành tại: Trường Đại học Bách Khoa – ĐHQG-HCM
Cán bộ hướng dẫn khoa học: TS LƯU THANH TRÀ……
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 1:
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 2:
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày tháng năm
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1
2
3
4
5 Xác nhận của Chủ tịch Hội đồng đánh giá luận văn và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA ĐIỆN – ĐIỆN TỬ
Trang 4NHIỆM VỤ LUẬN VĂN THẠC SĨ
Ngày, tháng, năm sinh: 01/3/1979 Nơi sinh: An Giang Chuyên ngành: Kỹ thuật điện tử Mã số: 60.52.70
I TÊN ĐỀ TÀI: GIẢI PHÁP NÂNG CAO TÍNH AN TOÀN
CHO HỆ THỐNG ERP DOANH NGHIỆP
NHIỆM VỤ VÀ NỘI DUNG:
Nghiên cứu áp dụng giải pháp tăng cường tính an toàn cho ứng dụng web của hệ thống ERP với WAF mã nguồn mở ModSecurity Thực hiện đánh giá giải pháp và khả năng triển khai trên hệ thống ERP của doanh nghiệp
II NGÀY GIAO NHIỆM VỤ: (Ghi theo trong QĐ giao đề tài):
III NGÀY HOÀN THÀNH NHIỆM VỤ: (Ghi theo trong QĐ giao đề tài):
IV CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): TS LƯU THANH TRÀ CÁN BỘ HƯỚNG DẪN
Trang 5LỜI CẢM ƠN
Trước tiên, tôi xin chân thành cảm ơn Quý thầy cô đã tận tình hướng dẫn, truyền đạt
kiến thức, kinh nghiệm cho tôi trong suốt quá trình học tập tại Trường Tôi rất cảm
ơn Bộ môn Viễn Thông, Phòng Đào Tạo Sau Đại Học đã rất quan tâm giải quyết kịp thời các vấn đề học vụ Tôi hết sức cảm ơn Thầy TS Lưu Thanh Trà đã rất tâm
huyết và tận tình hướng dẫn tôi hoàn thành luận văn này
Tôi cũng xin cảm ơn Lãnh đạo Công ty Điện lực An Giang đã rất quan tâm và tạo điều kiện cho tôi được tham dự khóa học, cảm ơn các đồng nghiệp Phòng Công
nghệ thông tin đã gánh vác phần công việc của tôi tại Công ty
Tôi đặc biệt cảm ơn cha, mẹ đã chăm sóc gia đình nhỏ của tôi, tôi cũng xin cảm ơn người vợ đã chu đáo việc gia đình trong suốt thời gian tôi thực hiện luận văn Cuối cùng, tôi cảm ơn các con tôi đã cho tôi thật nhiều niềm tin và động lực để hoàn thành luận văn này
Đỗ Hồng Nhựt
Trang 6TÓM TẮT LUẬN VĂN
Hệ thống Hoạch định Nguồn lực Doanh nghiệp - ERP (Enterprise Resource Planning) mang lại nhiều lợi ích cho doanh nghiệp do tính liên kết của kho dữ liệu
dùng chung giúp cho việc truy xuất, khai thác thông tin được linh hoạt, kịp thời Với
hệ thống ERP, các phân hệ nghiệp vụ thường được xây dựng trên nền ứng dụng web
do tính linh hoạt và đa nền tảng của nó Bên cạnh đó, các giải pháp bảo vệ hệ thống
khỏi các lỗ hổng ứng dụng, nhất là ứng dụng web vẫn chưa nhận được sự quan tâm
đúng mức, nhiều giải pháp thông thường chỉ tập trung vào bảo vệ hạ tầng mạng Do
đó, việc xây dựng giải pháp an toàn thông tin cho hệ thống ERP doanh nghiệp là vấn đề cấp bách cần được quan tâm giải quyết WAF (Web Application Firewall) là một giải pháp phù hợp và ModSecurity là sự lựa chọn tốt đáp ứng nhu cầu của doanh
nghiệp với chi phí triển khai thấp và tính chủ động cao Đề tài tập trung nghiên cứu
áp dụng giải pháp WAF sử dụng ModSecurity có khả năng bảo vệ hệ thống trước các lỗ hổng của ứng dụng web và phòng chống được một số nguy cơ phổ biến như SQL injection, XSS, DoS… Giải pháp được kiểm tra, đánh giá và triển khai trên hệ thống ERP doanh nghiệp
ABSTRACT
ERP (Enterprise Resource Planning) provides many benefits for businesses due to
the link of a shared data repository It makes information retrieval and extraction
flexible and timely With ERP system, business modules are usually based on web
application because of versatility and cross-platform features In addition, the current security solution for business information system from the application vulnerabilities,
most web applications have not yet received due attention, many solutions commonly
focus on protecting the network infrastructure Therefore, the construction of
information security solution for the ERP system is an urgent issue to be tackled WAF (Web Application Firewall) is a suitable solution and ModSecurity is a good
choice to meet the needs of businesses with low cost and high activeness The
research focused on WAF solution using ModSecurity capable of protecting system against web application vulnerabilities and prevent some common risks like SQL injection, XSS, DoS Solution would be tested, evaluated and deployed in practical ERP system.
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan rằng đây là công trình nghiên cứu của tôi Các nội dung nghiên cứu và kết quả trong đề tài này là trung thực Những dữ liệu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi trong phần tài liệu tham khảo Ngoài ra, trong đề tài còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác và đều có chú thích nguồn gốc sau mỗi trích dẫn để thuận tiện tra cứu, kiểm chứng
Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan này
Thành phố Hồ Chí Minh, ngày 14 tháng 07 năm 2014
TÁC GIẢ
Đỗ Hồng Nhựt
Trang 8
MỤC LỤC
MỞ ĐẦU 1
Chương 1: TỔNG QUAN 3
1.1 Hệ thống ERP doanh nghiệp 3
1.2 Nguy cơ mất an toàn thông tin đối với hệ thống ERP 4
1.3 Giải pháp tăng cường tính an toàn cho hệ thống ERP doanh nghiệp 7
Chương 2: GIẢI PHÁP MODSECURITY CHO HỆ THỐNG ERP 10
2.1 Giới thiệu về tường lửa ứng dụng web (WAF - Web Application Firewall) 10
2.2 Giải pháp WAF mã nguồn mở ModSecurity 10
Chương 3: TRIỂN KHAI GIẢI PHÁP MODSECURITY TRÊN HỆ THỐNG ERP CÔNG TY ĐIỆN LỰC AN GIANG 29
3.1 Hiện trạng hệ thống thông tin Công ty Điện lực An Giang 29
3.2 Mục tiêu triển khai giải pháp WAF ModSecurity 29
3.3 Triển khai WAF ModSecurity 30
Chương 4: ĐÁNH GIÁ GIẢI PHÁP MODSECURITY 51
4.1 Đánh giá khả năng bảo vệ hệ thống với giải pháp ModSecurity 51
4.2 Đánh giá hiệu năng hệ thống 59
Trang 9MỞ ĐẦU
Hệ thống ERP mang lại nhiều lợi ích cho doanh nghiệp do tính liên kết của kho dữ
liệu dùng chung giúp cho việc truy xuất, khai thác thông tin được linh hoạt, kịp thời Nhờ đó, năng suất lao động được tăng lên và doanh nghiệp kiểm soát tốt hơn các hoạt động sản xuất kinh doanh của mình
Với doanh nghiệp, thông tin là tài sản quan trọng Nếu thông tin không an toàn, không tin cậy hoặc bị khai thác trái phép sẽ ảnh hưởng tiêu cực đến hoạt động và sự phát
triển của doanh nghiệp Đối với doanh nghiệp đã triển khai ERP thì vấn đề sẽ nghiêm
trọng hơn do tính liên kết giữa các phân hệ Bên cạnh đó, công tác bảo mật cho hệ thống thông tin chưa được doanh nghiệp quan tâm đầy đủ Các mô hình bảo mật tại doanh nghiệp tồn tại nhiều sơ hở, không được cập nhật thường xuyên nên không có khả năng phòng chống các phương thức tấn công mới vào hệ thống thông tin
Xuất phát từ tình hình trên, tác giả chọn thực hiện đề tài “Giải pháp nâng cao tính an toàn cho hệ thống ERP doanh nghiệp” nhằm đưa ra giải pháp tăng cường bảo mật cho hệ thống ERP của doanh nghiệp mình Kết cấu đề tài gồm 04 chương và phần kết
luận, trong đó:
Chương 1 - Tổng quan: Giới thiệu về hệ thống ERP, tình hình an toàn thông tin, các nguy cơ mất an toàn thông tin đối với hệ thống ERP Kết quả khảo sát, so sánh một
số giải pháp và lựa chọn phương án phù hợp
Chương 2 - Giải pháp ModSecurity cho hệ thống ERP: Giới thiệu giải pháp mã nguồn mở ModSecurity cho hệ thống ERP như tính năng, hoạt động, cú pháp viết Rule, nguyên tắc xây dựng Rule
Chương 3 - Triển khai giải pháp ModSecurity trên hệ thống ERP Công ty Điện lực An Giang: Trình bày hiện trạng hệ thống thông tin của Công ty Điện lực An Giang
Công việc kiểm tra các điểm yếu hiện có của hệ thống Xác định mục tiêu cần đạt
Trang 10được trong việc bảo vệ hệ thống Triển khai ModSecurity bảo vệ hệ thống trước các
lỗ hổng đã phát hiện và phòng chống một số nguy cơ phổ biến
Chương 4 - Đánh giá giải pháp ModSecurity: Đánh giá kết quả triển khai giải pháp: khả năng bảo vệ của ModSecurity so với mục tiêu bảo mật đã đề ra và kiểm tra hiệu
năng hệ thống
Phần kết luận: Trình bày các mục tiêu đã đạt được và hướng phát triển của đề tài
Đề tài có sử dụng các thuật ngữ và mã chương trình (source code). Để thuận tiện
cho việc theo dõi, tác giả sử dụng font chữ in nghiêng, giữ nguyên từ gốc một số thuật ngữ (Rule, server, request, response…) và dùng loại font chữ riêng đối với các đoạn
code.
Do thời gian và năng lực có hạn nên đề tài khó tránh khỏi chủ quan, thiếu sót Tác giả rất mong nhận được ý kiến đóng góp quý báu từ Quý thầy cô, các bạn để đề tài được hoàn thiện hơn, đạt hiệu quả cao trong thực tiễn
Trang 11Chương 1: TỔNG QUAN
1.1 Hệ thống ERP doanh nghiệp
ERP (Enterprise Resource Planning – Hệ thống hoạch định nguồn lực doanh nghiệp)
là khái niệm đã trở nên ngày càng phổ biến không chỉ trong lĩnh vực công nghệ thông
tin của Việt Nam mà cả cộng đồng doanh nghiệp, nhà quản lý Với ERP, mọi hoạt động của một công ty, từ công tác điều hành, quản trị nguồn nhân lực (HRM), quản lý dây chuyền sản xuất (MRP) và cung ứng vật tư, quản lý tài chính nội bộ (FRM), đến việc bán hàng, tiếp thị sản phẩm (SCM), trao đổi với đối tác, khách hàng (CRM)… đều được thực hiện trên một hệ thống duy nhất Nếu triển khai thành công ERP, doanh
nghiệp sẽ có thể tiết kiệm chi phí, tăng khả năng cạnh tranh và thêm cơ hội để phát triển vững mạnh
Hình 1.1 Mô hình hệ thống ERP [1]
Triển khai ERP là quá trình tin học hóa toàn diện các hoạt động của doanh nghiệp
dựa trên các qui trình quản lý tiên tiến Mọi hoạt động của doanh nghiệp sẽ do phần mềm máy tính hỗ trợ và thực hiện các qui trình xử lý một cách tự động hoá, giúp cho các doanh nghiệp quản lý các hoạt động then chốt, bao gồm: kế toán, phân tích tài chính, quản lý mua hàng, quản lý tồn kho, hoạch định và quản lý sản xuất, quản lý
Trang 12quan hệ với khách hàng, quản lý nhân sự, theo dõi đơn hàng, quản lý bán hàng, v.v Mục tiêu tổng quát của hệ thống này là đảm bảo các nguồn lực thích hợp của doanh nghiệp như nhân lực, vật tư, máy móc và tiền bạc có sẵn với số lượng đủ khi cần, bằng cách sử dụng các công cụ hoạch định và lên kế hoạch
Đặc điểm nổi bật của ERP là một hệ thống phần mềm sống có thể mở rộng và phát
triển theo thời gian theo từng loại hình doanh nghiệp mà không làm ảnh hưởng đến cấu trúc của chương trình
ERP loại bỏ các hệ thống máy tính riêng lẻ ở các bộ phận trong một doanh nghiệp: Tài chính, Nhân sự, Kinh doanh, Sản xuất, Kho… ERP sẽ thay thế chúng bằng một
chương trình phần mềm hợp nhất phân chia theo các phân hệ phần mềm khác nhau
và tạo nên một mối quan hệ thống nhất với nhau Phần mềm ERP rất linh động trong
việc cài đặt các phân hệ theo yêu cầu doanh nghiệp Các doanh nghiệp có thể yêu cầu cài đặt một vài phân hệ mà doanh nghiệp cần, các phân hệ còn lại còn lại có thể cài đặt sau mà không ảnh hưởng đến hệ thống
1.2 Nguy cơ mất an toàn thông tin đối với hệ thống ERP
Hệ thống ERP vốn mang lại nhiều lợi ích cho doanh nghiệp do tính liên kết của kho
dữ liệu dùng chung giúp cho việc truy xuất, khai thác thông tin được linh hoạt, kịp thời Tuy nhiên, cũng chính vì tính liên kết này mà nguy cơ mất an toàn thông tin cho toàn hệ thống là rất lớn
Các phương thức tấn công vào hệ thống thông tin ngày càng tinh vi, phức tạp và gây thiệt hại rất lớn cho doanh nghiệp Theo thống kê từ Chi hội An toàn thông tin phía
Nam (VNISA) [2], Việt Nam đứng đầu danh sách các quốc gia thường xuyên bị hacker
tấn công Theo đó, có tới 394 máy chủ bị kết nối âm thầm và thường trực ra máy chủ
nước ngoài Theo VNCERT [3], trong 6 tháng đầu năm 2014, Trung tâm này đã ghi nhận 405 sự cố Phishing, xử lý được 250 sự cố; 648 sự cố Deface (72 sự cố liên quan đến tên miền gov.vn), xử lý được 34 sự cố gov.vn và 281 tên miền khác, 345 sự cố malware (xử lý được 147 sự cố) Trung tâm đã cảnh báo xử lý 2.117 lượt địa chỉ IP của các cơ quan nhà nước bị nhiễm mã độc botnet Cùng với đó, theo báo cáo [4] do
Trang 13Trung tâm Nghiên cứu chiến lược và quốc tế (CSIS) phối hợp với công ty bảo mật McAfee thực hiện công bố ngày 09/06/2014, các cuộc tấn công mạng đang khiến nền
kinh tế toàn cầu thiệt hại khoảng 445 tỷ USD mỗi năm, bao gồm cả 350.000 việc làm bị mất tại Mỹ và châu Âu
Với hệ thống ERP, các phân hệ nghiệp vụ thường được xây dựng trên nền ứng dụng web do tính linh hoạt và đa nền tảng của nó Bên cạnh đó, các giải pháp bảo vệ hệ thống khỏi các lỗ hổng ứng dụng, nhất là ứng dụng web vẫn chưa nhận được sự quan
tâm đúng mức, nhiều giải pháp thông thường chỉ tập trung vào bảo vệ hệ thống mạng
như Hình 1.2
Hình 1.2 Mô hình bảo mật hệ thống mạng [5]
Trong một số kết quả nghiên cứu [6] thể hiện tại Hình 1.3 cho thấy: 92% các lỗ hổng
lại nằm trong các ứng dụng chứ không phải trong hệ thống mạng Theo một thống kê
khác của Gartner, 75% các cuộc tấn công là nhằm vào lớp ứng dụng
External Firewall
DMZ
InternetInternal Firewall
Web serverEmail server
FTP server
DB servers
Trang 14Hình 1.3 Lỗ hổng trong hệ thống thông tin [6]
Theo bản cập nhật năm 2013 của OWASP (Phụ lục 1) về Top 10 rủi ro an toàn của ứng dụng web, các phương thức tấn công như SQL injection, Cross site scripting (XSS)… nhằm truy nhập, khai thác dữ liệu trái phép, chiếm quyền điều khiển hệ thống… vẫn đang là các mối đe dọa phổ biến và đang được hacker tấn công khai thác
nhiều nhất Xu hướng tấn công thường tập trung vào các mục tiêu sau:
Thông tin hệ thống: đây là bước đầu tiên mà hacker thực hiện khi tấn công hệ
thống Với thông tin về hệ thống như phiên bản hệ điều hành, web server…, hacker có thể khai thác lỗ hổng đối với hệ thống sử dụng các phiên bản cũ chưa được vá
lỗi Một số phương thức có thể thu thập thông tin hệ thống như Fingerprinting, HTTP Method
Xác thực hệ thống: đối với các ứng dụng có tính năng đăng nhập cho người dùng,
hacker có thể sử dụng kỹ thuật tấn công như dò tìm mật khẩu để xâm nhập và thao tác trái phép trên hệ thống Phương thức thường gặp đối với loại tấn công này là
Brute Force Cơ sở dữ liệu (CSDL) ứng dụng: phương thức thường được hacker sử dụng là SQL
injection Đây là loại tấn công vào CSDL ứng dụng web Theo đó, hacker sẽ tìm
41%
36%15%
3%
Server ApplicationNon‐Server ApplicationOperating SystemHardware
Communication ProtocolNetwork
Other
Trang 15cách thay đổi ý nghĩa của câu lệnh SQL gốc Việc này được thực hiện bằng cách chèn thêm các từ khóa, toán tử và câu lệnh SQL vào trong câu lệnh SQL gốc Nếu việc thực hiện thành công, hacker sẽ thao túng được CSDL của ứng dụng, thực
hiện khai thác thông tin trái phép
Người dùng: đối với ứng dụng web, phương thức tấn công người dùng thông thường là XSS Hacker có thể dùng những đoạn mã script độc hại lấy cookie, keylog
để khai thác thông tin hoặc giả mạo người dùng
Web server: một phương thức tấn công thường gặp đối với web server là DoS Trong đó, phương thức DoS layer 7 có thể vô hiệu các firewall ở lớp network Loại tấn công này chiếm tài nguyên và khiến web server từ chối các kết nối ngay cả kết
nối hợp lệ
1.3 Giải pháp tăng cường tính an toàn cho hệ thống ERP doanh nghiệp
Với các nguy cơ đã đề cập ở trên, việc nghiên cứu áp dụng giải pháp tăng cường tính
an toàn cho hệ thống ERP doanh nghiệp là vấn đề cấp bách cần được quan tâm giải
quyết Trong đó, giải pháp tập trung bảo vệ các mục tiêu sau: Thông tin hệ thống;
Xác thực hệ thống; CSDL ứng dụng; Người dùng; Web server
Đối với hệ thống ERP vận hành trên nền web, các phương thức có thể được áp dụng để bảo vệ ứng dụng như xây dựng mã nguồn an toàn hay thiết lập WAF (Web Application Firewall) [9]
Xây dựng mã nguồn an toàn là một kỹ thuật quan trọng Để thực hiện được việc này, lập trình viên phải hiểu rõ và biết cách ngăn chặn các lỗ hổng của ứng dụng web Điều này đòi hỏi lập trình viên phải am hiểu về các vấn đề bảo mật Tuy nhiên, các lập trình viên thường không được đào tạo nhiều về lĩnh vực này Hơn nữa, hầu hết
Trang 16các ứng dụng đều được nhà cung cấp đóng gói trước khi triển khai cho doanh nghiệp
Như vậy, việc can thiệp vào mã nguồn là không thực hiện được Trong khi đó, WAF sẽ thực hiện phân tích gói tin HTTP để tìm và ngăn chặn các tấn công vào hệ thống
mà không lệ thuộc vào nhà cung cấp ứng dụng
Như vậy, WAF giải pháp phù hợp đối với hệ thống ERP trên nền ứng dụng web Vị
trí WAF được mô tả tại Hình 1.4
Hình 1.4 Mô hình bảo mật hệ thống thông tin với WAF
WAF thường được chia làm hai loại chính: giải pháp thương mại và giải pháp mã
nguồn mở
Giải pháp thương mại của Cisco, Juniper, Barracuda… có tính ổn định và được sự
hỗ trợ từ nhà cung cấp Tuy nhiên, chi phí đầu tư sử dụng lớn, các điều chỉnh, cập nhật đều lệ thuộc hoàn toàn vào nhà cung cấp Điểm cần quan tâm đối với giải pháp thương mại là sản phẩm đóng gói, người dùng hoàn toàn không thể biết và can thiệp
WAF
DMZ
InternetInternal Firewall
Web serverEmail server
FTP server
External Firewall
WebApp AttackDB servers
Trang 17vào mã nguồn Điều này tiềm ẩn nguy cơ các thông tin trong hệ thống của người dùng có thể bị nhà sản xuất khai thác
Giải pháp mã nguồn mở mang tính cộng đồng, giúp tiết kiệm chi phí và chủ động
trong việc quản lý, thay đổi, chỉnh sửa hệ thống Một số giải pháp WAF mã nguồn mở có thể sử dụng để bảo vệ ứng dụng web nhưModSecurity, WebKnight, QuickDefence…[10]
Bảng 1.1 Các giải pháp WAF mã nguồn mở
có quá trình phát triển lâu dài và thường xuyên được cập nhật Phiên bản mới nhất
của ModSecurity là 2.8.0 phát hành ngày 15/04/2014 Hơn nữa, ModSecurity cũng được cộng đồng OWASP liên kết hỗ trợ thông qua dự án OWASP ModSecurity Core Rule Set
Tóm lại, với mục tiêu tăng cường tính an toàn cho thống hệ thống ERP thì ModSecurity là sự lựa chọn phù hợp Giải pháp được nghiên cứu triển khai, đánh giá
và áp dụng tại Công ty Điện lực An Giang
Trang 18Chương 2: GIẢI PHÁP MODSECURITY CHO HỆ THỐNG ERP
2.1 Giới thiệu về tường lửa ứng dụng web (WAF - Web Application Firewall)
WAF là công cụ bảo vệ ứng dụng web khỏi sự tấn công từ bên ngoài bằng cách sử dụng tập hợp các Rule (luật) áp đặt chính sách bảo mật lên lưu lượng HTTP của ứng dụng web [11]
Rule là các dòng mã lệnh (code) để người dùng tương tác với các đối tượng mà WAF có thể kiểm soát (chẳng hạn, request headers, request body… trong gói tin HTTP), mỗi loại WAF có cú pháp Rule khác nhau
Thông thường, các Rule này ngăn chặn các loại tấn công phổ biến như SQL injection hoặc XSS, nhưng nếu tận dụng tốt và phát triển các Rule này, WAF có thể dùng để
ngăn chặn nhiều loại tấn công
Hình 2.1 Mô hình WAF [14] 2.2 Giải pháp WAF mã nguồn mở ModSecurity
2.2.1 Giới thiệu ModSecurity là giải pháp WAF mã nguồn mở nhằm phát hiện và phòng chống xâm nhập cho các ứng dụng web ModSecurity hoạt động như một module của web server hoặc hoạt động độc lập nhằm tăng cường bảo mật cho các ứng dụng web, ngăn chặn lưu lượng độc hại dựa trên bộ Rule được xác định trước ModSecurity có thể hoạt động với các trình web server phổ biến hiện nay như IIS, Apache, Nginx Trong phạm
Trang 19vi luận văn này, chúng tôi chọn phương án triển khai ModSecurity trên web server mã nguồn mở Apache
2.2.2 Hoạt động của ModSecurity ModSecurity hoạt động với trình web server sẽ thực hiện các tác vụ như sau: Parsing
ModSecurity sẽ phân tách dữ liệu chuyển qua hệ thống thành dạng dữ liệu đã định nghĩa sẵn để có thể sử dụng được cho các Rule
Buffering Thông thường, các thông tin request và response đều được ghi đệm lại Các request phải thông qua ModSecurity trước khi đến ứng dụng xử lý và các response cũng sẽ được phân tích trước khi trả về phía client Cơ chế này là cách duy nhất đảm bảo tính
tin cậy cho việc ngăn chặn các cuộc tấn công vào hệ thống Nhược điểm của tác vụ
này là nó đòi hỏi thêm bộ nhớ RAM để lưu trữ các thông tin response và do đó chiếm tài nguyên hệ thống Để giải quyết vấn đề này, ngoài việc bổ sung dung lượng RAM cho server, người quản trị có thể cấu hình để ModSecurity không cần kiểm tra toàn bộ thông tin response và dùng chế độ Reverse Proxy để giảm tải cho các web server
đồng thời tăng hiệu năng hệ thống
Logging ModSecurity cung cấp tính năng ghi log (nhật ký) đối với lưu lượng HTTP bao gồm request headers, request body, response headers, response body nhằm giúp người
quản trị phân tích nguy cơ mà hệ thống đang gặp phải để có những điều chỉnh xử lý phù hợp
Rule Engine Khi Rule Engine hoạt động, các Rule sẽ tiến hành kiểm tra tiến trình trao đổi thông tin của hệ thống và đưa ra những tác động tương ứng đã thiết lập trong Rule Có thể nói Rule Engine là “cỗ máy” để vận hành các Rule
Trang 202.2.3 Quy trình xử lý của ModSecurity
Hình 2.2 Các pha xử lý của ModSecurity [15]
Trong ModSecurity, mỗi tiến trình giao dịch thông tin thường đi qua 5 pha được mô
tả tại Hình 2.2 Tại mỗi pha, ModSecurity sẽ thực hiện một số công việc ban đầu
(chẳng hạn, phân tích dữ liệu thành định dạng có thể sử dụng trong Rule) và gọi các Rule tương ứng để làm việc trong pha đó Trong nhiều trường hợp, các giao dịch
không nhất thiết phải được xử lý qua tất cả các pha, tùy theo mục đích cụ thể mà
người quản trị có thể thiết kế các Rule để xử lý giao dịch ít hơn 5 pha nhằm sử dụng
hiệu quả tài nguyên hệ thống
Các Rule được thực thi nghiêm ngặt theo thứ tự từng pha một Tức là, ModSecurity đầu tiên kiểm tra khớp mẫu đối với tất cả các Rule trong pha 1 (request headers) Sau
đó, nó tiếp tục với với các pha từ 2 đến 5 (trừ khi xảy ra một trường hợp khớp mẫu nào đó làm ngừng tiến trình)
Trang 21Trong các pha, các Rule được xử lý theo thứ tự mà chúng xuất hiện trong file cấu hình Có thể hình dung ModSecurity sẽ duyệt qua file cấu hình năm lượt tương ứng với năm pha xử lý Trong mỗi lượt (tương ứng với mỗi pha), ModSecurity chỉ xem xét các Rule thuộc pha hiện đang xử lý và các Rule này được thực thi theo thứ tự chúng xuất hiện trong file cấu hình
Pha 1 - Request Headers Đây là pha đầu tiên trong quá trình xử lý thông tin của ModSecurity Mục đích chính của pha này là cho phép người viết Rule kiểm tra một request trước khi thực hiện xử lý phần request body của nó Rule được đặt tại đây sẽ được thực thi ngay sau khi trình web server thực hiện xử lý các request headers
Pha 2 - Request body Đây là pha chính trong việc thực hiện phân tích request Nó được tiến hành ngay khi request body được tiếp nhận Các Rule trong pha này có đầy đủ các dữ liệu request
khả dụng để tiến hành xử lý
Pha 3 - Response Headers Pha 3 được tiến hành ngay sau khi nhận được các response headers và trước khi response body được đọc ModSecurity sẽ dựa vào các Rule tại pha này để xác định có cần kiểm tra nội dung thông tin trong phần response body hay không
Pha 4 - Response body Đây là pha chính trong việc thực hiện phân tích response Khi bắt đầu pha này, các dữ liệu khả dụng trong response body sẽ được kiểm tra và xử lý bởi các Rule
Pha 5 - Logging Pha 5 không có khả năng ngăn chặn các nguy cơ như các pha trước nó Các Rule đặt ở đây sẽ định rõ việc log sẽ như thế nào và thông qua đó, người quản trị sẽ đưa ra các
điều chỉnh phù hợp cho hệ thống
2.2.4 Các chế độ hoạt động của ModSecurity Embedded mode (Chế độ nhúng)
Trang 22ModSecurity hoạt động như một thành phần của web server, hoạt động bên trong các tiến trình của web server Ở chế độ này, ModSecurity sẽ chiếm dụng tài nguyên của server cho hoạt động của mình và do đó ảnh hưởng đến hiệu suất vận hành hệ thống
Hình 2.3 Embedded mode
Reverse Proxy mode (Chế độ proxy ngược) ModSecurity được cấu hình để hoạt động riêng với web server nhằm bảo vệ ứng dụng từ bên ngoài Đối với chế độ này, ModSecurity vận hành độc lập, không ảnh hưởng trực tiếp đến web server và có thể cấu hình để bảo vệ nhiều web server
Hình 2.4 Reverse Proxy
Server nServer 1
Firewall
HTTP Traffic
Reverse Proxy
ApacheModSecurity
Trang 232.2.5 Ngôn ngữ viết Rule của ModSecurity Rule trong ModSecurity có dạng văn bản đơn giản nên người dùng có thể tự thiết kế các Rule theo mục đích của mình Việc nắm vững cú pháp và thành thạo trong việc thiết kế Rule sẽ giúp cho người quản trị ngăn chặn kịp thời các nguy cơ có thể xảy ra
với hệ thống
2.2.5.1 Cú pháp Rule
SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS]
Rule trong ModSecurity có bốn thành phần, trong đó hai thành phần cuối
TRANSFORMATION_FUNCTIONS, ACTIONS là tùy chọn Nếu Rule không sử dụng hai thành phần tùy chọn này thì ModSecurity sẽ dùng các giá trị mặc định được thiết lập
trong chỉ thị SecDefaultAction SecRule là chỉ thị mặc định trong cú pháp tạo
Rule Chi tiết các thành phần của Rule được trình bày tại Phụ lục 2
VARIABLES
VARIABLES (biến) có vai trò xác định phần nào trong request hoặc response cần được kiểm tra ModSecurity sử dụng hai loại biến: biến tiêu chuẩn mang giá trị đơn và collection (biến tập) có thể mang nhiều giá trị
Việc sử dụng chính xác các biến con trong collection cho từng đối tượng cần kiểm tra là rất quan trọng, nó giúp cho các Rule được hoạt động nhanh chóng, giảm thời
gian tìm kiếm trong một tập rộng lớn
Trong phiên bản 2.8.0, ModSecurity cung cấp 79 biến để phục vụ cho việc thiết kế Rule, đủ để đáp ứng hầu hết các tình huống sử dụng
OPERATOR
OPERATOR (toán tử) xác định phương thức, phép so sánh khớp dữ liệu để kích hoạt
ACTIONS. Toán tử bắt đầu bằng ký tự @ Trường hợp trong Rule không thể hiện phần
OPERATOR thì toán tử mặc định là @rx, khi đó chuỗi theo sau sẽ là biểu thức chính quy được dùng để so khớp với các biến được chỉ định
Trang 24TRANSFORMATION_FUNCTIONS
Chức năng này cho phép chuyển đổi dữ liệu đầu vào trước khi đưa qua cơ chế kiểm
tra (chuyển chữ hoa thành chữ thường, decode base64 …)
để gán cho từng đối tượng Tùy thuộc vào mục tiêu bảo mật cụ thể, người quản trị
phải xác định trong Rule: các biến cần dùng (Variable), các mẫu (Pattern) cần thiết lập tương ứng để so khớp, các toán tử (Operator) cần thiết để xử lý thông tin và hành
động (Action) ứng phó phù hợp với yêu cầu Tiến trình này được mô tả tại Hình 2.5
Hình 2.5 Tiến trình thực thi Rule
2.2.5.3 Biểu thức chính quy trong ModSecurity Một lưu ý quan trọng đối với công tác xây dựng Rule là việc xử lý biểu thức chính quy (regex - regular expression) Rule trong ModSecurity chủ yếu sử dụng các regex trong thư viện PCRE (Perl-Compatible Regular Expressions) để thiết lập mẫu so khớp Do đó, việc nghiên cứu các regex này sẽ giúp cho người quản trị thuận tiện hơn trong công tác thiết kế các Rule phục vụ các mục tiêu bảo mật hệ thống
Trang 25 Regex
Regex Trường hợp khớp mẫu
Joy
Chuỗi bất kỳ có chứa ký tự j, theo sau bởi một ký tự o và một ký
tự y VD: joy,enjoy,joyful Nhưng Joyful thì không
khớp do có ký tự J in hoa [Jj]oy Chuỗi bất kỳ bắt đầu bằng J hoặc j và theo sau bởi o và y
VD: Joy, joy, enjoy, enJoy
[0-9] Chữ số bất kỳ từ 0 đến 9 [a-zA-Z] Chữ cái alphabet bất kỳ kể cả chữ thường và chữ in hoa
Không có hoặc có nhiều ký tự phía trước dấu * trong biểu thức
VD: với Rank A* thì trường hợp khớp mẫu sẽ là Rank, Rank
A, Rank AA, Rank AAA … ?
Không có hoặc có một ký tự trước dấu ? VD: trong biểu thức
colou?r thì trường hợp khớp mẫu sẽ là color, courlor (có hoặc không có u)
+ Có một hoặc nhiều ký tự/chuỗi trước dấu +, VD: với biểu thức
I.+ thì trường hợp khớp mẫu là IE, IEE, IEEE …
Tốc ký (shorthand)
\d Chữ số từ 0 đến 9 Tương đương [0-9] \D Ký tự bất kỳ không phải là chữ số Tương đương [^0-9] \w Chữ cái alphabet (cả chữ thường và chữ in hoa), các chữ số từ 0
đến 9 và ký tự gạch dưới “_“ Tương đương [a-zA-Z0-9_] \W Ký hiệu/ký tự bất kỳ không phải là chữ cái alphabet, chữ số và
dấu gạch dưới “_” Tương đương [^a-zA-Z0-9_]
Trang 26\s Khoảng trắng (space, tab, newline, form feed ) \S Không phải là khoảng trắng Tương đương: [^\s]
Bên cạnh việc xây dựng mẫu so khớp hoàn toàn bằng regex, người quản trị có thể tận
dụng một số toán tử hỗ trợ để giảm nhẹ công việc như @streq, @containts
Ngoài ra, người dùng có thể sử dụng công cụ hỗ trợ như RegexBuddy để kiểm tra tính chính xác của các mẫu regex trước khi đưa vào áp dụng trong Rule
Phân tích mẫu regex sau:
\b[-\w.+]+@[\w.]+\.[a-zA-Z]{2,4}\b
Đây là mẫu regex của địa chỉ email, sử dụng RegexBuddy để kiểm tra mẫu:
Hình 2.6 Kiểm tra mẫu regex
Kết quả tại Hình 2.6 cho thấy chỉ những trường hợp thể hiện địa chỉ email hợp lệ
(username@domainname) trong chuỗi thì mới xảy ra khớp mẫu
Trang 272.2.5.4 Tổ chức và xây dựng Rule ModSecurity hoạt động dựa trên thành phần cơ bản là các Rule và phương thức cấu
hình chúng thành các nhóm phục vụ cho từng mục tiêu cụ thể, chẳng hạn, cấu hình
bảo mật cho XSS, SQL injection hay các chính sách bảo mật khác Từng chính sách hay mục tiêu bảo mật được tổ chức thành các file cấu hình (*.conf) bao gồm một hoặc nhiều Rule tùy theo độ phức tạp Các file cấu hình có thể được biên tập dễ dàng bằng các chương trình sẵn có của hệ điều hành như vi/gedit (Linux), Notepad (Windows)
hay bất kỳ trình xử lý văn bản nào khác
Việc tổ chức các Rule vào file cấu hình tùy thuộc kinh nghiệm của người quản trị Các chính sách bảo mật với ModSecurity chỉ được kích hoạt khi các file cấu hình
tương ứng được khai báo (Include) trong file httpd.conf của Apache Về nguyên tắc, các file cấu hình của ModSecurity có thể được khai báo trực tiếp trong
httpd.conf. Tuy nhiên, để tránh các thao tác nhầm ảnh hưởng đến hoạt động của
web server và thuận tiện cho việc cập nhật hiệu chỉnh các chính sách bảo mật, người
quản trị có thể thực hiện theo phương thức sau:
Hình 2.7 Sơ đồ tổ chức Rule
Khi đó, nếu cần đánh giá hệ thống trước và sau khi vận hành ModSecurity, người
quản trị chỉ cần thao tác đơn giản là vô hiệu hóa hoặc kích hoạt phần khai báo
modsecurity.conf trong file httpd.conf của Apache Với mục đích thuận tiện trong việc tổ chức và xây dựng Rule, chúng tôi đề xuất một khung mẫu cho việc thiết lập file modsecurity.conf cũng như các file
SecPolicy_X.conf như sau:
Trang 28 File cấu hình modsecurity.conf
# =============================================================== # Recommended modsecurity.conf configuration file
# ========================================================
<IfModule security2_module> # Turn on rule engine and set default action SecRuleEngine On
SecDefaultAction "phase:k,action_1,action_2,action_n" # Configure request body access
SecRequestBodyAccess On # - # Audit log
# - # NOTE: only serial or concurrent log at the same time!!! # CHOOSE: Enable serial audit logging-
#SecAuditEngine RelevantOnly #SecAuditLog logs/modsec_audit.log #SecAuditLogType serial
#SecAuditLogParts ABCEFHIKZ # OR: Enable concurrent audit logging #SecAuditEngine RelevantOnly
#SecAuditLogType concurrent #SecAuditLogStorageDir /var/log/audit/ #SecAuditLog logs/modsec_audit.log #SecAuditLogParts ABCEFHIKZ
# - # End Audit log
# - # Adding Core Rules Set
Include /opt/modsecurity/etc/modsecurity_crs_10_setup.conf Include /opt/modsecurity/etc/crs/base_rules/*.conf
# Operating other security policy Rules Include /opt/modsecurity/etc/Rules/SecPolicy_A.conf
Include /opt/modsecurity/etc/Rules/SecPolicy_Z.conf
Trang 29</IfModule>
File cấu hình SecPolicy_X.conf
# =============================================================== # Recommended SecPolicy_X.conf configuration file
# ========================================================
# Rules with alert emails sending SecRule VARIABLES OPERATOR /
"action_1,action_2,action_n,exec:/usr/local/bin/email_k.sh"
SecRule VARIABLES OPERATOR / "action_1,action_2,action_n,exec:/usr/local/bin/email_m.sh"
Để xây dựng được Rule theo yêu cầu bảo mật của hệ thống, người quản trị, ngoài kiến thức về hệ điều hành, HTTP… còn phải nắm rõ cú pháp và vận dụng tốt các thành phần của Rule như biến, toán tử
Xét một Rule đơn giản gồm một biến và một chuỗi như sau:
SecRule REQUEST_URI <script>
Với mẫu như trên thì ModSecurity thực thi kiểm tra dữ liệu trong URI từ phía người
dùng và xác định có sự tồn tại của chuỗi <script> hay không Tuy nhiên, người dùng
có thể sử dụng thêm một operator vào Rule trên để tăng hiệu quả kiểm tra trong ModSecurity, Rule trên có thể viết lại như sau:
SecRule REQUEST_URI "@rx <script>"
ModSecurity hỗ trợ nhiều loại operator khác nhau Một số có cùng chức năng, nhưng từng operator sẽ có ảnh hưởng khác nhau đến hiệu suất của hệ thống Trong Rule trên
thì chuỗi <script> không phải là một mẫu regex, bởi vì chúng không chứa ký tự đặc biệt Rule trên có thể được viết lại bằng các sử dụng @contains để tối ưu:
SecRule REQUEST_URI "@contains <script>"
Trang 30 Sử dụng biến Một Rule có thể sử dụng nhiều biến khác nhau bằng cách dùng ký tự “|” để phân cách:
SecRule REQUEST_URI|REQUEST_PROTOCOL <script>
Nhóm các biến được dùng trong một Rule được gọi là collection Trên thực tế, các Rule được viết có thể chứa nhiều hơn một thành phần tham số (parameter) và dấu hai
chấm “:” được dùng để phân cách biến và tên của tham số
SecRule ARGS:p <script> SecRule ARGS:p|ARGS:q <script>
Cấu trúc như ví dụ trên có thể sử dụng để so khớp biểu thức mẫu, Rule bên dưới sẽ
tìm chuỗi <script> trong các tham số bắt đầu bằng ký tự p:
SecRule ARGS:/^p/ <script>
Biến ARGS mặc định sẽ theo dõi tất cả các tham số nếu trong Rule không chỉ định tên
tham số hoặc biểu thức mẫu Việc liệt kê các tham số giúp giảm thiểu tài nguyên hệ
thống và năng hiệu suất theo dõi của ModSecurity Trong một số trường hợp, toán tử phủ định có thể được sử dụng để loại bỏ một nhóm biến trong Rule, bằng cách thêm
dấu (!) vào trước nhóm biến không sử dụng:
SecRule ARGS|!ARGS:z <script>
Sử dụng liên kết Rule (chain)ModSecurity cho phép liên kết các SecRule riêng lẻ thành một SecRule duy nhất thông quan từ khóa chain. Liên kết các Rule sẽ giảm thiểu các tình huống cảnh báo không chính xác, giúp người quản trị đơn giản hóa việc viết Rule trong trường hợp
cần kiểm tra các điều kiện mang tính chất tuần tự
Trong ví dụ bên dưới, ModSecurity sẽ luôn thực hiện kiểm tra SecRule đầu tiên (kiểm tra tham số p), nếu xảy ra khớp dữ liệu thì Rule tiếp theo (kiểm tra tham số q) sẽ được kiểm tra
Trang 31SecRule ARGS:p <script> chain SecRule ARGS:q <script>
Toán tử phủ định ModSecurity cho phép sử dụng phương pháp phủ định một thành phần bất kỳ trong Rule Một Rule có chức năng theo dõi người dùng đăng nhập, ngoại trừ user admin
và root có thể được viết như sau:
SecRule ARGS:username "!@rx ^(admin|root)$"
Với Rule SecRule ARGS:p|ARGS:q "!@eq 5" thì ModSecurity sẽ khớp mẫu khi có
một trong hai tham số p hoặc q có giá trị khác 5 Trường hợp cần kiểm tra cả hai tham số p và q có giá trị khác 5 thì có thể sử dụng từ khóa chain:
SecRule ARGS:p "!@eq 5" chain SecRule ARGS:q "!@eq 5"
Đếm biến
Việc đếm số lần xuất hiện của một biến có thể thực hiện bằng cách thêm ký tự “&”
vào trước biến trong Rule Trong Rule bên dưới, ModSecurity thực hiện kiểm tra trong
trường hợp tồn tại một tham số username:
SecRule &ARGS:username "@eq 1"
Để kiểm tra trong trường hợp có nhiều hơn một tham số username, Rule có thể được
viết lại như sau:
SecRule &ARGS:username "!@eq 1"
Action (hành động) trong Rule Action là thành phần thứ ba trong chỉ thị SecRule và là thành phần thứ nhất trong chỉ thị SecAction Một Rule có thể không tồn tại action hoặc nhiều hơn một action Dấu
phẩy “,” hay khoảng trắng được dùng để phân cách nhiều action trong một Rule Rule bên dưới sử dụng hai action là log và deny:
SecRule ARGS K1 log,deny
Trang 32Một số action trong ModSecurity yêu cầu có tham số khi sử dụng Trong trường hợp này, action và tham số phân cách bởi dấu “:” Rule từ chối yêu cầu và trả về trạng thái 404 có thể được viết như sau:
SecRule ARGS K1 log,deny,status:404
Cần lưu ý đối với các action có tham số chứa khoảng trắng hoặc ký tự “‘”, khi đó,
phần action của Rule cần được nhóm vào trong cặp dấu nháy kép:
SecRule ARGS K1 "log,deny,msg:'Acme attack detected'"
Các action mặc định ModSecurity định nghĩa một danh sách các action mặc định để sử dụng trong những Rule không được chỉ định action Chẳng hạn, khi thực hiện cấu hình trong file modsecurity.conf của ModSecurity, giá trị của SecDefaultAction là
phase:2,log,auditlog,pass Xét một Rule đơn giản không được chỉ định action thuộc modsecurity.conf:
SecRule ARGS K1
Khi ModSecurity hoạt động, Rule trên sẽ được hiểu như sau:
SecRule ARGS K1 phase:2,log,auditlog,pass
Bằng cách này, ModSecurity giúp người dùng triển khai Rule dễ dàng hơn mà không cần phải chỉ định một action lặp lại nhiều lần:
SecDefaultAction phase:2,log,deny,status:404 SecRule ARGS K1
SecRule ARGS K2
SecRule ARGS K99
Các Rule không có điều kiện Action được thiết lập trong chỉ thị SecRule sẽ được tiến hành khi khớp mẫu, nhưng người dùng cũng có thể sử dụng chỉ thị SecAction để triển khai các action đã định
Trang 33nghĩa sẵn Chỉ thị SecAction cho phép chứa duy nhất một tham số, tham số này được dùng để liên kết với thành phần thứ ba trong chỉ thị SecRule
SecAction nolog,pass,setvar:tx.counter=10
Các hàm chuyển đổi
Trong các phương pháp khai thác lỗ hổng ứng dụng web, hacker thường sử dụng các
kỹ thuật biến đổi dữ liệu (obfuscation) để vượt qua cơ chế kiểm tra Để đối phó với kỹ thuật này, ModSecurity hỗ trợ chuyển đổi dữ liệu đầu vào trước khi thực hiện kiểm tra các tấn công Xét trường hợp tấn công SQL injection: hacker có thể thực hiện câu
truy vấn: “id=1&UniON%20SeLeCT%201,2,3,4,5,6” Khi đó, ModSecurity cần
chuyển đổi các ký tự nhận được sang ký tự thường trước khi kiểm tra
Hoặc trong Rule bên dưới, ModSecurity sẽ thực hiện chuyển các ký tự nhận được
thành ký tự thường, đồng thời loại bỏ các ký tự khoảng trắng không cần thiết:
SecRule ARGS "@contains delete from" \ phase:2,t:lowercase,t:compressWhitespace,block
(Lưu ý: Ký tự “\” trong Rule trên dùng để viết xuống dòng đối với các Rule dài.) Kết quả là ModSecurity sẽ thực hiện là lọc những từ khóa có dạng:
delete from DELETE FROM deLeTe fRoM Delete From DELETE\tFROM –
Một số lý do cần sử dụng hàm chuyển đổi:
Với các khai thác sử dụng phương pháp encode base64, ta có thể áp dụng
t:base64Decode để giải mã dữ liệu đầu vào
Tương tự Base64, với trường hợp hacker chuyển đổi kiểu dữ liệu thành dạng Hex
thì t:hexEncode nên được sử dụng để chuyển đổi sang dạng plain text
Trang 34 Blocking Các chỉ thị sử dụng trong ModSecurity được liên kết duy nhất với một action (hoặc
chỉ thị SecAction) để xử lý kết quả đã phân tích trước đó Có ba trạng thái mà
ModSecurity hỗ trợ trong việc ngăn chặn tấn công: Chuyển tiếp sang Rule tiếp theo
Ngưng thực hiện pha hiện thời, nhưng tiếp tục thực hiện phiên trao đổi dữ liệu Ngưng thực hiện pha hiện thời, đồng thời ngừng trao đổi dữ liệu
Thay đổi trình tự thực thi các Rule Giả sử trường hợp các Rule trong ModSecurity được xử lý tuần tự từ Rule đầu tiên đến Rule cuối cùng Nếu có một giá trị khớp mẫu so sánh thì tiến trình kiểm tra trong các Rule tiếp sau đó nên được bỏ qua Để thực hiện việc này, từ khóa skip có thể được đưa vào sử dụng như sau:
SecRule ARGS K1 id:1,nolog,pass,skip:2 SecRule ARGS K2 id:2,nolog,pass
SecRule ARGS K3 id:3,log,block
Với ví dụ trên, khi Rule thứ nhất khớp mẫu thì các Rule tiếp sau sẽ không thực hiện
kiểm tra Từ khóa skip thường được dùng như một phương pháp tối ưu hóa trong
ModSecurity Đôi khi việc thực thi các nhóm Rule có nhiều điều kiện sẽ làm lãng phí tài nguyên CPU Trong trường hợp này, người quản trị có thể thực hiện việc kiểm tra điều kiện của một Rule và nên bỏ qua các bước tiếp theo nếu điều kiện đầu vào không thỏa mãn Chẳng hạn, trong các Rule kiểm tra trong XSS thì các mẫu tấn công như
UNION, ORDER BY, XP_CMD, / / /, 1’ or 1=1 ,… là không cần thiết phải kiểm tra Việc sử dụng từ khóa skip sẽ giúp tối ưu tài nguyên xử lý trong trường hợp này
Trang 35 Cấu trúc If-Then-Else trong ModSecurity Tuy ModSecurity không hỗ trợ các từ khóa if-then-else trong cấu trúc Rule nhưng
người dùng vẫn có thể thực hiện cấu trúc kiểm tra điều kiện theo cách sau:
SecRule ARGS K1 id:1,nolog,pass,skip:2 SecRule ARGS K2 id:2,block
SecAction nolog,pass,skip:1 SecRule ARGS K3 id:3,block SecRule đầu tiên sẽ quyết định một Rule được thực hiện bên dưới Nếu Rule thứ nhất khớp mẫu, thì action skip được thực hiện và chuyển đến thực thi Rule thứ ba Tuy nhiên, nếu Rule thứ nhất không khớp mẫu thì Rule thứ hai sẽ được thực thi và
SecAction sẽ được thực hiện sau đó Cấu trúc rẽ nhánh này đảm bảo Rule thứ ba sẽ không thực thi nếu Rule thứ nhất không khớp mẫu dữ liệu
Biến lưu trữ Có ba loại collection trong ModSecurity có thể được sử dụng để lưu trữ lâu dài Thông thường, các biến sẽ hết hiệu lực mỗi khi request hiện thời được xử lý hoàn tất Tuy
nhiên trong một số trường hợp, người quản trị cần lưu giữ chúng lại và sử dụng chúng
khi thao tác với các request sau này Ba loại collection có thể được sử dụng cho mục đích lưu trữ là IP, SESSION, USER
Collection IP được dùng để lưu thông tin về một user thông qua địa chỉ IP Người quản trị có thể sử dụng nó cho một số mục đích như phát hiện ra user nào request nhiều lần vào một tài nguyên, hoặc số request của một user
Trước khi sử dụng các biến trên, chúng cần được khởi tạo cách sử dụng action
initcol:SecAction initcol:ip=%{REMOTE_ADDR},nolog,pass
Trong đó, REMOTE_ADD là biến lưu địa chỉ IP của client gửi request
Trang 36Sau khi được khởi tạo, giá trị của biến có thể được thao tác gán giá trị thông qua
action setvar
Sự vận dụng biến Hầu hết các dữ liệu mà ModSecurity phân tích sẽ được thao tác ở chế độ chỉ đọc (dữ liệu tĩnh hoặc không thay đổi) Tuy nhiên, ModSecurity cũng hỗ trợ việc tạo ra các
biến có giá trị thay đổi nhằm phục vụ một số mục đích cụ thể
Một biến có thể được tạo ra bằng cách sử dụng action setvar: Đặt giá trị của biến tx.score là 1:
SecAction nolog,pass,setvar:tx.score=1
Xóa giá trị biến tx.score:
SecAction nolog,pass,setvar:!tx.score Giá trị tx.score sẽ tăng thêm 2 mỗi khi thực thi action:
SecAction nolog,pass,setvar:tx.score=+2
Giá trị tx.score sẽ giảm đi 1 khi thực thi action:
SecAction nolog,pass,setvar:tx.score=-1
Trang 37Chương 3: TRIỂN KHAI GIẢI PHÁP MODSECURITY TRÊN HỆ THỐNG
ERP CÔNG TY ĐIỆN LỰC AN GIANG
3.1 Hiện trạng hệ thống thông tin Công ty Điện lực An Giang
Hệ thống thông tin Công ty Điện lực An Giang bao gồm các phân hệ ứng dụng
eOffice, CMIS, FMIS… phục vụ công tác điều hành và sản xuất kinh doanh, trong đó, eOffice vận hành trên nền ứng dụng web, CMIS và FMIS đang trong quá trình chuyển đổi sang nền web Ngoài các chương trình chống virus, hệ thống được bảo vệ bởi thiết bị Firewall nhằm cản lọc các lưu lượng thông tin từ bên ngoài internet Tuy nhiên,
đây là thiết bị đã trang cấp nhiều năm, không có tính năng bảo vệ ứng dụng, nhất là
ứng dụng web đã và đang được triển khai tại Công ty
Hình 3.1 Sơ đồ hệ thống thông tin Công ty Điện lực An Giang 3.2 Mục tiêu triển khai giải pháp WAF ModSecurity
Với thực trạng như trên, việc triển khai giải pháp WAF ModSecurity tăng cường tính an toàn cho ứng dụng web của hệ thống là rất thiết thực Trong phạm vi luận văn này, chúng tôi áp dụng giải pháp cho phân hệ eOffice với mục tiêu cần đạt được như sau:
Khắc phục được lỗ hổng tồn tại của ứng dụng; Có khả năng bảo vệ ứng dụng trước một số phương thức tấn công phổ biến; Đảm bảo tính chủ động, linh hoạt trong việc điều chỉnh, cập nhật tính năng bảo
mật
Trang 383.3 Triển khai WAF ModSecurity
3.3.1 Mô hình triển khai
Hình 3.2 Sơ đồ triển khai ModSecurity
Thông tin hệ thống triển khai:
WAF ModSecurity: Intel Core i3-3220 CPU, 4GB RAM, CentOS 6.5 Operation System, Apache 2.2 Web Server, ModSecurity 2.8.0, hoạt động ở chế độ Reverse Proxy;
Phân hệ bảo vệ: eOffice
Trang 39Quy trình triển khai tổng quát như sau:
Hình 3.3 Quy trình triển khai WAF ModSecurity
Trang 403.3.2 Cài đặt ModSecurity Server CentOS cần có kết nối internet để tải mã nguồn ModSecurity và cài đặt bổ
sung các thư viện phục vụ biên dịch mã nguồn
Tải mã nguồn ModSecurity về server CentOS:
# wget https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz
Giải nén file mã nguồn:
# tar -xvzf /modsecurity-2.8.0.tar.gz
Cài đặt bổ sung các thư viện hỗ trợ cho biên dịch mã nguồn:
# yum install curl-devel libxml libxml2 libxml2-devel gcc
Chuyển vào thư mục đã giải nén mã nguồn ModSecurity:
Bổ sung thông tin cấu hình:
LoadModule security2_module modules/mod_security2.soLoadModule unique_id_module modules/mod_unique_id.so
Kích hoạt Apache ở runlevel 35: