ch9_Network Security

박정빈·2024년 10월 16일

정보보호

목록 보기
10/14

로드맵
ARP level - 3계층
TCP/IP level - 4계층
Firewall
High Availability
Intrusion Detection System : IDS
DDoS
Intrusion Prevention System : IPS -IDS의 개선

ARP level

ARP spoofing
man in the middle attack
Smurf attack
Packet sniffing
MAC flooding

ARP spoofing

ARP 프로토콜에서 A가 라우터를 찾을때(브로드캐스팅) B가 본인이 라우터다 라고 거짓말(맥 주소 제공)을 한다.
빠르게 하다보면 먹힌다.
잘못된 정보로 감염시키기에 ARP poisoning 라고도 부른다.
라우터가 보내는 옳은 정보를 B가 잘못된 정보로 덮기 위해 신호를 계속 보낸다.
그래서 ARP flooding 라고도 부른다.

man in the middle attack 의 한 종류
암호기술을 써도 여전히 위험하다.
인증서를 안쓰면 위험하다.

대응법
One-time pad
Strong mutual authentication
Second channel verification

two channer vs two factor authentication

Smurf Attack

일종의 디도스이다. 로컬 랜에서의 디도스

  1. 공격자는 스푸핑된(위조된) IP 주소를 사용해 ICMP 에코 요청(핑)을 네트워크 브로드캐스트 주소로 보냅니다. 여기서 스푸핑된 IP 주소는 목표(피해자)의 IP 주소입니다.
  2. 브로드캐스트 주소로 보내진 요청을 받은 네트워크의 모든 기기가 응답을 보냅니다. 이때 모든 응답이 피해자의 IP 주소로 전송됩니다.
  3. 피해자는 대량의 ICMP 응답을 받게 되어, 네트워크 자원이 고갈되거나 과부하 상태에 빠집니다.

결과:
피해자의 네트워크나 시스템은 트래픽 폭주로 인해 정상적인 동작을 하지 못하게 되고, 서비스가 중단되거나 느려지는 상황이 발생합니다.

방어책:

브로드캐스트 주소로의 ICMP 트래픽을 차단.
네트워크에서 브로드캐스트 패킷을 제한.
라우터나 방화벽에서 브로드캐스트 패킷에 대한 필터링 설정.

Smurf Attack은 공격 대상이 다수의 응답을 받도록 설계된, 고전적인 DDoS 공격 방식입니다.

MAC flooding

MAC Flooding은 네트워크 스위치의 보안 취약점을 악용한 공격 방식으로, 스위치의 MAC 주소 테이블을 가득 채워 네트워크 성능을 저하시키거나 공격자가 네트워크 트래픽을 감청할 수 있게 만듭니다.

MAC Flooding 공격의 작동 방식은 다음과 같습니다:

  1. MAC 주소 테이블은 스위치가 각 포트에 연결된 기기의 MAC 주소를 저장하는 테이블입니다. 스위치는 이 테이블을 이용해 데이터를 적절한 포트로 전송합니다. 하지만 MAC 주소 테이블의 크기는 제한되어 있습니다.

  2. 공격자는 스위치로 대량의 패킷을 보냅니다. 이 패킷들은 각각 다른 출발지 MAC 주소를 가지고 있으며, 스위치는 이 새로운 MAC 주소들을 테이블에 저장하려고 시도합니다.

  3. 스위치의 MAC 주소 테이블이 가득 차면, 스위치는 더 이상 새로운 MAC 주소를 저장하지 못하고, 테이블이 넘치는 상황에서 모든 트래픽을 브로드캐스트 모드로 전환하게 됩니다.

  4. 이때, 스위치는 특정 포트로만 트래픽을 전송하지 않고 네트워크에 연결된 모든 포트로 트래픽을 전송하기 때문에 공격자는 해당 트래픽을 감청할 수 있습니다. 또한 네트워크 트래픽이 폭주하면서 성능 저하가 발생할 수 있습니다.

결과:

공격자는 네트워크 내 다른 사용자의 트래픽을 감청할 수 있는 기회를 얻습니다.
네트워크 성능이 저하되고, 서비스가 중단될 가능성이 높아집니다.

방어책:

