책 소개
최근 우리 사회는 정보화 시대를 지나 4차 산업혁명 시대를 맞이하여 스마트 사회(Smart Society), 초연결 사회로 진화하고 있고, 우리의 실생활 또한 엄청나게 변화하고 있다. 누구든지 스마트 기기만 가지고 있으면 어느 곳에 있든 초고속통신망인 인터넷을 통해서 전 세계 모든 정보를 원하는 대로 찾아보고 활용할 수 있어서 정치, 금융, 행정, 교육, 국방 등 거의 모든 산업 분야에 엄청난 변화를 가져오고 있다. 특히, SNS를 통한 소통의 변화는 시공간을 초월해서 전 세계 모든 사람과 소통할 뿐만 아니라 공통의 관심을 가진 분야의 사람끼리 원하는 목적을 위해 마음대로 소통할 수 있는 시대가 되었다.
이렇게 우리 삶의 거의 모든 분야에서 변화를 가져다준 인터넷(Internet)은 우리가 알고 있는 다양한 좋은 점(순기능)을 가지고 있지만 반대로 이에 못지않게 우리에게 엄청난 피해를 줄 수 있는 여러 가지 역기능을 가지고 있다. 각종 악성코드, 악의적인 해킹, 도청, DDoS 공격, 개인정보 침해사고 등이 날이 갈수록 새롭게 생겨나고 있으며, 그 유형 또한 점점 더 다양하게 나타나고 있다. 따라서 이러한 역기능으로 인한 피해를 줄이기 위한 대응책으로서 다양한 정보보호(security 또는 보안) 기술들이 개발되어 사용되고 있다.
하지만 국내에서 인터넷 보안 기술에 대한 기초적이고 체계적으로 다룬 책은 많이 나와 있지만, 대부분은 이론 중심의 책이다. 더군다나 최근에 많은 대학에서 보안 관련 학과를 개설해서 운영되고 있지만 전공분야 학생들뿐만 아니라 보안에 관심이 많은 일반인에게 보다 실제적인 도움을 줄 수 있는 실제적이고 실무적인 내용을 담은 책은 많지 않았다.
인터넷 보안 관련과 위협과 공격을 실습을 통해서 학습할 수 있는 좋은 자료가 없다고 생각하던 차에 미국 시라큐스대학의 Wenliang Du 교수가 쓴 “Internet Security” 3판 책을 접하고 이 책이 인터넷에서 동작하는 TCP/IP 프로토콜과 각 계층에서 일어날 수 있는 보안 위협과 공격을 실제로 실습을 통해서 학습할 수 있는 좋은 책이라고 생각되어 번역해서 출간하게 되었다.
이 책의 내용은 저자가 수년에 걸쳐 구축한 실험, 실습 내용(SEED Lab)을 학생들이 직접 접속해서 실습과 구현을 해보면 계층별로 가지고 있는 취약점과 공격, 나아가 대응책을 보다 쉽게 이해할 수 있다고 생각한다. 또, 대학에서도 교수 개인별 또는 학과별로 실험, 실습 환경을 구축하기 보다는 무료로 제공하는 SEED Lab을 활용하면 보다 알찬 수업을 진행할 수 있다고 생각된다.
이 책은 인터넷의 계층구조에서 데이터 링크계층에서부터 응용계층까지 각 계층이 가지고 있는 취약점과 공격들을 SEED Lab을 통하여 실제 실습할 수 있도록 되어있다.
이 책의 특징
이 책은 저자의 20년 교육과 연구 경험을 바탕으로 쓴 것이다. 사이버 보안의 기본 원칙을 다룬다. 이 책의 목표는 독자가 다양한 공격이 동작하는 방식, 공격의 근본적인 원인이 무엇인지, 공격을 방어하는 방법과 다양한 방어 메커니즘이 동작하는 방식을 이해하도록 돕는 것이다. 이 책의 지식을 갖춘 독자는 컴퓨터와 네트워크 시스템이 직면한 위험을 평가하고, 소프트웨어의 일반적인 취약점을 감지하고, 시스템과 네트워크를 보호하기 위한 적절한 방법을 사용하고, 공격을 차단하고 더 중요한 것은 보안 원칙을 적용하여 실제 문제를 해결할 수 있다.
저자는 “실제 해보고 얻는 학습”을 강력히 믿기 때문에 이 책은 실험, 실습 접근 방식을 취한다. 각 보안 원칙에 관해 이 책에서는 원칙을 설명하는 데 도움이 되는 일련의 실습 활동을 제공한다. 독자는 원리를 읽는 대신에 “실제 해보는” 실험을 할 수 있다. 예를 들어, 보안 원칙에 공격이 포함된 경우 이 책은 독자에게 실제로 공격을 해보도록 안내한다(격리된 환경에서). 어떤 경우에는 원칙이 방화벽이나 VPN(가상 사설망)과 같은 보안 메커니즘과 관련된 경우 이 책은 독자에게 이 메커니즘의 미니 버전(예: 미니 방화벽 또는 미니 VPN)을 구현하도록 안내한다.
모든 실습 활동은 작성자가 제공한 가상 머신 이미지에서 수행된다. 다음 URL에서 다운로드 할 수 있다: https://seedsecuritylabs.org. 활동에 필요한 모든 것이 이미 설정되어 있다. 독자는 VM(무료)을 다운로드하고 VirtualBox를 사용하여 실행하기만 하면 책에서 다루는 활동을 즉시 수행할 수 있다. 이 책은 Ubuntu 20.04 VM 이미지를 기반으로 한다.
책에 있는 대부분의 활동은 전 세계 강사들이 널리 사용하는 저자의 SEED Lab(버전 2.0)을 기반으로 한다.
저자는 모든 내용을 깊이 있게 다루었다. 강의에서 다루는 모든 주제에 대해 저자는 필요한 만큼 철저하게 다루고 싶었다. 저자는 학생들에게 개념만 가르치는 것은 관심이 없다. 저자는 학생들이 깊이 이해하도록 돕는 것을 좋아한다. 이 책에도 같은 철학이 반영되어 있다. 예를 들어, DNS 공격이 어떻게 동작하는지 30분 만에 학생들에게 가르칠 수 있지만 이 책은 DNS 프로토콜과 DNS에 대한 다양한 공격에 대한 자세한 내용을 다루는 DNS에 대해 50페이지를 사용하였다. 이러한 세부 사항 중 많은 부분을 파악하는 데 저자 자신이 수개월의 노력을 기울였다.
저자는 기본을 믿는다. 보안은 매우 광범위한 주제이다. 새로운 기술 XYZ가 나올 때마다 “XYZ 보안”이라는 새로운 보안 주제가 있을 것이다. 이 새로운 보안 주제를 가르치는 것이 더 유행을 따르는 것처럼 보이지만 저자는 기본 교육을 강력히 믿고 있다. 이 XYZ 보안 주제의 바탕에는 유사한 보안 기본 사항이 있다. 기본 사항을 마스터한 독자는 지식을 새로운 보안 주제에 빠르게 적용할 수 있지만 XYZ 보안을 방금 배운 독자는 새로운 기술의 보안을 다루는 데 어려움을 겪을 것이다.
독자가 기본 사항을 마스터할 수 있도록 돕기 위해 이 책은 독자가 근본적인 유사점과 차이점을 볼 수 있도록 돕기 위해 종종 다른 것처럼 보이는 몇 가지 항목(공격 또는 방어 메커니즘)을 함께 제공한다. 또한 특정 메커니즘의 보안 문제를 분석할 때 보안 원칙을 기반으로 체계적인 접근 방식을 취하고 탄탄한 기초를 바탕으로 추론한다.
작가 소개
지은이 : Wenliang Du
Wenliang (Kevin) Du, 박사는 시라큐스대학의 Laura J. and L. Douglas Meredith 교수상을 받은 우수 강의 교수이다. 그는 1993년 중국 과학기술대학에서 학사 학위를 받았다. 플로리다 국제 대학에서 석사 학위를 받은 후 1996년부터 2001년까지 퍼듀대학에서 수학했으며 컴퓨터공학 박사학위를 받았다. 2001년 8월에 시라큐스대학의 조교수가 되었다. 그는 현재 전기 공학 및 컴퓨터 공학과의 전임 교수이다.
Du 교수는 2001년부터 학부와 대학원에서 사이버 보안 과정을 가르치고 있다. 또한 Udemy 과정을 가르치고 있으며, 그의 과정은 종종 "최고 등급" 인정을 받았다. "실습을 통한 학습"의 확고한 신념으로 그는 SEED Lab이라는 40개 이상의 실습 Lab을 개발하여 학생들이 보안 공격, 대응책과 기본 보안 원칙에 대한 직접적인 경험을 얻을 수 있도록 했다. 이 Lab은 널리 알려져 있다. 전 세계적으로 1000개 이상의 대학, 단과대학과 고등학교에서 교육과정에 이 Lab을 채택하고 있다. 2010년에 SEED 프로젝트는 국립과학재단(NSF)이 의회에 보낸 보고서에서 의해 주목을 받았다. "새로운 도전, 새로운 전략: 학부 STEM 교육의 우수성 구축(16쪽)"이라는 제목의 보고서는 "전국적으로 학부 STEM 수업에서 최첨단 창의성을 나타내는 17개 프로젝트"가 주목을 받았다. SEED Lab의 영향으로 제21회 정보시스템 보안교육 콜로키움에서 '2017 Academic Leadership' 상을 수상했다. 2019년 시라큐스대학은 그에게 강의 우수교수에게 주는 Meredith 교수상을 수여하였다.
Du 교수는 시스템 보안에 특별한 관심을 가지고 사이버 보안 연구를 수행하고 있다. 그는 100편이 넘는 기술 논문을 발표하였다. 그의 연구 작업은 16,600회 이상 인용되었다(2022년 5월 기준, Google Scholar 기준). 그는 2013 ACM CCS Test-of-Time Award와 2021 ACSAC Test-of-Time Award를 수상했다. 그의 현재 연구는 사이버 보안 교육과 연구를 위한 인터넷 에뮬레이터 구축에 중점을 두고 있다.
옮긴이 : 이재광
울산과학기술원(UNIST) 전기전자공학과 산학협력중점교수
한남대학교 컴퓨터공학과 명예교수
목 차
Chapter 01 네트워크 보안 개요
1.1 네트워크 보안 모듈의 구성
1.2 IP 주소와 네트워크 인터페이스
1.3 패킷의 수명 주기와 프로토콜 계층들
1.4 패킷 스니핑
1.5 패킷 스푸핑
1.6 Scapy에 대한 추가 정보
1.7 컨테이너와 네트워크
1.8 요약
Chapter 02 MAC 계층과 공격
2.1 개요
2.2 네트워크 인터페이스 카드(NIC)
2.3 이더넷 프레임
2.4 ARP
2.5 ARP 캐시 감염 공격
2.6 ARP 캐시 감염을 이용한 중간자 공격
2.7 요약
Chapter 03 인터넷 프로토콜(IP)과 공격
3.1 개요
3.2 IP 헤더
3.3 IP 단편화와 공격
3.4 라우팅
3.5 ICMP와 공격
3.6 NAT: 네트워크 주소 변환
3.7 요약
Chapter 04 패킷 스니핑과 스푸핑
4.1 개요
4.2 패킷 수신 방법
4.3 패킷 스니핑
4.4 패킷 스푸핑
4.5 스니핑 후 스푸핑하기
4.6 하이브리드 방식을 이용한 패킷 스푸핑
4.7 엔디안
4.8 검사합 계산
4.9 요약
Chapter 05 전송 계층, UDP 프로토콜과 공격
5.1 전송 계층
5.2 UDP 프로토콜
5.3 UDP를 이용한 공격
5.4 요약
Chapter 06 TCP 프로토콜에 대한 공격
6.1 개요
6.2 TCP 프로토콜 동작 방식
6.3 SYN 플러딩 공격
6.4 TCP 리셋 공격
6.5 TCP 세션 하이재킹 공격
6.6 Mitinick 공격
6.7 요약
Chapter 07 방화벽
7.1 개요
7.2 방화벽의 유형
7.3 Netfilter를 이용한 간단한 방화벽 구현하기
7.4 iptables를 이용한 Linux 방화벽 구성하기
7.5 연결 추적과 상태 방화벽
7.6 응용 프로그램/프록시 방화벽과 웹 프록시
7.7 요약
Chapter 08 가상 사설 통신망
8.1 개요
8.2 TLS/SSL VPN 동작 방식 개요
8.3 TUN 인터페이스 생성과 이용
8.4 IP 터널 구현하기
8.5 반환된 패킷을 클라이언트로 다시 가져오기
8.6 VPN 테스팅
8.7 TUN을 이용하여 두 개의 사설망 연결
8.8 TAP를 이용하여 두 개의 사설망 브리징하기
8.9 요약
Chapter 09 터널링과 방화벽 우회
9.1 개요
9.2 VPN: IP 터널링
9.3 포트 포워딩: SSH 터널링
9.4 동적 포트 포워딩과 SOCKS 프록시
9.5 그 밖의 터널링 방법
9.6 요약
Chapter 10 DNS와 DNS 공격
10.1 DNS 계층구조, 영역과 서버
10.2 DNS 조회 프로세스
10.3 DNS 서버 설정과 실험 환경
10.4 Scapy를 이용한 DNS 요청과 응답 구성하기
10.5 DNS 공격: 개요
10.6 로컬 DNS 캐시 감염 공격
10.7 원격 DNS 캐시 감염 공격
10.8 악성 DNS 서버의 응답 위조 공격
10.9 DNS 리바인딩 공격
10.10 DNS 서버에 대한 서비스 거부 공격
10.11 요약
Chapter 11 DNSSEC: DNS 보안
11.1 DNSSEC 동작 방식
11.2 DNSSEC에 대한 실험 실습
11.3 TLS/SSL 해결책
11.4 요약
Chapter 12 경계 게이트웨이 프로토콜(BGP)과 공격
12.1 개요
12.2 물리적인 기반구조
12.3 BGP 프로토콜: 개요
12.4 SEED 인터넷 에뮬레이터
12.5 BGP: AS가 소유한 IP 프리픽스
12.6 BGP 피어링
12.7 BGP UPDATE 메시지
12.8 경로 선택
12.9 BGP 대규모 커뮤니티
12.10 Transit 자율 시스템을 위한 BGP
12.11 IP 애니캐스트: BGP 응용 프로그램
12.12 BGP 하이재킹 공격
12.13 요약
Chapter 13 Heartbleed 버그와 공격
13.1 배경: Heartbeat 프로토콜
13.2 Heartbleed 공격 시작하기
13.3 Heartbleed 버그 수정하기
13.4 요약
Chapter 14 리버스 쉘
14.1 개요
14.2 파일 설명자와 재지정
14.3 입력/출력을 TCP 연결로 재지정하기
14.4 리버스 쉘
14.5 요약
Chapter 15 전송 계층 보안
15.1 전송 계층 보안 개요
15.2 TLS 핸드셰이크(버전 1.2)
15.3 TLS 핸드셰이크(버전 1.3)
15.4 TLS 데이터 전송
15.5 파이썬으로 작성한 TLS 클라이언트 프로그램
15.6 서버의 hostname 확인
15.7 파이썬으로 작성한 TLS 서버 프로그램
15.8 TLS 프록시
15.9 요약
Chapter 16 비트코인과 블록체인
16.1 역사
16.2 암호화 재단과 비트코인 주소
16.3 거래
16.4 거래 출력 잠금 해제하기
16.5 블록체인과 채굴
16.6 요약
참고문헌
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |