TCP/IP 계층 모델
1. 네트워크 인터페이스 계층(Ethernet, Token Ring)
물리 계층(L1)
- 단말(3계층 노드와 네트워크에 참여한 모든 단말) 사이 물리적 연결.
데이터링크 계층(L2)
- 단말 사이 신뢰성 있는 전송 보장하는 계층.
- Point-to-Point 간 신뢰성 보장.
- 물리계층에서 발생할 수 있는 오류 검출(패리티 검사) 및 수정.
2. 네트워크 계층(IP, ARP, ICMP)
네트워크 계층(L3)
- 여러개의 노드에 거칠때마다 경로를 찾아주는 역할 = 라우팅을 처리
- 복잡한 네트워크 속 최적의 전달경로가 정해지도록 여러 기능 제공.
- 기존 경로상의 한 노드 고장 시 대체 경로 찾아서 전송
헤더 : 라우팅과 관련된 헤더 정보를 가지고 있음.
- 최적의 경로를 선택하기 위한 기초 정보 저장
- 각 노드사이 전송속도 = 노드 사이 전송비용 추정치
3. 전송 계층(TCP, UDP)
전송 계층(L4)
- 종단간 신뢰성 있고 효율적인 데이터 전송
- 오류검출 및 흐름제어(송신과 수신 사이의 데이터처리 속도차이를 해결하기 위해),중복검사
- 흐름제어 : 송신 데이터량이 수신 처리량 보다 많을 경우 데이터 손실이 일어나고 송신 측 패킷 전송량 제어 필요.
4. 애플리케이션 계층(FTP, Telnet, SMTP, HTTP)
세션 계층(L5)
- 두개의 응용 프로세스 사이에 통신을 관리하는 계층 = 두개의 애플리케이션이 대화를 수행하는 방식
- 전이중 : 동시에 송/수신 2가지 모두 수행
- 반이중 : 동시에 송/수신 중 1가지 수행
- 단방향 : 송/수신 중 1가지 수행
표현 계층(L6)
- 7계층에서 다루는 데이터의 형식 변환
- 암호화/복호화 or 인코딩/디코딩
응용 계층(L7)
- UI 제공 ex. 웹 브라우저
네트워크 인터페이스 계층과 전송 계층은 "만들어진 메시지를 실제 네트워크로 전송"하는 역할을 함.
애플리케이션 계층에서 "통신에 사용될 메시지"가 만들어짐.
IP(Internet Protocol)
네트워크 계층 통신 프로토콜로, 라우팅을 담당함.
- 발신자와 수신자 사이의 경로를 선택하여 수신자 노드까지 전달
- 노드 사이의 연결정보 필요
- 라우팅 테이블 : 노드 사이 연결정보를 저장하는 테이블, 두 연결 사이 전송 비용 저장
IP주소 : 네트워크 상 유일한 주소, "네트워크 주소 + 호스트 주소"로 구성되어 있음.
IP주소 관리 : IANA(Internet Assigned Numbers Authority)에 요청 -> 네트워크 주소에 해당하는 부분만 할당, 호스트 주소 범위는 신청자가 자율적으로 관리.
IANA에 의해 할당 받은 주소는 공인 IP 주소라고 함.
IPv4
- 4바이트(32비트) 크기의 주소.
- 8비트 마다 온점(.)을 찍어 끊어서 표시.
사설 IP 주소 클래스
- A class : 0.0.0.1 ~ 127.255.255.255, 네트워크.호스트.호스트.호스트
- B class : 128.0.0.1 ~ 191.255.255.255, 네트워크.네트워크.호스트.호스트
- C class : 192.0.0.1 ~ 223.255.255.255, 네트워크.네트워크.네트워크.호스트
- D class : 멀티 캐스팅 용
- E class : 향후 사용
사설 IP는 외부망의 라우터 입장에서 볼때는 모두 하나의 공인 IP로 인식함.
개인 PC에서 외부망과 연결된 라우터를 통해 외부망과 통신하려면 게이트웨이(Gateway) 역할을 하는 스위치를 통해야 함.
IPv6
- 16바이트(128비트) 크기의 주소.
- IPv4의 주소 부족 문제, 보안 등의 문제점을 보완하기 위해 고안된 주소 체계.
- 16비트로 표현되고 4자리 마다 쌍점(:)을 찍어 끊어서 표시.
- 사물마다 주소를 부여할 수 있는 수준(유비쿼터스)
TCP
세그먼트 전송이 실패한 경우에 재전송을 요청하여 오류를 복구하기 때문에 신뢰성을 제공하는 프로토콜임.
- IP 프로토콜이 전달해주는 패킷을 재조합하여 세그먼트를 생성하는데, 몇개의 패킷이 전달되지 않으면 해당 패킷의 재전송 요청.
- TCP는 연결 지향적(Connection-oriented)프로토콜이고 통신이 시작하면 연결되고 통신이 끝날 때까지 연결이 지속됨.
TCP의 시작과정 : 3-way Handshaking
- TCP 연결을 시작을 함.
- SYN(Synchronize, 동기화)
- ACK(Acknowledge, 수락)
- 다음과 같은 3단계를 거치면 연결 생성(Established)가 끝남.
TCP 연결 후 실제 메세지가 오고 가는 과정 : 2-way Handshaking
- 송신자가 패킷을 보내면 수신자는 잘 받았다는 응답 패킷을 보냄.
- 만약 ACK 패킷을 송신자가 일정 시간 동안 못 받은 경우라면 송신자는 수신자에게 다시 메시지를 재전송함.
- TCP 헤더 정보의 순서번호(Sequence Number, 32비트)는 패킷을 주고받으면 위의 번호가 점차 증가함.
TCP 연결 종료 : 4-way Handshaking
- TCP 통신을 하다가 사용이 끝났으면 연결을 끊어야함.
- 끊지 않으면 연결을 계속 맺어 두기 때문에 송신자 또는 수신자의 네트워크 자원을 계속 할당하고 있기 때문임.
- 다음과 같은 4단계를 거쳐 연결을 종료함.
TCP 포트 : 각 단말기 내에서 사용되는 주소, 수신자에게 시스템 내에서 어떤 프로그램으로 메시지를 올려 보내줄지를 알려주는 정보.
대표적으로 많이 사용되는 TCP 포트
- 포트 20, 21 - FTP, 원격 파일 전송을 위한 목적
- 포트 22 - SSH, 암호화된 원격 접속을 위한 목적
- 포트 23 - 텔넷(Telnet), 원격 접속을 위한 목적
- 포트 53 - DNS(Domain Name System), URL의 도메인 주소에서 IP 주소를 얻어올 때 사용
- 포트 80 - HTTP, 웹 접속을 위한 목적
- 포트 110 - POP3(Post Office Protocol), 이메일 서버로부터 메일을 읽어올 때 사용
- 포트 443 - HTTPS, 암호화된 웹 접속을 위한 목적
보안 공격
보안공격의 유형
구분 | 수동적 공격(Passive Attack) | 능동적 공격(Active Attack) |
특징 | 직접적인 피해 없음 | 직접적인 피해 있음 |
탐지 가능성 | 어려움 | 쉬움 |
대표적 예 | 스니핑(Sniffing) or 도청(Eavesdrop) | 사회 공학(Social Engineering) 재사용 공격(Replay Attack) 변조 Dos/DDos 세션 하이재킹(Session Hijacking) |
스니핑(Sniffing)
'냄새를 맡다', '코를 킁킁거리다'라는 뜻으로, 송신자와 수신자가 주고 받는 데이터를 중간에서 도청하는 것.
스니퍼를 이용한 스니핑
- 도청을 수행하는 프로그램인 스니퍼(Sniffer)를 통해 가능.
- 이러한 스니퍼를 통한 스니핑은 보통 같은 네트워크 환경을 공유하는 환경에서 가능함.
스니퍼를 이용한 스니핑 : 허브(더미 허브, 수동 허브) 환경에서의 스니핑
- 허브는 입력으로 전달 받은 패킷을 나머지 모든 포트로 단순히 전달만 함.(일종의 리피터 장비)
- 특정 PC가 허브에 연결되어 있다면 원하든 원치 않든 간에 계속하여 다른 PC의 패킷들을 받아보고 있음.
- 그러나 운영체제상에서 이런 '다른 PC로 전달되는 패킷'은 무시하기 때문에 일반 응용 프로그램 수준에서는 볼 수 없음.
- 이러한 기능은 PC의 네트워크 카드(NIC,Network Interface Card)에서 자신의 MAC 주소가 아닌 패킷들은 필터링되므로 보통의 허브 환경에서는 스니핑이 가능하지만 네트워크 카드 수준에서는 가능하지 않음.
- 네트워크 카드를 무차별 모드(Promiscuous Mode)로 설정할 경우 나의 MAC 주소가 아닌 패킷도 전달 받으므로 허브 환경에서 스니핑이 가능함.
스니퍼를 이용한 스니핑 : 스위치 환경에서의 스니핑
- 스위치는 허브와 달리 패킷을 정확한 목적지로만 전달하므로 NIC를 무차별 모드로 설정해도 스니핑이 불가능함.
- '모니터링 포트에 스니퍼를 연결'하여 스니핑을 할 수 있음 - 모니터링 포트는 스위치를 통과하는 모든 패킷의 내용을 전달하는 포트
- '스위치 재밍'을 통해 스니핑을 할 수 있음 - 스위치는 연결된 PC의 MAC 주소 정보와 IP주소가 저장되는 매핑 테이블이 존재하는데 그 매핑 테이블의 최대 저장 개수보다 더 많은 정보가 추가되면 대다수 스위치는 브로드캐스팅 모드로 전환 되므로 스위치를 통해 들어오는 패킷을 스니핑 할 수 있음.
- '스푸핑(Spoofing) 기법'을 이용해 스니핑을 할 수 있음 - 스푸핑은 자신이 수신자인 것처럼 '위장'하는 기법으로 이를 이용하면 송신자가 보낸 패킷을 자연스럽게 받아 볼 수 있음.
스니핑 방지 대책 : 암호화
- 스니핑에 대한 가장 효과적인 방법은 암호화임.
- 암호화를 사용하면 중간에 훔쳐보더라도 내용을 알 수 없기 때문에 괜찮음.
- 웹 환경 : HTTPS
- 이메일 환경 : PGP와 S/MIME
- 원격 접속 : SSH
- VPN을 사용
- 스위치를 사용하면서 매핑 테이블을 정적(static)으로 설정 - 높은 유지보수 비용이 듦.
VPN(Virtual Private Networks)
- 논리적으로는 전용선을 이용하는 것이지만 물리적으로는 인터넷을 이용하는 방법.
- 중간에 인터넷이 있지만 본사와 지사의 네트워크망에 각각 VPN 장비가 있어 인증과 암호화를 수행해 마치 전용망 같은 효과를 가짐.
- VPN이 제공하는 이러한 기능을 두 종단 사이에 가상적인 터널을 만든다는 점에서 터널링(Tunneling) 기술이라고 함.
스니핑 탐지 기법
- 명령어 Ping 사용 - Ping 명령어를 통해 연결이 안된 호스트로 요청을 보내면 응답 신호가 오면 안되는데, 만약 온다면 무차별모드 설정을 통해 스니핑하고 있는 것임. Local 네트워크 환경에서만 사용가능.
- DNS 방법 - 스니퍼는 스니핑한 대상의 IP 주소에 대한 도메인 이름을 확인하는 특성이 있음. 존재하지 않는 IP를 대상으로 Ping을 보내, 해당 IP에 대한 도메인 이름을 물어보는 요청이 오는지를 보고 스니핑 여부를 판단함. 원격 네트워크에서도 사용가능한 방법.
- 유인 방법 - 일부러 가짜 사용자 ID와 패스워드를 유출하여 공격자가 이러한 ID와 패스워드를 사용하게 하고 나서 네트워크 감시 프로그램을 이용하여 유출된 ID가 사용되는지를 분석하는 방법.
- 호스트 기반 탐지 도구 : ifconfig(유닉스/리눅스), promiscdetect(윈도우) - 호스트 기반 방법은 스니핑이 의심이 되는 PC 또는 서버에서 실제 명령을 실행 시키는 방법으로, 명령어를 실행하면 조사 대상 호스트가 무차별 모드로 설정되어 있는지 확인 가능.
- 네트워크 기반 탐지 도구 : ARP watch - ARP watch는 내부 네트워크를 모니터링하여 MAC 주소와 IP 주소의 매핑을 감시하는 프로그램임. 초기 설정된 ARP 매핑 정보가 변하면 이를 관리자에게 메일로 알려주어, 관리자가 ARP 변조 여부를 알 수 있음.
'AI > 정보보안' 카테고리의 다른 글
[정보보안] 웹 보안 (0) | 2023.04.26 |
---|---|
[정보보안] 네트워크 보안(3) (0) | 2023.04.25 |
[정보보안] 네트워크 보안(2) (0) | 2023.04.25 |
[정보보안] 시스템 보안 (0) | 2023.04.25 |
[정보보안] 정보보안 개요 (0) | 2023.04.24 |