기초가 탄탄해지는 DNS 실전 교과서
도서명:기초가 탄탄해지는 DNS 실전 교과서
저자/출판사:와타나베,유이,사토,신타,후지와라,가즈노리/제이펍
쪽수:364쪽
출판일:2021-11-19
ISBN:9791191600445
목차
추천사 xvi
감수자의 글 xviii
이 책의 구성 xxiii
옮긴이 머리말 xxv
베타리더 후기 xxvii
기초편
CHAPTER 01 DNS가 만들어진 배경 1
01 IP 주소와 이름의 관계 2
[COLUMN] 통신 프로토콜이란? 3
[COLUMN] IP 주소에 대해 더 알아보기 4
이름으로 상대를 지정하기 4
[COLUMN] 일상에서 접할 수 있는 어드레싱과 네이밍 5
02 IP 주소와 이름의 대응 관리 6
03 집중 관리에서 분산 관리로 9
계층화와 위임 10
이름을 고유하게 하는 구조 12
[COLUMN] 계층화와 위임에서 주의할 점 13
04 도메인 이름의 구성 14
도메인 이름이란? 15
도메인 이름의 구성 15
서브 도메인 16
도메인 이름의 장점 18
[COLUMN] 도메인 이름에서 주의할 점 19
05 도메인 이름을 사용할 수 있도록 하기 위해 생겨난 DNS 20
DNS란? 20
DNS 계층화와 위임의 구조 21
[COLUMN] DNS의 기술 사양은 누가 어디에서 정하는가? 23
06 DNS와 레지스트리의 관계 24
이름 관리의 분산화 24
레지스트리와 그 관계자의 연계 및 협조 25
CHAPTER 02 도메인 이름의 등록 관리 구조와 관리 체계 27
01 레지스트리란? 28
[COLUMN] 레지스트리와 레지스트리 오퍼레이터 28
IP 주소와 도메인 이름 관리의 차이 28
레지스트리의 역할 29
[COLUMN] 도메인 이름의 수명 주기 31
[COLUMN] Whois와 그 역할 32
레지스트리와 TLD의 관계 33
[COLUMN] ccTLD가 두 글자가 된 이유 33
[COLUMN] gTLD의 변천 34
[COLUMN] 새로운 분류의 gTLD 35
도메인 이름과 상표권 35
02 레지스트리ㆍ레지스트라 모델과 레지스트라의 역할 38
레지스트리ㆍ레지스트라 모델 38
[COLUMN] KR 도메인 이름의 등록 대행자 제도 41
레지스트라의 역할 41
03 도메인 이름 등록하기 43
등록자가 하는 일 43
레지스트라가 하는 일 46
레지스트리가 하는 일 46
04 도메인 이름을 사용할 수 있도록 하기 48
등록자가 하는 일 48
레지스트라가 하는 일 50
레지스트리가 하는 일 50
[COLUMN] 외부 서비스의 이용 51
05 도메인 이름의 세계적인 관리 체계 52
인터넷 거버넌스란? 52
[COLUMN] ‘The Internet is for Everyone’ 53
인터넷 식별자에 관한 세계적인 관리 및 조정 53
도메인 이름에 관한 정책 검토 54
IANA 54
CHAPTER 03 DNS의 이름 풀이 57
01 이름 풀이의 구조 58
질의와 응답 58
계층 구조를 따라가는 것 59
02 이름 풀이의 작동 62
구체적인 작동의 예시 62
이름 풀이의 부하와 시간의 경감 64
03 이름 풀이를 위해 필요한 것 68
부모가 응답하는 자식의 네임 서버 정보, ‘위임 정보’ 68
위임 정보의 등록 68
04 이름 풀이에서 위임의 중요성 71
이름 풀이의 구조가 가져다주는 장점 71
실제 인터넷에서의 위임 관계 74
[COLUMN] KR 도메인 이름의 종류 76
CHAPTER 04 DNS의 구성 요소와 구체적인 작동 77
01 세 종류의 구성 요소와 그 역할 78
스터브 리졸버의 역할 79
풀 리졸버의 역할 80
권한이 있는 서버의 역할 82
[COLUMN] DNS의 클래스 84
리소스 레코드의 구성 84
리소스 레코드의 타입 85
[COLUMN] 통일되지 않은 명칭에 주의하자 86
02 구성 요소의 연계에 의한 이름 풀이 87
[COLUMN] 루트 서버의 IP 주소는 어떻게 알까? 93
[COLUMN] 이름 풀이 요구와 이름 풀이 실행의 차이 93
03 DNS 처리의 효율화와 가용성의 향상 94
캐시와 네거티브 캐시 94
권한이 있는 서버를 여러 대 설치하기 98
04 정방향과 역방향 102
실전편
CHAPTER 05 도메인 이름 설계하기 103
01 〈실전 편을 읽는 방법〉 DNS를 작동시키기 위해 필요한 것 104
자신의 도메인 이름을 인터넷에서 사용할 수 있도록 하기 104
인터넷에서 사용되고 있는 도메인 이름을 자신이 사용할 수 있도록 하기 105
DNS를 지속적으로 작동시켜 가용성을 높이기 105
02 도메인 이름을 설계하기 위한 기본적인 사고방식 107
03 EXAMPLE사를 예시로 한 설계와 구축 111
도메인 이름을 어떻게 관리하고 운용할지 정하기 111
CHAPTER 06 도메인 이름 관리하기: 권한이 있는 서버의 설정 121
01 도메인 이름의 관리자가 관리하는 범위와 권한이 있는 서버 122
02 권한이 있는 서버의 가용성 124
프라이머리 서버와 세컨더리 서버 124
존 전송의 구조 125
프라이머리 서버와 세컨더리 서버의 배치 127
03 권한이 있는 서버가 응답하는 정보 128
리소스 레코드의 표기 형식 128
이 장에서 설명할 리소스 레코드 129
04 도메인 이름의 관리와 위임을 위해 설정하는 정보 130
존 자체에 관한 정보: SOA 리소스 레코드 130
[COLUMN] 절대 도메인 이름, 상대 도메인 이름, 전체 주소 도메인 이름이 존재하는 이유 131
위임에 관한 정보: NS 리소스 레코드 134
[COLUMN] 글루 레코드가 필요한 이유 136
05 서비스를 제공하기 위해 설정하는 정보 137
www.example.kr이라는 이름으로 웹사이트 공개하기 137
user@example.kr이라는 메일 주소를 사용할 수 있도록 하기 138
외부 서비스를 자사 도메인 이름으로 이용하기 139
06 리소스 레코드를 사용해서 메시지 전달하기 142
도메인 이름에 대응하는 텍스트 설정하기 142
07 리소스 레코드 세트(RRset) 143
08 존 파일에 리소스 레코드 설정하기 144
[COLUMN] 역방향을 설정하기 위한 PTR 리소스 레코드 147
CHAPTER 07 이름 풀이 서비스 제공하기: 풀 리졸버의 설정 149
01 풀 리졸버의 중요성 150
[COLUMN] 힌트 파일과 프라이밍 151
02 풀 리졸버의 설치와 운용 153
풀 리졸버의 설치 153
[COLUMN] 공인 IP 주소와 사설 IP 주소 154
[COLUMN] DNS 포워더 155
풀 리졸버의 가용성 156
풀 리졸버의 접근 제한 157
오픈 리졸버의 위험성 159
[COLUMN] 풀 리졸버 운용의 변천 159
[COLUMN] 결함을 가지는 홈 라우터 160
퍼블릭 DNS 서비스 161
CHAPTER 08 DNS 작동 확인 163
01 DNS 작동 확인의 기초 164
DNS의 서비스 상태를 확인하는 방법 164
[COLUMN] 인시던트와 액시던트 165
02 명령줄 도구 166
DNS의 작동 상태를 확인하기 위한 명령어 166
dig 명령어와 drill 명령어 167
dig, drill, kdig 명령어의 대표적인 옵션 169
[COLUMN] 재귀적 질의와 비재귀적 질의 171
DNS 메시지의 형식 171
[COLUMN] DNS 메시지에서 도메인 이름의 표현 형식과 최대 길이 174
dig 명령어의 출력 결과 해석하기 174
03 dig 명령어를 사용한 작동 확인 177
권한이 있는 서버의 작동 확인하기 177
풀 리졸버의 작동 확인하기 180
04 dig 명령어의 응용: 풀 리졸버가 되어 이름 풀이하기 182
예시 1) kisa.or.kr의 A 리소스 레코드 질의하기 182
예시 2) www.ietf.org의 AAAA 리소스 레코드 질의하기 187
[COLUMN] 내부 이름과 외부 이름 190
05 유용한 DNS 체크 사이트 201
Zonemaster 201
DNSViz 203
KRNIC DNS 자가 점검 206
06 서버의 감시 208
제대로 작동하고 있는가? (사활 감시) 208
사이버 공격을 받고 있지는 않은가? (트래픽 감시) 209
언제 무엇이 일어났는가? (시스템 로그 수집과 확인) 211
CHAPTER 09 DNS에 대한 사이버 공격과 그 대책 213
01 대상과 수법에 따른 DNS 관련 공격의 분류 214
공격 대상과 공격 수법에 따른 분류 214
각 공격의 예시 215
[COLUMN] DoS 공격과 DDoS 공격 216
02 대상과 효과에 따른 공격 대책의 분류 217
지킬 대상과 대책의 효과에 따른 분류 217
03 공격의 영향 범위 219
스터브 리졸버의 영향 범위 219
풀 리졸버의 영향 범위 220
권한이 있는 서버의 영향 범위 221
[COLUMN] IP Anycast란? 222
04 DNS의 특성이 공격에 미치는 영향 223
통신 프로토콜에 따른 영향 223
보급 상황에 따른 영향 223
통신 특성에 따른 영향 223
[COLUMN] DNS에서 사용하는 통신 프로토콜 224
05 대표적인 공격 수법과 그 개요 225
DNS 반사 공격 225
랜덤 서브 도메인 공격 226
BIND의 취약점을 이용한 DoS 공격 228
캐시 포이즈닝 228
[COLUMN] 카민스키형 공격 수법 230
등록 정보 무단 수정에 의한 도메인 이름 하이잭 230
[COLUMN] 도메인 이름 하이잭과 DNS 하이잭 231
06 공격에 대한 대책 232
DNS 반사 공격에 대한 대책 232
[COLUMN] 서버 특성 차이로 인한 대책의 차이 235
랜덤 서브 도메인 공격에 대한 대책 235
[COLUMN] IP53B란? 236
BIND의 취약점을 이용한 공격에 대한 대책 237
캐시 포이즈닝에 대한 대책 238
등록 정보 무단 수정에 의한 도메인 이름 하이잭에 대한 대책 240
CHAPTER 10 보다 나은 DNS 운용을 위하여 243
01 서버의 신뢰성에 관한 고려 사항 244
서버를 작동시키는 플랫폼의 신뢰성 244
DNS 소프트웨어의 선택 245
주요 DNS 소프트웨어 246
서버를 설치할 네트워크의 선정 248
02 DNS 설정과 운용에 관한 잠재적 위험 249
권한이 있는 서버 간의 존 데이터 불일치 249
부모-자식 간의 NS 리소스 레코드 불일치 250
lame delegation(불완전한 위임) 251
외부 이름의 설정 252
03 DNSSEC과 DNS 쿠키의 개요 253
DNSSEC의 개요 253
DNS 쿠키의 개요 254
응용편
CHAPTER 11 DNS 설정 및 운용 노하우 257
01 〈자주 있는 트러블과 설정 실수〉 lame delegation 258
lame delegation의 예시 258
lame delegation이 발생하면 왜 나쁜가? 259
lame delegation 발생의 예방 260
레지스트리의 대처 261
02 〈자주 있는 트러블과 설정 실수〉존 전송에서의 트러블 262
03 〈자주 있는 트러블과 설정 실수〉 존 파일 유지 보수에서의 트러블 263
04 〈자주 있는 트러블과 설정 실수〉 방화벽이나 OS의 접근 제한으로 인한 트러블 264
05 〈자주 있는 트러블과 설정 실수〉 서버의 종류와 접근 제한의 설정 265
06 ‘www’가 붙지 않는 호스트 이름의 설정 방법 267
존 정점에 A/AAAA 리소스 레코드 설정 267
CDN 서비스와의 관계 268
07 $TTL을 설정할 때의 주의점 270
$TTL로 TTL 값의 기본값을 지정 270
권한이 있는 서버의 NS/A/AAAA의 TTL 값은 길어야 좋다 270
08 국제화 도메인 이름의 설정 방법 272
[COLUMN] 맨 앞 글자가 ‘_’로 시작하는 라벨 272
[COLUMN] Punycode 273
09 응답 사이즈가 큰 DNS 메시지에 대한 대응 277
[COLUMN] UDP DNS 메시지 사이즈가 512바이트로 제한된 이유 277
응답 사이즈가 큰 DNS 메시지에 대응하기 위한 기능 확장 279
[COLUMN] EDNS0의 확장 기능 279
IP 단편화에 대한 대응 281
10 역방향 DNS의 설정 283
역방향 DNS에서 사용되는 도메인 이름과 리소스 레코드 283
역방향 DNS의 이용 사례 284
CHAPTER 12 권한이 있는 서버의 이전(DNS의 이사) 287
01 호스팅 사업자 이전에 따른 권한이 있는 서버의 이전 288
02 DNS를 이사할 때 고려해야 할 항목 289
두 개의 이전 대상(권한이 있는 서버와 존 데이터) 289
병행 운용 기간 289
풀 리졸버에 따른 작동의 차이 290
접근 타이밍에 따른 캐시 상태의 차이 290
위임 정보 변경의 타이밍 290
비협조적인 DNS 운용자 291
03 정식 이사 순서 292
신규 서버 준비 292
현재 설정되어 있는 MX/A/AAAA의 TTL 값 단축 293
메일 서버, 웹 서버 등의 이전 294
권한이 있는 서버 이전 295
MX/A/AAAA의 TTL 값 복구 297
04 권한이 있는 서버와 다른 서버의 이전을 동시에 하는 경우 298
[COLUMN] 유령 도메인 이름 취약점 300
CHAPTER 13 DNSSEC의 구조 301
01 전자 서명의 구조와 DNSSEC에의 적용 302
전자 서명의 구조 302
전자 서명을 DNSSEC에 적용하기 303
서명 검증 305
02 신뢰의 연쇄 307
[COLUMN] 해시값이란? 308
[COLUMN] 루트 존 KSK 롤 오버 311
[COLUMN] DNSSEC의 키 생성 및 운용 311
03 DNSSEC에서 사용되는 두 종류의 키(KSK와 ZSK) 312
[COLUMN] RSA란? 312
04 KSK와 ZSK를 사용한 서명과 검증의 흐름 313
05 DNSSEC의 부재 증명에 사용되는 리소스 레코드 317
[COLUMN] 부재 증명이 필요한 이유 318
CHAPTER 14 DNS에서의 프라이버시 개요와 구현 상황 319
01 DNS에서 프라이버시와 관련하여 우려되는 점과 그 해결책 320
프라이버시와 관련하여 우려되는 점 320
우려되는 점에 대한 해결책 322
[COLUMN] IAB 성명문 322
02 QNAME minimisation 323
QNAME minimisation의 개요 323
QNAME minimisation의 구현 상황 325
03 DNS over TLS 326
DNS over TLS의 개요 326
[COLUMN] TLS란? 327
DNS over TLS의 구현 상황 327
[COLUMN] 풀 리졸버와 권한이 있는 서버 간의 통신 암호화 327
04 DNS over HTTPS 328
DNS over HTTPS의 구현 상황 328
[COLUMN] ‘OOO over XXX’란? 329
찾아보기 333