Tăng cường bảo mật cho VPS Fastpanel bằng cấu hình Nginx chặn truy cập bẩn

Fastpanel là control panel miễn phí, nhẹ và dễ dùng nên được rất nhiều anh em chọn để quản trị VPS. Tuy nhiên cấu hình Nginx mặc định của Fastpanel khá “thoáng”: bot quét lỗ hổng, script kiddie dò file backup hay AI crawler thu thập dữ liệu vẫn có thể gõ cửa website của bạn mỗi ngày. Tin tốt là bạn không cần cài thêm plugin hay firewall phức tạp — chỉ cần một file cấu hình Nginx duy nhất là đã dựng được lớp “tường lửa mềm” chặn phần lớn truy cập bẩn ngay từ tầng web server.

Bài viết này Hoidapwp sẽ hướng dẫn bạn tăng cường bảo mật cho VPS chạy Fastpanel bằng file secure.conf: chặn truy cập file nhạy cảm, cấm thực thi mã độc, chống SQL injection và chặn bot AI — tất cả chỉ với vài lệnh SSH.

Ý tưởng: chặn ngay từ tầng Nginx

Thay vì để request độc hại chạm tới PHP hay WordPress rồi mới xử lý, ta sẽ chặn chúng ngay ở Nginx bằng hai “vũ khí” chính: deny all (từ chối truy cập, trả mã 403) và return 444 (đóng kết nối ngay lập tức, không trả gì về — bot sẽ không nhận được phản hồi nào để phân tích). Kết hợp thêm access_log off để log không bị ngập bởi hàng nghìn request rác mỗi ngày.

Bước 1 – Sao lưu trước khi chỉnh sửa

Nguyên tắc vàng khi đụng vào cấu hình server: luôn backup trước. Đăng nhập SSH vào VPS với quyền root, sau đó sao lưu toàn bộ thư mục cấu hình Nginx của Fastpanel:

cp -r /etc/nginx/fastpanel2-includes /etc/nginx/fastpanel2-includes.bak

Nếu sau này cấu hình lỗi, bạn chỉ cần xóa thư mục mới và đổi tên file .bak lại là xong.

Bước 2 – Tạo file cấu hình bảo mật

Fastpanel nạp thêm cấu hình từ thư mục /etc/nginx/fastpanel2-includes/, vì vậy ta tạo một file riêng để không ảnh hưởng cấu hình gốc:

nano /etc/nginx/fastpanel2-includes/secure.conf

Tăng cường bảo mật cho VPS Fastpanel bằng cấu hình Nginx chặn truy cập bẩn

Dán toàn bộ nội dung bên dưới vào file (bạn có thể thêm, bớt hoặc chỉnh sửa từng nhóm quy tắc cho phù hợp với website của mình):

############ 1. Bao ve WordPress ####################
# Chan thuc thi cac loai script la ngay tu document root
location ~* \.(pl|cgi|py|sh|lua|asp)$ {
    return 444;
}

# Chan xem file cau hinh va tai lieu nhay cam
location ~* /(wp-config\.php|wp-config-sample\.php|readme\.html|license\.txt|nginx\.conf) {
    deny all;
}

# Chan xmlrpc.php - cua ngo brute-force va DDoS quen thuoc
location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

# Cam chay file PHP trong thu muc uploads/files
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}

# Cam truy cap file nen, file van ban dang ngo trong wp-content
location ~* ^/wp-content/.*\.(zip|gz|tar|7z|txt|log|md)$ {
    deny all;
}

############ 2. File an va file backup ####################
# Chan truy cap file an: .htaccess, .git, .user.ini, .env...
location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}

# Chan cac duoi file backup/log/sql de lo thong tin
location ~* \.(bak|old|orig|save|swo|swp|sql|log|cfg|ini)$ {
    deny all;
    access_log off;
    log_not_found off;
}

############ 3. Chong SQL injection & khai thac ####################
location ~* "(eval\(|base64_encode.*\(|GLOBALS|REQUEST)(=|\[|%)" {
    deny all;
}
location ~* "(<|%3C).*script.*(>|%3E)" {
    deny all;
}
location ~* "(\'|%27).*(drop|insert|md5|select|union)" {
    deny all;
}
location ~* "(boot\.ini|etc/passwd|self/environ)" {
    deny all;
}
location ~* "/(phpinfo|shell|webshell|timthumb|thumb[a-z_]*)\.php" {
    deny all;
}

