어렵당

5. 네트워크 보안 본문

학습/알기사 정보보안기사 정리

5. 네트워크 보안

It는어려워 2024. 10. 5. 13:24

OSI 7계층 참조모델

: 분산된, 서로 다른 시스템간의 네트워크 상호호환을 위해 필요한 표준 아키텍처를 정의한 참조모델

 

 

PDU(Protocol Data Unit)(데이터 단위)

(ex : bit, frame, packet, segment, data)

: PCI(Protocol Control Information, 프로토콜 제어 정보)와 SDU(Service Data Unit, 전송 데이터)로 구성

 

 

캡슐화 과정

: 상위 계층 프로토콜로부터 전달받은 데이터에 해당 계층 프로토콜의 기능 수행에 필요한 제어 정보를 추가해서 새롭게 데이터를 완성한 후 하위 계층으로 전달

 

역캡슐화 과정

: 하위 계층 프로토콜로부터 전달받은 데이터에 해당 계층 프로토콜의 제어 정보를 제거한 후 상위 계층 프로토콜로 전달한다

-------------------------------------

1계층(물리 계층)

: 디지털 데이터를 전기적인, 광학적인 신호로 변환하여 입출력을 담당

: 들어온 신호를 연결된 모든 포트로 재전달

- 데이터 단위 : bit

- 주요 네트워크 장비 : 허브(더미 허브), 리피터

 

-------------------------------------

2계층(데이러 링크 계층)

: 인접한 노드(통신 장비)간의 신뢰성 있는 전송(오류나 손상없이 전송됨을 보장-흐름제어/오류제어/회선제어)을 담당

: 목적지 MAC을 확인해서 데이터 전송

: 트래픽을 모니터링하기 위해서는 포트 미러링 또는 TAB 장비가 필요 

: 전송할 수 있는 데이터의 크기가 제한(MTU : Maximum Transmission Unit)

: MAC을 지정해서 통신하기 때문에 더미허브와 달리 스니핑이 불가능하다. 스니핑을 하기 위해서는 스위치 재밍, ARP 스푸핑, ARP 리다이렉트, ICMP 리다이렉트, 스위치의 SPAN/Monitoring Port 이용 등이 필요하다

: IEEE 802 표준에서는 데이터 링크 계층을 LLC와 MAC으로 세분화

* LLC(Logical Link Control) : 네트워크 계층과의 연결을 담당

* MAC(Media Access Control)(하드웨어에 설정된 물리적인 주소) : 물리적 계층과의 연결을 담당

(48bit 구성 : 앞에 24bit(제조사-vendor 식별코드) / 뒤에 24bit(제조사에서 부여한 일련번호)

 

* 흐름제어 (상대방이 수신 가능한 만큼만 전송)

정지-대기(Stop and Wait) 방식 : 확인응답 받으면 다시 전송

슬라이딩 윈도우(Sliding Window) 방식 : 수신가능 범위 내에서 전송

 

* 오류제어 (오류나 손실 발생 시 이를 해결)

후진 오류 수정방식(BEC, Backward Error Correction) : 오류를 검출할 수 있는 부가정보를 함께 전송하여 수신측에서 점검

(오류 발생 시 재전송 요청하는 방식을 ARQ(Automatic Repeat Request)라 한다)

전진 오류 수정방식(FEC, Foward Error Correction) : 데이터 송신 시 오류의 검출 및 수정까지 가능한 부가정보를 함께 전송

 

* 회선제어

점대점/다중점 회선 구성방식과 단방향/반이중/전이중 등의 전송방식에 따라 사용되는 전송링크에 대한 제어 규범

점대점 : 두 장치 사이에 전용링크를 사용

다중점 : 셋 이상의 장치가 하나의 링크를 공유

단방향 : 한쪽방향 통신

반이중 : 양쪽방향 통신 가능하지만 동시통신은 불가

전이중 : 양쪽방향 동시통신 가능

 

 

충돌과 탐지/회피 방식

충돌 : 2개의 장치가 동시에 매체에 접근하려고 하는 경우

충돌 도메인 : 충돌이 발생할 수 있는 영역

CSMA/CD(Carrier Sense Multiple Access/Collision Detection)

: 충돌 탐지 방식

: 데이터 링크 계층 매체 접근 제어 기술로 이더넷(IEEE 802.3) 표준에서 사용하는 기술

: 공유매체가 사용중인지를 감지 한 후 매체가 비어있으면 프레임을 전송하고 충돌이 발생하면 임의의 시간동안 대기 후 재전송을 수행하는 방식

: 충돌이 발생할 수 있는 도메인

CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)

: 충돌 회피 방식

: 데이터 링크 계층 매체 접근 제어 기술로 무선랜(IEEE 802.11) 표준에서 사용하는 기술

: 무선랜 환경은 충돌탐지가 어렵기 때문에 사전에 충돌을 가능한 회피하는 방식

: 전송 전에 매체 사용 여부를 확인하고 일정 시간 대기후에 전송, 수신여부를 확인하여 실패시 재전송

 

 

- 데이터 단위 : Frame

- 주요 네트워크 장비 : 스위치(스위칭 허브), 브릿지

 

* 스위치(스위칭 허브) 기능 및 동작원리

: 더미허브와 다르게 유입된 프레임의 목적지 MAC주소 포트로 프레임을 전달

1. 학습 기능 : 특정 포트로 유입된 프레임의 출발지 MAC주소를 기반으로 MAC Address Table을 생성

2. 전달 기능 : MAC Address Table을 참조하여 전송할 프레임의 목적지 MAC주소의 포트로 프레임을 전달

3. 필터링 기능 : 목적지 포트 외에는 프레임을 전송하지 않는다

4. 플러딩 기능 : 만약 MAC Address Table에 등록되지 않은 목적지 MAC주소의 프레임은 더미 허브와 같이 모든 포트로 프레임을 전송

 

* 스패닝 트리(Spanning Tree) 프로토콜

: 스위치 이중화 시 루프(loof)가 생기는것을 방지하기 위한 프로토콜

 

* 스위치 스니핑 공격 기법

1. 스위치 재밍(Switch Jamming) / MAC Flooding 공격

: 스위치 MAC Address Table의 버퍼를 오버플로우 시켜서 강제적으로 스위치가 허브처럼 동작하게 하는 기법

( MAC Address Table을 오버플로우 시키기 위해 출발지 MAC주소를 계속 변경하면서 패킷을 지속적으로 전송 )

( 스위치는 Fail Safe/Open 정책을 따라서 모든 노드에게 패킷을 전송 - 장애 발생 시 모든 기능을 허용하는 정책 )

( Fail Safe/Open 정책의 반대로 장애 발생 시 모든 기능을 차단하는 정책은 Fail Secure 정책 )

 

2. ARP 스푸핑

: 공격자가 특정 호스트(IP)의 MAC주소를 자신의 MAC주소로 위조한 ARP Reply 패킷을 만들어 희생자에게 지속적으로 전송하면 희생자의 ARP Cache Table에 일정시간 특정 호스트(IP)의 MAC정보가 공격자의 MAC정보로 변경이 된다. 이를 통해 희생자로부터 특정 호스트로 나가는 패킷을 공격자로 향하도록 하여 스니핑하는 기법

: 호스트와 희생자 간의 송수신 패킷을 모두 스니핑하기 위해서는 희생자/호스트 모두 ARP스푸핑이 필요하다

: 희생자들이 스니핑이 인식하지 못하고 정상적인 통신이 될수있도록 공격자는 IP Forward 기능(라우터같이 패킷 중계 기능)을 활성화한다

 

3. ARP 리다이렉트

: 자신이 라우터/게이트웨이인 것처럼 MAC주소를 위조하여 ARP Reply 패킷을 대상 네트워크에 지속적으로 브로드캐스트하여 모든 호스트의 ARP Cache Table에 라우터/게이트웨이 MAC정보가 공격자의 MAC정보로 변경

: ARP 스푸핑 기법을 이용

: 외부와 통신하는 데이터를 스니핑하기 위함

 

4. ICMP 리다이렉트

: ICMP Redirection 메시지(type 5)는 호스트-라우터 또는 라우터 간 라우팅 경로를 재설정하기 위해 전송하는 메시지

: 사용자의 라우팅 테이블에 특정 목적지로 나가는 게이트웨이를 변조하여 패킷을 스니핑

(사실 거의 불가능 - OS에 ICMP 리다이렉트 허용안함 설정이 default)

 

5. 스위치의 SPAN/Port Mirroring 기능 이용

: 특정 포트에 분석장비를 접속하고 다른 포트의 트래픽을 분석장비로 자동 복사해주는 기술

(관리적인 목적으로 주로 사용하지만 공격자가 물리적으로 접근할 수 있다면 스니핑 가능)

 

* 스니핑 탐지 기법

