(+84) 463.28.7979

Bảo mật Apache với mod_security


Đây là bài viết hướng dẫn cách cài đặt và cấu hình mod_security.  Mod_security là một module của Apache (Apache 1 và 2) nó cung cấp trong việc phát hiện xâm nhập và phòng chống cho các ứng dụng web với mục đích nhằm bảo vệ các ứng dụng web từ các cuộc tấn công đã được xác định trước hoặc chưa biết, chẳng hạn như tấn công SQL injection, cross-site scripting….

Chú ý: Đây không phải là cách duy nhất để bạn bảo vệ cho Apache vẫn còn nhiều cách khác, bạn có thể tìm hiểu thêm các cách khác.

1. Cài đặt.

1.1. Cài đặt trên Debian

Mod_security có sẵn trong Package của Debian và có sẵn trong Debian repositories do vậy bạn có thể dễ dàng cài đặt như sau:

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.2 Cài đặt trên Ubuntu.

Cũng tương tự như cách cài đặt trên Debian, bạn sử dụng các lệnh sau:

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.3 Fedora Core.

Trên Fedora bạn có thể dễ dàng cài đặt mod_security như sau:

yum install mod_security
/etc/init.d/httpd restart

Bạn sẽ tìm thấy file /etc/httpd/conf.d/mod_security.conf nó chứa sẵn cấu hình mod_security.

vi /etc/httpd/conf.d/mod_security.conf

# Example configuration file for the mod_security Apache module

LoadModule security_module modules/mod_security.so

<IfModule mod_security.c>

# Turn the filtering engine On or Off

SecFilterEngine On

# The audit engine works independently and

# can be turned On of Off on the per-server or

# on the per-directory basis

SecAuditEngine RelevantOnly

Bạn có thể dễ dàng giữ lại cấu hình này, nhưng tốt hơn hết là bạn phải hiểu được mod_security nó có khả năng làm việc gì.

2. Cấu hình

Bây giờ là lúc bạn bắt đầu cấu hình cơ bản với mod_security, mod_security cho phép bạn dễ dàng chèn các rule vào. Chúng tôi chèn tất cả các rule của mod_security trong cấu hình global Apache.

Trên Debian và Ubuntu, bạn chỉnh sửa file /etc/apache2/apache2.conf và chèn vào cuối dòng.

Debian/Ubuntu:

vi /etc/apache2/apache2.conf


<IfModule mod_security.c>
    # Turn the filtering engine On or Off
    SecFilterEngine On

    # Make sure that URL encoding is valid
    SecFilterCheckURLEncoding On

    # Unicode encoding check
    SecFilterCheckUnicodeEncoding Off

    # Only allow bytes from this range
    SecFilterForceByteRange 0 255

    # Only log suspicious requests
    SecAuditEngine RelevantOnly

    # The name of the audit log file
    SecAuditLog /var/log/apache2/audit_log
    # Debug level set to a minimum
    SecFilterDebugLog /var/log/apache2/modsec_debug_log
    SecFilterDebugLevel 0

    # Should mod_security inspect POST payloads
    SecFilterScanPOST On

    # By default log and deny suspicious requests
    # with HTTP status 500
    SecFilterDefaultAction "deny,log,status:500"

</IfModule>

Trên Fedora, chúng ta add tương tự vào file /etc/httpd/conf.d/mod_security.conf, nhưng thay đổi đường dẫn file Logo bởi vì Fedora sử dụng /var/log/httpd như là thư mục thay vì /var/log/apache2.

Fedora:

vi /etc/httpd/conf.d/mod_security.conf

<IfModule mod_security.c>
    # Turn the filtering engine On or Off
    SecFilterEngine On

    # Make sure that URL encoding is valid
    SecFilterCheckURLEncoding On

    # Unicode encoding check
    SecFilterCheckUnicodeEncoding Off

    # Only allow bytes from this range
    SecFilterForceByteRange 0 255

    # Only log suspicious requests
    SecAuditEngine RelevantOnly

    # The name of the audit log file
    SecAuditLog /var/log/httpd/audit_log
    # Debug level set to a minimum
    SecFilterDebugLog /var/log/httpd/modsec_debug_log
    SecFilterDebugLevel 0

    # Should mod_security inspect POST payloads
    SecFilterScanPOST On

    # By default log and deny suspicious requests
    # with HTTP status 500
    SecFilterDefaultAction "deny,log,status:500"

</IfModule>

Sau khi hoàn tất bạn khởi động lại dịch vụ Apache:

Debian/Ubuntu:

/etc/init.d/apache2 restart

Fedora:

/etc/init.d/httpd restart

Theo howtoforge.com

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>