Thử thêm cái coi lào
Jul 20

Tìm hiểu về mod_security

Các bạn thân mến. Hôm nay mình post một loạt bài về mod_security. Thực tế là mình mới bắt đầu tìm hiểu về mod_sceurity ngày hôm nay. Những bài viết dưới đây là mình lượm lặt từ các website. Mình đã dùng thử các filter theo như bài hướng dẫn trên Apache2, mod_security2 nhưng nó không hoạt động. Có lẽ những hướng dẫn dưới đây dành cho mod_security1 trên Apache1. Chính vì thế, những bài viết dưới đây có thể chỉ là tham khảo nếu bạn dùng Apache2 + Mod_security2. Để rõ hơn về Mod_security các bạn có thể vào website http://www.modsecurity.org/. Chúc thành công

Mod_security
là một module dùng với Apache cho việc ngăn chặn người dùng *exploit* lỗ hổng của web applications như thực hiện các lệnh thường dùng ở command line ngay trên trang web, chạy shell code để làm tràn bộ đệm (buffer overflow), lấy cookie của browser hay re-direct người thăm trang web sang một trang khác. Dĩ nhiên mod_security không phải là một biện pháp tối ưu nhưng ít nhất nó cũng giúp administrator đỡ phải lo lắng với những lỗi căn bản hay thấy trong các web applications được viết không hoàn hảo.

Bài viết sẽ không giải thích việc cài đặt mod_security mà sẽ đi "Alert" vào các chức năng mod_security hiện có và cách sử dụng.

Bạn sẽ cần điều chỉnh tập tin apache.conf để báo cho Apache biết bạn muốn dùng mod_security. Sau khi cài đặt, mod_security sẽ tự thêm vào LoadModule và AddModule cần thiết trong apache.conf, tuy nhiên muốn thật sự sử dụng nó, bạn phải *turn on* và khai báo các param cần thiết.

Để bật mod_security lên, bạn chỉ thêm SecFilterEngine Onapache.conf. Cũng có thể dùng DynamicOnly nếu bạn chỉ muốn mod_security phân tích dynamic content. Nhưng như vậy vẫn chưa đủ. Sau đây là các param ví dụ, bạn có thể bỏ vào apache.conf.

1. Phòng ngừa characters hay dùng trong shell code để tạo lỗi tràn bộ đệm, dùng:

SecFilterForceByteRange 32 126

Để biết những ký tự tương ứng trong khoảng 32 và 126, bạn có thể tham khảo http://www.asciitable.com

2. Phòng ngừa kiểu tấn công XSS (Cross-site scripting) sử dụng HTML và Java script, dùng:


SecFilter "<(.|\n)+>"
SecFilter "<[[:space:]]*script"


3. Yêu cầu connection đến cổng web server phải có USER_AGENT và HOST headers, dùng:

SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

Cái dòng trên sẽ yêu cần mọi connection đến web server phải có thông tin về browser và host. Nếu bạn sử dụng telnet đến cổng web server, bạn sẽ nhận ErrorDocument 500 của Apache (Internal Server Error) sau lệnh GET.

4. Phòng ngừa SQL-injection, dùng:

SecFilter "delete[[:space:]]+from"

SecFilter "insert[[:space:]]+into"

SecFilter "drop[[:space:]]table"

SecFilter "select.+from"
 

5. Phòng ngừa sử dụng "../" (path traversal), dùng:

SecFilter "\.\./"

7. Muốn mod_security phân tích POST request, dùng:
SecFilterScanPOST On

Bạn cũng có thể dùng SecFilterCheckURLEncoding OnSecFilterCheckUnicodeEncoding On để mod_security *kiểm tra* URL encodingUTF-8.
Lưu ý:nếu bạn dùng SecFilterCheckUnicodeEncoding On, một số bộ gõ hay input tiếng Việt sẽ không hoạt động

Nếu bạn chạy web với nhiều virtualhost và muốn một site trong 10 sites không dùng mod_security, bạn có thể dùng:

SecFilterSelective SERVERNAME "^tên_của_web_site$" nolog,allow

Những parameters trên chỉ là ví dụ một vài chức năng của mod_security. Bạn có thể tìm thấy các ví dụ trên trong gói mod_security. Ngoài các chức năng phòng chống, bạn có thể dùng mod_security cho việc chạy Apache trong chroot. Chưa hết đâu, bạn có thể dùng snort rules với mod_security. Đã chưa? !!!

Có lẽ bạn cũng đã nhận ra, vừa rồi mình mới hướng dẫn cách sử dụng một intrusion prevention system (IPS) sử dụng Apache và mod_security. Bạn còn ngồi đó làm gì? Đến web site http://www.modsecurity.org rồi tải về mà sử dụng. Sau khi có mod_security chạy rồi, báo cho boss biết là "Tôi mới cài đặt instrusion prevention system mà không tốn đồng nào hết! Vậy thì lên lương đi chứ!"


References:

 --------------------------------------------
sưu tầm từ vnlinux


***********************************************************

Có cái này nữa nè:
Với Linux, Unix
SecFilter (uname|id|ls|cat|rm|kill|mail|su)

SecFilter (/home/|/var/|/boot/|/etc/|/bin/|/usr/|/tmp/)

SecFilter "\.\./"

dòng cuối là để ngăn việc đi lên parent directories

Với Windows

SecFilter "(\.cmd|\.bat|\.htw|\.ida|\.idq|\.htr|\.idc|\.printer|\.ini|\.pol|\.dat|\.cfg|\.idx|\.dll|\.inf|\.mdb|\.mde|\.msi|\.reg|\.scr|\.exe)"

SecFilter (c\:|/_vti_bin/|/_vti_cnf/|_vti_pvt/|/IISSAMPLES/|/MSOffice/|/system32/|/msadc/|/inetpub/|/winnt)

Những khu vực nhạy cảm của hệ thống sẽ được mod security bảo vệ, các bạn có thể tuỳ biến số từ khoá cho phù hợp.


Để chặn X-Flash:
Rule ver 1.x:

SecFilterSelective "HEADERS" "x-flash-version"
Rule ver 2.x
SecRule REQUEST_HEADERS_NAMES "x-flash-version"

Nguồn : http://enhack.net/xforce/showthread.php?t=46


***********************************************************

ab
04 August 2009 00:22
Chào bạn.
Bài viết của bạn rất hay và bổ ích. Bạn cho mình hỏi là nếu dùng trên apache nhưng mình dùng 2 virual host trong cùng một host với một địa chỉ ip thì có dùng được Mod_security không? Nếu được thì config như thế nào.  Thanks bạn đã trả lời
wh Homepage
17 October 2010 20:50
[emot]#-o[/emot][emot]<:-P[/emot][emot][-([/emot][emot]:O)[/emot][emot]8-|[/emot][emot]I-)[/emot][emot]#:-s[/emot][emot]:-/[/emot]
Phân trang 1/1 Trang đầu 1 Trang cuối