: 스니퍼 탐지는 기본적으로 스니퍼가 무차별 모드로 동작한다는 점을 이용

1. ping을 이용한 스니핑 탐지

: 의심스러운 호스트에게 해당 네트워크에 존재하지 않는 mac주소로 위조한 icmp request 를 보냈을때 icmp reply가 온다면 상대가 무차별 모드로 스니핑하고 있다고 판단할 수 있다

2. arp를 이용한 스니핑 탐지

: 의심스러운 호스트에게 해당 네트워크에 존재하지 않는 mac주소로 위조한 arp request 를 보냈을때 arp reply가 온다면 상대가 무차별 모드로 스니핑하고 있다고 판단할 수 있다

3. dns를 이용한 스니핑 탐지

: 일반적으로 스니퍼는 사용자 편의를 위해 IP주소를 호스트명으로 변환하기 위한 역질의를 수행한다. 따라서 네트워크의 모든 호스트에 ping 수행 후 역질의가 발생하는 호스트를 감시하여 탐지한다

4. Decoy를 이용한 스니핑 탐지(Decoy=유인)

: 가짜 계정과 패스워드를 네트워크에 전송하여 유인한 계정을 이용해 접속을 시도하는 시스템을 탐지

 

* 스위치 VLAN 기법

VLAN : 데이터링크 계층에서 브로드캐스트 도메인을 논리적으로 나누기 위해 사용 하는 기술

1. 포트 기반 VLAN : 스위치 포트에 각 VALN을 할당, 같은 VALN에 속한 포트에 연결된 호스트간 통신이 가능

2. MAC 기반 VLAN : 각 호스트 MAC주소를 VLAN에 등록, 같은 VALN에 속한 호스트간 통신이 가능

3. 네트워크 ID 기반 VLAN : 네트워크 주소별로 VALN을 구성, 같은 VALN에 속한 호스트간 통신이 가능

4. 프로토콜 기반 VLAN : 같은 통신 프로토콜을 가진 호스트틀 간에만 통신할 수 있도록 구성

 

* 스위치 VLAN 할당 방식

1. Static VLAN(정적 VLAN) : 관리자가 직접 각 스위치에 VLAN을 할당하는 방식(각 포트에 VLAN 배정)

2. Dynamic VLAN(동적 VLAN) : VLAN 할당을 수행하는 별도의 장비를 이용하여 자동으로 할당하는 방식(MAC주소에 따라 배정)

 

 

* 스위치(L2)의 전송 방식

1. Store-and-Foward 방식 : 유입된 전체 프레임을 버퍼에 저장, 오류 검사 후 목적지로 전송하는 방식

2. Fragment-Free 방식 : 유입된 프레임의 첫 64byte를 버퍼에 저장, 오류 검사 후 목적지로 전송하는 방식

3. Cut-Through 방식 : 유입된 프레임의 첫 6byte를 읽어 목적지 MAC주소 확인 후 즉시 전송하는 방식(일반적으로 사용)

 

-------------------------------------

3계층(네트워크 계층)

: 종단 노드간의 라우팅을 담당하는 계층(Host to Host)(출발지 to 목적지)

: 라우팅이란 라우팅 알고리즘에 의해 목적지로 전송하기 위한 최적의 경로를 설정하고 패킷을 교환/중개/포워딩하는 기능

: 최종 목적지 노드를 찾아가기위해 논리적인 주소가 필요하며 TCP/IP프로토콜에서는 IP주소가 이 역활을 한다

 

- 데이터 단위 : Packet

- 주요 네트워크 장비 : 라우터, L3 스위치

 

* 라우터 기능

ACL(Standard ACL, Extended ACL) : 불필요한 트래픽 차단

QoS(Quality of Service) : 트래픽 조절

 

* 라우팅 프로토콜 분류

IGP : 자율시스템(AS) 내부 라우팅

거리 벡터 방식 : RIP, RIPv2, IGRP

링크 상태 방식 : IS-IS, OSPF

하이브리드 방식(거리벡터+링크상태) : EIGRP

 

EGP : 자율시스템(AS) 간 라우팅

경로 벡터 방식 : BGP

 

 

* 소켓(socket) : 호스트/프로세스 간에 통신을 위한 소프트웨어 모듈, 특정IP주소와 포트번호의 조합

 

 

* IP 프로토콜

 

Identification(16 bits) : 단편화 전 원본 IP 데이터그램을 식별하기 위한 ID

Flags(3 bits) : 재조합할때 조합할 단편이 남아있는지 알려주는 필드

Fragmentation offset(13 bits) : 단편을 순서대로 조합하기 위한 단편들의 상대위치(offset)를 저장

( IP단편화 tcpdump 출력 형식은 frag id:size@offset[+] )( offset 뒤에 +는 아직 보낼 추가 단편이 있음을 의미 )

 

- 단편화(Fragmentaton)/재조합(Reassembly) 기능

: L2 데이터링크 계층은 전송할 수 있는 데이터의 양이 제한되어있어서(MTU) IP는 하위계층으로 데이터를 보낼때 

IP 단편화를 하여 보내고 하위계층에서 전송된 데이터는 재조합을 한다

(가장 많이 사용하는 Ethernet의 경우 MTU는 1500바이트이다. 이때 IP는 헤더 20바이트+페이로드1480바이트로 단편화)

: 단편화는 각 전송구간(PC->라우터 또는 라우터->라우터)에서 발생할수 있으나 재조합은 목적지에서만 발생한다.

 

Time to Live(TTL)(8bits)

: 최초에는 초단위로 생존시간을 명시할 의도였으나 측정의 어려움으로 인해 라우터/L3스위치 통과 (hop count) 가능 횟수로 의미가 바뀜. TTL설정목적은 무한루핑이 발생하여 목적지에 도달할 수 없는 패킷이 무한히 생존하여 네트워크 대역을 차지하는 상태를 방지하기 위함이다.

: 라우터/L3스위치에 도착할때마다 TTL값을 1씩 감소시키고 값이 0이 되면 해당 패킷을 폐기하고 출발지로 ICMP Time Exceeded 오류 메시지를 생성하여 전송

: 운영체제별로 부여하는 기본 TTL값이 달라서 OS 핑거프린트 목적으로도 사용할 수 있다.

(리눅스 : 64 / 윈도우 : 128 / 유닉스 : 255)

 

Protocol(8bits)

: 상위 프로토콜을 식별하기 위한 프로토콜 번호를 저장하는 필드

(대표적으로 ICMP(1), TCP(6), UDP(17) 등이 있다)

Header Checksum(16bits) : 데이터부를 제외한 헤더부분의 오류 검사값

 

 

 

* IPv6 프로토콜

: 총 128bit / 16bit로 나눠서 16진수로 표기 (ex) 2021:DB81:1234:0002:0000:0000:0009:1442

앞에 64bit는 네트워크 주소, 뒤 64bit는 네트워크에 연결된 통신장비 등에 할당되는 인터페이스 주소

: 브로드캐스트가 없어지고 멀티캐스트(1:N)와 애니캐스트(1:가장 가까운 1)가 대신한다 

 

장점

- 확대된 주소 공간 : 2의 128bit개의 주소 사용 가능

- 단순해진 헤더 포멧 : IPv4 보다 헤더가 단순해져서 성능향상 및 효율적인 라우팅 가능

- 간편해진 주소 설정 기능 : 주소 자동 설정 기능(dhcp를 통하지 않아도 주소를 자동으로 생성)을 이용하여 플러그 앤 플레이 설치가 가능

- 강화된 보안성 : IPsec기능을 기본사항으로 제공

- 개선된 모바일 IP : IPv6 주소 헤더에서 이동성 지원

 

IPv6 전환 기술

듀얼스택 : IPv4와 IPv6 프로토콜을 동시에 설정하여 통신 상대에 따라 선택적으로 사용하는 방식

터널링 : IPv4 네트워크를 통과하는 가상의 경로를 만들어 IPv4네트워크를 경유하여 통신하는 방식

(IPv6네트워크 -> IPv4네트워크 터널 -> IPv6네트워크)

주소 변환 : IPv4 -> IPv6 또는 IPv6 -> IPv4 로 변환하는 방식

 

 

 

* ICMP 프로토콜

Error-Reporting Message 기능 : 전송 중 오류 발생 시 에러 메시지를 생성하여 응답

Qurey Message 기능 : 네트워크 상태를 진단하기 위한 쿼리 요청 및 응답 메시지 생성(ex : ping)

 

- Type : ICMP 메시지 유형/용도

Type 0 : Echo Reply(ping)

Type 3 : Destination Unreachable (목적지 도달 불가)

Type 3 Code 1 : Host Unreachable (최종단계의 라우터가 목적지 호스트로 패킷전송에 실패)

Type 3 Code 2 : Protocol Unreachable (목적지 호스트에서 특정 프로토콜을 사용할 수 없는 경우)

