I-Khái niệm tổng thể về MS:
Dựa trên hình vẽ các bạn có thể dễ dàng nhận thấy MS là một tường lửa mức ứng dụng. Đứng trước Webserver và có khả năng xử lý traffic trước khi đưa vào Webserver. Mọi yêu cầu gửi đến Webserver từ phía client sẻ được gửi qua modsecurity.
Module mod_security là một module mạnh mẽ. Kết hợp với các luật được định nghĩa, bạn có thể chặn nhiều lỗ hổng của máy chủ được mở ra do việc viết mã php hay perl không tốt.
Modsecurity có thể :
- Theo dõi HTTP traffic để phát hiện những dấu hiệu bất thường.
- Lọc các dữ liệu ra vào webserver.
- Ghi lại các tương tác giữa client và webserver.
- And more ….
Modsecurity hoạt động dựa trên các rules. MS có hoạt động hiệu qua hay không phụ thuộc rất lớn vào khả năng thiết lập rule của người quản trị.
II-Cài đặt và cấu hình:
1. Cài đặt thư viện cần thiết:
[root@vps04 ~]#yum install httpd-devel libxml2-devel pcre-devel apr-devel apr-util-devel curl-devel -y
yum -y install gcc automake autoconf libtool make
+ mod_unique_id: Là mod thường đã được biên dịch cùng Apache. Có thể kiểm tra lại bằng cách tìm trong httpd.conf dòng:
Code:
LoadModule unique_id_module modules/mod_unique_id.so
Nếu chưa có, chúng ta phải thêm vào với nội dung như trên. Restart apache
2. Download and install mod_security
[root@vps04 ~]#cd /usr/local/src [root@vps04 src]#wget http://sourceforge.net/projects/mod-...d?source=files
[root@vps04 src]#tar xzvf modsecurity-apache_2.6.8.tar.gz
[root@vps04 src]#cd ./modsecurity-apache_2.6.8
[root@vps04 modsecurity-apache_2.6.8]#./configure
[root@vps04 modsecurity-apache_2.6.8]#make && make install
[root@vps04 modsecurity-apache_2.6.8]#cp /usr/local/modsecurity/lib/mod_security2.so /etc/httpd/modules
Hoặc là:
[root@vps04 modsecurity-apache_2.6.8]#cp /usr/local/modsecurity/lib/mod_security2.so /usr/local/apache2/modules
3. check loadmodule in httpd.conf
LoadModule unique_id_module modules/mod_unique_id.so
4. Add lines to file httpd.conf (/etc/httpd/httpd.conf or /usr/local/apache2/conf/httpd.conf )
LoadFile /usr/lib64/libxml2.so
LoadModule security2_module modules/mod_security2.so
5. Creat config file for mod_security and Include in httpd.conf
[root@vps04 ~]#touch /etc/httpd/conf.d/modsecurity.conf 6. reload apache
[root@vps04 ~]#service httpd restart File cấu hình MS
Để sử dụng mod_security bạn phải cấu hình cho nó( cái này tùy vào mỗi hệ thống mà sẽ dẫn đến những cấu hình khác nhau). Trước tiên bạn mở file httpd.conf ra và thêm vào dòng sau:
Code:
<IfModule mod_security.c>
# cấu hình cho mod_security
</IfModule>
hoặc bạn có thể tạo riêng một file là modsecurity.conf trong thư mục conf của apache và include nó từ file cấu hình của apache httpd.conf:
dùng lệnh
[root@vps04 ~]#nano /etc/httpd/conf/httpd.conf mở file httpd.conf chèn đoạn sau vào cuối cùng để load file modsecurity.conf sẽ tạo ra.
Code:
<IfModule mod_security.c>
include conf/modsecurity.conf
</IfModule>
Sau khi cài đặt mặc định bộ máy filtering sẽ disable ( muốn dùng mod_security chúng ta phải bật nó lên).
Ban chỉ việc thêm vào dòng sau trong file modsecurity.conf:
SecFilterEngine On ( or Off , DynamicOnly )
Sau đây là cách cấu hình cho mod_security để hạn chế những kiểu tấn công cơ bản:
tạo file :
[root@vps04 ~]#nano /etc/httpd/conf/modsecurity.conf chèn vào nội dung :
Code:
SecFilter xp_regdeletekey
#chống spam mail
<Location /cgi-bin/FormMail>
SecFilterSelective “ARG_recipient” “!@modsecurity.org$”
</Location>
#phát hiện xâm nhập
SecFilterSelective OUTPUT “Volume Serial Number”
SecFilterSelective OUTPUT “Command completed”
SecFilterSelective OUTPUT “Bad command or filename”
SecFilterSelective OUTPUT “file(s) copied”
SecFilterSelective OUTPUT “Index of /cgi-bin/”
SecFilterSelective OUTPUT “.*uid=(”
#Nếu muốn ghi lại log
SecAuditLog logs/audit.log
SecFilterDebugLog logs/modsec.log
SecFilterDebugLevel 0
#Muốn mod_security phân tích POST request, dùng:
SecFilterScanPOST On
# để mod_security *kiểm tra* URL encoding và UTF-8.
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding On
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, 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 nhiều sites không dùng mod_security, bạn có thể dùng:
SecFilterSelective SERVERNAME “^tên_của_web_site$” nolog,allow