Khôi phục website sau security incident không nên được hiểu đơn giản là “restore backup rồi mở lại traffic”. Recovery an toàn chỉ bắt đầu khi persistence đã được xử lý, entry point đã được đóng, credential có nguy cơ lộ đã được revoke/rotate và restore target được xác minh đủ sạch để không tái đưa compromise trở lại production.
CISA Incident Response Playbook yêu cầu trước khi chuyển sang recovery phải account đầy đủ các phương thức persistent access, contain activity và bảo toàn evidence; nếu phát hiện re-entry sau eradication thì phải quay lại technical analysis thay vì tiếp tục recovery. NIST SP 800-61 Rev.3 cũng mô tả recovery gồm restore từ clean backup, rebuild system, thay file bị compromise bằng bản sạch, patch vulnerability, thay password và siết security controls. WordPress khuyến nghị thay core/plugin/theme bằng bản sạch khi integrity không còn đáng tin cậy. Nguồn: CISA Incident Response Playbook, NIST SP 800-61 Rev.3 và WordPress — FAQ My Site Was Hacked.
Bối cảnh: website cần trở lại online nhưng chưa được phép tái nhiễm
Giả sử website đã bị compromise, đã containment và cleanup sơ bộ. Business muốn mở lại nhanh vì downtime gây ảnh hưởng, nhưng investigation cho thấy từng có backdoor, credential leak và file integrity không còn đáng tin cậy. Nếu restore hoặc reconnect traffic quá sớm, hệ thống có thể tái nhiễm hoặc attacker dùng lại access path cũ.
Recovery gate phải trả lời được những câu hỏi nào?
- Persistence đã được account và loại bỏ chưa?
- Initial access hoặc vulnerability đã được patch/remove/contain chưa?
- Credential/session/token có risk đã được revoke/rotate chưa?
- Restore source có đủ confidence là clean không?
- Target environment có integrity và hardening phù hợp không?
- Có rollback và post-recovery monitoring nếu signal quay lại không?
Bước 1: không recovery trước khi eradication đủ confidence
CISA nhấn mạnh adversary thường dùng nhiều persistence mechanism và có thể “hop back” vào vùng vừa được làm sạch nếu eradication không đủ chặt. Vì vậy recovery decision phải dựa trên evidence rằng webshell, cron, hidden account, token, malicious config hoặc các access path khác đã được xử lý.
Tham chiếu case backdoor còn tồn tại sau cleanup để tách rõ symptom cleanup với eradication thực sự.
Bước 2: chọn restore strategy theo mức độ tin cậy
Restore từ known-good backup khi timeline đủ rõ
Nếu earliest known compromise đã được xác định với confidence tốt và có backup nằm trước mốc đó, có thể restore từ known-good point. Nhưng restore point vẫn cần integrity test và phải được đưa vào clean target environment thay vì đè trực tiếp lên production đang nghi ngờ.
Xem quy trình Website Restore từ Backup và case chọn restore point khi nhiều backup generation có malware.
Rebuild từ trusted source khi integrity không còn đủ
NIST SP 800-61 Rev.3 cho phép recovery bằng rebuild system, thay compromised files bằng clean versions, patching và thay credential. WordPress cũng khuyến nghị reinstall core/plugin/theme từ nguồn sạch thay vì chỉ overwrite một phần, vì malware có thể thêm file mới mà updater không xóa.
Nếu không thể chứng minh backup sạch hoặc scope compromise quá rộng, rebuild clean rồi migrate dữ liệu đã kiểm tra thường có confidence tốt hơn việc tiếp tục sửa trên nền môi trường cũ.
Bước 3: rotate credential và vô hiệu access path cũ
Recovery không hoàn chỉnh nếu account, key, token hoặc session từng có nguy cơ bị lộ vẫn còn hiệu lực. Credential rotation cần bao phủ WordPress admin, hosting, SSH/SFTP, database, API key, DNS/CDN, backup storage và session/token liên quan.
Đọc thêm case credential leak dẫn tới re-compromise và Credential Rotation sau website compromise.
Bước 4: validate recovery environment trước khi cutover traffic
Security validation
- Core/plugin/theme/file integrity khớp trusted source hoặc baseline.
- Không còn persistence, account, task hoặc token trái phép đã biết.
- Vulnerability/entry point ban đầu đã được xử lý.
- Credential cũ đã fail và session/token đã revoke.
- Logging/monitoring được bật trước khi mở traffic.
Functional validation
- Frontend, login, admin và business flow chính hoạt động.
- Media, email, payment/API dependency nếu có hoạt động đúng.
- DNS/TLS/CDN/WAF trỏ đúng recovery environment.
- Backup cycle mới đã hoạt động sau recovery.
- Có rollback nếu cutover tạo regression hoặc security signal mới.
Recovery gate: khi nào có thể mở lại production?

Không nên dùng một tiêu chí đơn lẻ như “scanner sạch” hoặc “site load được”. Recovery gate nên kết hợp security, integrity, credential, functional test và monitoring readiness.
| Gate | Điều kiện PASS |
|---|---|
| Eradication | Persistence và entry point đã được xử lý |
| Restore source | Known-good hoặc rebuild từ trusted source |
| Credentials | Old access bị revoke/rotate |
| Integrity | File/config/account không còn deviation trái phép |
| Function | Business flow chính hoạt động |
| Monitoring | Alert/log đã active trước cutover |
| Rollback | Có phương án quay lại nếu recovery thất bại |
Dùng Incident Recovery Plan làm baseline cho decision gate trước khi reconnect traffic.
Post-recovery monitoring: không đóng incident ngay khi site online
CISA yêu cầu sau eradication tiếp tục detection để tìm dấu hiệu adversary re-entry. Recovery thành công về availability chưa đồng nghĩa incident đã đủ điều kiện closure. Giai đoạn sau cutover nên tăng monitoring cho login, file change, process, outbound traffic, scheduled task, API usage và các IOC đã quan sát trước đó.
Nếu xuất hiện re-entry hoặc behavior tương tự, cần quay lại containment và technical analysis. Nếu không có signal mới, mới chuyển dần sang normal operations và dùng Incident Closure Checklist để đánh giá điều kiện đóng incident.
Bài học vận hành
- Recovery không nên bắt đầu chỉ vì downtime đang kéo dài.
- Restore backup không thay thế eradication và credential containment.
- Known-good backup phải được xác minh, không mặc định backup là sạch.
- Rebuild từ trusted source phù hợp khi integrity của môi trường cũ không còn đủ confidence.
- Cutover cần security gate, functional gate, monitoring và rollback.
- Incident chỉ nên closure sau post-recovery monitoring và residual risk review.