Type 3 Code 3 : Port Unreachable (목적지 호스트에 해당 UDP 포트가 열려있지 않은 경우)

Type 3 Code 4 : Fragmentation needed and Don't fragment was set ( IP패킷의 단편화가 필요하나 DF-Don't Flage플래그가 설정되어 단편화 할 수 없는 경우 라우터에 의해 반환)

Type 5 : Redirection (라우팅 경로 재지정 메시지)

Type 8 : Echo Request(ping)

Type 11 : Time Exceeded (타임아웃이 발생하여 IP 패킷이 폐기되었음을 알리는 메시지)

(TTL이 0되서 폐기되면 Code 0)(패킷 재조합 과정에서 IP데이터그램 단편이 손실될경우 재조합실패해서 Code 1)

- Code : Type의 세부내용으로 Type와 Code가 조합되어 ICMP메시지의 목적과 용도를 나타냄

- Checksum : ICMP 메시지 오류 검사

- Rest of the header : Type과 COde에 따라 추가되는 헤더

- Data section : 데이터가 위치하는 영역

 

 

 

- 라우팅 테이블 검색 방식

: IP 패킷의 목적지 IP와 라우팅 테이블의 netmask/genmask를 bit and 연산(목적지IP에서 네트워크 ID부분만을 추출하기 위함) 수행 후 라우팅 테이블의 destination 필드와 비교를 수행, 일치하는 경로를 선택하여 패킷을 전송

* 우선순위

1. 목적지 호스트(IP) 주소와 일치하는 경로를 찾는다

2. 목적지 호스트 주소와 일치하는 경로가 없으면 목적지 네트워크 주소와 일치하는 경로를 찾는다

3. 일치하는 경로가 없으면 Default Gateway로 보낸다

 

-------------------------------------

4계층(전송 계층)

: 종단 노드간의 신뢰성 있는 데이터 전송을 담당하는 계층(End to End)(Process to Process)

: 목적지 프로세스를 식별하기 위해 TCP/IP 프로토콜에서는 포트정보(Port Address)가 필요

: 대표적 프로토콜로 TCP/IP의 TCP, UDP, SCTP와 Novel Netware의 SPX 등이 있다.

 

- 분할과 재조합 기능

- 연결제어 : 연결지향(TCP), 비연결지향(UDP) 방식 제공

- 흐름제어(상대방이 수신 가능한 만큼만 연속해서 전송 - 슬라이딩 윈도우 제어방식) : 데이터 링크는 인접한 노드간에 흐름제어를 했다면 전송계층에서는 종단 노그간에 흐름제어를 수행하므로 그 범위가 더 넓다

- 오류제어(오류나 손실 발생 시 재전송-Retransmission하여 이를 해결)

- 혼잡제어 : 데이터 손실률을 계산하여 혼잡도를 계산 후 전송량을 제어

 

- 데이터 단위 : Segment

- 주요 네트워크 장비 : L4 스위치

 

* L4 스위치 : SLB(Server Load Balancing) 즉 서버 트래픽 부하분산과 Failover(장애 발생 시 예비시스템 자동 전환) 기능을 제공

 

* TCP 프로토콜

: 스트림(Stream) 전송, 임의의 크기로 나누어 연속해서 전송

: 흐름제어, 오류제어, 혼잡제어 수행

: 출발지/목적지 IP, 출발지/목적지 Port, Seq/ACK number가 맞으면 상호간에 인식하게 된다

 

- Source Port : 출발지 포트

- Destination Port : 목적지 포트

- Sequence Number : 송신데이터 순서번호(초기 순서번호[ISN]는 임의의 수)

- AckNowledgment Number : 상대방이 다음에 전송한 순서 번호

- HLEN : 헤더의 길이

- Reserved : 예약(사용X)

- Control Flags (우아 프로스팩스다! 로 외우기-from 알기사 정일영 강사님)(순서도 중요)

URG : 긴급 데이터 설정

ACK : 수신 확인 응답

PSH : 송/수신 버퍼에 있는 데이터를 즉시 전송

RST : 연결 강제 중단

SYN : 연결 설정

FIN : 연결 종료

ex) SYN bit = 000010

- Windows Size : 수신 버퍼 여유공간 크기

- Cheecksum : 오류검사를 위한 필드

- Urgent Pointer : 긴급데이터(URG 플래그 설정)의 위치값을 담고 있다

 

 

* TCP 분할(Segmentation)과 재조합(Reassembly)

MSS(Maximum Segment Size) : TCP 세그먼트 데이터부의 최대 바이트수

 

 

 

 

 

 

 

 

 

* TCP 연결 종료 과정(4-Way HandShake)

 

출발지/목적지 IP, 출발지/목적지 Port, Seq/ACK number

 

 

* TCP 세션 하이재킹

: 공격자가 세션 식별정보(출발지/목적지 IP, 출발지/목적지 Port, Seq/ACK number)를 위조하여 세션을 탈취하는 공격

: 스니핑을 통해 식별정보를 확인할 수 있어야 공격이 가능하다

: 공격자가 세션하이재킹을 통해서 세션을 탈취할경우 희생자와 서버는 Seq/Ack 넘버가 맞지않기 때문에 서로 계속 Ack 메시지를 보낸다. 이러한 과정으로 인해서 대량의 Ack 메시지가 발생하는걸 Ack Storm 이라고 한다.

(Ack Storm을 공격으로 탐지하기 때문에 공격자는 Ack Storm을 막기위해서 세션 탈취 후 희생자의 세션을 끊어야 한다)

 

 

* UDP 프로토콜

: 데이터그램 전송, 데이터를 정해진 크기로 전송

: 흐름제어, 오류제어, 혼잡제어를 수행하지 않는다

 

-------------------------------------

5계층(세션 계층)

: 어플리케이션간의 논리적인 연결인 세션의 생성/관리/종료를 담당하는 계층

- 데이터 단위 : Data

 

-------------------------------------

6계층(표현 계층)

: 데이터를 표현방식의 변환을 담당하는 계층

: 인코딩/디코딩, 압축/압축해제, 암호화/복호화 등을 담당

- 데이터 단위 : Data

 

-------------------------------------

7계층(응용프로그램 계층)

: 사용자가 네트워크에 접근할 수 있는 인터페이스를 담당하는 계층

: 네트워크 서버/클라이언트 프로그램

- 데이터 단위 : Data

 

-------------------------------------

네트워크 관리 명령어

 

ping : 종단 노드 간에 네트워크 상태를 관리하기 위한 명령어

 

traceroute (리눅스/유닉스)

: 종단 노드 사이에 있는 각 구간에 대한 네트워크 상태를 관리하기 위한 명령어

: TTL값을 1씩 늘려가면서 패킷을 전송

: UDP/33434 이상 포트를 사용 (보통 사용하지 않아서 닫혀있는 포트)

: 해당구간에 문제가 있거나 보안상의 이유로 라우터에서 ICMP응답을 주지않는 경우가 있다(이경우 *로 표시됨)

: 최종 목적지에 패킷을 전송했을때 UDP 포트가 닫혀있을경우 ICMP Destination Unreachable(Port Unreachable)로 응답을 준다

 

tracert (윈도우)

: 종단 노드 사이에 있는 각 구간에 대한 네트워크 상태를 관리하기 위한 명령어

: TTL값을 1씩 늘려가면서 패킷을 전송

: ICMP Echo Request를 사용

: 해당구간에 문제가 있거나 보안상의 이유로 라우터에서 ICMP응답을 주지않는 경우가 있다(이경우 *로 표시됨)

: 최종 목적지에 패킷을 전송했을때 ICMP Ehco Reply가 응답된다

 

 

netstat

: 시스템의 네트워크 관련 다양한 상태정보를 관리할 수 있는 명령어

옵션없음 : 모든 연결된 소켓 상태 정보

-a : 모든 소켓 상태 정보

-i : 네트워크 인터페이스 정보

-r : 시스템 라우팅 테이블 정보

-s : 각 프로토콜별 통계 정보

-t : TCP 소켓만을 출력
-u : UDP 소켓만을 출력  

-n : 네트워크 주소 정보를 숫자형식으로 출력(n옵션이 없을 시 IP는 도메인, 포트는 서비스 명으로 출력)

-p : 해당 소켓의 프로세스/PID 정보를 출력

 

 

ifconfig (리눅스/유닉스)

: 네트워크 인터페이스 설정 및 조회

* 인터페이스에 promiscuous(무차별 모드) 설정 : ifconfig eth1 promisc

 

* 인터페이스에 promiscuous(무차별 모드) 설정 해제: ifconfig eth1 -promisc

 

 

ipconfig (윈도우)

 

-------------------------------------

nmap

포트 스캐닝 도구 : 어떤 포트(서비스)가 활성화 되어있는지 확인하는 도구

(옵션)

