* 인터넷을 만든 사람? 빈트 서프, 로버트 칸(1970년 초반)
* 인터넷의 종류 : WWW, FTP, Telnet, Torrent, SSH, Archie, Gopher 등
* 인터넷을 만들게 된 이유
- 미 국방부 산하에 국방과학연구소(ARPA)에서 전쟁에 쓰이는 무기를 연구(신무기 개발)
- 멀리 떨어진 연구기관 및 대학교 등을 연결할 필요성을 느낌 → 문제 : 통신 방법이 다 다름(서로 다른 장비 사용)
- 서로 다른 회사의 네트워크 장치를 사용하다보니 호환이 안됨
→ 알파에서 공통의 프로토콜을 만들기로 함 → ARPAnet
* 전세계 미군 부대를 연결할 계획(1960년대) → APRAnet을 둘로 나눠서 미군 전용 네트워크(Milnet)와 인터넷(TCP/IP)로 분리(1970년대 초)
→ TCP : Application 식별, IP : 시스템 식별
1.1 헤더와 주소체계
- FCS(오류검사), DATA, TCP Header(출발지Port, 목적지Port), IP Header(출발지 IP주소, 목적지 IP주소), Frame Header(목적지 MAC 주소, 출발지 MAC 주소)
- MAC 주소 : 2계층 주소
- IP 주소 : 3계층 주소
- Port 번호 : 4계층 주소
1.2 OSI 7계층
- 1계층 : 물리계층
- 2계층 : 데이터링크 계층
- 3계층 : 네트워크 계층
- 4계층 : 전송 계층
- 5계층 : 세션 계층
- 6계층 : 표현 계층
- 7계층 : 응용 계층
1.3 TCP/IP
- 1계층 : 네트워크 장치
- 2계층 : IP
- 3계층 : TCP/UDP
- 4계층 : Application(data)
- Segment : Application + TCP/UDP
1.4 TCP/UDP
1) TCP를 이용하는 경우 : 속도보다 정확성이 중요할 때
→ 주로 User가 데이터를 송/수신 할 때, 데이터가 큰 경우, 전송이 확실해야 할 때(확인이 필요)
→ 파일, 사진, 동영상, 로그인 등
→ FTP, Telnet, HTTP, SSH, SMTP 등
2) UDP를 이용하는 경우 : 정확성보다 속도가 중요할 때
→ 시스템 간 정보를 교환할 때(SNMP), 실시간으로 음성/비디오 등 전송하는 경우
* TCP/UDP를 이용하지 않는 경우
- ICMP
- IGMP
1.5 패킷과 프레임의 구조
- TCP Segment : Data + TCP Header
- Packet : Data + TCP Header + IP Header
→ 최초 출발지에서 최종 목적지까지 그대로 전달
- Frame : FCS + Data + TCP Header + IP Header + Frame Header
→ 각 구간별 통신 방식에 따라 달라질 수 있음
- TCP Segment는 Packet에 들어있고, Packet은 Frame을 타고 전송됨
→ TCP 대신 UDP를 사용하는 경우에는 TCP Header 자리에 UDP Header
→ Ethernet의 경우 최대 전송단위가 1500byte, →Data + TCP + IP 모두 합해 1500byte 이내여야 함
* Frame 전송 방식의 종류
- Wi-Fi, Ethernet, Token Ring, FDDI → LAN(근거리 통신)
- ATM, PPP, HDLC, Frame-Relay 등 → WAN(원거리 통신)
* 카톡을 보내면?
- Wi-Fi →(공유기)→ Ethernet →(라우터/스위치)→ 광랜(Ethernet) → Frame-Relay → ATM → FDDI → Ethernet
* Segmentation : 데이터의 분할 (TCP)
- IP헤더(20byte), TCP헤더(20byte)의 크기를 제외하고 1460byte씩 데이터를 분할해 패킷 생성 및 전송
→ 모든 패킷에 IP헤더, TCP헤더가 붙음
* Fragmentation : 데이터의 단편화 (IP)
- IP가 데이터를 분할
- 데이터를 1480byte로 분할 후 IP헤더(20byte)를 붙여 전송
→ 모든 패킷에 IP헤더가 붙고, 마지막 패킷에만 프로토콜의 헤더가 붙음(ex. ICMP 헤더)
→ 데이터 분할의 우선순위 : TCP > IP (TCP를 사용하는 경우에는 TCP가 데이터를 분할하고 TCP를 사용하지 않는 경우에는 IP가 데이터를 단편화 함)
2.1 MAC Address
* Ethernet은 누가 만들었을까?
- Xerox의 연구원이었던 Dr.Metcalf가 만듦(1974)
- MAC Address라는 주소체계를 만들어서 장비마다 번호를 부여하는 방식
- 현재 가장 많이 사용되는 LAN 방식
- 표준화하면서 이름을 IEEE 802.3으로 지정(속칭 Ethernet 2)
- MAC 주소 : 각 자리는 16진수, 16은 2의 4승 → 4bit ex) 84-5C-F3-94-67-90
→ 4bit가 12자리(8bit가 6자리)이므로 48bit 주소체계 → 주소의 개수는 2의 48승개
- 앞의 24bit : OUI(제조사 식별코드) : 어느 회사 제품인지
- 뒤의 24bit : 제품 일련번호(의미 x)
2.2 IP Address
* IPv4 주소
- 0부터 255까지의 번호가 4자리로 구분되어있음(구분자 : . )
- 각 자리는 8bit로 되어있음 → 8bit는 2의 8승이므로 256개
- 8bit씩 4자리이므로 32bit 주소체계
→ MAC 주소보다 작아서 주소 고갈 문제 발생
- 네트워크 부분과 호스트 부분으로 나눠짐(네트워크 : 집안이름, 호스트 : 개인이름)
→ 어디까지가 네트워크 부분인지 알 수 없음(가변적)
* 네트워크 부분과 호스트 부분을 구별하는 방법
1) Classful : 클래스기반
- Class A : N.H.H.H → Host 부분은 사용 범위 : 8bit*3 = 24bit
- Class B : N.N.H.H → Host 부분은 사용 범위 : 8bit*2 = 16bit
- Class C : N.N.N.H → Host 부분은 사용 범위 : 8bit
- Class D : 멀티캐스트용으로 지정
- Class E : Not Use
→ 주소낭비가 심해 Classful 방식을 더이상 사용하지 않기로 함(1992)
2) Classless : 클래스를 무시하는 방식(현재 사용)
- 네트워크와 호스트를 서브넷 마스크로 구분(1에 해당하는 IP부분은 Network, 0에 해당하는 IP주소 부분은 Host)
ex) 255.255.255.0
- 네트워크 주소를 표기할 때는 호스트부분을 0으로 사용 ex) 192.168.5.0
- 네트워크 주소를 알면 목적지를 찾을 수 있음
* IPv4 헤더
- Verstion(4bit) _ _ _ _ : 0100 = 4 → ipv4
- Total Length : IP 프로토콜이 만들 수 있는 최대 크기 (Frame에 실어 보내려면 1500bit로 잘라서 전송)
- TTL (Time to Live : 패킷의 수명) : 다른 네트워크로 이동할 때마다 TTL 값이 1씩 줄어듦 → TTL이 0이되면 라우터가 버림(더이상 전달 x)
→ TTL이 0이 된 패킷을 버리는 이유는 네트워크의 혼잡을 방지하기 위함(목적지를 못찾는 패킷을 버림)
→ 내부망에서만 서비스를 하는 서버(외부로 패킷이 나가면 안되는 경우) : TTL을 1 또는 0으로 설정
- 운영체제에 따라 TTL의 초기값이 다름 : Unix-255, Windows : 128, Linux : 64(보통 공유기에서는 Linux 기반 사용, 관리자가 설정 변경 가능)
- Protocol(8bit) : IP헤더 뒤에 오는 프로토콜 정보
- Check-sum(16bit) : 오류검사
* 지역 DNS 로드밸런싱
- 사용자가 접속한 위치(국가별, ISP)에 따라 다른 서버에 접속
* 출발지 IP주소를 다른 주소로 바꿀 수 있음 : IP Spoofing
* 목적지 IP 주소는 다른 주소로 바꿀 수 없음(바꾸면 다른 곳으로 전송됨)
* IP주소는 IANA(인터넷 주소관리 위원회)에서 관리
→ IPv4, IPv6, Port 번호, AS번호(기관식별자)
* IP주소는 컴퓨터를 식별하기 위한 목적으로 사용
2.3 Port 번호(16bit 할당)
- 컴퓨터 내부의 서비스를 식별하기 위해 사용(Application 식별)
- 16bit = 2의 16승
1) System Port : 1~1023번(과거 Well-Known Port) : 범용 서비스를 위한 포트
ex) http(80), FTP(21), SSH(22), Telnet(23), SMTP(25), https(443)
- 용도를 미리 지정해놓으면 물어보지 않아도 됨(IP주소는 DNS가 알려줌)
2) Registered Port : 1024~49151
- 사설 Application을 개발하는 경우 사용하는 포트
- Application을 개발하면, 다른 기존을 Application과 중복되지 않는 번호를 사용해야 함
- 등록하고 사용하면 중복을 막을 수 있음
ex) MySQL : 3306
- 어떤 포트가 열려있다는 것은 어떤 서비스가 실행중임을 알 수 있음을 의미함
- 포트스캐닝 : 어떤 포트가 열려있는지 조사하는 것
3) Dynamic Port : 49152~65535
- 주로 클라이언트용 프로그램들이 사용하는 포트 ex) Web Browser 등
- 사용에 제한이 없음
* 포트번호 확인하기
- 윈도우 cmd) netstat -na
- 내 컴퓨터와 연결된(사용중인) 외부의 IP 주소 및 포트번호 확인
- 외부 주소의 서버 포트가 443 또는 80이면 로컬주소에서 사용하는 포트는 웹 브라우저일 가능성이 높음
3. 실습준비
- Wireshark 설치
- Npcap(Nmap Packet Capture) 설치 : Nmap에서 만든 Packet Capture 도구
* Libpcap : Packet Capture Library
* Winpcap : Windows Packet Capture Program → 현재는 사용 x
* Wireshark : 패킷 분석도구(캡쳐x)
- 최근 기능이 확장되어 USB 트래픽을 분석할 수 있음, 다양한 PAN도 분석 가능
- 가장 많이 사용하는 오픈소스
- 실행해서 트래픽이 많은 네트워크를 선택하면 트래픽 확인 가능
3.1 Wireshark
- Ethernet II, IP 헤더, TCP/UDP 헤더, 데이터 확인 가능
- 메뉴의 정지버튼을 통해 패킷 캡쳐 중단 가능
- Time : 패킷 캡쳐 시간
- Source : 출발지
- Destination : 도착지
- Protocol : 주요 프로토콜
- Length : 패킷 길이
- Info : 주요 내용
* UTC(Coordinated Universal Time) : 표준시(그리니치 천문대)
- 서버가 글로벌하게 배치되어있는 경우, 시간을 통일해서 봐야 함
'SK 쉴더스 루키즈' 카테고리의 다른 글
[SK 쉴더스] 네트워크 보안 3일차 - 암호화 -- 추가예정 (1) | 2022.09.26 |
---|---|
[SK 쉴더스] 네트워크보안 2일차 -- 추가예정 (0) | 2022.09.26 |
[SK 쉴더스] 애플리케이션 보안 7일차 (0) | 2022.09.26 |
[SK 쉴더스] 애플리케이션 보안 6일차 - OWASP Top 10(3) (0) | 2022.09.26 |
[SK 쉴더스] 애플리케이션 보안 5일차 - OWASP Top 10(2) (0) | 2022.09.26 |