Tải bản đầy đủ (.pdf) (7 trang)

Cài đặt mod_security/mod_security2 trên SuSE Linux Enterprise Server 10 (SLES10) pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (119.1 KB, 7 trang )

Cài đặt mod_security/mod_security2 trên SuSE Linux
Enterprise Server 10 (SLES10)
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.

Không may mắn là mod_security không phải là một phần của bản SLES10. Để
cài đặt mod_security cần cài đặt một vài module của hãng thứ 3. Bài viết này
hướng dẫn cách cài đặt mod_security trên SLES10. Cũng như các gỡ bỏ
module, bằng cách xây dựng từ gói RPM bạn có thể gỡ bỏ một cách dễ dàng.
Cài đặt Apache2

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

$ yast2 -i apache2

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:

$ yast2 -i libxml2-devel pcre-devel apache2-devel curl-devel gcc gcc-c++

Apache2-devel là bắt buộc cho apxs2. curl là tùy chọn.

Cài đặt và checkinstall (để đóng gói)

Để theo dõi được các phần mềm được cài đặt và cho phép người dùng có thể
gỡ bỏ và cập nhật phần mềm, checkinstall có thể được xây dựng RPM,
DEBIAN (DEB) và các gói Slackware. Thay vì thực thi "make install" chỉ cần


chạy "checkinstall" và checkinstall sẽ lấy tất cả các tập tin mà có thể được cài
đặt bằng "make install".

Tải checkinstall tại : c-
linux.com.mx/~izto/checkinstall/download.php.

$ wget c-
linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.1.tgz
$ make
$ make install
$ checkinstall
$ cp /usr/src/packages/RPMS/i386/checkinstall-1.6.1-1.i386.rpm .
$ rpm -ivh checkinstall-1.6.1-1.i386.rpm

Tải về và cài đặt liblua

Ngôn ngữ LUA được sử dụng bởi mod_security để cấu hình. Bạn cần compile
LUA như là một module chia sẻ (shared module).

Tải LUA tại:

$ wget
$ tar -zxvf lua-5.1.3.tar.gz
$ cd lua-5.1.3
$ make linux
$ checkinstall

[ ]
1 - Summary: [ The LUA programming language ]
2 - Name: [ lua ]

3 - Version: [ 5.1.3 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Development/Languages/Lua ]
7 - Architecture: [ i386 ]
8 - Source location: [ ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ lua ]
[ ]

$ cp /usr/src/packages/RPMS/i386/lua-5.1.3-1.i386.rpm
$ rpm -ivh /lua-5.1.3-1.i386.rpm

Bây giờ bạn cần build một thư viện chia sẻ (shared library) từ gói nén liblua.

$ cd /usr/local/lib
$ gcc -shared -o liblua.5.1.3.so /usr/local/lib/liblua.a
$ ln -s liblua.5.1.3.so liblua.so

Tải về và cài đặt mod_security

Tải mod_security tại :

Tài liệu về cách cài đặt có thể xem tại đây:


$ cd modsecurity-apache_2.5.2
$ cd apache2
$ ./configure

$ make
$ checkinstall


1 - Summary: [ mod_security application level firewall ]
2 - Name: [ apache2-mod_security ]
3 - Version: [ 2.5.2 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Productivity/Networking/Web/Servers ]
7 - Architecture: [ i386 ]
8 - Source location: [ ]
9 - Alternate source location: [ ]
10 - Requires: [ apache2 libxml2 ]
11 - Provides: [ mod_security ]

$ cp /usr/src/packages/RPMS/i386/apache2-mod_security-2.5.2-1.i386.rpm
/ /
$ rpm -ivh / /apache2-mod_security-2.5.2-1.i386.rpm

Cấu hình Apache2 cho mod_security

# /etc/apache2/conf.d/mod_security.conf
LoadFile /usr/lib/libxml2.so
LoadFile /usr/local/lib/liblua.so
LoadModule security2_module /usr/lib/apache2/mod_security2.so
Include modsecurity/*.conf
LoadModule unique_id_module /usr/lib/apache2/mod_unique_id.so

Xả nén và cấu hình Core Rules


Tải core rules tại : />rules_2.5-1.6.0.tar.gz.

$ cd /etc/apache2
$ mkdir modsecurity
$ cd modsecurity
$ tar -zxvf /modsecurity-core-rules_2.5-1.6.0.tar.gz

Hiệu chỉnh modsecurity_crs_10_config.conf cho đúng với đích của tập tin cấu
hình:

vi modsecurity_crs_10_config.conf
SecAuditLog=
SecDebugLog=

Khởi động lại Apache và thử trang web của bạn

Đầu tiên khởi động lại apache để các cấu hình hiện tại có hiệu lực:

$ rcapache restart

Để thử quá trình cài đặt, viết một đoạn mã PHP đơn giản như sau:

# /srv/www/htdoc/index.php
file $text=$_GET['file'];
echo "Content of File $text";
echo `cat $text`;
?>

Sau đó truy cập tới nó:




Bạn sẽ nhận được lỗi ERROR 501 trên trình duyệt và tập tin SecAuditLog sẽ
hiển thị:

[ ]
GET /index.php?file=/etc/passwd HTTP/1.1
[ ]
Message: Access denied with code 501 (phase 2). Pattern match
"(?:\b(?:\.(?:ht(?:access|passwd|group
)|www_?acl)|global\.asa|httpd\.conf|boot\.ini)\b|\/etc\/)" at ARGS:file. [file
"/etc/apache2/modsecu
rity/modsecurity_crs_40_generic_attacks.conf"] [line "114"] [id "950005"]
[msg "Remote File Access A
ttempt"] [data "/etc/"] [severity "CRITICAL"] [tag
"WEB_ATTACK/FILE_INJECTION"]

Khi truy cập tới máy chủ của bạn bằng địa chỉ IP, một quy tắc của
modsecurity_crs_21_protocol_anomalies.conf sẽ loại bỏ nó. Chỉnh sửa tập tin
và tìm "Check that the host header is not an IP address".

×