포트 보안(Port Security) 설정: 스위치에서 각 포트에 대해 허용 가능한 MAC 주소의 수를 제한하고, 그 수를 초과하는 경우 해당 포트를 차단하거나 알림을 보내도록 설정할 수 있습니다.
동적 VLAN 할당: 공격을 받은 스위치의 포트를 격리하여 감염이 확산되지 않도록 설정할 수 있습니다.
최신 스위치 장비는 MAC Flooding에 대한 보호 기능을 기본적으로 제공하기 때문에 장비의 적절한 설정이 중요합니다.
MAC Flooding은 감청이나 네트워크 장애를 유도하기 위한 공격으로, 특히 오래된 스위치 장비가 있는 네트워크에서 자주 발생할 수 있습니다.

단어알기~!

오탐 : false positive


검사결과O	검사결과X
실제 암	true positive정탐	false negative미탐
가짜 암	false positive오탐	true negative

실제는 미탐, 사이버보안에서는 오탐이 더 문제가 된다.

TCP/IP level

IP spoofing

IP 스푸핑은 출발지 IP 주소를 위조하여 DoS, DDoS, 세션 하이재킹 등의 공격에 사용되는 기술입니다. 완벽한 방지는 어렵지만, 패킷 필터링과 같은 기술을 통해 어느 정도 대응할 수 있습니다.

문제점:
DoS (Denial of Service) 공격에 많이 사용된다.
SYN 플러딩: TCP 3-웨이 핸드셰이크에서 SYN 패킷이 너무 많아진다.
DDoS (Distributed Denial of Service) 공격.
스머프(이미 다룸).
대량의 트래픽이 발생한 출발지 IP 주소를 차단하면 정상 사용자도 차단될 수 있다.
공격자의 출발지를 숨긴다.
출발지 IP 주소가 위조되었을 때 실제 공격자의 위치를 추적할 수 없다.

Injecting false routing information

라우팅은 네트워크 간의 데이터를 효율적으로 전달하기 위해 트래픽 경로 정보를 제공하는 중요한 역할을 합니다. 하지만, 라우팅 프로토콜에도 여러 가지 보안 취약점이 존재하며, 공격자들이 이를 악용할 수 있습니다.

  • 위협 개요
    라우팅 프로토콜(예: OSPF, BGP)은 네트워크 장치 간의 경로 정보를 교환하는 방식입니다. 이 정보가 손상되면 데이터가 잘못된 경로로 전달되거나 아예 목적지에 도달하지 못할 수 있습니다.
    공격자는 잘못된 라우팅 정보를 포함한 위조된 패킷을 라우터에 보낼 수 있습니다. 그 결과, 라우터의 라우팅 테이블이 변경되거나 손상되어 네트워크 트래픽이 악의적으로 제어될 수 있습니다.

  • 공격 유형
    라우팅 테이블 오염: 공격자가 잘못된 경로 정보를 주입해 트래픽을 자신이 원하는 곳으로 유도하거나 네트워크 성능을 저하시킬 수 있습니다.
    라우팅 정보 손상: 라우팅 정보를 악의적으로 수정하여 트래픽이 비효율적인 경로를 통해 이동하게 하거나, 아예 경로를 차단할 수 있습니다.
    Man-in-the-Middle (MITM) 공격: 잘못된 라우팅 정보를 이용해 공격자가 트래픽을 가로채는 방식으로, 이를 통해 민감한 데이터를 도청하거나 변조할 수 있습니다.

  • 대응 방안
    라우팅 프로토콜 자체의 보안성을 강화하는 방법으로는 인증을 추가하거나, 데이터가 변경되지 않도록 암호화하는 기술이 있습니다. 또한, 네트워크 장치에서 비정상적인 라우팅 업데이트를 감지하고 이를 차단하는 필터링 시스템을 구축하는 것도 중요합니다.

Port scan

공격자가 클라이언트 요청을 호스트의 여러 서버 포트 주소에 보내서 활성화된 포트를 찾고, 그 서비스의 알려진 취약점을 악용하려는 공격
본격적인 공격 전에 수행되는 사전 단계

모든 공격 전에 포트 스캔이 있으므로 포트스캔을 막으면 상당한 도움이 된다.

