Quay lại danh sách
Tin tức công nghệ

Digital Forensics & Incident Response trên VPS

6 tháng 5, 2026
Digital Forensics & Incident Response trên VPS sau khi bị hack

Digital Forensics & Incident Response trên VPS: Quy trình điều tra và khắc phục sau tấn công

Khi VPS bị hack, việc phản ứng nhanh chóng và đúng cách là yếu tố quyết định mức độ thiệt hại. Digital Forensics & Incident Response (DFIR) giúp bạn thu thập chứng cứ, xác định nguyên nhân gốc rễ, cô lập lỗ hổng và khôi phục hệ thống an toàn. Bài viết này hướng dẫn chi tiết quy trình chuyên nghiệp để “bắt lỗi” và điều tra sau khi VPS bị tấn công, tập trung vào việc đọc log, phân tích tiến trình lạ và khắc phục triệt để.

1. Nguyên tắc vàng khi VPS bị hack

Trước khi làm bất cứ điều gì, hãy tuân thủ thứ tự sau:

  • Không hoảng loạn: Giữ bình tĩnh và tránh tắt máy đột ngột (có thể mất chứng cứ).
  • Cô lập hệ thống: Ngắt kết nối mạng nếu cần nhưng vẫn giữ máy chạy để thu thập dữ liệu.
  • Không thay đổi chứng cứ: Sử dụng công cụ read-only khi phân tích.
  • Ghi chép mọi bước: Thời gian, lệnh chạy, kết quả.

// Incident Response Basic Workflow
interface Incident {
  incidentId: string;
  detectedAt: Date;
  attackType: "brute-force" | "exploit" | "malware" | "ransomware";
  severity: "Low" | "Medium" | "High" | "Critical";
}

function initialResponse(incident: Incident): void {
  console.log(`[DFIR] Bắt đầu xử lý incident ${incident.incidentId}`);
  console.log(`[Step 1] Cô lập VPS - Tắt firewall inbound không cần thiết`);
  console.log(`[Step 2] Tạo snapshot đĩa để bảo toàn chứng cứ`);
  console.log(`[Step 3] Bắt đầu thu thập volatile data (RAM, processes)`);
}
 

2. Công cụ cần chuẩn bị trên VPS Ubuntu

Cài đặt ngay các công cụ forensics cơ bản:

  • sysdig, osquery, auditd — Giám sát hệ thống
  • fail2ban, logwatch, rkhunter — Phát hiện rootkit
  • volatility, autopsy — Phân tích memory (nâng cao)
  • net-tools, ss, tcpdump — Phân tích network

3. Đọc và phân tích Log hệ thống

Log là nguồn chứng cứ quan trọng nhất. Tập trung vào các file sau:

  • /var/log/auth.log — Đăng nhập SSH
  • /var/log/syslog & kern.log — Lỗi kernel
  • /var/log/nginx/access.log — Web server log

// Log Parser đơn giản bằng TypeScript
interface LogEntry {
  timestamp: string;
  hostname: string;
  process: string;
  message: string;
  ip?: string;
}

function parseAuthLog(logContent: string): LogEntry[] {
  const lines = logContent.split('\n');
  const suspicious: LogEntry[] = [];

  lines.forEach(line => {
    if (line.includes("Failed password") || line.includes("Accepted password")) {
      const entry: LogEntry = {
        timestamp: line.substring(0, 15),
        hostname: "vps-server",
        process: "sshd",
        message: line,
        ip: extractIP(line)
      };
      suspicious.push(entry);
      
      if (line.includes("Failed password")) {
        console.warn(`[ALERT] Bruteforce attempt from ${entry.ip}`);
      }
    }
  });
  return suspicious;
}

function extractIP(line: string): string {
  const match = line.match(/\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/);
  return match ? match[0] : "unknown";
}
 

4. Phát hiện tiến trình lạ (Malicious Processes)

Tiến trình lạ thường là dấu hiệu của malware hoặc backdoor.


// Process Analyzer
interface ProcessInfo {
  pid: number;
  user: string;
  cpu: number;
  memory: number;
  command: string;
  suspicious: boolean;
}

function analyzeRunningProcesses(processList: ProcessInfo[]): ProcessInfo[] {
  return processList.map(proc => {
    const isSuspicious = 
      proc.command.includes("/tmp/") || 
      proc.user === "root" && proc.command.includes("curl") ||
      proc.command.length > 200 ||
      !proc.command.startsWith("/usr") && !proc.command.startsWith("/bin");

    if (isSuspicious) {
      console.error(`[MALICIOUS] Suspicious process detected: ${proc.command} (PID: ${proc.pid})`);
    }
    return { ...proc, suspicious: isSuspicious };
  });
}

// Ví dụ sử dụng
const processes: ProcessInfo[] = [
  { pid: 1234, user: "www-data", cpu: 85, memory: 1240, command: "./hidden_miner", suspicious: false },
  { pid: 5678, user: "root", cpu: 12, memory: 340, command: "/usr/sbin/sshd", suspicious: false }
];

analyzeRunningProcesses(processes);
 

5. Phân tích Network Connection & Backdoor

Sử dụng lệnh `ss -tuln`, `netstat` hoặc `tcpdump` để xem kết nối lạ.


// Network Forensics Simulator
interface NetworkConnection {
  protocol: string;
  localPort: number;
  foreignAddress: string;
  state: string;
  process?: string;
}

function detectSuspiciousConnections(conns: NetworkConnection[]) {
  conns.forEach(conn => {
    if (conn.foreignAddress.includes(":4444") || 
        conn.state === "ESTABLISHED" && conn.localPort === 22 && conn.process !== "sshd") {
      console.error(`[CRITICAL] Possible reverse shell or C2 server: ${conn.foreignAddress}`);
    }
  });
}
 

6. Quy trình cô lập và khắc phục lỗ hổng

  • Thay đổi tất cả mật khẩu (root, user, database, SSH key).
  • Cập nhật hệ thống: `apt update && apt upgrade -y`
  • Disable root login qua SSH.
  • Cài đặt Fail2Ban + UFW chặt chẽ.
  • Scan malware bằng ClamAV và rkhunter.
  • Restore từ backup sạch (kiểm tra trước khi restore).

7. Best Practices phòng ngừa trong tương lai

Sau khi khắc phục, hãy áp dụng:

  • Enable automatic security updates.
  • Sử dụng SSH Key thay vì password.
  • Cài đặt Intrusion Detection System (OSSEC hoặc Wazuh).
  • Monitor log tập trung bằng ELK Stack hoặc Loki + Grafana.
  • Backup định kỳ 3-2-1 rule.

8. Kết luận: Checklist DFIR sau khi bị hack

Trước khi mở lại VPS cho production, hãy kiểm tra đầy đủ:

  1. Đã cô lập và snapshot hệ thống chưa?
  2. Đã phân tích log, process và network connections?
  3. Đã xác định được vector tấn công (lỗ hổng nào)?
  4. Đã thay đổi toàn bộ credentials và vá lỗ hổng?
  5. Đã cài đặt monitoring và hardening lâu dài?
  6. Có kế hoạch backup và disaster recovery rõ ràng?

Digital Forensics & Incident Response không chỉ giúp khắc phục sự cố mà còn nâng cao khả năng chống chịu của toàn bộ hạ tầng VPS. Hãy coi mỗi lần bị hack là bài học để xây dựng hệ thống an toàn hơn trong năm 2026.

Hy vọng hướng dẫn này giúp bạn tự tin xử lý và điều tra khi VPS gặp sự cố bảo mật!