-sT : TCP Connect Scan(Open) - connect 시스템 호출을 이용하기 위해 TCP 연결 설정 과정을 완료하기 때문에 시스템 로그에 스캔한 흔적이 남는 특성이 있다

 

-sS : TCP SYN Scan(Half-Open) - TCP 패킷 헤더의 제어비트를 조작, TCP 연결 과정을 완전하게 수행하지 않기 때문에 로그가 남지 않는다 - (Stealth Scan)

 

-sF : TCP FIN Scan - FIN 제어비트만 설정하여 스캔, 종료 패킷은 FIN+ACK를 사용 (Stealth Scan)

 

-sX : TCP Xmas Scan - URG, PSH, FIN 제어비트를 설정하여 스캔, (Stealth Scan)

로스스다

 

-sN : TCP NULL Scan - 제어비트를 설정하지 않고 스캔 (Stealth Scan)

 

-sA : TCP ACK Scan - 포트 오픈 여부를 판단하는것이 아닌 방화벽 룰셋을 알아내기 위한 스캔방식이다

(ACK 제어비트만 설정한 패킷을 전송, 포트 오픈여부와 무관하게 RST 응답을 받는다, 방화벽 차단여부만 확인)

 

-sU : UDP Scan - UDP 포트 오픈여부를 판단하는 스캔방식, 닫힌 UDP 포트로 패킷 수신시 ICMP 에러 메시지(Destination Unreachable/Port Unreachable)로 응답하는 특성을 이용

 

-D : Decoy 스캔 : 다양한 스캔을 할때 스캔을 당하는 Target 호스트에서 스캐너 주소를 식별하기 어렵도록 위조된 주소로 스캔하는 방식

 

-b : TCP FTP Bounce Scan

-sP : Ping scan

 

-p : 포트 옵션 - 포트/서비스 선택

-v : 상세내역 출력

-d : Debugging

-O : 대상 호스트의 운영체제 정보를 출력

 

-oN <file> : 결과를 일반 파일 형식으로 출력

-oX <file> : 결과를 XML 파일일 형식으로 출력

-oG <file> : 결과를 Grepable 파일 형식으로 출력

 

* 시스템은 SYN, ACK, RST 의외의 패킷을 수신한 경우 닫힌 포트에서는 RST+ACK 패킷으로 응답하고 열린 포트에서는 응답하지 않는다

* open | filtered 상태는 열려있거나 방화벽에 의해 차단된 상태라는 뜻

* TCP Connect Scan은 일반 사용자 권한으로도 실행이 가능하나 다른 스캔은 패킷을 조작하기 때문에 관리자 권한이 필요하다

 

-------------------------------------

Dos 공격

 

Ping Of Death Attack

: ping 명령을 통해 ICMP(Echo Request) 패킷을 아주 크게 만들어 전송하면 MTU에 의해 다수의 IP 단편화가 발생, 수신측에서 단편화된 패킷을 재조합하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 공격한다

 

대응 : ICMP는 보통 분할하지 않으므로 분할이 일어난 패킷을 공격으로 의심하여 탐지

 

 

Land Attack

: 출발지 IP를 목적지 IP와 동일하게 만들어서 목적지 시스템이 자기 자신에게 응답을 보내 무한 루프 상태에 빠지도록 하여 시스템 자원을 소모시키는 형태의 공격

 

대응 : 보안패치 적용, 패킷 필터링이 가능한 장비를 통해서 출발지IP와 목적지IP가 같으면 차단하도록 설정

 

 

Smurf Attack

: 출발지 IP를 목적지IP로 위조, 증폭 네트워크로 ICMP Echo Request를 브로드캐스트하여 다수의 ICMP Echo Reply가 희생자에게 전달되어 서비스 거부를 유발시키는 공격

(원격지 네트워크에 브로드캐스트 할 수 있는 Directed Broadcast 를 이용. ex : 192.168.2.255 )

 

대응 : 증폭 네트워크로 사용되는 것을 막기 위해서 라우터에서 다른 네트워크로부터 자신의 네트워크로 들어오는 Directed Broadcast를 차단하도록 설정( 라우터 명령어 : no ip directed-broadcast ), ICMP를 사용할 필요가 없는 시스템들은 ICMP Echo Request에 응답하지 않도록 설정

 

 

Teardrop Attack

: IP패킷 재조합 과정에서 오프셋 값을 조작하여 오류나 부하를 발생하도록 만드는 공격

: IP fragment offset값을 중첩시키거나 떨어지게끔 조작

 

대응 : 보안패치 적용

 

-------------------------------------

IP 단편화 취약점(오프셋 값 조작)을 이용하여 패킷 필터링 장비를 우회하여 허용하지 않는 공격 대상 시스템에 접근하기 위한 공격

 

Tiny Fragment(작은 단편) 공격

: IP 단편을 목적지 포트가 포함되지 않도록 매우 작게 만들어서 전송, 방화벽에서는 목적지 포트가 없기 때문에 일단 허용하게되고 뒤에오는 목적지 포트가 포함된 데이터도 허용하게 된다, 목적지 서버에서 단편들이 재조합되어 공격자가 원하는 목적지 포트로 연결된다

 

Tiny Overlap(단편 중첩) 공격

첫번째 단편에는 IP와 방화벽에서 허용된 포트가 전송되어 허용, 두번째 단편에는 공격자가 우회하여 접근할 포트가 기재되어있는데 같은 IP데이터그램이기 때문에 방화벽에서는 이를 허용, 목적지 서버에서 단편들이 재조합되고 두번째 단편에 있는 포트가 덮어씌어져서 공격자가 원하는 목적지 포트로 연결된다.

 

대응 : 단편화된 패킷들을 재조합해서 탐지가 가능한 필터링 장비를 적용

 

-------------------------------------

DDos 공격

봇넷 명령 제어 방식

- 중앙 집중형 명령 제어 방식(IRC 봇넷, HTTP 봇넷)

: 봇들은 C&C서버와 통신, C&C서버가 차단될 시 무력화

- 분산형 명령/제어 방식(P2P 봇넷)

: 모든 봇들이 C&C 역활을 수행하여 봇넷을 보호, 탐지 및 차단이 어렵다

 

봇넷의 보안장비 우회 기법

보안장비는 C&C서버의 도메인/IP주소를 블랙리스트로 등록하여 탐지/차단 수행

공격자는 탐지되지 않기위해서 다양한 보안장비 우회기법들을 적용

- Fast Flux 기법

: C&C서버 IP를 빠르게 지속적으로 변경하는 것

 

- DGA(Domain Generation Algorithm)

: 도메인 이름을 지속적으로 변경하는것(임시 도메인을 생성)

 

- Domain Shadowing

: 합법적인 도메인의 서브 도메인을 등록 (ex : virus.naver.com)

 

대표적인 DDoS 공격 도구 : 트리누(Trinoo), TFN, Stacheldracht, Shaft, Trinity

(트리누는 Attacker/Master/Agent로 공격 네트워크를 구성하여 UDP Flooding 공격을 수행)

 

hping3

: Salvatore sanfilipp(살바토레 산필리포)가 만든 TCP/IP 프로토콜용 오픈소스 패킷 생성/분석 도구

: 다양한 프로토콜의 패킷을 손쉽게 생성할 수 있다

: 모의 공격패킷 생성 및 보안장비 동작 테스트로 주로 사용

-------------------------------------

DDos 공격유형

UDP/ICMP Flooding

: 짧은시간에 다량의 UDP패킷/ICMP패킷을 서버로 전송하여 네트워크 대역폭을 소진시키는 공격

 

TCP SYN Flooding

: TCP 연결 자원(backlog queue)을 소진시켜 외부로부터 TCP연결 요청을 받을 수 없는 상태로 만드는 서비스 거부 공격

: 3-way handshake 과정에서 SYN -> SYN+ACK 를 받은후 ACK를 보내지 않는다. 그러면 서버의 소켓은 SYN-RECV 상태가 되며 계속 ACK를 대기하고 있는 상태가 된다
(SYN, SYN+ACK, RST 패킷만 있으면 TCP SYN Flooding공격, RST은 위조된 IP로 TCP SYN을 보내는데 실제 있는 IP가 있다면 RST 패킷을 보내는것)

 

대응방법 

1. Syn Cookie 사용

(상대가 유효한지 확인하기 위한 방법으로 정상적인 ACK를 보내지 않는다면 backlog queue에 담지 않는다)

Syn Cookie를 사용할때 CPU가 많이 소모되어 스스로 Dos 상태가 될 수 있는 단점이 있다

Syn Cookie 기능  활성화 방법(리눅스) : sysctl -w net.ipv4.tcp_syncookies=1

2. 방화벽 또는 DDos 대응장비를 이용하여 동일 IP의 SYN 요청에 대한 임계치 설정

3. First Syn Drop 설정

