Plugin Cloudflare không hoạt động với lỗi 403 admin-ajax.php

Khi các bạn muốn tự động xóa cache của cloudflare trên wordpress. Tức là khi có phát sinh dữ liệu động thì cache cloudflare sẽ bị xóa để trang chủ hay các trang bài viết sẽ tự động cập nhật bài mới.

ModSecurity gây lỗi 403 cho admin-ajax.php

Nếu các bạn đang bật modsecurity thì có thể nó là nguyên nhân làm cho lỗi 403 xảy ra với url wp-admin/admin-ajax.php?action=cloudflare_proxy

Cách khắc phục chỉ việc tắt modsecurity là hết lỗi

Tuy nhiên modsecurity bảo mật tốt do vậy, trường hợp bạn vẫn muốn bật modsecurity đồng thời vẫn muốn hết lỗi thì chúng ta sẽ thêm ngoại lệ cho wp-admin/admin-ajax.php?action=cloudflare_proxy

Thêm ngoại lệ ModSecurity để hết lỗi 403 với admin-ajax.php?action=cloudflare_proxy

Nếu bạn dùng script quản trị vps của Wptangtoc ols, thì việc bật tắt Modsecurity ở menu 22.

Đối với WPtangtoc thì nơi lưu trữ file cấu hình của Modsecurity có thể như sau:

Mở file cấu hình /usr/local/lsws/conf/httpd_config.conf => kéo xuống cuối file thấy dòng modsecurity_rules_file /usr/local/lsws/modsec/owasp/crs30/owasp-master.conf là nơi lưu cấu hình. Tiếp đến mở file owasp-master.conf sẽ thấy danh sách sau:

Mở file REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf bên dưới và thêm code ngoại lệ vào:

include /usr/local/lsws/modsec/owasp/crs30/crs-setup.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-901-INITIALIZATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-905-COMMON-EXCEPTIONS.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-910-IP-REPUTATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-911-METHOD-ENFORCEMENT.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-912-DOS-PROTECTION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-913-SCANNER-DETECTION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-921-PROTOCOL-ATTACK.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-949-BLOCKING-EVALUATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-950-DATA-LEAKAGES.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-959-BLOCKING-EVALUATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-980-CORRELATION.conf
include /usr/local/lsws/modsec/owasp/crs30/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Mở file REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf

/usr/local/lsws/modsec/owasp/crs30/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf

Thêm đoạn code ngoại lệ sau:


# Thêm Quy Tắc Ngoại Lệ Cho cloudflare_proxy
SecRule REQUEST_FILENAME "@endsWith /wp-admin/admin-ajax.php" \
    "id:9002780,\
    phase:2,\
    pass,\
    t:none,\
    nolog,\
    ver:'OWASP_CRS/3.3.2',\
    chain"
    SecRule ARGS:action "@streq cloudflare_proxy" \
        "t:none,\
        chain"
        SecRule &ARGS:action "@eq 1" \
            "t:none,\
            ctl:ruleRemoveTargetById=942430"  # Hoặc các ID cụ thể liên quan

Sau khi thêm xong khởi động lại openlitespeed

sudo /usr/local/lsws/bin/lswsctrl restart hoặc wptt reboot-ls nếu dùng wptangtoc

Các bạn có thể tham khảo thêm cách xử lý dưới đây nếu cách trên không hiệu quả:

Lỗi 403 Forbidden là một trong những lỗi phổ biến nhất mà các website thường gặp phải, bên cạnh lỗi 500 (Internal Server Error), lỗi 503 (Service Unavailable) và lỗi 404 (Not Found). Khi bạn truy cập vào một đường dẫn và nhận được thông báo lỗi 403 thì có nghĩa là bạn không có đủ quyền hạn để truy cập đường dẫn đó. Lỗi 403 có thể xuất hiện do nhiều nguyên nhân khác nhau. Trong bài viết hôm nay, tôi sẽ liệt kê cho các bạn một số nguyên nhân phổ biến và cách khắc phục lỗi 403 Forbidden trên website WordPress.

Tham khảo thêm:

Các nguyên nhân gây lỗi 403 Forbidden

  • Do file .htaccess.
  • Do ModSecurity chặn truy cập.
  • Do file và folder bị phân quyền (permission) sai.
  • Do plugin bảo mật hoặc tường lửa (firewall) chặn truy cập.
  • Do mã nguồn WordPress, theme hoặc plugin bị lỗi.

Cách khắc phục lỗi 403 Forbidden

Từ các nguyên nhân kể trên, chúng ta có thể đề ra một số cách khắc phục như sau:

Kiểm tra file .htaccess

