1. Trang chủ
  2. » Luận Văn - Báo Cáo

đề tài tìm hiểu mod_security và demo tính năng

24 1,2K 1

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 240 KB

Nội dung

Để triển khai chúng thànhcông, bạn cần phải hiểu rõ các hoạt động của ứng dụng một cách đầy đủ và cấu hình các quy tắc tường lửa một cách cẩn thận.. Bạn không phải một chuyên giatrong lĩ

Trang 2

Mục Lục

Chương 1: Giới thiệu 3

Chương 2: Modsecurity 4

I Các khả năng của mod_security 5

II Cài đặt 7

1 Download mod_security: 7

2 Trước khi cài đặt 7

3 Giải nén 7

4 Biên dịch 8

5 Tích hợp modsecurity vào apache 8

6 Khởi động lại apache 8

III Cấu hình cơ bản 8

1 File cấu hình 8

2 Turning Rule on and off 8

3 SecDefaultAction 9

IV Rules 9

1 Xây dựng rules như thế nào? 9

2 Cấu trúc của rules 11

2.1 Variables 11

2.2 Collections 12

2.3 Operators 12

2.4 Actions 13

V Logging 14

1 Debug Log 14

2 Audit logging 15

3 Tuỳ biến thông tin log 16

VI Xây dựng chính sách trên Modsecurity chống lại một số tấn công 16

Trang 3

1 SQL Injection 16

2 XSS Attack 17

3 Brute force attacks 20

4 HTTP FingerPrinting 21

Chương 3: Kịch bản Demo 22

Tài liệu tham khảo 24

Trang 4

Chương 1: Giới thiệu

Tường lửa ứng dụng web không phổ biến như tường lửa mạng, nhưng nó

đã được đề cập đến trong các tin tức, bài báo và hội thảo bảo mật hiệnnay Các doanh nghiệp đã chấp nhận sử dụng công nghệ này bởi vì nónâng cao an toàn web một cách đáng kể Nhưng cấu hình, triển khai vàduy trì công nghệ mới này không hề đơn giản Để triển khai chúng thànhcông, bạn cần phải hiểu rõ các hoạt động của ứng dụng một cách đầy đủ

và cấu hình các quy tắc tường lửa một cách cẩn thận Hơn nữa, chi phí đểmua được sản phẩm thương mại là rất đắt đỏ, chúng tôi khuyến khích bắtđầu sử dụng với các sản phẩm mã nguồn mở, chẳng hạn ModSecurity, do

đó bạn có thể đưa ra quyết định, nếu giải pháp này là thích hợp với ngânsách và môi trường mạng của bạn

Trong vài năm gần đây, các lỗ hổng ứng dụng web đã trở thành mối đedọa lớn nhất trong môi trường công nghệ thông tin Theo cơ sở dữ liệu lổhổng mã nguồn mở (OSVDB), các mối đe dọa ứng dụng web chiếm hơn50% tất cả các lỗ hổng trong năm 2010 Bạn không phải một chuyên giatrong lĩnh vực IT để cấu hình các ứng dụng web đã trở nên sử dụng rộngrãi trong cuộc sống cũng như trong kinh doanh Do đó, bảo mật các ứngdụng web đã trở thành một vấn đề quan trọng nhất mà bạn cần phải chú ýnhư người dùng cuối hoặc một người kinh doanh

Tường lửa ứng dụng web (WAF) là một dạng tường lửa nhằm lọc các lưulượng HTTP dựa trên một tập quy tắc Nó kiểm tra ở mức ứng dụng vìvậy nó thường đi kèm như một thiết bị hoặc một mô đun trong máy chủ,

có chức năng xác định và ngăn chặn các tấn công web phổ biến nhưcross-site scritpting (XSS) và SQL injection bằng việc tùy chỉnh các quytắc Do đó, việc tùy chỉnh các quy tắc này là rất đáng quan tâm và yêucầu bảo trì cao

Có nhiều cách để bảo vệ ứng dụng web, chẳng hạn như thực hiện mộtđoạn mã an toàn, quản lý cấu hình an toàn, thực hiện đánh giá lỗ hổng vàtriển khai tường lửa ứng dụng web, nhưng không có một giải pháp nào làhoàn hảo, việc sử dụng tường lửa ứng dụng web chỉ là một phương thứcbảo mật ứng dụng Kỹ thuật này tương đối mới so với các công nghệkhác, nhưng nó có thể trở thành một giải pháp hữu hiệu khi bạn cấu hình

và sử dụng nó đúng cách

Trong bài giới thiệu này, Modsecurity sẽ được sử dụng để minh hoạ làmthế nào bảo mật ứng dụng web sử dụng WAF Modsecurity bảo vệ các

Trang 5

