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

DNS, HTTP và xác minh TLS

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

DNS, HTTP và xác minh TLS

Mục tiêu

Phân biệt tên không phân giải, TCP không tới đích và certificate không hợp lệ.

Hiểu trước khi làm

DNS trả A/AAAA/CNAME và có TTL; resolver cache có thể giữ câu trả lời cũ. /etc/hosts tham gia NSS trên Linux nhưng dig hỏi DNS trực tiếp nên không đọc file hosts. TLS xác minh chuỗi CA và hostname qua SAN; server cần gửi intermediate phù hợp. SNI chọn certificate cho tên yêu cầu. curl -k bỏ kiểm chứng certificate và chỉ dùng để phân biệt nguyên nhân, không phải cách sửa.

Chuẩn bị

Hoàn thành các bài cốt lõi trước đó trong module; dùng workspace ~/kdc-labs và ứng dụng mẫu ở project. Chạy agent trên chính máy làm bài, với lab root ~/kdc-labs.

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

getent hosts api.kdc.lab
dig example.com A
dig example.com AAAA
curl -I https://example.com
openssl s_client -connect example.com:443 -servername example.com -verify_return_error -verify_hostname example.com </dev/null
Giải thích lệnh và tham số

dig hỏi DNS, A là IPv4 và AAAA là IPv6. curl -I gửi HEAD để xem header. openssl -connect chọn đích TCP, -servername gửi SNI, -verify_hostname kiểm tra SAN, -verify_return_error dừng khi verify lỗi; </dev/null kết thúc stdin. Không dùng tên example.com làm tên miền sở hữu của bạn.

Đọc status, Content-Type và Location; 301/302 là redirect, 4xx là lỗi phía request/quyền, 5xx là phía server/upstream. So sánh tên, IP và thời hạn certificate. Với endpoint lab ở bài trước:

curl -fsS --resolve api.kdc.lab:8081:127.0.0.1 http://api.kdc.lab:8081/healthz
Giải thích lệnh và tham số

--resolve hostname:port:IP thay DNS cho đúng một cặp hostname/port, vẫn giữ Host header. Với HTTPS nó giữ SNI và kiểm chứng hostname. -f báo lỗi status từ 400 trở lên.

Viết bảng ba lỗi: NXDOMAIN, connection refused và TLS hostname mismatch; ghi công cụ nào quan sát mỗi lỗi, điều kiện TCP đã thành công hay chưa. Không thêm CA lạ vào trust store hệ thống. Phần cấp TLS cho tên miền lab nằm ở Module 04/12.

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-dns-tls.md — có nội dung ## DNS và TLS.
  • evidence/network-dns-tls.md — có nội dung ## Kết quả.

Tự kiểm tra

Báo cáo có mục ## DNS và TLS, đầu ra dig/curl/openssl đã che dữ liệu riêng. Giải thích vì sao đổi IP bằng --resolve không sửa certificate sai hostname.

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-dns-tls.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