최근 우리 사회는 정보화 시대를 지나 4차 산업혁명 시대를 맞이하여 스마트 사회(Smart Society), 초연결 사회로 진화하고 있고, 우리의 실생활 또한 엄청나게 변화하고 있다. 누구든지 스마트 기기만 가지고 있으면 어느 곳에 있든 초고속통신망인 인터넷을 통해서 전 세계 모든 정보를 원하는 대로 찾아보고 활용할 수 있어서 정치, 금융, 행정, 교육, 국방 등 거의 모든 산업 분야에 엄청난 변화를 가져오고 있다. 특히, SNS를 통한 소통의 변화는 시공간을 초월해서 전 세계 모든 사람과 소통할 뿐만 아니라 공통의 관심을 가진 분야의 사람끼리 원하는 목적을 위해 마음대로 소통할 수 있는 시대가 되었다.
이렇게 우리 삶의 거의 모든 분야에서 변화를 가져다준 인터넷(Internet)은 우리가 알고 있는 다양한 좋은 점(순기능)을 가지고 있지만 반대로 이에 못지않게 우리에게 엄청난 피해를 줄 수 있는 여러 가지 역기능을 가지고 있다. 각종 악성코드, 악의적인 해킹, 도청, DDoS 공격, 개인정보 침해사고 등이 날이 갈수록 새롭게 생겨나고 있으며, 그 유형 또한 점점 더 다양하게 나타나고 있다. 따라서 이러한 역기능으로 인한 피해를 줄이기 위한 대응책으로서 다양한 정보보호(security 또는 보안) 기술들이 개발되어 사용되고 있다.
하지만 국내에서 인터넷 보안 기술에 대한 기초적이고 체계적으로 다룬 책은 많이 나와 있지만, 대부분은 이론 중심의 책이다. 더군다나 최근에 많은 대학에서 보안 관련 학과를 개설해서 운영되고 있지만 전공분야 학생들뿐만 아니라 보안에 관심이 많은 일반인에게 보다 실제적인 도움을 줄 수 있는 실제적이고 실무적인 내용을 담은 책은 많지 않았다.
인터넷 보안 관련과 위협과 공격을 실습을 통해서 학습할 수 있는 좋은 자료가 없다고 생각하던 차에 미국 시라큐스대학의 Wenliang Du 교수가 쓴 “Internet Security” 3판 책을 접하고 이 책이 인터넷에서 동작하는 TCP/IP 프로토콜과 각 계층에서 일어날 수 있는 보안 위협과 공격을 실제로 실습을 통해서 학습할 수 있는 좋은 책이라고 생각되어 번역해서 출간하게 되었다.
이 책의 내용은 저자가 수년에 걸쳐 구축한 실험, 실습 내용(SEED Lab)을 학생들이 직접 접속해서 실습과 구현을 해보면 계층별로 가지고 있는 취약점과 공격, 나아가 대응책을 보다 쉽게 이해할 수 있다고 생각한다. 또, 대학에서도 교수 개인별 또는 학과별로 실험, 실습 환경을 구축하기 보다는 무료로 제공하는 SEED Lab을 활용하면 보다 알찬 수업을 진행할 수 있다고 생각된다. 이 책은 인터넷의 계층구조에서 데이터 링크계층에서부터 응용계층까지 각 계층이 가지고 있는 취약점과 공격들을 SEED Lab을 통하여 실제 실습할 수 있도록 되어있다.
Contents
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 요약
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 요약