Cách cài đặt Apache với ModSecurity trên Ubuntu 22.04

theanh

Administrator
Nhân viên
ModSecurity là một công cụ tường lửa miễn phí và mã nguồn mở được hỗ trợ bởi nhiều máy chủ web, chẳng hạn như Apache, Nginx và IIS. Đây là một tường lửa dựa trên chữ ký có khả năng chặn một số loại tấn công bao gồm, tấn công tập lệnh chéo trang (XSS), tấn công vũ phu và tấn công tiêm mã đã biết. Nó cung cấp các bộ quy tắc khác nhau cho phép bạn tùy chỉnh và cấu hình bảo mật máy chủ của mình. Nó cũng có thể giám sát lưu lượng truy cập web theo thời gian thực và giúp bạn phát hiện và phản hồi các cuộc xâm nhập.

Trong hướng dẫn này, tôi sẽ giải thích cách thiết lập ModSecurity với Apache trên Ubuntu 22.04.

Yêu cầu​

  • Một máy chủ chạy Ubuntu 22.04.
  • Mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cài đặt Máy chủ web Apache​

Trước khi bắt đầu, bạn sẽ cần cài đặt phiên bản mới nhất của gói máy chủ web Apache trên máy chủ của mình. Trước tiên, hãy cài đặt tất cả các phụ thuộc cần thiết bằng lệnh sau:
Mã:
apt install gnupg2 software-properties-common curl wget git unzip -y
Sau khi tất cả các phụ thuộc được cài đặt, hãy thêm kho lưu trữ Apache bằng lệnh sau lệnh:
Mã:
add-apt-repository ppa:ondrej/apache2 -y
Tiếp theo, hãy cập nhật bộ đệm kho lưu trữ và cài đặt gói Apache bằng lệnh sau:
Mã:
apt update -y
apt install apache2 -y
Sau khi Apache được cài đặt, bạn có thể tiến hành bước tiếp theo.

Cài đặt ModSecurity​

Tiếp theo, hãy chạy lệnh sau để cài đặt ModSecurity Apache module:
Mã:
apt install libapache2-mod-security2 -y
Sau khi gói được cài đặt, hãy bật module ModSecurity bằng lệnh sau:
Mã:
a2enmod security2
Tiếp theo, khởi động lại dịch vụ Apache để áp dụng thay đổi:
Mã:
systemctl restart apache2
Bạn cũng có thể kiểm tra trạng thái Apache bằng lệnh sau:
Mã:
systemctl status apache2
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-10-18 10:49:42 UTC; 4s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 74445 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 74449 (apache2) Tasks: 55 (limit: 2242) Memory: 29.7M CPU: 229ms CGroup: /system.slice/apache2.service ??74449 /usr/sbin/apache2 -k start ??74450 /usr/sbin/apache2 -k start ??74451 /usr/sbin/apache2 -k start
Oct 18 10:49:42 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

Cấu hình ModSecurity​

Tiếp theo, chỉnh sửa tệp cấu hình ModSecurity:
Mã:
nano /etc/apache2/mods-enabled/security2.conf
Bỏ chú thích cho mục sau dòng:
Mã:
IncludeOptional /etc/modsecurity/*.conf
Lưu và đóng tệp sau đó đổi tên tệp cấu hình ModSecurity:
Mã:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Tiếp theo, chỉnh sửa cấu hình ModeSecurity tệp:
Mã:
nano /etc/modsecurity/modsecurity.conf
Thay đổi các dòng sau:
Mã:
SecRuleEngine On
SecAuditLogParts ABCEFHJKZ
Lưu và đóng tệp sau đó khởi động lại dịch vụ Apache để áp dụng thay đổi:
Mã:
systemctl restart apache2

Cài đặt Bộ quy tắc cốt lõi OWASP​

Để bảo vệ ứng dụng web của bạn khỏi các cuộc tấn công độc hại, bạn sẽ cần tải xuống và cài đặt bộ quy tắc cốt lõi OWASP vào máy chủ của mình.

Đầu tiên, hãy tải xuống bộ quy tắc mới nhất bằng lệnh sau:
Mã:
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
Sau khi Khi quá trình tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Mã:
tar xvf v3.3.0.tar.gz
Tiếp theo, tạo một thư mục cho các quy tắc và di chuyển các quy tắc đã giải nén vào bên trong thư mục đó:
Mã:
mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs
Tiếp theo, điều hướng đến thư mục quy tắc OWASP của bạn và đổi tên cấu hình tệp:
Mã:
cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf
Tiếp theo, chỉnh sửa tệp cấu hình ModSecurity và xác định đường dẫn của bộ quy tắc OWASP của bạn:
Mã:
nano /etc/apache2/mods-enabled/security2.conf
Thêm nội dung sau dòng:
Mã:
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf
Lưu và đóng tệp, sau đó kiểm tra lỗi cú pháp của Apache bằng lệnh sau:
Mã:
apache2ctl -t
Nếu mọi thứ ổn, bạn sẽ nhận được kết quả sau:
Mã:
Syntax OK
Cuối cùng, khởi động lại dịch vụ Apache để áp dụng cấu hình:
Mã:
systemctl restart apache2

Xác minh ModSecurity​

Tại thời điểm này, máy chủ web Apache được cấu hình với ModSecurity. Bây giờ, đã đến lúc kiểm tra xem nó có hoạt động hay không.

Mở giao diện dòng lệnh và chạy lệnh sau:
Mã:
curl http://localhost/index.html?exec=/bin/bash
Bạn sẽ nhận được lỗi 403 Forbidden:
Mã:
403 Forbidden

[HEADING=1]Forbidden[/HEADING]

You don't have permission to access this resource.


Apache/2.4.52 (Ubuntu) Server at localhost Port 80
Bạn cũng có thể kiểm tra ModSecurity bằng cách sử dụng lệnh sau lệnh:
Mã:
curl localhost?doc=/bin/ls
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
403 Forbidden

[HEADING=1]Forbidden[/HEADING]

You don't have permission to access this resource.


Apache/2.4.52 (Ubuntu) Server at localhost Port 80
Bạn cũng có thể kiểm tra nhật ký ModSecurity để biết thêm thông tin:
Mã:
tail /var/log/apache2/modsec_audit.log
Bạn sẽ nhận được kết quả sau:
Mã:
SecRule "TX:INBOUND_ANOMALY_SCORE" "@ge %{tx.inbound_anomaly_score_threshold}" "phase:5,id:980130,pass,t:none,log,noauditlog,msg:'Inbound Anomaly Score Exceeded (Total Inbound Score: %{TX.INBOUND_ANOMALY_SCORE} - SQLI=%{tx.sql_injection_score},XSS=%{tx.xss_score},RFI=%{tx.rfi_score},LFI=%{tx.lfi_score},RCE=%{tx.rce_score},PHPI=%{tx.php_injection_score},HTTP=%{tx.http_violation_score},SESS=%{tx.session_fixation_score}): individual paranoia level scores: %{TX.ANOMALY_SCORE_PL1}, %{TX.ANOMALY_SCORE_PL2}, %{TX.ANOMALY_SCORE_PL3}, %{TX.ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0"
SecAction "phase:5,id:980145,pass,t:none,nolog,noauditlog,ver:OWASP_CRS/3.3.0,setvar:tx.executing_anomaly_score=%{tx.outbound_anomaly_score_pl1},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl2},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl3},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl4}"
SecRule "TX:OUTBOUND_ANOMALY_SCORE" "@lt %{tx.outbound_anomaly_score_threshold}" "phase:5,id:980150,pass,t:none,log,noauditlog,msg:'Outbound Anomaly Score (Total Outbound Score: %{TX.OUTBOUND_ANOMALY_SCORE}): individual paranoia level scores: %{TX.OUTBOUND_ANOMALY_SCORE_PL1}, %{TX.OUTBOUND_ANOMALY_SCORE_PL2}, %{TX.OUTBOUND_ANOMALY_SCORE_PL3}, %{TX.OUTBOUND_ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0,chain"
#SecRule "TX:MONITOR_ANOMALY_SCORE" "@gt 1"
--c2d93508-Z--

Cấu hình Logrotate​

Nếu bạn đang sử dụng ModSecurity trên một trang web có lưu lượng truy cập cao. Nhật ký kiểm tra ModSecurity có thể trở nên quá lớn rất nhanh. Trong trường hợp này, bạn có thể cấu hình vòng quay nhật ký cho nhật ký kiểm tra ModSecurity. Bạn có thể cấu hình nó bằng lệnh sau:
Mã:
nano /etc/logrotate.d/modsec
Thêm các dòng sau:
Mã:
/var/log/apache2/modsec_audit.log
{ rotate 31 daily missingok compress delaycompress notifempty
}
Lưu và đóng tệp khi bạn hoàn tất. Tệp cấu hình ở trên sẽ xoay vòng tệp nhật ký hàng ngày và nén tệp đó.

Kết luận​

Trong bài đăng này, chúng tôi đã giải thích cách thiết lập ModSecurity với Apache trên Ubuntu 22.04. Chúng tôi cũng tải xuống và cấu hình bộ quy tắc OWASP với ModSecurity. Trang web của bạn không được bảo vệ hoàn toàn khỏi các loại tấn công khác nhau. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên