HỌC BẰNG THỰC HÀNH
← Lộ trình học
02 — Networking

Quan sát proxy, firewall và packet capture

Thực hiện trên server của bạn, rồi kiểm tra từng tiêu chí.

Cốt lõi

Quan sát proxy, firewall và packet capture

Mục tiêu

Lần theo đường Browser → Nginx → App → PostgreSQL mà không mở database ra Internet.

Hiểu trước khi làm

Firewall quyết định gói có đi qua hay không; process listen quyết định có socket nhận hay không. Nginx trả 502 khi upstream không dùng được; 404 có thể do route không khớp. Load balancer phân phối request và cần health check. PostgreSQL listen localhost chỉ nhận kết nối local; dùng private IP/firewall giới hạn nguồn khi DB tách máy.

Chuẩn bị

VM Linux lab có iproute2, tcpdump, curl và nc; marker /etc/kdc-lab. Có thể cài bằng dnf trên VM Rocky của Module 01.

Tải ứng dụng mẫu KDC Notes · Cách tải và chuẩn bị workspace. Không cần mã nguồn nền tảng khóa học.

cd ~/kdc-labs/project
mkdir -p ../evidence
Giải thích lệnh và tham số

cd chuyển vào repo ứng dụng của bạn; .. là thư mục cha ~/kdc-labs. mkdir -p tạo thư mục bằng chứng nếu chưa có, không báo lỗi khi đã tồn tại. Mọi đường dẫn tương đối ở dưới tính từ đây, trừ khi bước ghi rõ máy/thư mục khác.

Thực hành

Trên VM có marker lab, xác định interface loopback bằng ip link. Giữ echo.py ở 127.0.0.1:8081. Trong terminal quan sát chạy:

sudo tcpdump -i lo -nn -c 12 tcp port 8081
Giải thích lệnh và tham số

sudo cần quyền capture trên VM lab. -i lo chỉ interface loopback Linux; macOS là lo0. -nn không phân giải IP/port, -c 12 dừng sau 12 packet. Filter tcp port 8081 giới hạn traffic; không capture toàn mạng có dữ liệu thật.

Terminal khác gọi curl http://127.0.0.1:8081/healthz. Nhận SYN, SYN-ACK, ACK và các packet dữ liệu; TCP retransmission không tự chỉ ra nguyên nhân. Thử port không có listener để thấy RST. Đối chiếu ss -ltnp và sudo firewall-cmd --list-all trên VM firewalld của Module 01.

Vẽ hai kết nối độc lập client→proxy và proxy→app. Cho biết port nào public (80/443), port nào chỉ nội bộ (app 8081, PostgreSQL 5432, Redis 6379). Nếu app tách VM, viết rule chỉ cho nguồn proxy vào app và nguồn app vào DB; chưa áp rule lên host học tập. Dùng nc -vz 127.0.0.1 8081 để kiểm tra TCP, so sánh với curl kiểm tra HTTP.

nc -vz 127.0.0.1 8081
Giải thích lệnh và tham số

nc -v in trạng thái, -z chỉ thử kết nối, không gửi payload ứng dụng. Thành công TCP không chứng minh HTTP, TLS hay database khỏe.

Tiêu chí tệp nộp bài

Các đường dẫn dưới đây tính từ lab root ~/kdc-labs, không từ thư mục project. Không viết sẵn kết quả giả để qua kiểm tra. Tệp có đúng tiêu đề chưa chứng minh đã thực hiện bài; giữ đầu ra thật và tự đối chiếu các phép thử.

  • evidence/network-proxy-packets.md — có nội dung ## Luồng request.
  • evidence/network-proxy-packets.md — có nội dung ## Kết quả.

Tự kiểm tra

Báo cáo mục ## Luồng request có địa chỉ/port, SYN handshake đã quan sát và giới hạn phép thử. Không mở 5432/6379 cho mọi nguồn.

Kiểm tra trên web xác nhận tệp cấu hình hoặc hồ sơ bài làm dưới lab root; không xác nhận dịch vụ cloud, kết quả CI hay nội dung lập luận. Bạn phải thực hiện các phép thử bên trên và lưu đầu ra thật để tự đối chiếu.

Lưu bằng chứng

Tạo evidence/network-proxy-packets.md bằng trình soạn thảo, gồm các mục dưới đây. Điền số liệu và lệnh đã chạy, thời điểm, đầu ra trước/sau, cùng kết luận của bạn; không chỉ sao chép tiêu đề. Không lưu token, mật khẩu, kubeconfig hoặc dump dữ liệu vào báo cáo.

## Môi trường
Hệ điều hành, phiên bản công cụ, cluster/VM và thời điểm.

## Kết quả
Lệnh kiểm tra, đầu ra đã che thông tin nhạy cảm, kết quả mong đợi/thực tế.

## Giải thích
Vì sao cách làm đạt mục tiêu; giới hạn của phép kiểm tra.

## Khôi phục
Cách rollback/cleanup riêng các tài nguyên lab và cách xác nhận lại.

Tài liệu chính thức