한 공격자가 한 ip에 신호를 65000번 보내는 경우는 없으므로,
한 공격자가 여러 port 에 서로 다른 syn 패킷을 보냈는지 확인하면 그 놈이 범인이다.
이 방어를 우회하기 위해서 다른 패킷을 보내서 공격하기도 한다.

syn / syn,ack / ack 를 하면, 서버에 로그 기록이 남는다. 그래서 rst리셋 패킷을 보내서 기록이 남는걸 피한다.

Firewall

교수님이 젤 중요하다 생각하는 보안장비 + 오래된 역사

방화벽은 컴퓨터 시스템 또는 네트워크의 일부로, 허가되지 않은 접근을 차단하면서 허가된 통신을 허용하도록 설계된 장치입니다.
방화벽은 규칙 집합(룰셋, 정책)을 기반으로 네트워크 전송을 허용하거나 차단하도록 설정됩니다.
방화벽은 그 규칙이 올바르게 설정된 경우에만 안전합니다.

방화벽(Firewall)은 네트워크 보안에서 중요한 역할을 하는 장치로, 외부의 악의적인 공격이나 허가되지 않은 접근으로부터 내부 네트워크를 보호합니다. 방화벽은 다음과 같은 역할을 합니다:

허용된 트래픽: 방화벽은 미리 설정된 규칙에 따라 허가된 네트워크 트래픽을 통과시킵니다. 예를 들어, 회사의 내부 네트워크에서 인터넷으로 나가는 요청이나, 특정 IP 주소에서 들어오는 요청만 허용할 수 있습니다.
차단된 트래픽: 규칙에 맞지 않거나 보안에 위협이 되는 트래픽은 자동으로 차단됩니다. 예를 들어, 외부에서 허가받지 않은 접근 시도를 막거나, 악성 트래픽을 차단할 수 있습니다.

예를 들어 다음과 같은 망이 있다면 망의 출입목에 방화벽을 설치하여 트래픽을 감시하고 네트워크를 보호할 수 있습니다.

방화벽이 네트워크를 보호하기 위해 트래픽을 막는 것은 Rule-Set규칙에 따라 진행되며, 이 규칙은 설정할 수 있습니다.

규칙은 위에서 부터 적용된다.
1,2번 규칙은 웹서버로 들어오는 트래픽은 누구든 허용하겠다는 내용이다.
3,4번 규칙은 회사에서 근무하는 직원이 웹서핑을 할 수 있도록 열어놓은 것이다.
위 다섯가지를 five tuple 이라고 하며 하나의 플로우를 만든다.

stateless firewall

각 패킷을 독립적으로 검사하고 처리하는 방화벽입니다. 즉, 이전 패킷과의 관계를 고려하지 않기 때문에 연결 상태를 추적하지 못합니다. 이는 여러 가지 단점과 보안 취약점을 초래할 수 있습니다.

  1. 성능 단점:
    연결 상태를 인식하지 않음: 무상태 방화벽은 각 패킷을 개별적으로 처리하므로, 이전 패킷이 허용된 것과 관계없이 매번 규칙을 통해 패킷을 확인해야 합니다. 예를 들어, 첫 번째 패킷이 허용되면 그 연결의 후속 패킷은 모두 허용되어야 하는데, 무상태 방화벽은 이를 추적하지 못하고 매번 동일한 규칙을 적용합니다.
    효율성 저하: 상태를 추적하지 못하면 동일한 세션에서 오는 패킷을 중복해서 검사하게 되므로, 네트워크 성능이 저하될 수 있습니다.
  2. 보안 취약점:
    TCP 세션 공격: 무상태 방화벽은 세션 상태를 추적하지 않으므로, 공격자는 악의적인 세션을 설정하여 시스템의 백도어 포트로 접속을 시도할 수 있습니다. 예를 들어, 공격자가 자신의 IP 주소와 포트를 사용해 목표 시스템의 210.123.37.10 IP와 12345 포트로 TCP 세션을 설정하려고 할 때, 만약 이 포트가 백도어 소프트웨어에 의해 열려 있다면 공격자가 쉽게 접근할 수 있습니다.
    위험성: 무상태 방화벽은 연결의 상태를 확인하지 않기 때문에, 악의적인 TCP 세션을 감지하지 못하고 허용할 수 있으며, 이를 통해 공격자가 시스템에 접근하거나 해킹할 수 있는 가능성이 생깁니다.

