Thursday, May 24, 2012

Hướng dẫn setup ModSecurity trên CentOS 29 Aug Install mod_security

1. install lib

yum install httpd-devel libxml2-devel pcre-devel apr-devel apr-util-devel curl-devel -y

2. Download and install mod_security

cd /tmp
wget http://ncu.dl.sourceforge.net/project/mod-security/modsecurity-apache/2.6.3/modsecurity-apache_2.6.3.tar.gz
tar xzvf modsecurity-apache_2.6.3.tar.gz
cd ./modsecurity-apache_2.6.3
./configure
make && make install
cp /usr/local/modsecurity/lib/mod_security2.so /etc/httpd/modules

Hoặc là :
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

touch /etc/httpd/conf.d/modsecurity.conf

6. reload apache

service httpd restart

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:
Phiên bản dùng để DEMO là mod_security2.5.2 trên CentOS.Các bạn có thể áp dụng các command này đối với Fedora hay Redhat…
Đầu tiên bạn cần cài đặt apache2. Rất đơn giản bằng cách sử dụng câu lệnh sau:

Code:
yum -y install httpd*

Cài đặt các gói yêu cầu:

Một vài module cần thiết phải được cài đặt để chuẩn bị cho việc cài đặt mod_security. Hãy cài những gói sau:
Code:
yum –y install libxml2* pcre* curl* gcc.i386 gcc-c++.i386

Download mã nguồn MS:

Giải nén gói MS
Code:
tar -vxzf modsecurity-apache_2.5.12.tar.gz

Setup MS
Code:
[root@dhcppc1 ~]# cd modsecurity-apache_2.5.12/apache2/
[root@dhcppc1 apache2]# ls
[root@dhcppc1 apache2]# ./configure
[root@dhcppc1 apache2]#make

Sau khi biên dịch thành công file mod_security2.so sẽ được tạo ra trong thư mục .libs.
Tích hợp MS vào Apache
Để Apache nhận ra sự tồn tại của MS chúng ta cần copy mod_security2.so đến thư mục chứa modules của apache.
đối với centos là /etc/httpd/modules :
Code:
cp .libs/mod_security2.so /etc/httpd/modules/

và sửa lại file httpd.conf để load module bằng cách thêm vào httpd.conf dòng
Code:
nano /etc/httpd/conf/httpd.conf

Thêm vào dòng :

LoadModule security2_module modules/mod_security2.so

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
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 : 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

Trên đây chỉ là vài cấu hình cơ bản,Còn rất nhiều kiểu cấu hình mà mình không đề cập đến các bạn tìm hiểu thêm trong quyển EBOOK modsecurity này nhé: http://www.mediafire.com/?ylmmudgjmzm (tùy thuộc vào hệ thống của bạn mà có cấu hình cho thích hợp).
Chúc bạn thành công.

No comments:

Post a Comment