방화벽·IDS·IPS·WAF의 차이: 검사 범위·차단 또는 경보·보호 대상 비교

네 가지 모두 네트워크를 통해 오는 공격을 막지만, 무엇을 검사하는지와 무언가를 찾았을 때 무엇을 하는지가 다릅니다. 방화벽은 IP 주소, 포트 번호 같은 정보를 바탕으로 규칙이 허용하는 통신만 통과시킵니다. IDS(침입 탐지 시스템)는 통신의 내용까지 검사해 공격으로 보이는 것을 찾아 관리자에게 알리지만, 통신을 멈추지는 않습니다. IPS(침입 방지 시스템)는 통신 경로 안에 놓여 찾아낸 공격을 그 자리에서 차단합니다. WAF(웹 애플리케이션 방화벽)는 HTTP 요청의 내용을 검사해 SQL 인젝션 같은 웹 애플리케이션 공격을 차단합니다. 어느 것도 혼자서 모든 것을 막지는 못하므로 함께 사용합니다.

비교 항목방화벽IDSIPSWAF
주로 검사하는 것출발지·목적지 IP 주소, 포트 번호, 연결 상태(네트워크 계층과 전송 계층). 애플리케이션을 식별하는 제품도 있습니다패킷의 헤더부터 내용까지(네트워크 계층에서 애플리케이션 계층까지)IDS와 마찬가지로 패킷의 헤더부터 내용까지HTTP와 HTTPS 요청·응답의 내용(애플리케이션 계층)
통신 경로에 대한 배치경로 안(인라인)보통 경로 밖. 스위치의 미러 포트 등에서 통신의 복사본을 받습니다경로 안(인라인)경로 안, 웹 서버 앞. 리버스 프록시나 클라우드 서비스로 둡니다
탐지 시 동작규칙이 허용하지 않는 통신을 차단합니다경보를 울리고 기록합니다. 통신 자체는 멈추지 않습니다통신을 차단하거나 연결을 끊습니다공격으로 판단한 요청을 차단합니다. 탐지와 기록만 하는 모드도 흔합니다
탐지 방식허용·거부 규칙(주소, 포트, 연결 상태)알려진 공격 패턴(시그니처)과의 대조와, 평상시 통신과의 차이를 찾는 이상 탐지IDS와 마찬가지로 시그니처와 이상 탐지SQL 인젝션이나 크로스 사이트 스크립팅 같은 공격 패턴의 규칙과, 허용할 입력을 정하는 규칙
주로 지키는 것네트워크의 출입구. 허용하지 않은 통신을 들이지 않습니다네트워크와 서버의 감시. 공격이나 침입의 징후를 알아챕니다네트워크상의 서버와 단말을 알려진 공격으로부터웹 애플리케이션을 애플리케이션 취약점을 노리는 공격으로부터
오탐의 영향규칙 실수가 정상 통신을 멈춥니다오경보가 많으면 진짜 경보가 묻히고 운영자에게 부담이 되지만, 업무 통신은 멈추지 않습니다오탐이 곧바로 정상 통신을 차단하므로 신중한 튜닝이 필요합니다기호가 들어간 문장 같은 정상 입력을 공격으로 판단하면 사용자의 조작이 실패합니다
배치 예내부 네트워크와 인터넷의 경계, 네트워크 세그먼트 사이, 각 서버나 단말감시할 네트워크 세그먼트(네트워크형)나 서버(호스트형)인터넷과의 경계. 예를 들어 방화벽 바로 안쪽공개 웹 서버 앞
한계웹 애플리케이션의 결함을 노리는 공격처럼 허용된 포트를 지나는 공격은 막지 못합니다. 통신을 암호화하는 기능은 없습니다탐지만 하고 막지는 못합니다. 복호할 수 있는 위치에 두지 않으면 TLS로 암호화된 통신은 검사할 수 없습니다시그니처가 없는 미지의 공격은 이상 탐지에 의존하므로 놓치기 쉽습니다. 암호화된 내용은 볼 수 없고, 처리 능력이 통신의 병목이 될 수 있습니다웹 이외의 통신은 지키지 않습니다. 애플리케이션의 취약점 자체를 고치지는 않습니다

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

방화벽
어떤 네트워크에도 가장 먼저 두는 기본 대책. 필요한 통신만 허용하고 나머지는 차단합니다.
IDS
통신을 멈출 위험 없이 공격이나 침입의 징후를 알아채고 싶을 때. 조사를 위한 기록도 남깁니다.
IPS
알려진 공격을 사람의 판단을 기다리지 않고 자동으로 막고 싶을 때. 오탐으로 업무 통신이 멈추지 않도록, 처음에는 탐지 전용 모드로 튜닝한 뒤 차단을 켜는 것이 일반적입니다.
WAF
웹 애플리케이션을 공개할 때. 취약점 수정이 끝나기 전의 임시 대책이 될 수 있지만, 애플리케이션 수정을 대신하지는 않습니다.