(정상적인 패킷은 첫번째 SYN을 Drop해도 재전송을 하기 때문에 문제가 없음)

4. backlog queue를 늘려준다(하지만 대부분 큰효과가 없음)

5. SYN+ACK에 대한 대기 시간(connection time out)을 줄인다(하지만 정상요청에 문제가 생길수도 있다)

 

 

HTTP GET Flooding

: 공격자가 동일한 동적 콘텐츠(서버에서 작업이 필요한 콘텐츠)에 대한 HTTP GET요청(해당 자원을 달라고 하는 요청)을 다량으로 발생시켜 서버 부하를 발생시키는 공격

ex) GET /index.php HTTP/1.1

 

* Hulk DoS 공격

: HTTP GET Flooding과 비슷하지만 Hulk DoS 공격은 주소(URI)를 지속적으로 변경시켜서 임계치 기반의 대응 장비를 우회하여 공격하는 공격

ex) GET /index.php?ADAB=SZA HTTP/1.1

ex) GET /index.php?BDJQ=KMM HTTP/1.1

ex) GET /index.php?ECLP=BVF HTTP/1.1

 

* Hash DoS 공격

: 웹서버는 파라미터를 효율적으로 저장하고 검색하기 위한 자료구조로 해시테블을 주로 사용하는데 공격자는 조작된 많은 수의 파라미터를 POST방식으로 웹서버로 전달하여 다수의 해시 충돌(collision)이 발생하게 되고 이로인해 웹서버는  정상적인 파라미터 조회 시 많은 CPU자원을 소모하게 된다.

ex) &QJSWQ=a&HQGB=a&JFBE=a&RUIR=a.......

 

 

Slow HTTP Header Dos(Slowloris)

: 웹서버의 연결자원(웹서버가 동시에 클라이언트를 연결할 수 있는 최대개수)을 소진키시는 공격

 

: HTTP는 헤더필드가 끝나고 빈 라인이 나오면(0xod0a 개행이 연속으로 2번 나오면) 헤더 필드가 끝났다고 인지하게 되는데 공격자는 이를 악용하여 헤더의 끝(빈 라인)을 전달하지 않고 지속적으로 천천히 불필요한 헤더필드를 전달한다면 웹서버는 요청 헤더부를 모두 수신해야 요청 메시지 처리가 가능하기 때문에 대기하게 된다.

 

 

Slow HTTP Read Dos

: 웹서버의 연결자원(웹서버가 동시에 클라이언트를 연결할 수 있는 최대개수)을 소진키시는 공격

: Slow HTTP Header Dos가 천천히 요청하는 공격이면 Slow HTTP Read Dos는 응답을 천천히 받는 공격

 

: TCP의 흐름제어는 상대방이 수신 가능한 만큼만 연속해서 전송하는 제어방식으로 수신측 버퍼의 공간이 없으면 공간이 없다고 서버에게 알리게되고 서버는 Timer를 두고 일정시간이 지나고 나서 다시 전송을 한다. 이 과정을 악용해 서버에게 알리는 Zero Window Packet의 windows 필드값을 0으로 설정해서 서버에게 지속적으로 보내 서버를 대기상태로 만든다.

 

 

Slow HTTP POST Dos(rudy)

: 웹서버의 연결자원(웹서버가 동시에 클라이언트를 연결할 수 있는 최대개수)을 소진키시는 공격

: HTTP POST요청(데이터를 전달해서 이를 처리한 결과를 달라는 요청)은 헤더필드 Content-Length(Message Body의 데이터 크기를 의미)를 보내는데 이 값을 매우 크게 전송하고 실제 데이터는 아주 조금씩 천천히 전송하여 서버를 대기시킨다.

 

* Slow HTTP Header/Post Dos 대응방법

1. 동시연결에 대한 임계치 설정을 통한 차단

2. 연결 타임아웃 설정을 통한 차단

3. 읽기 타임아웃 설정을 통한 차단(Header와 Body 읽기 시간제한 가능)

 

-------------------------------------

DRDos

: 공격자는 공격대상 IP로 위조(IP Spoofing)하여 다수의 반사서버로 요청정보를 전송, 공격대상은 반사서버로부터 다수의 응답을 받아 서비스 거부 상태가 된다

: 크게 반사(Reflection) 증폭(Amplification) 공격형태로 나타난다

: DDoS처럼 봇넷들이 직접 공격을 수행하는 것이 아니라 증폭/반사공격에 활용되는 서비스를 제공하는 서버를 공격 기기로 이용한다. 때문에 공격 근원지를 파악(역추적)하는 것이 어렵다

- TCP SYN 패킷을 반사서버로 전달하여 SYN+ACK 응답패킷이 공격대상으로 향하도록 하는 방법

- ICMP Echo Request를 반사서버로 전달하여 Echo Reply가 공격대상으로 향하도록 하는 방법(ex : 스머프 공격)

- UDP 프로토콜을 사용하는 서버의 서비스 반사서버로 이용하여 응답이 공격대상으로 향하도록 하는 방법

 

대응방법 : 위조된 IP가 인입되지 않도록 ISP(라우터 등)가 직접 차단한다

* IP 스푸핑에 대응할 수 있는 라우터(패킷 필터링 장비)의 주요 기법

- Ingress 패킷 필터링 기법

: 외부에서 내부로 들어오는 패킷에 대해 출발지 IP를 체크하여 외부에 존재할 수 없는 IP(사설IP, 루프백 IP등 인터넷에서 사용되지 않는 IP)를 필터링한다.

- Egress 패킷 필터링 기법

: 내부에서 외부로 나가는 패킷에서 출발지 IP를 체크하여 내부에서 사용되고있는 IP가 아니라면 필터링한다.

- Unicast RPF(Reverse Path Forwarding)

: 유입된 인터페이스로 다시 전송되는지 여부를 체크하여 유입된 인터페이스로 다시 전송되지 않는다면 위조된 주소로 판단하여 필터링한다.

 

 

TCP 기반 DRDoS 공격

: 출발지IP를 공격대상IP로 변조 -> TCP SYN 패킷을 반사서버로 전달하여 SYN+ACK 응답패킷이 공격대상으로 향하도록 하는 방법

: 만약 공격대상이 SYN+ACK패킷에 대한 응답이 없을 경우 서버는 TCP동작 구조 상 재전송을 다수 수행하기 때문에 응답이 증폭된다

 

 

UDP 기반 DRDoS 공격

DNS 증폭 DRDoS 공격

: 출발지IP를 공격대상IP로 위조(IP Spoofing) -> 공개되어있는 DNS서버를 이용하여 요청 대비 응답이 큰(증폭되는) 질의 타입(ANY,TXT)을 다수 요청 -> 공격대상에게 대량의 트래픽을 유발

: UDP/53 port 사용

 

DNS서버가 악용되지 않도록 대응하는 방법

1. 공개용이 아닌 내부 사용자용 DNS서버면 내부 사용자만 DNS 질의(Recursive Query)가 가능하도록 제한

2. DS서버의 서버방화벽 또는 네트워크 보안 장비를 이용하여 동일 출발지IP에 대한 요청 개수 제한(임계치 설정)을 하거나 특정 바이트(byte) 이상의 DNS 응답을 차단하도록 설정한다

 

 

NTP 증폭 DRDoS 공격

: NTP 서버에 최근 접속한 클라이언트 목록(monlist)을 요청하여 공격대상에게 대량의 증폭된 응답 트래픽을 유발시킨다

: UDP/123 port 사용

 

SNMP 증폭 DRDoS 공격

: SNMP Agent에 MIB(관리정보)같은 정보를 대량 요청하여 공격대상에게 대량의 증폭된 응답 트래픽을 유발시킨다

: UDP/161 port 사용

 

CHARGEN 증폭 DRDoS 공격

: CHARGEN 서버에 접속하여 공격대상에게 대량의 증폭된 문자열 응답 트래픽을 유발시킨다

 

맴캐시드(Memcached) 서버를 이용한 DRDos 공격

: 맴캐시드는 오픈소스 메모리 캐싱 시스템으로 별도의 인증과정없이 접근을 허용해주기 때문에 희생자의 IP로 위조하여 기본 포트인 UDP/11211 port로 특정명령(set/get, state 등)을 전송하면 희생자 IP로 원래 패킷보다 증폭된(이론상 5만배까지 가능) 패킷을 반사하게 된다

: 최근 2018년 2월 소스코드 공유사이트인 Github를 대상으로 맴캐시드 서버를 이용한 대규모 공격이 발생

 

WSD(Web Service Discovery)를 이용한 DRDos 공격

: WSD는 윈도우 기반 기기들이 네트워크 프린터 등을 자동으로 찾아서 연결 설정을 완료하는데 사용되는 서비스

: UDP/3702 port 사용

 

ARMS(Apple Remote Management Service)를 이용한 DRDoS 공격