############ 4. Chan bot AI quet du lieu ####################
if ($http_user_agent ~* (Amazonbot|anthropic-ai|Applebot|CCBot|ChatGPT|ChatGPT-User|Claude-Web|ClaudeBot|cohere-ai|DataForSeoBot|Diffbot|Google-Extended|GPTBot|PerplexityBot|SemrushBot|YandexBot|YouBot)) {
    return 444;
}

Lưu file bằng Ctrl + O, Enter, rồi thoát bằng Ctrl + X.

Bước 3 – Kiểm tra cú pháp và khởi động lại Nginx

Trước khi áp dụng, luôn kiểm tra cú pháp để tránh “sập” web server vì một dấu ngoặc thiếu:

nginx -t

Nếu kết quả báo syntax is ok và test is successful, hãy khởi động lại Nginx để áp dụng:

systemctl restart nginx

Kiểm tra nhanh bằng cách truy cập thử https://ten-mien-cua-ban/xmlrpc.php trên trình duyệt — nếu bị chặn đúng, bạn sẽ thấy lỗi 403 hoặc trang trắng không phản hồi (mã 444).

Giải thích nhanh các nhóm quy tắc

Nhóm 1 – Bảo vệ WordPress

Đây là nhóm quan trọng nhất với website WordPress: cấm chạy script lạ (.pl, .py, .sh…), giấu file cấu hình wp-config.php, khóa xmlrpc.php và cấm thực thi PHP trong thư mục uploads — nơi hacker thường “cấy” shell sau khi khai thác thành công một lỗ hổng upload.

Nhóm 2 – File ẩn và file backup

File .git, .env, .htaccess hay các bản backup .bak, .sql vô tình để sót trên server có thể lộ toàn bộ mã nguồn và thông tin đăng nhập. Nhóm này chặn sạch truy cập tới chúng.

Nhóm 3 – Chống SQL injection

Các pattern như eval(, base64_encode, UNION SELECT hay etc/passwd là “dấu vân tay” quen thuộc của các cuộc tấn công injection. Nginx sẽ từ chối ngay khi thấy chúng xuất hiện trong URL.

Nhóm 4 – Chặn bot AI

Nếu bạn không muốn nội dung website bị các bot thu thập dữ liệu AI (GPTBot, ClaudeBot, PerplexityBot…) quét miễn phí, nhóm quy tắc theo user-agent này sẽ đóng kết nối ngay lập tức.

Lưu ý quan trọng

Một: nếu website dùng plugin cần xmlrpc.php (ví dụ Jetpack hoặc ứng dụng đăng bài từ xa), hãy bỏ hoặc comment lại quy tắc chặn xmlrpc để tránh lỗi chức năng.

Hai: sau khi áp dụng, hãy mở website và click thử các trang quan trọng. Nếu có lỗi 403 bất thường, kiểm tra xem URL có vô tình khớp pattern nào không, rồi nới lỏng quy tắc tương ứng.

Ba: đây là lớp bảo vệ bổ sung, không thay thế việc cập nhật WordPress/plugin/theme thường xuyên và đặt mật khẩu mạnh. Bảo mật tốt nhất luôn là nhiều lớp chồng lên nhau.

Chỉ với một file cấu hình và vài phút thao tác SSH, VPS Fastpanel của bạn đã “cứng” hơn đáng kể trước các truy cập bẩn tự động. Chúc bạn áp dụng thành công!

👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây: https://my.bnix.one/aff.php?aff=82

🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
📞 0925045760 → https://zalo.me/0925045760
🌐 thietkewebdian.com → https://thietkewebdian.com

5/5 - (75 bình chọn)
Đăng ký
Thông báo về
guest
0 Bình Luận
Oldest
Newest Most Voted
Inline Feedbacks
Xem tất cả
0
Rất thích suy nghĩ của bạn, hãy bình luận.x
()
x