자주 묻는 질문

IDS와 IPS의 가장 큰 차이는 무엇인가요?

찾아낸 공격을 멈추는지 여부입니다. IDS는 보통 통신의 복사본을 검사해 경보만 울리고 통신은 그대로 둡니다. IPS는 통신 경로 안에 놓여 공격으로 판단한 통신을 그 자리에서 차단합니다. 그래서 IPS에서는 오탐이 정상 통신을 막으며, 장치 고장으로 모든 통신이 멈추지 않도록 주의가 필요합니다. 두 모드를 전환할 수 있는 제품도 많습니다.

방화벽이 있으면 WAF는 필요 없나요?

역할이 다르므로 웹 애플리케이션을 공개한다면 둘 다 쓰는 것이 합리적입니다. 방화벽은 웹 서버의 443번 포트로 가는 통신을 일단 허용하면, 그 내용이 정상 요청인지 공격인지 구별하지 않습니다. WAF는 HTTP 요청의 내용을 검사해 SQL 인젝션이나 크로스 사이트 스크립팅 같은 공격 패턴을 찾아 차단합니다.

IDS나 IPS는 암호화된 통신을 검사할 수 있나요?

그대로는 할 수 없습니다. TLS로 암호화된 통신의 내용을 검사하려면 TLS를 종단하는 장치(리버스 프록시나 WAF 등) 뒤에 두거나, 장치 자체가 통신을 복호해 검사해야 합니다. 복호하지 않는다면 통신의 목적지, 양, 타이밍 패턴에서 이상을 찾아야 합니다.

차세대 방화벽(NGFW)이란 무엇인가요?

기존의 주소·포트 규칙에 더해 통신 내용에서 애플리케이션을 식별하는 기능이나 IPS 기능 등을 한 장치에 결합한 방화벽을 부르는 이름입니다. 포함된 기능은 제품마다 다르므로, 어느 계층을 검사하고 무엇을 차단할 수 있는지 확인합니다.

이해도 확인

방화벽(패킷 필터링형)의 기본적인 기능으로 올바른 것은?

  1. A통신 내용을 암호화하여 도중 경로에서의 도청을 막는다
  2. B출발지나 목적지의 IP 주소, 포트 번호 등을 바탕으로 한 규칙에 따라 허용한 통신만 통과시키고 그 밖의 통신은 차단한다
  3. C도착한 패킷을 여러 서버에 분배하여 처리 부하를 분산한다
정답과 해설 보기

정답: B. 출발지나 목적지의 IP 주소, 포트 번호 등을 바탕으로 한 규칙에 따라 허용한 통신만 통과시키고 그 밖의 통신은 차단한다

방화벽은 사내 네트워크와 인터넷의 경계 등에 두고, 미리 정한 규칙으로 통신을 허용하거나 거부합니다. 예를 들어 '외부에서는 공개 웹 서버의 443번 포트로 가는 통신만 허용하고, 그 밖의 외부로부터의 연결은 거부한다'와 같이 설정합니다. 현재 대부분의 방화벽은 통신 상태를 기록하는 스테이트풀 인스펙션을 수행하여, 내부에서 시작한 통신의 돌아오는 패킷을 자동으로 통과시킵니다. 암호화는 하지 않으므로 통신을 보호하려면 TLS나 VPN과 조합합니다. 또한 허용한 포트를 통과하는 공격(웹 애플리케이션의 취약점을 노리는 것 등)은 막을 수 없으므로 WAF 등 별도의 대책도 사용합니다.

로그인 화면에서 비밀번호 칸에 ' OR '1'='1 같은 문자열을 입력하면 비밀번호를 몰라도 로그인할 수 있게 되는 웹 애플리케이션이 있다. 이 공격의 이름은?

  1. ASQL 인젝션
  2. B크로스 사이트 스크립팅
  3. C디렉터리 트래버설
정답과 해설 보기

정답: A. SQL 인젝션

SQL 인젝션은 웹 애플리케이션이 이용자의 입력을 그대로 문자열로 이어 붙여 데이터베이스에 대한 명령(SQL 문)을 조립하고 있다는 점을 악용하는 공격입니다. 예를 들어 '비밀번호가 '입력값'과 같다'는 조건을 만드는 곳에 ' OR '1'='1이 들어가면, 따옴표로 문자열이 닫히고 '또는 '1'과 '1'이 같다'는 항상 성립하는 조건이 덧붙여져 버립니다. 그 결과 비밀번호를 몰라도 조건이 성립하여 로그인할 수 있게 됩니다. 같은 방법으로 데이터의 탈취나 변경, 삭제가 이루어질 우려도 있습니다. 근본적인 대책은 입력을 명령의 일부로 해석시키지 않는 구조(플레이스홀더를 사용하는 프리페어드 스테이트먼트)를 사용하는 것입니다.

