Domain Name System
- Số cổng: 53
- Tầng giao thức: application
- Các hình thức tấn công:
- Typosquatting (hay URL hijacking).
- DNS poisoning.
What is DNS?
Mạng internet sử dụng địa chỉ IP nhằm định danh các máy tính để tầng network có thể vận chuyển thông tin đến nơi chính xác. Tuy nhiên, để định danh các web site theo các tên mà con người hiểu được, cần sử dụng DNS.
DNS (Domain Name System) là một giao thức nằm ở tầng application giúp cho một host có thể giao tiếp được với một nameserver nhằm phân giải một domain name (tên miền, chẳng hạn như www.example.com
), thành địa chỉ IP mà máy tính có thể hiểu được và xử lý. Ngược lại, giao thức DNS cũng có thể tạo ra tên miền từ địa chỉ IP.
Giao thức DNS thường được cài đặt ở DNS server.
DNS Services
- Chuyển đổi host name (tên máy tính, không phải tên miền) thành địa chỉ IP.
- Tạo tên alias từ tên canonical (tên chính tắc). Có thể hiểu tên chính tắc là
example.com
vàwww.example.com
là một tên alias. - Có thể có một tên miền với nhiều địa chỉ IP vì một trang web có thể có nhiều server, đặt tại nhiều data center khác nhau trên thế giới.
DNS Structure
Các DNS server được tổ chức ở khắp nơi tạo thành một cơ sở dữ liệu phân tán.
Tại sao không tập trung hóa DNS?
Vì khi server bị hỏng thì tất cả dữ liệu sẽ biến mất, các yêu cầu dịch vụ sẽ không được đáp ứng. Nếu server đang bảo trì, các client có thể không sử dụng được dịch vụ.
Các cụm server chia thành ba loại là root , top level domain và authoritative. Root có mười ba cụm server, hầu hết tập trung ở Bắc Mỹ, Châu Âu và Nhật Bản. Root DNS server chỉ cần lưu giữ địa chỉ IP của các tên miền top level domain.
Bên dưới root thì có các server quản lý top level domain, chẳng hạn như tên miền gov của chính phủ, vn của Việt Nam, edu của giáo dục, … Chúng liên quan đến lãnh thổ quốc gia hoặc lĩnh vực hoạt động của trang web.
Cuối cùng là các DNS server của các công ty, tổ chức được ủy quyền (authoritative) nhằm giúp các client phân giải tên miền .
DNS Process
Ví dụ, ta muốn tìm địa chỉ IP của www.example.com
. Trình duyệt sẽ gửi một truy vấn đến local DNS server (hay DNS resolver). Server này sẽ được cài đặt bởi ISP.
Resolver sẽ tiến hành phân giải tên miền qua các bước sau:
- Gửi yêu cầu đến root DNS server để tìm địa chỉ IP của DNS server quản lý domain .com.
- Tiếp theo, resolver truy cập DNS server mà có địa chỉ IP trên để tìm DNS server quản lý domain example.
- Cuối cùng, resolver đi đến DNS server mà có chứa tên miền example để truy xuất ra địa chỉ IP của tên miền mà người dùng cần.
Trường hợp tên miền có dạng www.example.edu.vn
, top level domain sẽ là vn. Có thể hiểu rằng các level của domain sẽ giảm dần theo chiều từ phải sang trái. Nhỏ hơn domain chính sẽ là các sub domain, chẳng hạn như: www.1.example.com
, hoặc www.test.example.com
.
DNS Query
Có hai loại truy vấn DNS phổ biến là iterated (lặp lại) và recursive (đệ quy). DNS server sử dụng UDP trong quá trình truy vấn và TCP trong việc sao lưu dữ liệu (đồng bộ giữa backup server và các DNS server khác).
Truy vấn DNS giữa client và local DNS server là recursive query. Còn truy vấn giữa local DNS server và các DNS server khác là iterated query.
Iterated Query
Iterated query: khi client gửi yêu cầu phân giải một địa chỉ IP cho một domain name nào đó đến các server, các server chỉ trả về thông tin mà chúng biết, chứ không trả về thông tin cuối cùng. Chúng ta có ví dụ minh họa dưới đây.
Recursive Query
Recursive query: cách làm này có cách thức hoạt động giống như tên gọi của nó, chính các server sẽ đi tìm thông tin cuối cùng và trả về cho client host thay vì giao tiếp với local DNS server.
DNS Header
Cấu trúc DNS header:
Ví dụ trực quan:
Tham khảo thêm: