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