게시판 웹 애플리케이션에서 이용자가 게시한 글 안의 스크립트가 다른 열람자의 브라우저에서 실행되어 버리는 취약점이 있었다. 이 취약점의 이름과 근본적인 대책의 조합으로 올바른 것은?

  1. ASQL 인젝션. 데이터베이스 접속에 사용하는 비밀번호를 길게 한다
  2. B크로스 사이트 스크립팅(XSS). 게시된 글을 HTML로 출력할 때 <나 > 등 특별한 의미를 가진 문자를 이스케이프한다
  3. C크로스 사이트 스크립팅(XSS). 서버와 브라우저 사이의 통신을 HTTPS로 암호화한다
정답과 해설 보기

정답: B. 크로스 사이트 스크립팅(XSS). 게시된 글을 HTML로 출력할 때 <나 > 등 특별한 의미를 가진 문자를 이스케이프한다

크로스 사이트 스크립팅(XSS)은 웹 애플리케이션이 이용자의 입력을 그대로 HTML 안에 출력하기 때문에, 입력에 포함된 스크립트가 페이지의 일부로서 열람자의 브라우저에서 실행되어 버리는 취약점입니다. 스크립트는 그 사이트의 페이지로서 동작하므로, 열람자의 세션 정보(Cookie)를 훔치거나 가짜 입력란을 표시할 우려가 있습니다. 근본적인 대책은 출력하는 위치에 따라 <, >, &, 따옴표 같은 특별한 의미를 가진 문자를 이스케이프(예를 들어 <를 &lt;로 변환)하여 단순한 문자로 표시되게 하는 것입니다. 보조적인 대책으로 Cookie에 HttpOnly 속성을 붙여 스크립트에서 읽을 수 없게 하거나, 콘텐츠 보안 정책으로 실행할 수 있는 스크립트를 제한합니다. HTTPS는 통신로를 보호하는 것으로, 정규 페이지에 삽입된 스크립트의 실행은 막을 수 없습니다.

  1. 제로데이 공격에 대한 설명으로 올바른 것은?
  2. DDoS 공격에 대한 설명으로 올바른 것은?
  3. 리버스 프록시에 대한 설명으로 올바른 것은?

정보 보안 기초 문제 풀기

주요 용어 설명

포트 번호(Port Number)
TCP나 UDP에서 단말 안의 어느 애플리케이션으로 가는 통신인지를 구별하는 0~65535의 번호. HTTP의 80, HTTPS의 443, DNS의 53 등 0~1023은 잘 알려진 포트(well-known port)라고 한다.
OSI 참조 모델(OSI Reference Model)
통신 기능을 물리 계층·데이터 링크 계층·네트워크 계층·전송 계층·세션 계층·표현 계층·응용 계층의 7개 계층으로 나누어 정리한 모델. 각 계층의 역할을 나누어 생각하기 위한 공통의 언어로 쓰인다.
SQL 인젝션(SQL Injection)
웹 애플리케이션이 이용자의 입력을 그대로 이어 붙여 SQL 문을 조립한다는 점을 악용하여, 입력으로 명령의 의미를 바꾸어 데이터베이스를 부정하게 조작하는 공격. 플레이스홀더를 사용하는 프리페어드 스테이트먼트가 근본적인 대책이다.
크로스 사이트 스크립팅(XSS)
웹 애플리케이션이 이용자의 입력을 그대로 HTML에 출력하기 때문에, 입력에 포함된 스크립트가 열람자의 브라우저에서 그 사이트의 페이지로서 실행되어 버리는 취약점. 출력할 때 특별한 의미를 가진 문자를 이스케이프하는 것이 근본적인 대책이다.
리버스 프록시(Reverse Proxy)
웹 서버 앞에 놓여, 이용자로부터의 요청을 서버 대신 받아 뒤에 있는 한 대 또는 여러 대의 서버로 중계하는 서버. HTTPS 암호 처리를 한곳에서 모아 수행하는 것(TLS 종료), 자주 사용되는 응답을 저장해 두었다가 돌려주는 것, 여러 서버에 부하를 나누는 것, 뒤쪽 서버의 구성을 숨기는 것과 같은 역할을 담당한다. 이용자 쪽에 놓여 이용자 대신 외부 사이트에 접속하는 포워드 프록시와는 놓이는 장소와 지키는 대상이 다르다.
TLS
Transport Layer Security의 약자. 통신의 암호화, 변조 검출, 인증서에 의한 서버 인증을 수행하는 프로토콜. HTTPS는 HTTP를 TLS로 보호한 것이다.
제로데이 공격(Zero-day Attack)
소프트웨어의 취약점이 발견된 뒤 수정 프로그램(패치)이 제공되기까지의 사이에 그 취약점을 악용하여 이루어지는 공격. 패치로 막을 수 없으므로 다층적인 대책으로 피해를 억제한다.

관련 비교