stateful firewall

상태 기반 방화벽은 세션의 상태를 추적함으로써 무상태 방화벽보다 성능이 뛰어나고, 더 정교한 보안을 제공합니다. 다만, 오래된 세션이 타임아웃되는 문제를 방지하기 위해 HTTP 및 TCP keepalive 메시지가 사용되며, 이를 통해 방화벽이 세션을 유지하고 정상적인 네트워크 연결을 지속할 수 있도록 합니다.

Rule-Set도 간단해짐

DMZ

방화벽 설정에서 사용되는 네트워크 구조로, 외부 인터넷과 내부 네트워크 사이에 위치하여 특정 서비스나 서버를 외부와 안전하게 연결할 수 있도록 돕습니다. DMZ의 주요 목적은 보안성을 강화하고, 외부 공격에 대한 위험을 줄이는 것입니다.

DMZ는 기업의 네트워크 보안 전략에서 중요한 요소로, 외부와 내부 네트워크 간의 안전한 연결을 제공합니다. DMZ를 통해 외부에서 접근해야 하는 서비스들을 안전하게 운영하고, 공격을 격리함으로써 보안을 강화할 수 있습니다. 그러나 DMZ를 운영하기 위해서는 추가적인 관리와 비용이 수반되므로, 충분한 계획과 자원이 필요합니다.

High Availability 고 가용성

이 내용은 방화벽과 같은 네트워크 장치의 안정성과 지속성을 강조합니다. 방화벽이 멈추면 네트워크의 보안이 크게 저하되고, 외부 공격이나 데이터 유출의 위험이 증가할 수 있습니다.

HA for firewall

Layer 4/7 switch 보통 스위치가 2계층인데 성능 좋아서 3,4계층 기능 수행도 한다!

Layer 4/7 switch가 어느 방화벽으로 패킷을 보낼지 결정한다.

세션은 일관되게 하나의 방화벽을 통과해야 하므로, 동일한 IP와 포트를 가진 패킷은 동일한 방화벽에서 처리되어야 합니다. 이는 세션의 일관성을 유지하고, 네트워크 성능을 최적화하는 데 필요합니다. 이를 위해 해시 알고리즘을 사용한다.
추가 비용과 방화벽 실패 시 세션 손실이라는 단점이 존재한다.

High Availability for router

VRRP


라우터 두개에 IP하나씩 받아서 컴퓨터 두대씩 연결해놓음
라우터 두개로 나눠놔서 하나 고장나도 컴퓨터 두대는 산다.
근데 그냥 라우터 하나 고장나면 다른 하나가 다른 컴퓨터도 봐주면 안되나?
가상 IP를 다른 컴퓨터들에 설정하면 된다.
라우터가 살아있다는 핑을 계속 보내는데, 그게 안오면 가상 IP를 올린다.

액티브,스탠바이 / 마스터,슬레이브 구조라고 한다.

살아있다는 advertisement 메세지를 보낼때, 이 메세지를 누가 변조하면 위험할 수 있다.
hashed mac 같은 방법을 써서 메세지를 보호할 수 있다.

백서버,DB서버에서도 이런 방법을 써서 HA를 구성한다.

근데 이거 서버도 비싼데 몇대로 구성해야해?

p: 단일 서버의 가용성 확률(즉, 단일 서버가 정상적으로 작동할 가능성).
n: 중복 구성에 있는 서버의 수.
q_n: 적어도 하나의 서버가 정상적으로 작동할 확률.

2 servers
server 1 : p or (1-p), server 2 : p or (1-p)  4 scenarios, but the last one fails
q2 = pp + p(1-p) + (1-p)p = 2p-p2

3 servers
q3 = ppp + pp(1-p)+ p(1-p)p + p(1-p)(1-p) +…

너무 복잡하니까 여집합을 빼자

2 servers
q2 : 1- {probability of service fail}
q2 = 1- { (1-p)(1-p) } = 1- (1-p)2
3 servers
q3 : 1- {probability of service fail}
q3 = 1- { (1-p)(1-p)(1-p) } = 1- (1-p)3

