Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_security

bởi | LPI, Ubuntu

Home » LPI » Ubuntu » Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_security

Chuẩn bị

– Kích hoạt mô-đun [mod_security] để định cấu hình Tường lửa ứng dụng web (WAF).

Chuẩn bị DNS

– Tham khảo bài: Cài đặt DNS Server trên Ubuntu 22.04: Internal Network

root@dns:~# vi /etc/bind/dinhducthanh.local.lan
        IN  NS      dns.dinhducthanh.local.
        IN  A       10.0.0.6
        IN  MX 10   mail.dinhducthanh.local.

www     IN  CNAME   dinhducthanh.local.

root@dns:~# vi /etc/bind/0.0.10.db
6      IN  PTR     dinhducthanh.local.

root@dns:~# systemctl restart named

Chuẩn bị server web

– Cài đặt các server web tham khảo bài: Cài đặt Apache2 trên Ubuntu 22.04

Cấu hình mod_security

Install [mod_security]

root@www:~# apt -y install libapache2-mod-security2

Kích hoạt [mod_security]

root@www:~# cp -p /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
root@www:~# vi /etc/modsecurity/modsecurity.conf
    line 7 : [SecRuleEngine DetectionOnly] là cài đặt default, nó không block các action
    # Nếu bạn muốn block các action, thay đổi thành [SecRuleEngine On]
    SecRuleEngine DetectionOnly
.....
.....

Định dạng secrule

– Có thể viết một quy tắc như sau

SecRule VARIABLES OPERATOR [ACTIONS]
Mỗi tham số có nhiều loại giá trị, tham khảo các tài liệu chính thức bên dưới.
https://github.com/SpiderLabs/ModSecurity/wiki

Kiểm tra lại

– Ví dụ: đặt một số quy tắc và xác minh nó hoạt động bình thường

root@www:~# vi /etc/modsecurity/localrules.conf
# hành động mặc định khi khớp quy tắc
SecDefaultAction "phase:2,deny,log,status:406"
# [etc/passwd] được bao gồm trong URI yêu cầu
SecRule REQUEST_URI "etc/passwd" "id:'500001'"
# [../] được bao gồm trong URI yêu cầu
SecRule REQUEST_URI "\.\./" "id:'500002'"
# [<SCRIPT] được bao gồm trong các đối số
SecRule ARGS "<[Ss][Cc][Rr][Ii][Pp][Tt]" "id:'500003'"
# [SELECT FROM] được bao gồm trong các đối số
SecRule ARGS "[Ss][Ee][Ll][Ee][Cc][Tt][[:space:]]+[Ff][Rr][Oo][Mm]" "id:'500004'"
root@www:~# systemctl restart apache2

– Truy cập vào URI bao gồm các từ bạn đặt và xác minh nó hoạt động bình thường.
Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_security

Nhật ký cho [mod_security]

– Nhật ký cho [mod_security] được đặt trong thư mục như sau

root@www:~# cat /var/log/apache2/modsec_audit.log
--9195e524-H--
Message: Access denied with code 406 (phase 2). Pattern match "<[Ss][Cc][Rr][Ii][Pp][Tt]" at ARGS:q. [file "/etc/modsecurity/localrules.conf"] [line "4"] [id "500003"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 10.0.0.1] ModSecurity: Access denied with code 406 (phase 2). Pattern match "<[Ss][Cc][Rr][Ii][Pp][Tt]" at ARGS:q. [file "/etc/modsecurity/localrules.conf"] [line "4"] [id "500003"] [hostname "dinhducthanh.local"] [uri "/"] [unique_id "ZlSY1vup9FA1sRG-HXGSdgAAAAo"]
Action: Intercepted (phase 2)
Stopwatch: 1716820182490666 1731 (- - -)
Stopwatch2: 1716820182490666 1731; combined=614, p1=463, p2=13, p3=0, p4=0, p5=138, sr=72, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.9.5 (http://www.modsecurity.org/); OWASP_CRS/3.3.2.
Server: Apache
Engine-Mode: "ENABLED"
.....
.....

Các rule mặc định

Các quy tắc chung được cung cấp và áp dụng theo mặc định trong thư mục bên dưới. Tuy nhiên, có thể bạn cần tùy chỉnh chúng cho trang web của riêng mình để không chặn các yêu cầu cần thiết

root@www:~# ll /usr/share/modsecurity-crs/rules
total 676
drwxr-xr-x 2 root root  4096 May 27 21:23 ./
drwxr-xr-x 4 root root  4096 May 27 21:23 ../
-rw-r--r-- 1 root root   786 Aug 24  2021 crawlers-user-agents.data
-rw-r--r-- 1 root root   551 Aug 24  2021 iis-errors.data
-rw-r--r-- 1 root root   933 Aug 24  2021 java-classes.data
-rw-r--r-- 1 root root   264 Aug 24  2021 java-code-leakages.data
-rw-r--r-- 1 root root   240 Aug 24  2021 java-errors.data
-rw-r--r-- 1 root root 31209 Aug 24  2021 lfi-os-files.data
-rw-r--r-- 1 root root  5409 Aug 24  2021 php-config-directives.data
-rw-r--r-- 1 root root  9201 Aug 24  2021 php-errors.data
-rw-r--r-- 1 root root   683 Aug 24  2021 php-function-names-933150.data
-rw-r--r-- 1 root root 21282 Aug 24  2021 php-function-names-933151.data
-rw-r--r-- 1 root root   224 Aug 24  2021 php-variables.data
-rw-r--r-- 1 root root 13513 Aug 24  2021 REQUEST-901-INITIALIZATION.conf
-rw-r--r-- 1 root root 13555 Aug 24  2021 REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf
-rw-r--r-- 1 root root 25812 Aug 24  2021 REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf
.....
.....

Tham khảo thêm

Cài đặt ban đầu Ubuntu 22.04: Network Settings

Cài đặt Apache2 trên Ubuntu 22.04: Virtual Hostings