From c4f8fe1143117867ed8bcb29b11c12c22bfa3db7 Mon Sep 17 00:00:00 2001 From: Soulaimane Yahya Date: Tue, 3 Dec 2024 11:00:12 +0100 Subject: [PATCH 1/2] feat/ARTICLE/DNS-1733218835053 --- posts/1733218835053.md | 80 ++++++++++++++++++ ...ss-Lookup-Name-Resolution-DNS-Resolver.png | Bin 0 -> 48329 bytes 2 files changed, 80 insertions(+) create mode 100644 posts/1733218835053.md create mode 100644 thumbnails/DNS-Resolution-Domain-Name-System-IP-Address-Lookup-Name-Resolution-DNS-Resolver.png diff --git a/posts/1733218835053.md b/posts/1733218835053.md new file mode 100644 index 0000000..43c9f7c --- /dev/null +++ b/posts/1733218835053.md @@ -0,0 +1,80 @@ +--- +title: 'Domain Name System (DNS): Architecture, Operation, and Security' +date: 2024-12-01 +author: Soulaimane Yahya +gravatar: b07a2846505a2629b7123ad50d5e21c303cf7c562a8893473c2114f7491c7796 +twitter: '@soulaimaneyh' +image: 'https://raw.githubusercontent.com/multividas/engineering-multividas/main/thumbnails/DNS-Resolution-Domain-Name-System-IP-Address-Lookup-Name-Resolution-DNS-Resolver.png' +--- + +Domain Name System (DNS): Architecture, Operation, and Security + +--- + +### Table of content + +- Introduction to DNS + - Shortly, what is DNS resolution? Importance of DNS in Networking ! + +- How DNS Works + - DNS Query Process + - Recursive vs Iterative DNS Queries + - DNS Hierarchy (Root, TLDs, and Authoritative Servers) + +- DNS Components + - Domain Names and Zones + - Name Servers + - Resource Records + +- DNS Record Types + - A, AAAA, and CNAME + - MX, NS, and TXT + - PTR, SRV, and SOA + +- DNS Configurations + - Setting Up DNS for a Domain + - Forwarding and Reverse DNS + +- Advanced DNS Concepts + - DNS Caching + - DNS Load Balancing + - Dynamic DNS (DDNS) + +- DNS Security + - Common DNS Threats (Spoofing, DDoS) + - DNSSEC (DNS Security Extensions) + - Mitigation Strategies + +- DNS in Practice + - Tools for DNS Troubleshooting (dig, nslookup) + - Real-World Use Cases + +- Future of DNS + - DNS over HTTPS (DoH) and DNS over TLS (DoT) + - Challenges and Innovations + +- Conclusion + - Recap of Key Points + - DNS’s Role in Modern Internet Infrastructure + +# Domain Name System (DNS): Architecture, Operation, and Security + +# Shortly, what is DNS resolution? + +Domain Name System (DNS) resolution, is the process by which domain names are translated into IP addresses. When you type a website's domain name into a web browser, such as "**multichat.network**" your computer needs to know the corresponding IP address to establish a connection with the website's server. + +# Importance of DNS in Networking ! + +DNS in Networking is `crucial` because it enables easy access to websites by converting domain names into IP addresses + +- ensuring reliable and efficient routing of internet traffic + +Without DNS, users would need to remember numerical IP addresses to access websites. + +### DNS Security Issues include: + +- **DNS Spoofing**: Attackers inject false DNS responses to redirect traffic. +- **DNS Cache Poisoning**: Malicious data is stored in DNS cache, causing incorrect IP address resolution. +- **DNS Amplification Attacks**: Exploiting DNS servers to launch DDoS attacks. +- **Domain Hijacking**: Gaining unauthorized control over domain registration. +- **Man-in-the-Middle Attacks**: Intercepting DNS queries and responses to steal sensitive data. diff --git a/thumbnails/DNS-Resolution-Domain-Name-System-IP-Address-Lookup-Name-Resolution-DNS-Resolver.png b/thumbnails/DNS-Resolution-Domain-Name-System-IP-Address-Lookup-Name-Resolution-DNS-Resolver.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ab671a6dcea7760aaeaa74a650325a5fd56384 GIT binary patch literal 48329 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 literal 0 HcmV?d00001 From 8d561c148dd2fa6dc94e9c5ea1dd11f34b7bdb20 Mon Sep 17 00:00:00 2001 From: Soulaimane Yahya Date: Fri, 6 Dec 2024 14:54:05 +0100 Subject: [PATCH 2/2] fixing-articles --- posts/1733218835053.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/posts/1733218835053.md b/posts/1733218835053.md index 43c9f7c..8c9a32a 100644 --- a/posts/1733218835053.md +++ b/posts/1733218835053.md @@ -13,10 +13,10 @@ Domain Name System (DNS): Architecture, Operation, and Security ### Table of content -- Introduction to DNS +- Shortly, what is DNS ? - Shortly, what is DNS resolution? Importance of DNS in Networking ! -- How DNS Works +- How DNS resolution works - DNS Query Process - Recursive vs Iterative DNS Queries - DNS Hierarchy (Root, TLDs, and Authoritative Servers) @@ -71,10 +71,28 @@ DNS in Networking is `crucial` because it enables easy access to websites by con Without DNS, users would need to remember numerical IP addresses to access websites. -### DNS Security Issues include: +### DNS Security Issues: - **DNS Spoofing**: Attackers inject false DNS responses to redirect traffic. - **DNS Cache Poisoning**: Malicious data is stored in DNS cache, causing incorrect IP address resolution. - **DNS Amplification Attacks**: Exploiting DNS servers to launch DDoS attacks. - **Domain Hijacking**: Gaining unauthorized control over domain registration. - **Man-in-the-Middle Attacks**: Intercepting DNS queries and responses to steal sensitive data. + +# How DNS resolution works: + +# Request Initiation + +When you enter a domain name (e.g., **multichat.network**) in your web browser, your computer sends a DNS resolution request to a `DNS resolver`. +The resolver can be; + +- Internet Service Provider's (ISP) +- DNS server +- third-party DNS resolvers like Google DNS, Cloudflare DNS or OpenDNS (cisco)… + +# Recursive Query + +DNS Resolution Domain Name System IP Address Lookup Name Resolution DNS Resolver Recursive Query Root DNS Servers TLD DNS Servers Authoritative DNS Servers DNS Records DNS Caching DNS Lookup DNS Infrastructure DNS Hierarchy DNS Resolution Process DNS Resolution Time DNS Response Time DNS Response Codes DNS Forwarding DNS SecurityDNS Resolution Domain Name System IP Address Lookup Name Resolution DNS Resolver Recursive Query Root DNS Servers TLD DNS Servers Authoritative DNS Servers DNS Records + + +The `DNS resolver` receives the request and starts the resolution process. If the resolver doesn't already have the IP address corresponding to the domain name in its **cache**, it begins a `recursive query`.