일반화를 한다면, n개의 servers가 있을때 q_n = 1- (1-p)n!

실제 예를 들자!

1년에 53분만 죽는다면 p=0.999..
n=2 라면
q2 = 1- (1-p)2 = 0.99999999
소수점 아래가 6자리만 되더라도 민감한 서버도 사용할 수 있다고 간주한다.

실제로 아래와 같은 구조를 많이 채택을 해서 HA 를 구현한다.

하지만 이것들은 물리적으로는 같은 위치에 있기에 물리적인 공격(테러, 자연재해)가 발생하면 HA를 보장할 수 없다.

따라서 다음과 같은 구조로 물리적으로 나누어 두는 방법을 사용한다.

하지만 이렇게 HA를 유지하기 위해 예비 장비들을 구축하면 비용이 많이 들고,
고 비용의 장비들을 스탠바이용으로 대기시킬 수 만은 없기 때문에
로드밸런싱 기법을 사용한다.

스마트 DNS라고 불리는 글로벌 서버 로드 밸런싱(GSLB)은 각 서버의 상태(예: 응답 시간 등)를 확인합니다.
GSLB는 DNS 요청에 대해 가장 적합한 서버의 IP 주소를 반환합니다.
메인 센터에 장애가 발생하면 DR(재해 복구) 센터로의 페일오버(failover)가 즉시 이루어져야 합니다.
DNS TTL(Time to Live, 생존 시간)을 최소화해야 합니다.
그러나 브라우저의 DNS 캐시는 어떻게 처리할 것인가?
캐싱을 하면 쿼리문이 줄지만 질문을 안하니까 한쪽이 무너졌을때 그걸 모르고 무너진쪽으로 로드밸런싱 할 수도 있다.
캐싱을 안하면 쿼리문은 많아지지만 그런 문제는 사라진다.

Load Balancing (부하 분산):
여러 서버에 걸쳐 트래픽을 분산시켜 각 서버의 과부하를 방지하고, 서비스를 안정적으로 제공하기 위한 기술입니다.

GSLB (Global Server Load Balancing, 글로벌 서버 로드 밸런싱):
GSLB는 전 세계에 분산된 여러 서버 중에서 가장 적절한 서버로 사용자를 연결해주는 기술입니다. 주로 DNS 수준에서 작동하며, 서버의 상태(예: 응답 시간, 가용성)를 주기적으로 체크하여, DNS 요청이 들어오면 최적의 서버로 연결합니다.

Failover (페일오버):
메인 센터(주 서버)에 문제가 발생하면, 서비스 중단을 방지하기 위해 백업 센터(재해 복구 서버)로 즉시 전환하는 과정을 말합니다. 이는 서비스 가용성을 높이는 데 중요한 역할을 합니다.

DNS TTL (Time to Live, 생존 시간):
DNS에서 TTL은 특정 IP 주소의 유효기간을 나타내는 시간입니다. TTL이 낮으면 DNS 서버는 더 자주 서버 상태를 확인할 수 있어 빠른 서버 전환이 가능하지만, 트래픽과 서버 부하가 증가할 수 있습니다. 특히 장애 발생 시 빠른 페일오버를 위해 TTL 값을 최소화해야 합니다.

Browser DNS Cache (브라우저의 DNS 캐시):
브라우저는 DNS 요청을 매번 보내지 않기 위해 DNS 결과를 캐시로 저장합니다. 브라우저 DNS 캐시가 있는 경우, GSLB가 서버 상태를 업데이트해도 브라우저가 이전의 캐시된 IP 주소를 사용할 수 있습니다. 따라서 페일오버가 발생해도 브라우저는 캐시된 정보를 사용할 수 있어 즉각적인 서버 전환이 어렵습니다. 이를 해결하려면 브라우저 DNS 캐시를 수동으로 지우거나, TTL을 최소화하여 캐시 갱신 주기를 줄이는 방법이 필요합니다.

Intrusion Detection System

침입 탐지 시스템

방화벽이 통과시켜준 녀석들을 분석한다.

시스템이 어디에 설치되는가에 따라
Network-based / Host-based

