방화벽과 웹 방화벽 그리고 IPS, IDS
방화벽이란, 악의적인 의도를 가진 트래픽을 차단하기 위하여 특정 트래픽의 허용 또는 차단하는 장치이다. 이것은 내부 네트워크 망과 외부 네트워크 망 사이에 위치하며, 소프트웨어나 하드웨어의 형태로 존재한다.
OSI7 계층 중 Layer3, Layer4인 Network Layer와 Transport Layer에서 Port와 IP를 제어함으로써 인가된 사용자에게만 접근을 허용한다. 이를 패킷 필터링 방식이라고 하며, Rule set에 따라서 출발지와 목적지의 IP, port를 제어한다.(IP, Port 필터링) =>패킷 필터 방화벽
이 방화벽만 사용하기에는 부족한 점들이 있는데, 패킷 헤더가 조작된 경우에 해당 패킷 차단이 불가능하고, 복잡한 공격이나 데이터의 페이로드에 공격 코드가 있을 경우 방어하기 힘들고, 외부망으로부터의 악의적인 접근은 막을 수 있지만, 내부망에서의 악의적인 접근은 대응이 불가능하다. 또, 호스트가 많아지면 rule set 사이즈가 커지면서 이에 따라 성능 저하가 일어나기도 한다.
대량의 패킷으로 인해 Rule set 사이즈가 커짐에 따른 성능 저하를 해결하기 위해 세션 단위의 검사를 하는 스테이트풀 인스펙션 방화벽으로 발전하였다.
패킷 필터 방화벽에서는 보안 정책에 적용되지 않는 모든 패킷은 차단한다. 즉 들어올 때 패킷도 정책이 적용되어있어야하고, 나가는 것도 정책에 적용되어 있어야한다. 하지만, 스테이트풀 인스펙션 방화벽을 사용하면, 세션 테이블을 참조하여 들어오는 이 패킷의 출발지, IP, Port 정보와 일치하는 정보가 세션 테이블에 있다면, 해당 패킷은 정상적으로 들어왔다 응답하는 패킷으로 판단하여 별도의 보안정책 필요 없이 외부로 나갈 수 있게 된다.
하지만, 여전히 기존 패킷 필터 방화벽의 단점을 대부분 해결하지는 못한다는 한계점은 있다.
그리고 프록시 서버 기능을 활용하기도 한다. 프록시 기반의 방화벽을 구축하게 되면, 캐싱 기능 등을 사용하여 성능을 높일 수 있고, IP 정보 등도 숨길 수 있다.
또한 내부망의 클라이언트 중 허가된 클라이언트에게만 외부망에 접속할 수 있도록 하는 등의 보안 기능을 할 수 있다. (포워드 프록시 => 클라이언트 들을 숨김, 리버스 프록시 => 서버들을 숨김)
* 프록시 서버 : 외부 클라이언트와 서버 간의 통신을 설정
* 게이트웨이와의 차이 : 게이트웨이는 프로토콜 변환 역할을 한다. 그리고 필터 역할을 하지 않는다. 프록시 서버의 경우 프로토콜 변환 역할은 하지 못하지만, 접속을 허용한 통신만 가능하게 한다.
이 또한 부하가 많이 생기게 된다.
그리고, 추가적인 노력으로 IDS/IPS, WAF 등이 있다. (방화벽 뒤에 위치)
IDS는 Instrusion Detection System으로 침입 탐지 시스템이다. IPS는 Intrusion Prevention System으로 침입 차단 시스템이다. IDS는 탐지만 했다면, IPS는 탐지 외에 차단 기능까지 포함한 시스템이다.
IDS/IPS, 그리고 WAF들은 방화벽과 달리 IP와 포트 정보만 가지고 보호하는 것이 아니라, DPI(Deep Packet Inspection)을 통해 페이로드 내 정보까지 확인하여 악의적인 접근에 대하여 대응이 가능하다.
WAF는 Web Application Firewall로, 웹서버를 보호하는 추가의 방화벽이다. HTTP(80 port)로 시도되는 악의적인 접근들을 차단하다.
IDS/IPS와 WAF를 비교해보면, IDS/IPS는 Layer3 ~ Layer7, WAF는 Layer7에서 작동하는 방화벽(혹은 공격 대응체계)이다. WAF에서는 다른 솔루션에서는 하지 못했던 암호화된 통신 내용을 복호화 하여 그 안에 든 악의적인 공격도 대응이 가능하다.
다시 말해, IDS/IPS, WAF는 모든(HTTP) 프로토콜에 대한 취약점 관련 패턴 DB를 통한 탐지 및 차단을 한다. 이때, WAF의 경우 Layer7 어플리케이션 계층의 데이터를 확인하는데, 복호화 된 내용을 확인 하기 때문에, 악의적인 코드가 암호화 되어 있었도, 언캡슐한 데이터를 확인하기 때문에 WAF에서 차단이 가능하다. 그에 반해 IDS/IPS에서는 통신 되는 데이터 그대로, 암호화 되어 있는 상태로 판단하기 때문에 공격 코드가 암호화 된 내용 안에 포함되어 있다면 탐지를 할 수 없다.
IDS/IPS의 탐지 방식으로는 크게 3가지로 볼 수 있다.
1) 시그니처(지식, 미리알고있는 정보) 기반 탐지 방식
IPS 업체가 기존의 알고 있는 공격의 시그니처(공격 패턴)들이 DB로 제공된다. 이 DB에 저장된 형태와 들어오는 데이터의 형태를 비교하여, 일치하면 해당 트래픽을 공격으로 본다.(IPS - 차단/IDS - 알림)
-> 단점은 DB에 등록되어 있지 않은 공격 패턴이라면 막을 수 있는 방법이 없으며, 계속 발전하는 공격 형태에 따라, DB도 계속해서 업데이트가 되어줘야한다.
2) 휴리스틱(행위) 기반 탐지 방식
정상적으로 통신하는 데이터와 비교하여 통계적으로 볼 때 비정장적으로 흐르는 트래픽이나 패킷의 임계치로 이상 징후를 탐지하고 해당 트래픽을 공격으로 본다.(IPS - 차단/IDS - 알림)
-> 새로운 공격법에 대응할 수 있는 대신, 정상적인 트래픽이지만 단순 평소와 다른 형태라고 해서 공격으로 오인하는 오탐이 발생 할 밖에 없다.
3) 룰 기반 탐지 방식
직접 룰 정의하고, 정의한 규칙에 따라 해당 트래픽을 공격으로 볼지 보지 않을지 결정한다.
IPS는 비정상적인 트래픽 차단을 통해 Dos/DDos 공격, 시스템 취약점(Exploits) 공격, warm 공격, backdoor 공격 등을 막을 수 있다.
IDS는 구성 방식이 3가지 정도가 있는데, In-line 방식, Span(mirroring) 방식, TAP(Test Access Port) 방식 이 있다.
In-line == 인터넷(외부망) - 라우터 - 방화벽 - IDS - 스위치 허브 - 내부망
가장 간단한 구성이다. 이 NIDS는 공격을 차단 "시도"(TCP 리셋, 하지만 실질적이진 못함)는 할 수 있다.(탐지가 주 용도)
하지만, 비정상적인 트래픽이 들어올 때, 탐지했다는 로그등이 전달되게 될텐데, 네트워크 망이 과부화가 걸릴 수 있다.(로그 + 비정상 트래픽 + 정상 트래픽)
또한, IDS 장비에 장애가 발생한다면, 네트워크 장애가 발생한다.
mirroring을 지원하는 스위치를 통해 트래픽을 복제한 뒤 분석하는 방식으로 In-line에서 발생할 수 있는 단점을 보완한다. 하지만 과도한 트래픽이 발생할 때 일부 트래픽이 누수될 수 있다.
TAP은 네트워크 상에서 전송되는 데이터 패킷의 흐름에 영향을 주지 않으면서 패킷을 복사해 패킷 손실 없이 모니터링 할 수 있도록 하는 장비이다. 만약 탭 장비에 장애가 발생하여도 바이패스 모드로 전환되어 네트워크 흐름에 문제가 되지 않는다. 이런 탭 장비를 통해서 IDS를 사용한다면 위의 단점들을 극복할 수 있다.
하지만, 추가 장비(TAP)이 들어가야한다는 단점은 있다.
이처럼 방화벽 뒤에서 작동하는 IDS/IPS를 NIDS/NIPS라고 한다. 보통 IDS/IPS라하면 이 NIDS/NIPS를 의미하는 것으로 보인다. NIDS/NIPS 외에 HIDS/HIPS가 있는데, 이것들은 네트워크 망보다는 HOST에 붙는 IDS/IPS이다.
호스트에 붙어도 장단점이 있는데, HIDS의 경우 공격 트래픽의 공격의 성공 유무를 확인할 수 있다. (NIDS는 단순 들어왔다 정도) 그리고 네트워크 망에 붙는 것이 아니라 호스트에 붙다보니 간단하고 관리도 편하다. 그리고 HIPS의 경우 NIPS와 달리, 커널 레벨의 호스트 공격에도 대응할 수 있다는 장점이 있다.
다만, 탐지할 수 있는 대상이 붙은 호스트(서버)라는 단점은 있다. 그러다보니, 각 서버별로 해당 장비를 설치해야된다는 큰 비용적인 문제가 있다. 그리고 네트워크 망에 부하를 주진 않는 대신(TAP 써도 안주긴 하지만) 호스트 OS에 부하를 주게 된다.
IDS/IPS, 그리고 WAF들은 방화벽과 달리 IP와 포트 정보만 가지고 보호하는 것이 아니라, DPI(Deep Packet Inspection)을 통해 페이로드 내 정보까지 확인하여 악의적인 접근에 대하여 대응이 가능하다.
WAF는 Web Application Firewall로, 웹서버를 보호하는 추가의 방화벽이다. HTTP(80 port)로 시도되는 악의적인 접근들을 차단하다.
IDS/IPS와 WAF를 비교해보면, IDS/IPS는 Layer3 ~ Layer7, WAF는 Layer7에서 작동하는 방화벽(혹은 공격 대응체계)이다. WAF에서는 다른 솔루션에서는 하지 못했던 암호화된 통신 내용을 복호화 하여 그 안에 든 악의적인 공격도 대응이 가능하다.
다시 말해, IDS/IPS, WAF는 모든(HTTP) 프로토콜에 대한 취약점 관련 패턴 DB를 통한 탐지 및 차단을 한다. 이때, WAF의 경우 Layer7 어플리케이션 계층의 데이터를 확인하는데, 복호화 된 내용을 확인 하기 때문에, 악의적인 코드가 암호화 되어 있었도, 언캡슐한 데이터를 확인하기 때문에 WAF에서 차단이 가능하다. 그에 반해 IDS/IPS에서는 통신 되는 데이터 그대로, 암호화 되어 있는 상태로 판단하기 때문에 공격 코드가 암호화 된 내용 안에 포함되어 있다면 탐지를 할 수 없다.
* Scanning, IP Spoofing은 방화벽에서 차단이, Worm virus 나 Exploit은 IDS/IPS에서 차단이, XSS, SQL injection, Buffer Overflow, Hacking 등은 WAF가 차단을 할 수 있다.
*Exploit : 취약점 공격
*XSS : input 태그 등에 악의적인 Script를 작성하여 해당 컨텐츠를 이용하는 다른 이용자에게 악의적인 공격을 하는 것
*SQL : 임의의 SQL문을 주입하고 실행하게 하여 DB가 비정상적으로 동작하도록 조작하는 것
*Buffer Overflow : 버퍼 오버플로우(할당 된 크기보다 큰 크기가 입력되버리는 경우, 복귀 주소가 다른 값으로 변경되고, 프로그램이 정상적으로 작동하지 않음)를 일으켜서 특정 코드를 실행시키는 것.
참고로, 이 모든 기능을 하나로 한 UTM, Unified Threat Management가 있다. Antivirus, FW, IDS/IPS, VPN.. 등과 같은 기능을 한 장비로 구성하여 활용해서 비용 절감을 노릴 수 있지만, 병목 현상과 장비의 부하가 크게 걸릴 수 있다.