네트워크 보안 TCP/IP 네트워크통신 개념
1 1 2 2 3 3 OSI 7계층의 세부 동작을 이해한다. 네트워크와 관련된 해킹 기술의 종류와 방법을 살펴본다. 네트워크 해킹을 막기 위한 대응책을 알아본다. 3
네트워크의 기초 OSI (Open System Interconnection) 7계층 ISO(International Organization for Standardization)가 다양한 네트워크가 상호 연동을 할 수 있도록 해주는 표준 네트워크 프로토콜 모델로서 만듦. 논리적 주소인 IP 주소를 통해 원거리 시스템(종단 장치)까지 경로배정을 담당 함. 포트(Port)를 이용해 양 종단 시스템내의 응용 프로그램간(종단 장치간) 통신을 담당함. 신호를 전달하기 위한 물리적인 연결 물리 장치의 고유 주소인 MAC주소를 이용한 로컬(인접 장치 간) 통신을 담당함.
OSI 7계층-물리 계층(1계층) 물리 계층(1계층) CAT별 특성 인터넷 이용시의 랜 케이블, 전화선, 동축 케이블, 광 케이블, 무선 등의 통신 시스템간의 물리적인 신호전달을 위한 전송 규약 CAT별 특성
OSI 7계층-물리 계층(1계층) 케이블 선의 분류 일반적으로 네트워크 연결시에 UTP 케이블 중 CAT 5 또는 CAT 6에 해당되는 10/100/1000 BASE-T(IEEE 802.3) 선에 RJ 45 커넥터를 사용.
OSI 7계층-데이터 링크 계층(2계층) 데이터링크 계층 MAC 주소에 대한 이해 MAC(Media Access Control)주소를 이용하여 인접 장치 간의 통신을 위한 규약 전송 패킷 별로 비트의 변경 또는 손실을 검사하는 방식으로 에러제어 MAC 주소에 대한 이해 MAC주소는 NIC(Network Interface Card)에 고유하게 부여되는 물리적 식별주소 MAC 주소는 총 6바이트로 구성 OUI(Organizational Unique Identifier)는 네트워크 카드를 만든 회사에 할당되는 값 Host Identifier는 각 제조회사에서 생산되는 네트워크 카드에 고유하게 부여되는 시리얼 번호 MAC 주소는 ipconfig /all 명령을 실행해 확인할 수 있음.
OSI 7계층-데이터 링크 계층(2계층) 1계층과 2계층만을 사용하는 네트워크 통신 송신측의 2계층에서는 패킷 구성을 위해 수신측 IP주소에 대한 MAC주소를 획득하여야 한다. ARP(Address Resolution Protocol) 패킷을 방송하여 네트워크 내의 호스트들에게 수신측 IP주소에 대한 MAC주소를 요청한다. ARP 패킷을 수신한 호스트 중에 자신의 IP주소와 일치하면 자신의 MAC주소를 송신측에 ARP로 응답한다.
OSI 7계층-데이터 링크 계층(2계층) 1, 2, 3 단계에서 흘러가는 패킷의 구조
OSI 7계층-데이터 링크 계층(2계층) 송신 컴퓨터에서 패킷 수신 컴퓨터까지의 패킷 흐름 1단계 전: 패킷 송신 컴퓨터가 패킷 수신 컴퓨터의 MAC 주소를 확인한다. (ARP) 1단계: 패킷의 목적지 MAC 주소 부분에 패킷 수신 컴퓨터의 MAC 주소를 적어 스위치로 보낸다. 2단계: 스위치에서 2번 포트로 수신된 패킷의 목적지 MAC 주소가 3번 포트와 연결된 컴퓨터라는 것을 메모리에서 확인한 뒤, 패킷을 3번 포트로 흘려 보낸다. 3단계: 패킷 수신 컴퓨터로 패킷이 흘러간다.
OSI 7계층-데이터 링크 계층(2계층) 스위치의 네트워크 주소 인식 스위치는 각 포트별로 연결된 통신장치(PC)의 MAC주소를 기록할 메모리를 갖고 있다. 포트에 연결된 통신장치(PC)로부터 전달되는 패킷으로부터 MAC주소를 얻어 갱신한다. 스위치에 안방 컴퓨터만이 연결되어 있을 경우 스위치에 작은방의 컴퓨터를 연결할 경우
OSI 7계층-네트워크 계층(3계층) 네트워크 계층(3계층) IP 주소는 ipconfig /all 명령을 실행해 확인할 수 있음.
OSI 7계층-네트워크 계층(3계층) 네트워크 계층 IP 주소 패킷을 수신 종단 IP주소로 전달하기 위한 인접한 중계 장치의 IP주소를 결정(경로배정) IP 주소 8비트의 수 4개로 구성 (32 자리의 2 진수로 8 자리마다 점을 찍어 구분) A, B, C, D, E 클래스로 구분 A 클래스 : 첫 번째 자리가 네트워크 주소, 나머지 세 자리가 호스트 주소 B 클래스 : 두 번째 자리까지가 네트워크 주소, 나머지 두 자리가 호스트 주소 C 클래스 : 세 번째 자리까지가 네트워크 주소, 나머지 한 자리가 호스트 주소
OSI 7계층-네트워크 계층(3계층)
OSI 7계층-네트워크 계층(3계층) 2, 3계층에서의 패킷의 흐름 호스트 A의 네트워크계층(3계층)은 패킷을 전달할 인접 장치를 라우터로 결정 호스트 A의 데이터링크 계층(2계층)은 패킷을 스위치로 전송 스위치는 라우터로 전송 Gateway Host-A
OSI 7계층-네트워크 계층(3계층)
OSI 7계층-네트워크 계층(3계층) 2, 3계층 에서의 패킷의 흐름 예 인터넷에 전송하는 패킷의 기본 구조 패킷 송신 시스템의 IP : 172.16.0.100 라우터의 랜쪽 포트의 IP(게이트웨이) : 172.16.0.1 패킷 송신 시스템의 MAC 주소 : AA-AA 라우터의 랜쪽 포트의 MAC 주소(게이트웨이) : BB-BB 라우터의 인터넷쪽 포트의 MAC 주소 : CC-CC 스위치의 메모리에 존재하는 MAC 주소 테이블 1 번 포트 BB-BB (라우터 케이블 연결 포트) 2 번 포트 AA-AA (컴퓨터 연결 포트) 3 번 포트 4 번 포트
OSI 7계층 출발지의 IP와 MAC 주소가 기록됨 목적지 IP 주소 입력 목적지 MAC 주소에는 랜을 벗어나기 위한 가장 일차적인 목적지, 즉 게이트웨이의 MAC 주소 입력 (ARP 프로토콜 이용) 라우터에서 사용한 2계층 정보를 벗겨냄. 다음 라우터까지의 2계층 정보를 패킷에 덧씌움. → DD-DD는 200.1.1.20까지 가기 위해 경유해야 할 다음 라우터의 네트워크 인터페이스 카드의 MAC 주소
OSI 7계층-네트워크 계층(3계층) 2, 3계층에서의 패킷의 흐름 200.1.1.20 DD-DD ARP를 통해 200.1.1.20이 LAN에 없는 것을 확인하고 패킷의 목적지 MAC을 Gateway로 정함. (AA-AA BB-BB) CC-CC BB-BB 172.16.0.1 (Gateway) AA-AA 172.16.0.100
OSI 7계층-네트워크 계층(3계층) 172.16.0.100 LAN에 노드들은 7계층 모두 사용 패킷을 중계하는 WAN의 라우터들은 3계층까지만 운영 172.16.0.1 (Gateway) 105.60.20.21 AA-AA Port#2 Port#1 BB-BB CC-CC DD-DD www.naver.com까지의 라우팅 과정을 확인해보자. C:\> tracert www.naver.com
OSI 7계층-전송 계층 (4계층) 전송 계층 (4계층) 포트번호(Port Number)를 이용하여 종단 장치 간의 통신을 보장하는 규약 포트번호로 패킷을 전달할 종단의 어플리케이션을 결정 수신된 패킷의 누락 여부로 패킷 손실에 대한 에러제어 4계층의 대표적인 프로토콜은 TCP(Transmission Control Protocol)임. MAC 주소가 네트워크 카드의 고유 식별자이고, IP가 시스템의 주소라면, 포트번호는 시스템에 도착한 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호라 생각할 수 있음. 시스템에서 구동되는 응용 프로그램들은 네트워킹을 하기 위해 자신에게 해당되는 패킷을 식별할 필요가 있고 이 때 사용하는 것이 포트이며, 포트는 0번부터 65535(216)번까지 존재함. 4계층까지 생각한 패킷의 구조
OSI 7계층-전송 계층 (4계층) 주요 포트와 서비스 0번부터 1023번 포트까지 1,024개를 Well Known 포트 보통 0번은 쓰지 않으며, 1023번 포트까지는 대부분 고유의 용도가 있음.
OSI 7계층-전송 계층 (4계층) 출발지 포트는 운영체제나 응용 프로그램마다 조금씩 다르나 보통 1,025번부터 65,535번 사이의 포트 중에서 사용하지 않는 임의의 포트를 응용 프로그램별로 할당하여 사용, 웹 서버의 서비스 포트는 보통 80번이니 패킷의 구조가 다음과 같음. 출발지 포트는 시스템에서 임의로 정해짐. 3,000번 대의 임의 포트가 할당되면 다음과 같을 수 있음.
OSI 7계층-전송 계층 (4계층) 3계층과 4계층의 정보는 netstat -an 명령으로 쉽게 확인할 수 있음.
OSI 7계층-전송 계층 (4계층) 쓰리웨이 핸드쉐이킹 1단계: 두 시스템이 통신을 하기 전에, 클라이언트는 포트가 닫힌 Closed 상태며 서버는 해당 포트로 항상 서비스를 제공할 수 있도록 Listen 상태 2단계: 처음 클라이언트가 통신을 하고자 하면, 임의의 포트 번호가 클라이언트 프로그램에 할당되고 클라이언트는 서버에 연결하고 싶다는 의사 표시로 Syn Sent 상태가 됨. 3단계: 클라이언트의 연결 요청을 받은 서버는 SYN Received 상태가 됨. 그리고 클라이언트에게 연결을 해도 좋다는 의미로 SYN+ACK 패킷을 보냄. 4단계 : 마지막으로 클라이언트는 연결을 요청한 것에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버에 보냄.
OSI 7계층-전송 계층 (4계층) TCP 세션의 종료 통신을 하는 중에는 클라이언트와 서버 모두 Established 상태 통신을 끊고자 하는 클라이언트가 서버에 FIN 패킷을 보냄. 이때, 클라이언트는 Close Wait 상태가 됨. 서버는 클라이언트의 연결 종료 요청을 확인하고 클라이언트에게 응답으로 ACK 패킷을 보냄. 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보내고Close Wait 상태가 됨. 마지막으로 클라이언트는 연결 종료를 요청한 것에 대한 서버의 응답을 확인했다는 의미로ACK 패킷을 서버에 보냄.
OSI 7계층-전송 계층 (4계층) TCP와 UDP TCP: 연결 지향형 프로토콜로서 수신측이 데이터를 흘려버리지 않게 데이터 흐름 제어(Flow Control)와 전송 중 에러가 발생할 경우 자동으로 재전송하는 에러 제어(Error Control) 등의 기능을 통해 데이터의 확실한 전송을 보장함. 하지만 완전하지는 않아 해커들에게 많은 공격을 받게 됨. UDP(User Datagram Protocol): TCP와는 달리 데이터의 신뢰성 있는 전송을 보장하지는 않음. 그러나 신뢰성이 매우 높은 회선을 사용하거나 데이터의 확실한 전송을 요구하지 않는 통신을 하거나 한 번에 많은 상대에게 메시지를 전송하고자 하는 경우에는 전송 경로 확립을 위한 번잡함을 생략하고 시간을 절약할 수 있어UDP가 더 효과적임.
OSI 7계층-세션 계층, 표현 계층, 응용 프로그램 계층 세션 계층 (5계층) 기본적으로는 두 시스템간의 통신 중 동기화를 유지하고 데이터 교환을 관리. 전송 계층이 종단간에 논리적인 설정을 담당한다면 세션 계층은 이런 연결에 정보 교환을 효과적으로 할 수 있게 추가 서비스를 함. 표현 계층 (6계층) 데이터의 구조를 하나의 통일된 형식으로 표현. 데이터의 압축과 암호화 기능을 수행. 응용 프로그램 계층 (7계층) 응용 프로그램 계층은 응용 프로그램 사이에 데이터의 교환이 가능하게 하는 계층. 예를 들어 HTTP, FTP, 터미널 서비스, 여러 메일 프로그램, 디렉토리 서비스 등을 제공.