탐지 알고리즘에 대한 분류로
Signature-based / anomaly-based

Network-based (네트워크 기반):
네트워크 기반 탐지 시스템은 네트워크 트래픽을 모니터링하여 악의적인 활동을 감지합니다. 네트워크 전체의 트래픽 흐름을 감시하기 때문에 다수의 기기에 대한 공격을 식별할 수 있지만, 호스트에서 발생하는 특정한 활동은 놓칠 수 있습니다.

Host-based (호스트 기반):
호스트 기반 탐지 시스템은 개별 기기(호스트) 내부에서 발생하는 활동을 감시합니다. 예를 들어, 운영 체제 수준에서 발생하는 비정상적인 파일 접근이나 변경 사항을 탐지할 수 있습니다. 개별 장비의 보안 상태를 세밀하게 모니터링할 수 있지만, 전체 네트워크 흐름을 파악하는 데는 제한이 있습니다.

Signature-based (시그니처 기반):
시그니처 기반 탐지 방식은 알려진 공격 패턴(시그니처)을 데이터베이스에 저장해 두고, 이 패턴과 일치하는 트래픽이나 활동을 탐지합니다. 기존에 알려진 공격에 대해 매우 효과적이지만, 새로운 유형의 공격이나 알려지지 않은 공격을 탐지하는 데는 한계가 있습니다.

Anomaly-based (이상 탐지 기반):
이상 탐지 기반 방식은 정상적인 활동을 학습한 후, 이와 비교하여 비정상적인 활동(이상)을 감지합니다. 알려지지 않은 공격도 탐지할 수 있는 장점이 있지만, 정상적인 활동임에도 불구하고 비정상으로 분류될 가능성(오탐지)이 높습니다.

Alert/Alarm (경고/알람):
이는 시스템이 공격을 받았거나 공격이 진행 중임을 알리는 신호입니다. 경고는 보안 관리자가 즉시 조치를 취할 수 있도록 해줍니다.

True Positive (진양성):
실제로 공격이 일어났고 IDS가 이를 정확히 탐지하여 경고를 발생시킨 경우입니다. 이는 IDS가 제대로 작동하고 있음을 의미합니다. 예를 들어, 해커가 네트워크에 침입을 시도할 때 IDS가 이를 감지하고 알람을 발생시키는 경우입니다.

False Positive (오탐지):
공격이 일어나지 않았음에도 IDS가 잘못된 경고를 발생시키는 경우입니다. 이 경우 보안 관리자는 불필요한 경고를 처리해야 하므로 비효율적일 수 있습니다. 예를 들어, 정상적인 네트워크 트래픽이 공격으로 잘못 인식되어 경고가 뜨는 상황이 이에 해당합니다.

False Negative (미탐지):
실제 공격이 발생했으나 IDS가 이를 탐지하지 못한 경우입니다. 이것은 가장 위험한 상황으로, 보안 침해가 일어나고 있어도 탐지 시스템이 이를 놓치기 때문에 조치를 취할 수 없게 됩니다.

True Negative (진음성):
공격이 발생하지 않았고 IDS도 경고를 발생시키지 않은 정상적인 상황입니다. IDS가 올바르게 작동하고 있는 경우입니다.

Alarm Filtering (알람 필터링):
IDS에서 발생한 경고 중에서 실제 공격과 오탐지를 구분하는 과정입니다. 이 과정은 보안 관리자가 불필요한 경고에 대응하는 시간을 줄여주고, 실제 위협에 더 집중할 수 있게 합니다. 경고 필터링이 제대로 이루어지면, 시스템의 신뢰성과 효율성이 높아집니다.

DDoS

Distributed Denial of Service attack
많은 수의 봇넷을 확보한 후, 분산된 환경에서 Dos공격을 하는 것을 DDos라고 한다.
패킷을 한 서버에게 많이 보내면 공격대상 서버가 느려지거나 죽는 것은 확실하다.
이것을 한 컴퓨터에서 하면 Dos 이고, 여러대의 컴퓨터로 하면 DDos이다.
여러 컴퓨터를 마련하는 것은 어렵기에 다른 컴퓨터를 감염시켜 좀비피시, 봇으로 만들어서 공격하게 된다.