ứng dụng web từ nhiều cuộc tấn công và cho phép giám sát lưu lượngHTTP với sự can thiệp không nhiều của cơ sở hạ tầng hiện có Nó là một

mô đun mã nguồn mở của ứng dụng máy chủ web Apache và nó đã đượcbảo trì bởi SpiderLabs, Trustwave Từ khi nó là một sản phẩm mã nguồn

mở, nó mặc nhiên là miễn phí và nhiều người dùng sử dụng đã góp phầncải thiện và duy trì sản phẩm này

WAF không phải là một công cụ mà chỉ nhằm ngăn chặn các hoạt độngnguy hiểm tại lớp ứng dụng Nó cũng có thể được sử dụng để phân tích

và phát hiện các lưu lượng nguy hiểm tấn công vào các ứng dụng Do đó,phần sau của loạt bài viết này sẽ minh họa làm thế nào phân tích các tấncông web phổ biến sử dụng WAF để phát hiện và ghi lại các khả năngcùng với nhật ký máy chủ Web Apache

Chương 2: Modsecurity

Mod_security là một opensource web application firewall được IvanRistic phát triển dành cho Apache Web Server Ivan Ristic là tác giảquyển sách.Ông là một người có rất nhiều kinh nghiệm trong bảo vệApache Web Server Ông đã có nhiều thời gian nghiên cứu WebApplication 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ệcnhư một developer, system architect, technical director trong phát triểnphầ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 mod_security sử dụng giấy phép GPL, hoàn toàn miễn phí.Ngoài ra nếu muốn có sự hỗ trợ thì bạn có thể mua nó tại công tyThinkingStone của ông (http://www.thinkingstone.com)

Trang 6

I Các khả năng của mod_security

- Request filtering : tất cả các request gửi đến web server đều được phântích và cản lọc (filter) trước khi chúng được đưa đến các modules khác để

xử lý

- Anti-evasion techniques: paths và parameters được chuẩn hoá trước khiphân tích để chống evasion techniques Kỹ thuật này sẽ được thảo luận ởphần sau

- Understanding of the HTTP protocol: mod_security là web applicationfirewall nên nó có khả năng hiểu được HTTP protocol Mod_security cókhả năng cản lọc dựa trên các thông tin ở HTTP Header hay có thể xemxét đến từng parameters hay cookies của các requests vv

- POST payload analysis: ngoài việc cản lọc dựa trên HTTP Header,mod_security 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 )

để chúng ta có thể xem xét sau nếu cần

- HTTPS filtering: mod_security có thể phân tích HTTPS

- Compressed content filtering: mod_security sẽ phân tích sau khi đãdecompress các request data

Quá trình xử lý các request của Apache và mod_security

Trang 7

Modsecurity cho phép bạn đặ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 sau

khi Apache đọc request header, lúc này phần request body vẫn chưa đượcđọc

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 oriented thương được đặt ở đây Ở thời điểm này bạn đã nhận đủ các

application-request argument và phần application-request body đã được đọc.Modsecurity hỗ trợ

ba loại mã hoá request body

+ 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 tich dữ liệu XML

Trang 8

Phase Response Header: đây là thời điểm ngay sau khi phần response

header được gửi trả về cho client Bạn đặt rule ở đây nếu muốn giám sátquá trình sau khi phần response được gửi đi

Phase Response Body: đây là thời điểm bạn muốn kiểm tra những dữ

liệu HTML gửi trả về

Phase logging: đây 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 errormessage log của Apache Đây cung là thời điểm cuối cùng để bạn chặncác connection không mong muốn, kiểm tra các response header mà bạnkhông thể kiểm tra ở phase 3 và phase 4

II Cài đặt

1 Download mod_security:

#wgethttp://www.modsecurity.org/download/modsecurity-apache_2.5.13.tar.gz

2 Trước khi cài đặt

Cần các thư viện apxs, libxml2 và cần file mod_unique_id.so

Cài đặt thư viện

#yum install httpd-devel (cài apxs)

#yum install libxml2-develThêm dòng sau vào file http.conf (file nằm trong /etc/httpd/conf) dòngsau

LoadModule unique_id_module modules/mod_unique_id.so

(Chú ý: thêm vào đoạn có nhiều LoadModule đầu dòng)

#tar xzvf modsecurity-apache_2.5.13.tar.gz

4 Biên dịch

Trang 9

Tại thư mục apache2 gõ các lệnh sau

#./configure

#make

#make install

5 Tích hợp modsecurity vào apache

Thêm dòng sau vào file httpd.conf

LoadModule security2_module modules/mod_security2.so

6 Khởi động lại apache

Ngoài ra có thể đặt các cấu hình này vào một file riêng, chẳng hạnmodsecurity.conf trong thư mục conf.d và sau đó chúng ta cần thêm vàohttpd.conf

