Firewall
Firewall(방화벽)이란?
방화벽은 사용자가 사전에 정의한 정책을 기반으로 시스템에 대한 악의적인 접근을 차단하고 제어하는 보안 장비를 의미합니다.
IT시스템을 구성하는 필수 요소로 서버 및 네트워크 보안 분야에서 널리 사용되고 있습니다.
방화벽의 분류
방화벽은 적용되는시스템, 모니터링하는 레이어, 상태 관리 여부, 제공되는 형태에 따라 다양하게 분류됩니다.
Host-based Firewall, Network-based Firewall
방화벽이 어느 시스템에 적용되는지에 따라 Host-based Firewall과 Network-based Firewall로 나눌 수 있습니다.
Host-based Firewall은 주로 사용자의 PC와 같은 단일 호스트에 적용됩니다. 대표적인 예로는 흔히 윈도우 방화벽이라고 불리는 Microsoft Windows Defender가 있습니다.
Host-based Firewall은 호스트에 대한 악의적인 접근을 모니터링하고 관리합니다.
Network-based Firewall은 여러 호스트가 배포되어 있는 네트워크를 대상으로 합니다. 대표적인 예로는 NHN Cloud의 Network Firewall이 있으며 사용자 네트워크에 대한 악의적인 접근을 차단합니다.
Network Firewall, Application Firewall
Network Firewall은 OSI 3, 4계층에 해당하는 IP주소와 Port번호를 기반으로 트래픽을 제어합니다.
반면 Application Firewall은 OSI모델의 7계층인 애플리케이션 계층의 데이터(URL, Cookie, Query 등)를 기반으로 트래픽을 필터링합니다.
Application Firewall은 웹 서비스의 HTTP 트래픽을 감시하는 WAF(Web Application Firewall)와 데이터베이스를 보호하기 위한 Database Firewall이 대표적입니다.
Stateful Firewall, Stateless Firewall
Stateful Firewall과 Stateless Firewall은 일반적으로 Network Firewall로 분류되어 IP주소와 Port번호를 기반으로 트래픽을 제어합니다. 그러나 두 방화벽의 작동 방식은 전혀 다릅니다.
Stateful Firewall은 트래픽 허용 여부를 패킷의 상태와 맥락에 따라 판단하고 Stateless Firewall은 오로지 사용자가 사전에 정의한 정책에 의해서만 판단합니다.
예를 들어, Stateful Firewall은 80번 포트에 대한 요청(Request)이 허용된 경우, 해당 요청과 관련된 응답(Response)은 사용자가 명시적으로 설정하지 않아도 허용합니다. 반면 Stateless Firewall은 80번 포트에 대한 요청과 응답을 모두 허용해야만 80번 포트를 통한 통신을 원활히 수행할 수 있습니다.
Stateful Firewall은 위와 같은 특징으로 편리하게 사용할 수 있는 방화벽입니다. 다만, 명시적으로 정의하지 않은 트래픽도 허용하는 만큼 사용하는데 주의가 필요합니다.
Hardware Firewall, Software Firewall, Cloud-based Firewall
방화벽은 제공되는 형태에 따라 Hardware Firewall, Software Firewall, Cloud-based Firewall로 나눌 수 있습니다.
Hardware Firewall은 주로 온프레미스(On-premise)환경에서 사용하는 방화벽으로 벤더가 직접 개발한 물리 장비와 운영체제로 구성되어 있습니다.
Software Firewall은 범용 장비 및 운영체제에 설치해 사용하는 방화벽입니다.
Cloud-based Firewall은 서버 이미지로 제공되어 Virtual Machine의 형태로 클라우드 환경에서 배포되거나 SaaS(Soft as a Service)의 형태로 CSP(Cloud Service Provider)에 의해 관리되고 운영되는 방화벽을 의미합니다.
DDoS Attack(Distributed Denial of Service Attack)
분산 서비스 거부 공격(Distributed Denial of Service Attack, 줄여서 DDoS Attack - 디도스 공격)은 여러 개의 장치를 이용하여 컴퓨터 서버나 네트워크 장비를 대상으로 처리할 수 없을 정도로 과도한 트래픽을 발생시켜 정상적인 데이터 전송에 장애를 일으키는 서비스 거부 공격의 일종입니다.
대학교의 수강신청, 콘서트 티케팅과 같은 경우에서 짦은 시간 안에 웹사이트 접속이 폭주해서 먹통이 되는 것도 디도스 공격과 같은 원리입니다. 하지만 의도적으로 서버를 마비시킬 목적으로 한 행동은 아니기에 공격이라고 부르지는 않고 단순히 공격이라는 말이 빠진 Distributed Denial of Service 상태인 것입니다.
DDoS 공격 방법
새로고침
브라우저에 특정 웹 페이지를 열어놓고 새로고침키를 연타하면 서버에 해당 웹 페이지 크기와 새로고침을 한 횟수를 곱한 만큼의 트래픽을 줄 수 있습니다.
좀비 PC이용
불특정 다수의 PC에 악성코드를 심어 유사시에 공격이 가능한 좀비 PC로 만든 뒤 공격에 동원하는 방법입니다. 악성코드에 감염된 수많은 좀비 PC가 공격자의 명령에 따라 일제히 서버에 대량의 트래픽을 전송하는 방식으로 이루어지며, 서버가 허용하는 트래픽 용량을 넘어서게 되면 정상적인 클라이언트가 서버로 접속할 수 없게 됩니다.
DDoS For Hire(웹 스트레서)
일정 금액을 지불하고 봇넷 혹은 대용량 대역폭 서버를 가진 업체의 DDoS For Hire서비스를 이용할 수도 있습니다.
프로그램 이용
LOIC(Low Orbit Ion Cannon)이나 HOIC(High Orbit Ion Canon)등의 프로그램을 이용하여 공격할 수 있습니다.
Ping of death
명령 프롬프트에서 ping [IP.IP.IP.IP]의 패킷 크기를 정상 크기보다 매우 큰 수치로 부풀려 공격하는 것으로 만들어진 패킷은 라우팅되어 공격 대상지에 도달하는 동안 파편화(fragment)되고, 공격 대상은 파편화된 패킷을 모두 처리해야 하여 리소스 사용량이 급증하게 됩니다.
SYN Flooding
3-Way Handshaking과정에서 처음 단계인 SYN 전송 단계에서 대량의 SYN 패킷을 서버로 전달하고 서버가 TCP/SYN-ACK 응답을 보내면 클라이언트가 ACK으로 응답해야 연결이 수립되지만 ACK을 일부러 안 보내서 연결이 수립되지 않게 합니다.
그러면 서버는 대기를 하게 되고 연결 요청을 수용하는 서버의 대기열이 가득 차게 되어 다른 연결 요청을 무시하게 됩니다.
UDP Flooding
단순하게 UDP 패킷을 쏟아 붓는 방식으로 회선 대역폭을 모두 점유하여 대상 호스트를 마시킵니다.
대응 방법
모든 디도스 공격을 100% 방어하는 것은 불가능에 가깝습니다. 영어로도 디도스 공격 대응을 표현할 때 방어가 아닌 완화(Mitigation)라는 단어를 주로 사용합니다.
임계치 기반 규칙 방어
모든 디도스 대응 솔루션은 임계치 기반 규칙을 포함하고 있습니다. 임계치 기반 규칙은 패킷의 구성 요소를 일일이 셈하여 기준치 이상의 트래픽이 발생할 경우 디도스 공격으로 탐지해 대응하는 기법입니다.
임계치 기반 규칙은 크게 도스(DoS)와 디도스(DDoS) 규칙으로 구분합니다. 도스의 경우 단일 출발지 IP를 기준으로 패킷의 양을 측정하며, 단일 IP에서 트래픽이 많이 들어오는 관계로 즉각 차단하더라도 문제가 적어 차단, 격리 방법으로 주로 대응합니다.
반면 디도스는 다수의 출발지 IP기준, 보호 대상에 인입되는 트래픽의 양을 측정합니다. 단 디도스의 경우 특정 이벤트에 따라 트래픽이 많아지는 경우가 있어 단순히 차단을 할 경우 수많은 정상 사용자를 차단할 위험이 있습니다. 따라서 인증을 통한 추가 검증 또는 QoS(Quality of Service)를 수행합니다.
일상적인 대용량 공격 대응에 적합하지만, 저용량 정밀 타격 또는 비정상 프로토콜의 공격에는 대응이 어렵습니다.
인증 기반 대응
모든 디도스 솔루션이 임계치 기반 대응 역량을 제공하며 고객도 해당 기능을 무리 없이 사용하는 편입니다. 하지만 실질적으로 발생하는 디도스 공격의 피해 사례는 임계치 기반 규칙을 우회하는 공격입니다.
인증 기반 대응은 주로 봇(bot)기반의 자동화된 공격을 방어합니다. 대부분의 디도스 공격은 사람이 직접 수행할 수 없습니다. 대다수가 자동화 소프트웨어를 활용하며 이러한 공격은 인증을 통해 대응이 가능합니다.
여기서 인증은 TCP와 HTTP 프로토콜의 특성을 활용한 기법입니다.
TCP인증의 경우에는 최초 클라이언트의 SYN 패킷에 일종의 쿠키를 추가한 SYN/ACK응답을 생성하여 쿠키가 포함된 ACK이 전송되는지 확인하는 방법이며 RST를 활용한 방법도 있습니다.
HTTP 인증의 경우 HTTP 302 응답코드를 활용해 정상적인 리다이렉트가 진행되는지 확인하는 방법입니다.
TCP/HTTP 인증 기능을 통해 봇 기반 저용량 정밀 타격과 비정상 프로토콜 공격을 방어할 수 있으며 기타 봇 기반의 공격도 방어할 수 있습니다.
만약 100Gbps~1Tbps 이상의 초대용량 공격이 들어오면 위의 두 규칙으로는 방어할 수 없습니다.
항상 유지되어야 하는 서비스의 경우 서비스형 보안(SECurity-as-a-Service) 형태의 서비스를 이용하는 것도 방법입니다. 국내에는 대표적으로 금융보안원의 스크러빙센터가 있습니다.
IPS(Instrusion Prevention System, 침입 방지 시스템)
네트워크 자체에 대한 스캐닝을 수행하여 악성 공격을 감지하고 방어하는 역할을 수행합니다. 모든 네트워크 트래픽을 스캐닝하여 차단(block)할지 악성 트래픽을 교정(remediate)할지를 결정합니다.
일반적으로 IPS는 트래픽 흐름에 대한 파일 시그니처 그리고 휴리스틱 분석을 수행합니다.
시그니처(signature)방식
사전에 정의된 공격 시그니처 방식을 참조하여 공격 여부를 확인하는 방식입니다.
이상(Anomaly) 기반 방식
트래픽 모니터링 시 통계적으로 정상적인 네트워크의 흐름이 아니라고 판단되는 경우 차단하는 방식입니다. 통상적으로 Anomaly 형태와 함께 임계치(threshold)를 같이 설정하는 방식을 사용합니다.
IPS를 통해 방어할 수 있는 대표적인 공격은 다음과 같습니다. 시그니처와 이상 징후 기법을 통해 탐지 가능한 모든 공격에도 해당합니다.
- DoS/DDoS
- 취약점(Exploits)
- 바잇러스
- 웜
- 백도어
IDS(Instrusion Detection System, 침입 탐지 시스템)
IPS가 침입 차단 솔루션임에 반해 IDS는 수동적인 시스템으로 트래픽을 모니터링 및 스캔하고 위협 및 공격에 대해서 보고만 하는 침입 감지 시스템입니다. 탐지된 공격에 대해서 관리자에게 고지하면 IDS의 역할은 끝나게 됩니다.
대부분의 IPS 시스템은 IDS 솔루션으로도 작동할 수 있습니다. IDS와 IPS의 주소 차이점 중 하나는 네트워크 상에 배치되는 위치입니다. IDS는 트래픽의 길목에서 막거나 통과시키는 구조가 아닌 네트워크를 통과하는 트래픽을 수동적으로 감시하는 방식입니다. 이 경우 트래픽 복사본은 포트 스팬 메거니즘 또는 네트워크 TAP 배포를 통해 IDS로 전송됩니다. 반면에 IPS는 네트워크 상에 직접적으로 배치되고 모든 트래픽이 IPS를 통과합니다.
IPS, IDS 비교
IDS와 IPS는 이상 트래픽 발견 시에 취해야 할 조치가 다릅니다. IDS는 추가 조치를 위해 책임 있는 시스템 혹은 관리자에게 경보 또는 경고를 보내지만 트래픽을 중지시키지는 않습니다. IPS는 더 공격적으로 탐지된 이상 트래픽을 즉시 차단합니다.
IPS | IDS | |
---|---|---|
유형 | Active/Passive(모니터 및 통과, 차단 기능) | Passive(모니터와 통지 기능) |
탐지 방식 | Anomaly 탐지, 시그니처 탐지 | 시그니처 탐지 |
위치 | 데이터 통신 네트워크 내부 | 데이터 통신 네트워크 외부 |
반응 | 악성 트래픽 경고 및 삭제 | 악성 트래픽 경보 및 알림 |
네트워크 성능저하 | 내부 네트워크의 IPS처리로 인한 지연으로 인해 성능 저하 | 네트워크 성능 저하 x |
장점 | 탐지 및 방어가 자동으로 수행됨 | IPS에 의해 잘못 차단될 수 있는 합법적인 트래픽을 차단하지 않을 수 있음. |
방화벽, IPS차이
방화벽은 트래픽 차단 및 필터링과 같은 작업을 수행하지만 IPS는 공격을 탐지하고 방지합니다.
Reference
'네트워크' 카테고리의 다른 글
네트워크 계층 별 프로토콜2 (0) | 2024.11.22 |
---|---|
네트워크 계층 별 프로토콜1 (0) | 2024.11.17 |
네트워크 계층별 장비 (0) | 2024.11.09 |
TCP 와 UDP 의 특징 및 차이점 (0) | 2024.10.25 |
OSI 7 Layer (0) | 2024.10.11 |