일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 에러
- 머신러닝
- 게임기획
- 인터럽트
- 암호화
- 반도체
- MuchineRunning
- 이더리움
- 면접
- 유니티에러
- 메타마스크
- 메모리
- 아두이노함수
- 던전앤파이터
- 컴퓨터구조
- neople
- 유니티
- 레지스터
- memory
- 네오플
- 던파
- 보안
- 아두이노
- Unity
- 아두이노우노
- 네트워크보안
- 네트워크
- 반도체 엔지니어
- 반도체 취업
- MLAgent
- Today
- Total
Dreaming Deve1oper
Transport Layer 본문
Transport Layer
■ TCP [Trnasmission Control Protocol]
- 연결형 (connection-oriented)의 TCP는 신뢰성 보장 프로토콜 (Reliable Transport)
- IP 헤더의 프로토콜의 번호 6번 사용
- 필수 프로토콜
- 특징
- 프로세스 대 프로세스 통신 (IP주소 + 포트번호 > 소켓주소)
- 연결지향 서비스
- 순서제어
- 흐름제어(Flow Control): 전송률을 제어 > 16비트 윈도우 크기
- 오류제어
- 혼잡제어
※ TCP와 UDP의 차이점: TCP는 연결지향형 서비스(Connection Oriented) UDP는 비연결형 서비스(Connectionless)이다.
데이터를 보내기 전에 TCP connection을 setup하고 설정된 connection을 위해 data segment가 전송된다.
1~2= UDP, TCP 공통
3~6= TCP only
- 몇번 세그먼트가 손실됐는지 파악하기 위한 수단 => sequence Number => Flow control, error control, congestion control 모두 수행되는 기본 파라미터
- 내가 전달한 세그먼트까지 잘 전달됐는지 확인하기 위한 수단 => acknowledgement number
- segment가 management와 관련됐는지 확인 => TCP Flags
순서: TCP는 기본적으로 연결을 설정함. (TCP connection setup) => 데이터 전송이 이루어짐 => 연결종료
연결 설정은 Three-way handshaking 과정을 통해서 연결이 이루어짐.
1. Client에서 Server로 SYN segment 전송
2. Server에서 Client로 SYN segment + ACK segment 전송
3. Client에서 Server로 ACK segment 전송 => 2번에서 서버가 전송한 SYN를 잘 받았다고 recall 해주는 것.
※ 서로 다른 정보가 하나의 패킷으로 전송되는것을 Piggyback(등에 태우다)이라고 함
TCP SYN Timeout
Three-way handshaking <->TCP 연결 설정 (무조건 해야하는 것)
SYN을 전송하면 ACK가 2초 내에 응답을 해야한다.
SYN은 5번까지 시도가 가능하다.
Q: TCP SYN flooding attack은 어떻게 막을 수 있는가?
A: 위협의 레벨을 낮추는 것이 일반적이다. => Win10에선 1초 내에 응답하도록, 2번까지 시도하도록 함.
packet을 사용하기 전 port가 열려있는 상태인지 아닌지 따짐.
port가 닫힌 경우 => Three-way handshaking 과정이라는 것
#TCP 연결: 연결설정, 데이터 전송, 연결 종료
- 흐름 제어 (Flow Control)
- 수신하는 애플리케이션이 읽는 속도, 송신자가 전송하는 속도를 같게 하는 과정 -> 수신 측 버퍼에 오버플로우가 일어나지 않도록 관리
- 송신자에게 수신 측에 가용한 버퍼가 얼마나 되는지 알려줌
- TCP 슬라이딩 윈도우 (sender가 가지고 있는 윈도우 크기와 수신자의 recieve window(rwnd)값을 비교해 최소값으로 맞춰 윈도우 크기를 동적으로 조절하는 것)
- TCP는 수신자의 윈도우 값(rwnd, receive window)과 송신자의 cwnd 전송 윈도우 값을 비교해 최소값의 크기만큼만 전송을 진행
- TCP는 패킷 하나하나가 전달되었음을 확인하기 위한 피드백(acknowledgement)를 받아야하며 만약 패킷이 중도에 잘못되었거나 분실되어 확인 받지 못하는 경우, 해당 해킷을 재전송한다.
- 슬라이딩 윈도우는 수신자로부터 ACK를 전송 받지 않고 보낼 수 있는(outstanding) 데이터의 양을 나타냄.
- TCP에서 연결 상태 관리를 위한 리소스가 필요함.
- UDP에 흐름 제어 메커니즘이 없음.
- UDP 트래픽 볼륨의 경우 많은 종류의 방화벽이 dns와 관련되지 않은 모든 udp 트래픽을 삭제함.(udp 공격 도구 구현).
- TCP 트래픽의 경우 트래픽 볼륨이 아닌 지능형 공격 종류가 채택됨. (SYN flooding attack, a volume of HTTP request)
# DNS [Domain Name Service]
호스트의 도메인 이름과 <-> 호스트의 네트워크 주소를 매핑하는 것을 관리.
- DNS의 유형 3가지
Primary Name Server
- 도메인의 소유권을 가지고 있는 서버 > 실제 도메인 네임, 네트워크 주소에 대한 정보를 처리/매핑
- 자신이 관리하는 zone에 대한 데이터를 시스템의 로컬 파일에서 가져와 서비스 제공
Secondary Name Server
- Zone에 대한 정보를 네트워크를 통해서 다른 서버로부터 받아와 DNS 서비스 제공
- 도메인에 대한 Backup-copy 유지
- zone transfer: 다른 Secondary name server로 zone에 대한 정보를 전달하는 절차
- 결론: primary 속의 overload를 줄여주는 것.
캐시 서버
- 모든 캐시 서버는 DNS 서비스 결과를 자신의 캐쉬에 저장함
- NS record: DNS 영역을 네임 서버와 연관.
→ 지정된 권한 있는 이름 서버를 사용하도록 DNS 영역을 위임하는데 사용
→ 실제 smu.ac.kr 정보를 기억하는게 아닌, ac 혹은 kr 도메인의 정보를 기억
- A record: 호스트 이름을 IP 주소에 매핑
→ 호스트 이름을 호스트의 IP 주소에 매핑하는 데 사용.
DNS 서버는 한번 검색한 결과는 메모리의 캐시에 기록.
같은 정보가 요청되면 캐시에 있는 정보를 전송. 이 캐시에는 유효기간 (Time To Live: TTL)이 정해져 있어 유효기간이 지나면 캐시에서 삭제된다 (dns 캐시는 2 시간 ~ 48시간 → 유효기간이 길다. )
DNS 캐시가 2시간 ~ 48시간으로 유효기간을 가지기 때문에 거짓된 정보로 DNS 캐시를 만든다. > DNS 캐시가 만들어지기 때문에 다른 유저가 DNS request를 보냈을때 DNS 캐시를 통해 잘못된 IP 주소가 전달된다. > 정상적인 시스템이 인위적인 주소로 패킷을 보내게된다. > 중간에 악의적인 사용자가 정보를 바꾸거나 복사한 후 전달해준다.
Fake Request를 계속해서 보내게 되면 캐시가 Overflow되어 Flooding attack이 될 수 있다. > 정상적인 사용자들이 캐시를 사용하지 못한다. > DNS Request가 막힌다.
#DHCP란
- 동적으로 IP주소, 도메인 이름, 디폴트 게이트웨이 주소(default gateway address), 서브넷마스크(subnetmask) 등 정보를 자동으로 설정될 수 있게 만들어주는, 즉 클라이언트에게 제공해주는 프로토콜
- 클라이언트 부팅 시 DHCP 서버가 설정해둔 IP 주소 범위 내에서 IP 주소를 할당 받고 사용이 종료되면 할당 받은 IP를 반납한다.
└ 클라이언트는 별도의 네트워크 설정 없이 네트워크 접속 가능
└ IP 주소를 여러 대의 호스트가 사용할 수 있다.
#DHCP 특징
- 4계층 프로토콜로서 UDP 67/68번 포트 사용
- DHCP 메시지는 고정길이 필드(58bit) 사용
- 사용자는 자신의 MAC 주소를 제공하고 DHCP 서버로부터 자신이 사용할 IP 주소, 서브넷 마스크, 게이트웨이, DNS 제공 받음.
- DHCP는 관리자의 구성에 요구되는 작업을 자동으로 처리하므로 네트워크 세팅이 편리하고 IP 주소의 효율적 관리가 가능하다.
BOOTP: 원격 디스크(저장매체)를 관리를 위한 프로토콜
※ BOOTP와 DHCP의 차이점
BOOTP는 사전에 MAC 주소와 IP 주소를 매핑한 바인딩으로 구성되어있다. 바인딩 정보에 연결되지 않은 서비스에는 IP 주소가 할당되지 않는다. DHCP는 등록없이 동적으로 IP 주소를 할당이 가능하다.
DHCP의 기본동작은 DHCP의 서버 주소를 알아내기 위한 과정 뒤에 주소를 요청 후 DHCP request로 이루어짐.
#TELNET: 원격접속프로토콜
- ISO에서 제안한 가상 터미널 서비스 표준
- TCP 방식 사용
- 전송되는 데이터가 모두 평문(plaintext)으로 전송 > 보안 취약 > SSH (Secure Shell) 사용으로 대체
- 암호화되지 않고 전송된다.
#rlogin: 원격접속프로토콜
- BSD Unix에서 제공하는 원격 로그인 프로토콜
- TELNET에 비해 단순함
- 보안 문제로 인해 사용 감소 추세
#SSH (Secure Shell)
- 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 혹은 프로토콜.
- 기존의 rsh, rlogin, Telnet(텔넷)등을 대체하기 위해 설계됨
#FTP
컴퓨터 간 파일 전송 프로토콜
컴퓨터 간 파일 전송 프로토콜: 제어 연결 (control connection) > 정보를 전달하는데 사용
- 클라이언트에서 서버로의 명령, 서버의 응답을 위한 연결
- 21번 포트 사용: 명령/응답 형태의 제어 정보 전송
- 전체 세션 FTP 세션 동안 계속 연결 상태 유지
컴퓨터 간 파일 전송 프로토콜: 데이터 연결 (data connection) > 데이터 파일을 교환하는데 사용
- 파일이 전송 될 때 생성되는 데이터 연결
- 20번 포트 또는 1024번 이후 포트 사용
- 각각의 파일 전송 때마다 설정되며 전송이 완료되면 폐쇄
FTP 접속 방식: Active mode (능동모드) > Client에서 Server로 접속 시도만 > 실제 data connection에 대한 설정 요청은 Server가 진행
- 20번 21번 포트 사용.
- 서버에서는 두개의 포트만 열면 서비스 가능.
- 두번째 connection은 서버에서 클라이언트로 접속.
- 클라이언트에 방화벽 설치 시 방화벽이 차단해 접속 불가. (단점)
- 클라이언트에서 서버측 21번 포트로 접속 시도하고 데이터 포트는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식.
FTP 접속 방식: Passive mode (수동모드) > data connection에 대한 request를 보냄 > server에서 client로 두번째 connection을 열기 위한 port number를 열어줌 > client에서 해당 port number로 연결을 시도
- 21번과 1024번 이후 포트를 사용.
- 데이터 전송을 위해서는 1024번 이후 포트 사용.
- 서버에서 클라이언트로 접속해야 하는 모든 포트 오픈.
- 보안을 위해서 서버에서 passive(수동)모드로 사용할 포트를 제한.
- active mode가 가지고 있는 단점 해결.
#Reconnaissance(정찰) > 정보를 수집하기 전 1단계
- Port scan(포트 검색): 실행 중인 포트 및 서비스 중 설치된 애플리케이션과 해당 버전의 OS (접근 방법에 대한 가이드 라인)
- Social Engineering: 로그인 자격 증명. 중요한 정보에 접근(액세스)할 수 있음
- Intelligence: open source (오픈소스) vs espionage (=spying, 스파잉)
- Bulletin boards (게시판), chats (대화), doucumentations (문서)
#Threats in Transit
- 수동형 공격(passive attack, 정보수집): 도청, 트래픽 모니터링, 패킷 스니퍼/스니핑(패킷 수집)
- 프로토콜 결함: 새 취약성을 보고하는 데 사용되는 RFC 번호
- 존재하지 않는 인증, 인증 정보 추측, 잘 알려진 인증
- 도청 및 도청
- 스푸핑 및 위장
- 세션 하이재킹, man in the middle
#packet sniffing
- Promiscuous mode in a network card (중요): 네트워크 카드에 있는 트래픽 필터링 기능을 bypass 시킴. 이 기능을 사용하면 주소가 나와 달라도 버리지 않고 상위계층으로 올린다. 네트워크 상에서 전달되는 모든 패킷을 수집할 수 있게 만들어주는 것을 의미한다.
※ one network card = one Ip address > 네트워크 카드 당 IP 주소는 하나만 할당된다.
#ICMP redirect
- 호스트 a에 라우터 a가 기본 라우터로 설정되어 있다고 가정
- 다른 라우터로 우회하여 원할하게 패킷을 교환하게 할 수 있는 기능을 제공
- 호스트 a의 호스트 b로 가는 패킷을 라우터 a가 수신하고 라우팅 테이블 검색을 통해 라우터 b로 포워딩한다. 이 때 라우터 a는 라우터 b가 더 적합한 노드라고 판단하고 호스트 a에게 ICMP redirect 메시지를 전송하여 라우터 b로의 전송을 유도한다.
#ICMP redirect attack
- 라우터 b를 공격자(attacker)로 바꾸면 공격자가 자신이 라우터인 것처럼 행동하고 ICMP redirect 메시지를 전송.
- 스니핑, 스푸핑 형태를 모두 가지고 있음.
#Switch Jamming attack (스위치 재밍 공격)
- 스위치의 주소 테이블 기능을 마비시키는 공격.
- MACOF (MAC flooding)공격 이라고도 한다.
- 스위치에 랜덤한 형태로 생선한 MAC 주소를 destination으로 하는 패킷을 무한대로 보내면 스위치의 MAC 테이블은 자연스럽게 저장 용량을 넘게 되고 스위치의 원래 기능을 잃어 dummy hub 처럼 작동하게 된다.
※ 주소 테이블 (address bridging table)
포트넘버, MAC 주소, MAC이 사용하는 IP 주소까지 함께 기록한다.
※ 스위치 재밍 어택이 공격에 성공하려면 공격자가 같은 local network에 있어야한다 (물리적/논리적으로 가까워야함)
#Ping of death attack
- 네트워크는 패킷을 전송하기 적당한 크기로 잘라서 보낸다 (=fragmentation)
- Ping message를 과도하게 많이 보내는 것.
- Ping of Death는 네트워크의 이러한 특성을 이용한 것이다.
- 네트워크는 연결 상태를 점검하기 위한 ping 명령을 보낼 때 패킷을 최대한 길게하여 (최대 655000 byte) 공격 대상에게 보내면 패킷은 네트워크에서 수백개의 패킷으로 잘게 쪼개져 보내짐.
#SYN flooding attack
- 현재도 악용되고 있는 공격
- SYN segment를 과도하게 많이 보내는데 그 과정에 하나하나 SYN ACK을 보내고 ACK를 기다리는 시간을 낭비시키는 것.
- SYN recevied의 대기시간을 줄이는 방법으로 해결해야한다.
- 침입방지시스템(IPS)와 같은 보안시스템에서 특정 노드가 과도하게 SYN segment를 많이 보내면 트래픽을 차단.
'네트워크 보안' 카테고리의 다른 글
네트워크 퀴즈 (0) | 2021.12.15 |
---|---|
네트워크 보안 최종 (2) | 2021.12.13 |
NW & TR Lay (0) | 2021.11.18 |
Intrusion Control (0) | 2021.11.11 |
방화벽 (0) | 2021.11.04 |