Truy cập vào thư mục cài đặt website WordPress của bạn thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => mở file .htaccess ra và kiểm tra xem có code nào lạ hay không. Nếu có, hãy xóa nó đi. Nếu không chắc chắn về nội dung của file .htaccess, hãy thử xóa toàn bộ và thay thế bằng code mặc định của WordPress:

# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Lưu lại, xóa cache trình duyệt web và kiểm tra kết quả.

Nếu trước đó bạn có tạo file .htaccess ở các vị trí khác trên website, hãy tìm và đổi tên chúng thành .htaccess_old hoặc xóa bỏ.

Ngoài ra, việc vô hiệu hóa directory indexing cũng sẽ gây ra lỗi 403 trong trường hợp thư mục không chứa file index hoặc thư mục bị trống.

Tắt ModSecurity

ModSecurity là một tính năng bảo mật rất hữu ích, thường được bật sẵn trên các dịch vụ hosting. Trong một số trường hợp, ModSecurity có thể là nguyên nhân gây ra lỗi 403. Hãy thử vô hiệu hóa nó đi xem lỗi có được khắc phục không nhé.

1. Tìm mục ModSecurity trên cPanel và click vào đó:

click-vao-muc-modsecurity-trong-cpanel

2. Click vào nút Disable để vô hiệu hóa ModSecurity cho tất cả các website. Tuy nhiên, chúng tôi chỉ khuyến khích tắt ModSecurity trên website đang gặp lỗi 403 bằng cách click vào nút On/ Off tương ứng với website đó.

vo-hieu-hoa-modsecurity-de-khac-phuc-loi-403

Xóa cache trình duyệt web và kiểm tra kết quả.

Kiểm tra permission của file và folder

Truy cập vào thư mục cài đặt website WordPress của bạn thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => kiểm tra xem permission của các file và folder đã được thiết lập đúng hay chưa. Thông thường, permission của file sẽ là 644, còn của folder là 755.

kiem-tra-permission-cua-file-va-folder

Nếu permission chưa chính xác, hãy click vào và sửa lại cho đúng.

sua-permission-cua-file-va-folder-trong-cpanel

Sau đó, xóa cache trình duyệt web và kiểm tra kết quả.

Kiểm tra tường lửa và plugin bảo mật

Nếu nguyên nhân gây ra lỗi 403 Forbidden là do IP của bạn bị tường lửa server/ website hoặc plugin bảo mật chặn, hãy làm như sau:

  • Khởi động lại modem mạng để đổi IP khác => kiểm tra.
  • Nếu bạn không có quyền khởi động lại modem mạng, hãy thử dùng các dịch vụ VPN để thay đổi IP => kiểm tra.
  • Nếu có thể, hãy unblock hoặc thêm IP của bạn vào whitelist của firewall => kiểm tra.
  • Nếu IP của bạn bị block với plugin bảo mật, hãy truy cập /wp-content/plugins/ => đổi tên thư mục của plugin bảo mật đó để vô hiệu hóa nó => kiểm tra.

Upload lại mã nguồn WordPress

Mã nguồn WordPress bị lỗi (lỗi file hoặc thiếu file) cũng có thể là nguyên nhân gây lỗi 403. Hãy thử upload lại mã nguồn WordPress cho website của bạn và kiểm tra xem lỗi 403 có được khắc phục không nhé.

Tham khảo thêm: Hướng dẫn cập nhật WordPress theo phương pháp thủ công

Vô hiệu hóa tòa bộ plugin

Truy cập vào thư mục cài đặt website WordPress của bạn thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => tìm thư mục plugins trong /wp-content/ và đổi tên nó thành plugins_old để vô hiệu hóa toàn bộ các plugin. Nếu lỗi 403 được khắc phục thì có nghĩa là plugin nào đó trên website của bạn là nguyên nhân gây lỗi. Hãy kích hoạt lần lượt từng plugin và kiểm tra cho đến khi lỗi 403 xuất hiện trở lại => xác định được plugin gây lỗi.

Cuối cùng, nếu đã thử đủ mọi cách mà vẫn không có tác dụng, hãy liên hệ với nhà cung cấp dịch vụ hosting của bạn để nhờ hỗ trợ nhé. Chúc các bạn thành công!

Bạn biết phương pháp khác đơn giản hơn để khắc phục lỗi 403 Forbidden trên website WordPress? Hãy chia sẻ nó với chúng tôi thông qua khung bình luận bên dưới.

Nguồn tham khảo: https://wpcanban.com/wordpress/thu-thuat-wordpress/khac-phuc-loi-403-forbidden-trong-wordpress.html