: ARMS는 애플 기기들의 원격제어 기능을 활성화 할때 사용되는 데스크톱 원격제어 프로토콜

: TCP/UDP/3283 port 사용

 

CoAP(Constrained Application Protocol)를 이용한 DRDos 공격

: 불안정한 네트워크상의 저전력 IoT기기들을 위한 일종의 애플리케이션 프로토콜

: UDP/5683 port 사용

-------------------------------------

무선랜 보안

 

용어

SSID : 무선랜을 식별하기 위한 ID

BSS : 무선랜의 가장 기본적인 망 구성단위(무선AP와 스테이션(연결된 기기들))

BSSID : BSS를 식별하기 위한 ID, 일반적으로 무선AP의 MAC주소를 사용

ESS : 여러 BSS에 의해 구성된 네트워크

ESSID : ESS를 식별하기 위한 ID

DS : 무선AP가 연결된 유선 네트워크

비콘(beacon) 프레임/메시지 : 무선AP가 자신의 존재를 알리기 위해서 주기적으로 Broadcast로 보내는 메시지

 

연결 순서

1. 무선랜/AP 탐색

: 수동탐색(무선AP가 주기적으로 송신하는 비콘 프레임을 통해 탐색)

: 능동 탐색(SSID를 담은 Probe Request 메시지를 만들어서모든 채널로 전송하고 Probe Response를 받아서 탐색)

2. 인증 과정 : 사전공유기 또는 인증서버를 통한 인증

3. 연결 과정 : 무선 AP와의 연결설정을 통해 무선AP의 멤버로 참여

 

* 워 드라이빙(War Driving) : 해커가 무선 장치를 가지고  무선 네트워크를 찾는 과정

 

WEP(Wired Equivalent Privacy)

: 802.11b 표준에서부터 적용

: 고정된 공유키무작위로 생성한 초기 벡터를 이용한 RC4알고리즘 기반의 데이터 암호화 제공

: RC4 알고리즘 자체 취약점과 공유키가 쉽게 추출될 수 있는 취약점 등으로 인해 사용을 권장하지 않는다

WEP 암호화 동작방식

1. 무작위로 생성된 24bit 초키벡터(IV) + 고정된 40bit(or 104bit) WEB 공유키 ->조합-> WEP 암호키

RC4알고리즘을 기반으로한 난수발생기(WEP 암호키) -> 키스트림

2. CRC-32(중복순환검사) 알고리즘을 이용하여 무결성 체크값 ICV를 생성, ICV+평문 조합

3. (키스트림) xor (ICV+평문) = 암호문

4. 초기벡터(IV) + 802.11표준 헤더 + 암호문 = 암호문 패킷

 

WEB 암호화/복호화의 문제점

1. 초기벡터(IV)는 무작위로 생성되지만 24bit의 짧은 길이를 사용하기 때문에 초기벡터값(IV)이 재사용될 가능성이 높다.

2. 불완전한 RC4 암호 알고리즘을 사용해서 암호키 노출 가능성이 높다

3. 짧은 길이의 고정된 암호키 사용으로 인한 공격 가능성이 높다

4. 암호키 노출로 인해 무선전송 데이터의 노출 위험성이 높다

 

 

WEP 인증방식

- Challenge-Response 방식

WEP 인증 문제점