DDoS 공격은 비대칭적인 구조를 가졌을때 효과적이다. 공격자는 하나의 패킷을 보내지만 서버가 응답으로 많은 양의 패킷(예:무거운 웹사이트)을 보내게 된다면, 또는 한 요청으로 상대 DB 전체를 검색하게 하는 일을 시킬 수 있다면 효과적이다.

봇넷들은 보안방어가 파괴되어 제 3자에게 권한이 양도된 컴퓨터를 말한다.
C&C 또는 C2 server 는 이 봇넷들을 관리하기 위한 서버이다.
DDoS공격을 하기 위해 감염시킨 컴퓨터들을 일일히 조작할 수 는 없기에, 그 컴퓨터들을 C2 server 에 접속하게 한 뒤 server를 통해 일괄 통제하는 것이다.

하지만 C2server를 사용하면 server 하나만 확인해서 방어하면 되기 때문에 C2 server 는 도메인을 바꾼다거나 하는 방법을 또 들고 나온다.

DDoS공격은 정상 패킷과 같은 패킷을 여러개 보내는 것이기 때문에 잡기 어렵다.
flash crowd 현상과 근본적으로 같기 때문에 잡기 어렵다.

Intrusion Prevention System

이전에 IDS 와 방화벽에 대해서 알아봤다.
IDS는 패킷들을 분석해서 공격이냐 아니냐를 판별하는 것이고, 방화벽은 공격에 대해서 해당 IP를 막아버리는 것이다.
IPS는 그 둘을 같이 하면 이상적인 방지 시스템이 될것이라는 생각에서 나온 시스템이다.

IDS에서 오탐,미탐등의 실수가 발생한다. 그래서 IPS에서 공격자를 탐지하자마자 막아버린다면, 오히려 정상 소비자들을 막는 상황이 될 수 있기에 IPS는 현실화하기 어려운 이상적인 시스템이다.

Base-rate fallacy
탐지의 정확도가 99.99%라고 하자 굉장히 높은 정확도같지만 실상은 아니다.
백만개의 패킷이 왔을때 100개의 공격이 탐지가 되고, 담당자가 그 패킷을 확인하게 된다. 한 패킷당 30분을 쓴다고 하면 하루에 48도 처리 못한다.
하루에 오는 패킷을 백만개 그 이상이다. 한 시간에 올 수도 있다.
rate가 아무리 좋아도 모수가 크기 때문에 적은 비율의 공격이라고 하더라도, 사람이 리소스를 투입할 수 없을 정도로 많은 일이 되게된다.

IPS 에는 IP-spoofing 을 test하는 기능과 Traffic management를 할 수 있는 기능도 있다.

IP-spoofing 에 대해서..
공격자는 IP 주소를 바꿀 수 있다. 공격이 들키더라도 잡히지 않아서 좋지만, 응답패킷을 받을 수 없다는 문제가 있다.

상대가 IP주소를 바꿔서 보내는지 확인하는 방법이 있을까? 정상적인 사용자는 IP주소를 바꾸지 않을테니 이것을 감지할 수 있다면 그 사용자를 차단하면 될 것이다.

SYN-cookie 를 사용하는 방법이 있다.
tcp 연결을 유지하기 위해서 신호를 받은 서버는 상대의 정보를 저장해둔다. 이게 문제가 되는 것이고 상대가 내 리소스를 쓰는 것을 컨트롤할 수 있게 한다.
상대의 의도를 알기전에 내 리소스를 쓰지말자
클라이언트와 서버사이에 IPS장비를 둬서, IP-spoofing testing을 해보자
IPS는 SYN패킷을 받고 SYN/ACK 패킷을 보낼때 ISN(initial sequance number) (몇 바이트가 왔다갔다 했는지를 알 수 있는 필드)를 특정한 값으로 정해서(원래는 랜덤값) 보낸다

ISN = h(s_IP,s_port,d_IP,d_port,key,time)
IP를 위조한 공격범은 ISN 값을 알 수 없기 때문에 ACK 패킷에 ISN+1 값을 전달할 수 없게된다.
이런 검증을 통과해야만 서버에게 패킷이 전달되게된다.

0개의 댓글