Include conf.d/modsecurity.conf

(mặc định trong httpd.conf đã có dòng include conf.d/*.conf với dòng này

nó sẽ thực hiện tất cả các file có phần mở rộng là conf)

Theo mặc định thì rule engine bị disable Để kích hoạt modsecurity ta cầnthêm chỉ thị sau vào file cấu hình

SecRuleEngine On

Directive này dùng để điều khiển rule engine, chúng ta có thể sử dụng cáctuỳ chọn là On, Off hoặc DynamicOnly

Trang 10

Off : Vô hiệu hoá modsecurity

DetectionOnly : Khi nó phù hợp một luật nào đó thì nó cũng không thựchiện bất kì action nào (nó rất có ích trong trường hợp muốn test một luậtnào đó mà không muốn nó block bất kì request nào có vấn đề với luật)

On : Các rules của modsecurity được áp dụng cho tất cả các nội dung

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) ecko/20060124 Firefox/1.5.0.1

Accept:

text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300

Connection: keep-alive Referer: http://www.modsecurity.org/index.php Cookie: utmz=129890064.1139909500.1.1.utmccn=(direct)|

utmcsr=(direct)|utmcmd=(none);

Trang 11

1140275483.1140425527.13;

utmb=129890064; utmc=129890064

Xem xét request ở trên chúng ta có thể thấy các HTTP Header sau :

GET – Đây là request method Host

User-Agent Accept Accept-Language Accept-Encoding Accept-Encoding Keep-Alive

Connection Referer

Modsecurity sẽ sử dụng thông tin này trong các rules của nó để cản lọccác requests Và không chỉ trong header, modsecurity cũng có thể xemxét cả POST payload như đã nhắc tới ở trên,

Chẳng hạn ta có cấm request có Referer là www.abc.com ta có rule sau:

SecRule HTTP_Referer “www\.abc\.com”

Không cho phép User-Agent có từ HotBar:

SecRule HTTP_User-Agent “HotBar”

2 Cấu trúc của rules

SecRule VARIABLES OPERATOR [ACTIONS]

2.1 Variables

SecRule ARGS dirty

Có thể dùng 1 hay nhiều variables

SecRule ARGS|REQUEST_HEADERS:User-Agent dirty

REMOTE_ADDR : Địa chỉ IP của clientREMOTE_HOST : hostname của client (nếu tồn tại)

Trang 12

REMOTE_USER : Authenticated username (nếu tồn tại)REMOTE_IDENT : Remote Username (lấy từ inetd, ít dùng)REQUEST_METHOD : Request Method (GET, HEAD, POST )SCRIPT_FILENAME : Đường dẫn đầy đủ của script được thực thiPATH_INFO : Phần mở rộng của URI phía sau tên của một script,

ví dụ: /archive.php/5 thì PATH_INFO là /5QUERY_STRING : URI phía sau dấu ? Ví dụ /index.php?i=1 thìQUERY_STRING là i=1

AUTH_TYPE : Basic hoặc Digest AuthenticationDOCUMENT_ROOT : đường dẫn đến documentrootSERVER_ADMIN : email của Server AdministratorSERVER_NAME : hostname của Server

SERVER_ADDR : Địa chỉ IP của ServerSERVER_PORT : Server port

SERVER_PROTOCOL : protocol, (ví dụ HTTP/1.1)SERVER_SOFTWARE : Apache version

TIME_YEAR : Năm hiện tại (2006)TIME_MON : Tháng hiện tại (2)TIME_DAY : Ngày

TIME_HOUR : GiờTIME_MIN : PhútTIME_SEC : GiâyTIME_WDAY : Thứ tự ngày trong tuần (ví dụ 4 - Thursday)TIME : Thời điểm hiện tại được viết theo cấu trúc : YmdHMS

ví dụ: 20060220144530 : 20/02/2006 14h 45' 30''API_VERSION

THE_REQUEST : dòng đầu tiên của request vd: GET / HTTP/1.1REQUEST_URI : Request URI

REQUEST_FILENAME : Tên file được yêu cầu đến

Trang 13

2.2 Collections

Một variables có thể bao gồm 1 hay nhiều phần dữ liệu Khi variable có nhiều hơn 1 giá trị thì ta gọi nó là collection

Ví dụ: với variable ARGS ta có 2 thông số p, và q

SecRule ARGS:p dirty SecRule ARGS:q dirty

Trang 14

deny : Request sẽ bị ngắt, mod_security sẽ trả về HTTP status code 500

hoặc là status code của bạn thiết lập trong chỉ thị status:

pass : Cho phép request tiếp tục được xử lý ở các rules tiếp theo

Allow: Cho phép truy cập ngay lập tức và bỏ qua các phases khác (trừ

phases logging) Nếu muốn chỉ cho qua phase hiện tại thì cần chỉ rõ

allow:phase Khi đó sẽ vẫn được kiểm tra bởi các luật tại các phases sau.

Chỉ cho phép truy cập tới các request phases: allow:request, nó sẽ cho

qua phase 1,2 và vẫn kiểm tra ở phase 3 trở đi

redirect : Redirect một request đến một url nào đó.

Secondary Actions

Secondary actions sẽ bổ sung cho Primary actions, một rule có thể

có nhiều Secondary actions

status : n khi một Request vi phạm một rule nào đó thì

mod_security có thể trả về các HTTP status code n thay vì status code

500 mặc định

exec : thực thi một lệnh nào đó nếu một request vi phạm log : ghi log những request vi phạm rule

nolog : không ghi log

pause : n mod_security sẽ đợi một thời gian n ms rồi mới trả về

kết quả

Flow Actions

chain: kết nối 2 hay nhiều rules lại với nhau

skipnext:n mod_security sẽ bỏ qua n rules theo sau nó

Default Action

Khi một rule không chỉ rõ action thì rule đó sẽ dùng default actionđược thiết lập trong SecDefaultAction

Ví dụ : SecDefaultAction "phase:2,deny,log,status:403"

Trang 15

4 - details of how transactions are handled.

5 - as above, but including information about each piece ofinformation handled

9 - log everything, including very detailed debugging information

2 Audit logging

Apache log ít thông tin vì thế nó không cho phép chúng ta có thể lầnngược các bước của kẻ tấn công Mod_security hỗ trợ audit loging vớiđầy đủ thông tin và từ đó có thể lần ngược lại quá trình của kẻ tấn công,cũng như là chỉnh sửa các rules cho hợp lý tránh bị “false positive” Có 2directives:

SecAuditEngine On : bật audit log lên SecAuditLog logs/audit.log : chỉ ra file lưu trữ log chính

Ngoài ra còn có

SecAuditLog2 logs/audit2.log :chỉ ra file lưu trữ log phụ

Đây là một ví dụ của audit log :

==378bfd37==============================

Trang 16

Request: conmaz.com 203.160.1.170 - - [20/Feb/2006:02:21:52 0600]

"GET /favicon.ico HTTP/1.1" 403 285 "-" "-" - "-"

GET /favicon.ico HTTP/1.1 Cookie: rocker=r0xker Host: conmaz.com Connection: Keep-Alive mod_security-message: Access denied with code 403 Pattern match

-"^$" at HEADER("User-Agent") mod_security-action: 403 HTTP/1.1 403 Forbidden Content-Length: 285 Keep-Alive: timeout=5, max=29 Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1 378bfd37—

SecAuditEngine chấp nhận 3 giá trị sau :

On – log tất cả các requestsOff – không log

RelevantOnly – chỉ log những gì được sinh ra bởi các bộ lọcrules

Ngoài ra mod_security còn hỗ trợ log dựa vào status code , ví dụ bạn cầnlog lại những requests gây ra lỗi 5xx :

SecAuditLogRelevantStatus ^5

Trang 17

VI Xây dựng chính sách trên Modsecurity chống lại một số tấn công

DROP TABLE drop\s+tableALTER TABLE alter\s+tableLOAD_FILE load_fileSELECT * select\s+*

\s : được định nghĩa trong PCRE là một regular expression cho phép pháthiện mọi khoảng trắng và cả các mã thay thế (%20)

Để chống lại tấn công SQL Injection, ta dựa vào các đặc điểm trên từ đóđưa ra rule sau:

SecRule ARGS "union\s+select" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "union\s+all\s+select" "t:lowercase,deny,msg:'SQL

Injection'"

SecRule ARGS "into\s+outfile" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "drop\s+table" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "alter\s+table" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "load_file" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "select\s+from" "t:lowercase,deny,msg:'SQL Injection'"

2 XSS Attack

2.1 Định nghĩa

Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS

để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩthuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI,JSP ) những thẻ HTML hay những đoạn mã script nguy hiểm có thểgây nguy hại cho những người sử dụng khác Trong đó, những đoạn mã

Ngày đăng: 27/06/2014, 14:41

HÌNH ẢNH LIÊN QUAN

Bảng 3.1 Các ký tự nên mã hoá để ngăn chặn tấn công XSS - đề tài   tìm hiểu mod_security và demo tính năng
Bảng 3.1 Các ký tự nên mã hoá để ngăn chặn tấn công XSS (Trang 17)
Bảng 3.2 Các script XSS và biểu thức chính quy - đề tài   tìm hiểu mod_security và demo tính năng
Bảng 3.2 Các script XSS và biểu thức chính quy (Trang 18)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w