Bảo mật SSH/SFTP cho WordPress là bảo vệ quyền truy cập trực tiếp vào filesystem và môi trường vận hành, không phải chỉ bảo vệ một tài khoản trong wp-admin. Một SSH/SFTP credential bị lộ có thể cho phép thay đổi plugin, theme, file cấu hình hoặc dữ liệu mà không cần đăng nhập WordPress, vì vậy quyền này phải được quản lý như privileged access. Trong hardening WordPress tổng thể, SSH/SFTP cần đi cùng least privilege, key lifecycle, logging và revoke process.
SSH và SFTP khác nhau ở đâu?
SSH cung cấp remote shell; SFTP là giao thức truyền file chạy trên SSH. Cả hai có thể dùng cùng account/key nhưng mức rủi ro khác nhau: shell có thể chạy command, còn SFTP chủ yếu đọc/ghi file theo quyền filesystem được cấp.
| Access | Khả năng | Control chính |
|---|---|---|
| SSH shell | Command, file, process, package tùy quyền | Identity riêng, key, sudo scope, logging |
| SFTP | Upload/download/rename/delete file theo quyền | Filesystem scope, chroot khi phù hợp, owner |
| Hosting file manager | Thay đổi file qua control panel | MFA, role, audit log |
Quản trị SSH/SFTP theo privileged-access lifecycle
Không dùng chung một privileged account cho cả team
Mỗi operator hoặc automation nên có identity riêng khi hạ tầng hỗ trợ. Việc dùng chung một user làm mất attribution và khiến offboarding khó hơn. Khi nhân sự/vendor rời dự án, cần revoke account hoặc key của đúng owner thay vì đổi toàn bộ credential cho cả đội.
SSH key cũng là secret
Private key phải được bảo vệ như password/token. Không gửi private key qua chat hoặc ticket, không commit vào repository và không lưu trong thư mục web public. Nếu key nghi bị lộ, revoke/rotate, kiểm tra authorized_keys hoặc control tương đương và review access log trong incident window.
Host verification giúp tránh kết nối nhầm
Khi SSH client cảnh báo host key thay đổi, không nên bỏ qua tự động. Có thể là server được rebuild hợp lệ, nhưng cũng có thể là kết nối tới host khác. Xác minh fingerprint qua kênh tin cậy trước khi tiếp tục.
Least privilege ở filesystem và sudo
SSH access không nên mặc nhiên có quyền ghi mọi thư mục hoặc sudo không giới hạn. Với WordPress, writable scope phải phù hợp deployment model và file permissions WordPress. Account chỉ cần upload media hoặc deploy code không nhất thiết cần quyền quản trị toàn server.
| Use case | Quyền tối thiểu cần xem xét | Không nên mặc định cấp |
|---|---|---|
| Deploy code | Write đúng release path | Root/sudo toàn hệ thống |
| SFTP content | Write đúng thư mục cần thiết | Write wp-config hoặc system files |
| Incident response | Read/log access trước, write khi có phê duyệt | Xóa evidence ngay khi thấy file lạ |
Logging và session evidence
Với privileged access, nên giữ log đủ để biết user nào kết nối, thời gian nào và từ context nào. IP/User-Agent hoặc source address chỉ là tín hiệu; không dùng một mình để quy kết danh tính. Kết hợp với deployment history và audit log WordPress khi dựng timeline.
Break-glass access
Nếu production cần account khẩn cấp, account này nên có owner, điều kiện sử dụng, nơi lưu credential an toàn và quy trình rotate sau khi dùng. Không để “emergency account” tồn tại vô thời hạn mà không được review.
Runbook review SSH/SFTP
- Inventory account, key và phương thức truy cập.
- Map mỗi credential tới owner hoặc automation.
- Review sudo, group và writable scope.
- Thu hồi key/account không còn business need.
- Kiểm tra host verification và trusted endpoint.
- Review log access trong khoảng đủ đại diện.
- Test offboarding/revoke.
- Ghi rollback nếu thay đổi permission hoặc service config.
Stop condition
- Không xóa key lạ ngay nếu đang điều tra compromise; ghi evidence trước.
- Không thay permission hàng loạt nếu chưa biết owner/group và deployment model.
- Không disable SSH/SFTP khi chưa xác định automation hoặc backup job phụ thuộc.
- Không coi đổi port SSH là control thay thế authentication và least privilege.
Validation
PASS khi account hợp lệ vẫn truy cập được đúng scope, account/key đã revoke không còn dùng được, deployment không bị hỏng và access log đủ để xác định owner. Nếu credential là một phần của automation, cần smoke test workflow sau thay đổi.
Nguồn kỹ thuật
Kết luận
Bảo mật SSH/SFTP WordPress dựa trên identity riêng, key lifecycle, host verification, least privilege, auditability và revoke process. Đây là control ở hạ tầng, không nên được đánh đồng với bảo mật tài khoản wp-admin.