1. 단방향 인증방식(사용자만 인증하여 사용자는 불법 AP(Rogue AP)인지 알수가 없다

2. 동일한 WEB 공유키를 사용하기 때문에 외부로 유출될 경우 많은 문제가 발생한다

 

 

IEEE 802.11i 보안 표준

WPA 

암호 방식 : RC4-TKIP (Temporal Key Integrity Protol)

* RC4-TKIP : WEP 암호방식의 취약점을 보완한 방식

문제점 : 여전히 취약한 RC4 알고리즘을 사용하고 키관리 방법을 제공하지 않으며 무선 패킷 수집을 통한 키크랩 공격에 대한 취약성을 가지고있다. TKIP의 적용은 소프트웨어 업그레이드를 이용하고 있기 때문에 소프트웨어적인 처리에 따른 암복호화 시간지연 등의 성능상 문제점이 있다

 

WPA2

암호 방식 : AES-CCMP (Counter mode with CBC-MAC Protocol) 

인증방식

개인 : PSK(Pre-Shared Key) 모드[Password, SSID 이용]

기업 : 802.1x/EAP(Extensible Authentication Protocol) 모드

 

WPA3

: WPA2의 보안성을 개선하여 2018년 발표

: PSK인증을 SAE인증으로 대체하여 보안성 제공

: 비밀번호가 없는 개방형 공공네트워크에서 OWE기반 데이터 암호화 제공

 

기타 무선랜 접속 인증 기술

- SSID 설정을 통한 접속 제한 : SSID를 브로드캐스트하지 않도록 설정(숨김 모드)

- MAC 주소 인증 : 무선랜 접속을 허용할 단말의 MAC주소를 무선AP에 사전등록하여 인증

 

무선 AP 물리적/관리적 보안

1. SSID 변경 및 브로드캐스트 금지

2. 무선AP의 Default Password 변경

3. 무선AP의 물리적 접근 제한

 

-------------------------------------

VPN

: 터널링 프로토콜로 공중망에서 마치 전용선처럼 사용하는 기술

 

2계층 VPN 프로토콜 : PP2P(1:1), L2F(1:N), L2TP

3계층 VPN 프로토콜 : IPsec

4계층 VPN 프로토콜 : SSL/TLS

 

 

IPsec

: 종단노드 구간 또는 보안/터널 게이트웨이 구간에 IP패킷 보안 서비스를 제공해주는 보안 프로토콜

 

보안서비스

1. 기밀성 (Confidentiality)

: 대칭 암호화를 통해 기밀성 제공(AH는 미지원, ESP만 암호화 지원)

2. 비연결형 무결성 (Connectionless Integrity)

: 메시지 인증코드(MAC)를 통해 각 IP 패킷 별 무결성을 보장

3. 데이터 원천 인증/송신처 인증 (Data Origin Authentication)

: 메시지 인증코드(MAC)를 통해 수신한 메시지가 올바른 송신처로부터 온 것임을 보장

4. 재전송 공격 방지 (Protection Against Replays)

: 송신측에서 IP패킷별로 순서번호(Sequence Number)를 전송, 수신측에서는 해당 보안연관(SA)에 순서번호를 유지하고 이를 검증

5. 접근제어 (Access Control)

: 보안정책(SP)을 통해 송수신 IP패킷에 대한 시스템 접근을 제어(허용,폐기,보호 등)

6. 제한된 트래픽 흐름의 기밀성 (Limited Traffic Flow Confidentiality)

: ESP/터널모드의 경우 IP헤더는 암호화되고 New IP헤더에 있는 터널/보안 게이트웨이 정보만 노출되기 때문에 종단 노드 구간의 트래픽 흐름의 기밀성이 보장된다

 

동작모드

- 전송 모드(TransPort Mode)

: IP패킷의 페이로드를 보호, 즉 IP의 상위 프로토콜 데이터를 보호하는 모드

: 페이로드만 IPsec으로 캡슐화, IP 헤더(출발지/목적지 정보가 있음)를 보호하지 않기 때문에 트래픽 흐름이 분석될 수 있다.

: 일반적으로 종단노드(PC-PC) 구간의 IP패킷을 보호하기 위해 사용한다

 

- 터널 모드(Tunnel Mode)

: IP패킷 를 보호하는 모드

: IP패킷 전체를 IPsec으로 캡슐화하는데 이경우 IP헤더를 식별할 수 없기 때문에 패킷 전송이 불가능하다. 따라서 전송구간 주소 정보를 담은 NEW IP 헤더(출발지/목적지 정보가 아닌 터널/게이트웨이 정보를 담고있다)를 추가한다

: VPN/터널 게이트웨이 사이의 구간종단노드(출장간 외부 사용자)와 VPN/터널 게이트웨이 사이의 구간을 보호하기 위해 사용한다

 

세부 프로토콜

AH(Authentication Header) 프로토콜

: 메시지 인증코드(MAC)을 이용하여 무결성송신처 인증을 제공(암호화는 X)

: 송신 측에서 MAC알고리즘과 인증키를 통해 인증 데이터(ICV)를 계산하여 전송하고 수신측에서 이를 검증한다

: 인증 데이터 계산에는 IP헤더의 변경 가능한 필드(TTL, Header Checksum, Nat 환경에서의 Source IP 등)를 제외하고 계산한다.

* AH 프로토콜 전송모드/터널모드 동작

 

 

ESP(Encapsulating Security Payload) 프로토콜

: 메시지 인증코드(MAC)암호화를 이용하여 무결성과 송신처 인증 그리고 기밀성을 제공

: AH와 마찬가지로 송신 측에서 MAC알고리즘과 인증키를 통해 인증 데이터(ICV)를 계산하여 전송하고 수신측에서 이를 검증한다. 단 인증에 있어서 AH는 변경 가능한 IP 헤더 필드를 제외한 IP패킷 전체를 인증하지만 ESP는 IP헤더를 인증하지 않는다.

: 인증과 암호화를 선택적으로 적용할 수 있다.(인증 or 인증+암호화)

* ESP 프로토콜 전송모드/터널모드 동작

전송 모드는 IP페이로드와 ESP 트레일러를 암호화하고 암호화된 데이터와 ESP 헤더를 인증한다

터널 모드는 원본 IP패킷 전체와 ESP 트레일러를 암호화하고 암호화된 데이터와 ESP 헤더를 인증한다

*ESP 트레일러 : 블록 암호를 위한 패딩 정보와 전송하는 페이로드의 프로토콜 타입정보를 담고있다.

 

* SA(Security Association) - 보안연관

: 둘 사이에 논리적인 연결 상태를 유지하는 동안 적용할 보안 설정정보

 

* SP(Security Policy) - 보안정책

: 패킷을 송수신했을 때 적용할 보안의 종류를 정의(허용/폐기/IPsec 적용 등)

: 이러한 보안정책들을 저장해놓은 데이터베이스를 보안정책 데이터베이스(SPD)라 한다.

 

* 인터넷 키교환(IKE : Internet Key Exchange)

: 보안 관련 설정들을 생성/협상/관리하는 프로토콜로 UDP/500 포트 사용

- IKE 1단계 : IKE 2단계에서 사용할 메시지를 어떻게 보호할것인지 협상 후 IKE용 마스터키를 생성(Main Mode사용)

IKE 2단계 : 실질적으로 데이터를 어떤 방식으로 보호할 것인지를 협상하는 단계로 이단계를 통해 생성된 SA를 IPsec SA라고 한다(Quick Mode사용)

 

 

 

SSL/TLS

: Netscape사의 웹 브라우저를 위한 보안 프로토콜로 처음 제안되어 1996년 SSL3.0버전까지 발표

: 1996년 IETF에서 SSL3.0을 기반으로 표준화 시킨 TLS1.0버전을 발표, 현재까지 TLS1.2 버전까지 널리 사용

: 클라이언트/서버 환경에서 TCL기반의 어플리케이션에 대한 종단 간 보안서비스를 제공하기 위해 만들어진 프로토콜

: 전송계층과 어플리케이션 계층 사이에서 동작(L4 ~ L7)

 

보안 서비스

1. 기밀성 : 대칭 암호를 이용한 메시지 암호화

2. 무결성 : 메시지 인증코드(MAC)를 통한 무결성 제공

3.인증 : 공개키 인증서를 이용하여 상호 인증을 수행

 

SSL/TLS 프로토콜 구조

 

- HandShake 프로토콜

: 보안 파라미터(보안 설정정보)를 협상하기 위한 프로토콜

(키교환 및 인증 알고리즘, 암호 알고리즘, MAC 알고리즘 등)

 

- Change Cipher Spec

: 종단 간에 협상된 보안 파라미터(보안 설정정보) 를 이후부터 적용/변경함을 알리기 위한 프로토콜

 

- Alert 프로토콜

: SSL/TLS 통신 과정에서 발생하는 오류를 통보하기 위한 프로토콜

 

- Application Data 프로토콜

: 어플리케이션 계층의 데이터를 전달하기 위한 프로토콜

 

- Record 프로토콜

: 적용/변경된 보안 파라미터를 이용하여 실제 암호화/복호화, 무결성 보호, 압축/압축해제 등의 기능을 제공

 

 

* 세션과 연결 기반의 상태 유지 프로토콜

: HTTP를 예를 들경우 TCP연결을 맺고 HTTP Request ->HTTP Reply 후 TCP연결을 끊는다. 이경우 매 통신 마다 TCP연결을 해야하는 부담이 있다. 이를 위해 세션과 연결을 사용

: 완전 협상(암호 알고리즘 결정)을 통해 세션을 생성하고 이 세션정보를 공유하는 다수의 연결을 단축협상(암호키 결정)을 통해 생성

 

 

- SSL/TLS 완전 협상 과정

1. Client Hello

: 클라이언트가 지원 가능한 SSL/TLS 버전, 암호 도구 목록(cipher suites), 압축 방식, 클라이언트 랜덤값, 세션ID를 서버에 전달하는 메시지

(암호 도구 목록은 키교환 및 인증 알고리즘, 암호 명세로 구성되어 있다 ex : TLS_RSA_WITH_AES_256_CBC_SHA)

(클라이언트 랜덤값은 난수값으로 master secret 및 키블록 생성 시 솔트 역활을 한다)

(master secret : 키블록을 생성하기 위해 서버와 클라이언트가 공유하는 48바이트 비밀값)

 

2. Server Hello

사용할 SSL/TLS버전, 암호 도구(cipher suites), 압축 방식, 서버 랜덤값, 세션ID를 클라이언트에 전달

3. (필요시) Server Certificate*

: 필요시 서버 인증서 목록을 클라이언트에 전달, RSA방식일 경우 사용

4. (필요시) Server Key Exchange*

: 필요시 키교환에 필요한 정보를 전달하는 메시지, DHE/ECDHE(디피 헬만 키교환)일 경우 매개변수를 전달할때 사용

5. (필요시) Cerfificate Request*

: 필요시 서버에서 인증 가능한 인증기관 목록을 제공하고 클라이언트에 인증을 위한 인증서를 요청

6. Server Hello Done

: Server Hello 과정 종료를 알리는 메시지

 

7. (필요시) Client Certificate*

: 필요시(서버에서 Cerfificate Request* 요청 시) 클라이언트 인증서 목록을 전달

8. Client Key Exchange

: 키 교환에 필요한 "사전 마스터 비밀(Premaster Secret)"를 생성하여 서버에 전달

* 클라이언트 랜덤값(Client Random)+사전마스터 비밀(Premaster Secret) +서버 랜덤값(Server Random) = master secret

9. (필요시)Certificate Vertify*

: 필요시(서버에서 Cerfificate Request* 요청 시) 클라이언트가 보낸 인증서에 대한 개인키를 클라이언트가 가지고 있음을 증명

10. [Change Cipher Spec]

: 협상한 암호 명세(키 교환 및 인증 알고리즘)를 이후부터 적용함을 알리는 메시지

11. Finished

: 협상 완료를 서버에 알리는 메시지

 

12. [Change Cipher Spec]

: 협상한 암호 명세(키 교환 및 인증 알고리즘)를 이후부터 적용함을 알리는 메시지

13. Finished

: 협상 완료를 클라이언트에 알리는 메시지

 

 

- SSL/TLS 단축 협상 과정

1. Client Hello

:  사용한 세션ID와 클라이언트 랜덤값을 전달

: 서버측에서는 해당 세션ID가 존재할 경우 기존 세션을 재사용하고 세션ID가 없다면 완전 협상 과정을 진행

2. Server Hello

: 서버 랜덤값을 전달

 

* SSL/TLS 점검 사이트 : https://www.ssllabs.com

 

SSL/TLS과 완전 순방향 비밀성(PFS:Perfect Forward Secrecy)

SSL/TLS 문제점 : RSA 방식을 사용했을때 서버의 개인키가 노출될경우 이전 서버 인증서를 폐기하고 인증서를 재발급해야한다. 하지만 공격자가 이전 트래픽을 보관하고 있다면 이들 모두 복호화되는 문제점이 있다

완전 순방향 비밀성

: 서버 개인키가 노출되어도 이전 트래픽 정보의 기밀성은 그대로 유지되는 암호학적 성질

: 서버의 개인키가 노출되어도 이전 트래픽의 세션키/비밀키 기밀성은 그대로 유지되어 통신 내용을 알 수 없는 성질

완전 순방향 비밀성 지원방법

: 키 교환 시마다 클라이언트/서버는 새로운 Diffie-Hellman 개인키를 생성하는 임시 디피-헬만(EDH:Ephemeral Diffie-Hellman)키 교환을 통해 비밀값(Premaster secret)을 생성하고 서버 개인키는 Diffie-Hellman 파라미터를 인증하는 목적으로만 사용하면 서버 개인키가 노출되어도 이전 통신 내용을 알 수없는 완전 순방향 비밀성이 지원된다.

완전 순방향 비밀성만 적용하기 어려운 이유

: 하지만 디피-헬만 키교환은 RSA에 비해 처리속도가 느려서 성능상의 이유로 비활성화하는 경우가 있고 모든 웹브라우저에서 지원하지 않기 때문에 호환을 위해 RSA방식의 키교환을 함께 사용한다. 

 

 

TLS 1.3 버전

: 2018년 8월 10일 정식 승인

: TLS 1.2 이하 버전에서 지원하는 안전하지 않은 암호화 알고림을 제거하여 강화된 보안을 제공

: TLS 1.2 이하 버전에서는 최초 세션 연결 시(완전 협상) 2-RTT를 거쳐야 했으나 TLS 1.3에서는 1-RTT로 단축하여 성능이 빨라졌다

: TLS 1.2 이하 버전에서는 세션 재연결 시(단축 협상) 1-RTT를 거쳐야 했으나 TLS 1.3에서는 공유된 암호키를 로컬에 저장하여 바로 요청메시지에 해당 키를 사용하는 방식의 0-RTT를 지원한다

 

 

DTLS(Datagram Transmission Layer Security) 프로토콜

: 전송계층에서 UDP 기반 클라이언트/서버 응용 프로그램 간에 보안서비스를 제공

: 도청, 변조, 위조 등을 방지하기 위해 설계

: TLS 프로토콜에 바탕을 두고 있음 동등한 안전성을 보장

 

-------------------------------------

라우터 보안

 

enable명령을 입력해서 Privileged 모드로 변경할때 패스워드를 입력하게끔 설정 

- enable password

(예시 : enable password votm1234)

: 평문으로 저장(type 0)

: "service password-encryption" 명령 실행 시 복호화가 가능한 암호문(type 7)으로 암호화하여 저장된다

: enable secret이 설정되어있다면 enable secret이 우선하여 적용됨

 

- enable secret

(예시 : enable secret votm1234)

: 일방향 해시 함수 MD5(type 5)로 암호화된다

 

접근제어 ACL

standard access-list

: 패킷의 source IP만으로 패킷을 허용/차단

: acl number로 지정하며 1~99까지 사용한다

: 형식 access-list [acl번호] [permit 또는 deny] [소스주소 또는 주소+wildmask]

예시) access-list 5 permit host 192.168.2.1

예시) access-list 6 permit host 192.168.2.0 0.0.0.255

예시) access-list 7 deny any

 

extended access-list

: 패킷의 소스IP, 목적지IP, 포트, 프로토콜 등을 이용하여 허용/차단

: acl number로 지정하며 100~199까지 사용한다

: 형식 access-list [acl번호] [permit 또는 deny] [프로토콜] [소스] [소스 wildmask] [목적지] [목적지 wildmask] [eq 포트]

예시) access-list 150 permit ip host 192.168.2.1 100.100.100.0 0.0.0.255

예시) access-list 151 deny tcp host 192.168.2.0 0.0.0.255 100.100.100.0 0.0.0.255 eq 80

 

필터링 유형

- Ingress 패킷 필터링 기법

: 외부에서 내부로 들어오는 패킷에 대해 출발지 IP를 체크하여 외부에 존재할 수 없는 IP(내부IP, 사설IP, 루프백 IP등 인터넷에서 사용되지 않는 IP)를 필터링한다.

설정방법

# conf t

(config) # access-list 15 deny 내부IP 와일드마스크

(config) # access-list 15 deny 127.0.0.0 0.255.255.255   (루프백 IP 차단)

(config) # access-list 15 deny 10.0.0.0 0.255.255.255    (사설 IP 차단)

(config) # access-list 15 deny 172.16.0.0 0.0.255.255     (사설 IP 차단)

(config) # access-list 15 deny 192.168.0.0 0.0.0.255     (사설 IP 차단)

(config) # access-list 15 deny 224.0.0.0 15.255.255.255     (멀티캐스트 IP 차단)

(config) # access-list 15 deny 240.0.0.0 7.255.255.255      (연구용 IP 차단)

(config) # access-list 15 deny 255.255.255.255 0.0.0.0      (브로드캐스트 차단)

(config) # access-list 15 permit any (config) # interface FastEthernet 0/0 (config-if) # ip access-group 15 in (config-if) # end

 

- Egress 패킷 필터링 기법

: 내부에서 외부로 나가는 패킷에서 출발지 IP를 체크하여 내부에서 사용되고있는 IP가 아니라면 필터링한다.

설정방법

# conf t

(config) # access-list 16 permit 내부IP 와일드마스크

(config) # access-list 16 deny any

(config) # interface FastEthernet 0/0

(config-if) # ip access-group 16 out

(config-if) # end

 

- Blackhole Filtering(Null routing)

: 비정상적인 패킷이 감지되었을때 가상의 쓰레기 인터페이스로 보내도록 함으로써 패킷 통신이 되지 않도록 하는 방법

설정방법(211.1.1.1 IP 차단 시)

# conf t

(config) # interface null 0

(config-if) # no ip unreachables    (null 설정 시 unreachables가 대량 발생하기 때문에 unreachables 응답 끄는 설정)

(config-if) # exit

(config) # ip route 211.1.1.1 255.255.255.255 null 0

(config-if) # end

 

- Unicast RPF(Reverse Path Forwarding)

: 유입된 인터페이스로 다시 전송되는지 여부를 체크하여 유입된 인터페이스로 다시 전송되지 않는다면 위조된 주소로 판단하여 필터링한다.

설정방법

# conf t

(config) # interface FastEthernet 0/0

(config-if) # ip verify unicast reverse-path

(config-if) # end

 

 

콘솔 패스워드 설정방법

# conf t

(config) # line console 0

(config-line) # login

(config-line) # password cis123

(config-line) # end

 

VTY 패스워드 설정방법

# conf f

(config) # line vty 0 4

(config-line) #  login

(config-line) #  password cis123

(config-line) #  end

 

 

SNMP 설정

: TCP/IP 네트워크를 모니터링하고 관리하기에 효율적인 프로토콜

: 기본 community string 값은 기본값으로 public/private가 설정되어있는데 변경해야한다

: access-list를 이용하여 접근통제를 하여야 한다

: SNMP 서비스를 사용하지 않는다면 서비스를 제거하는것이 좋다

: SNMP version 1,2는 평문으로 전송하여 암호화가 되는 SNMP version 3를 사용하기를 권장

SNMP 비활성화 방법

#conf t

(config) # no snmp-server

(config) # end

 

 

ICMP MTU Discovery

: 데이터 링크계층에서 출발지->목적지 사이를 지나는 패킷 크기를 조절해주는 역활을 한다. 따라서 라우터는 ICMP 패킷을 차단하더라도 MTU Discovery를 제공하는 ICMP 패킷( ICMP type 3, code 4 )은 허용해야 네트워크가 제대로 동작할 수 있다.

* ICMP type 3, code 4 : (type 3)Destination unreachable / (code 4)Fragmentation  needed and don't fragment was set

설정방법

# conf t

(config) # access-list 103 permit icmp any any 3 4

(config) # access-list 103 deny icmp any any

(config) # access-list 103 permit ip any any

(config) # interface FastEthernet 0/0

(config-if) # ip access-group 103 in

(config-if) # end

 

 

ICMP Redirects

: 공격자는 ICMP Redirects 를 전송하여 네트워크를 지나는 패킷의 방향을 바꿔 스니핑이 가능하여 차단을 권장

설정방법

# conf t

(config) # interface FastEthernet 0/0

(config-if) # no ip redirects

(config-if) # end

 

 

ICMP Directed Broadcasts

: ICMP echo repy는 특정 호스트에게만 reply를 보내는것이 아니라 네트워크 전체에 전송, 공격자는 이를 악용하기에 차단을 권장

설정방법

# conf t

(config) # interface FastEthernet 0/0

(config-if) # no ip directed-broadcast

(config-if) # end

 

 

ICMP Unreachable

: 공격자는 ICMP Unreachable 메시지를 이용하여 특정포트가 열려있는지를 판단하기에 차단을 권장

설정방법

# conf t

(config) # interface FastEthernet 0/0

(config-if) # no ip unreachables

(config-if) # end

 

Source Route

: 패킷의 발송자가 라우팅 경로를 임의로 설정할수있는 기능으로 차단을 권장

설정방법

# conf t

(config) # no ip source-route

(config) # end

 

-------------------------------------

NAT

장점 : 사설IP를 사용하여 IP가 외부 인터넷에 공개되지 않으므로 외부로부터 내부시스템에 대한 공격에 안전한 네트워크 환경을 구축할 수 있다

종류

NAPT(또는 PAT) : 다수의 사설IP와 port번호를 이용하여 하나의 공인IP주소로 변환하는 방식

정적 NAT(Statistic Nat) : 1:1 변환

동적 NAT(Dynamic Nat) : N:M 변환

 

-------------------------------------

'학습 > 알기사 정보보안기사 정리' 카테고리의 다른 글

7. 서버 보안  (1) 2024.10.18
6. 애플리케이션 보안  (0) 2024.10.13
2. 리눅스/유닉스 기본  (0) 2024.10.04
4. 시스템 보안  (1) 2024.10.04
1. 윈도우 보안  (0) 2024.10.03