Firewall
0. 들어가면서
요즘 폐쇄망에서 시스템 구축을 위해 방화벽(firewall)과 한창 싸움 중 입니다. 방화벽에 대한 개념은 추상적으로 알고 있지만, 전문가다운 지식은 부족합니다. 이번 포스트에선 프로젝트의 블로커(blocker)인 방화벽에 대한 정리를 하였습니다.
1. Firewall
Wikipedia
방화벽(防火壁) 또는 파이어월(firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽(traffic)을 모니터링하고 제어하는 네트워크 보안 시스템이다.
방화벽은 일반적으로 신뢰할 수 있는 내부 네트워크와 인터넷 같은 신뢰할 수 없는 외부 네트워크 간의 연결을 제어합니다. 서로 다른 신뢰 수준을 가진 네트워크 사이의 데이터 교환을 허용, 거부, 검열 그리고 수정하는 하드웨어나 소프트웨어를 의미합니다. 신뢰 수준이 낮은 네트워크로부터 오는 해로운 트래픽을 막습니다. 정책 기반으로 운영하고 다양한 수준의 정책으로 네트워크 사이의 트래픽을 제어합니다.
Location of Firewall
2. Policy of Firewall
보안 정책은 방화벽의 성능에 따라 만들 수 있는 수가 다릅니다. 일반적인 웹 서비스를 말고도 DNS(UDP 53), Mail(TCP 25, 110), HTTPS(TCP 433) 등 다양한 포트에 대한 보안 정책 설정이 가능합니다. 일반적으로 보안 정책은 5가지 요소가 필요합니다.
- 방향
- 어느 구역에서 출발해서 어느 구역으로 이동하는가?
- Untrust –> DMZ
- 출발지 주소
- 어디에서 왔는가?
- ANY
- 목적지 주소
- 어디로 이동하는가?
- 10.10.10.10
- 서비스 포트
- 어떤 서비스를 사용하는가?
- TCP 80(HTTP-Web)
- 결정
- 위 4가지 조건이면 해당 연결을 허용 혹은 차단합니다.
- 허용(permit)
- 차단(deny)
3. Generation of Firewall
3.1. 1st Firewall: Packet Filter
패킷 자체만 보고 미리 설정된 정책에 따라 허옹 혹은 거부를 결정합니다. 방화벽 내부에 상태를 관리하지 않습니다. 특정한 IP, 포트(port)를 허용 또는 거부하는 용도로 사용합니다. 패킷 필터(packet filter)는 효율적이지만, 다음과 같은 문제점을 가지고 있습니다.
- 모든 패킷이 모든 정책에 해당되는지 검사하므로 정책이 많을수록 처리가 느립니다.
- 돌아오는 패킷을 허용하는 정책으로 인해 보안이 취약해질 수 있습니다.
- FTP 같은 파생 세션(session)을 만드는 일부 프로토콜(protocol)을 지원하기 위해 모든 포트를 허용해야 하는 경우도 있습니다.
3.2. 2nd Firewall: Stateful Inspection
동적 패킷 필터(dynamic packet filter)라고도 합니다. 패킷 필터의 문제점을 보완하기 위한 방화벽입니다. 패킷 단위의 검사가 아닌 패킷이 속하는 TCP 혹은 UDP 프로토콜의 연결(connection) 단위로 검사를 수행합니다. 클라이언트와 서버 간 통신 상태를 모니터링하여 세션 테이블을 만들고 관리하면서 세밀한 트래픽 제어를 수행합니다.
신뢰 수준이 낮은 네트워크에서 내부 네트워크로 보내는 요청을 수신 패킷이라고 정의하겠습니다. 반대로 내부 네트워크에서 외부 네트워크로 보내는 응답을 송신 패킷이라고 정의할 때 다음과 같은 방식으로 동작합니다.
- 수신 패킷이 방화벽에 도착하면 정책에 맞는지 확인합니다.
- 정책에 따라 허용되는 패킷이라면 이에 대응하는 세션 테이블을 생성합니다.
- 수신 패킷은 내부 네트워크 서버에 도착합니다.
- 내부 네트워크 서버는 적절한 응답을 반환합니다.
- 송신 패킷이 방화벽에 도착합니다.
- 방화벽에서 관리 중인 세션 테이블에서 송신 패킷의 출발지, 목적지의 IP, 포트가 일치하는 값이 있다면 이를 통과시킵니다.
- 송신 패킷은 정상적으로 클라이언트에게 전달됩니다.
- 연결이 종료되면 세션 테이블에 관리되는 세션을 삭제합니다.
- 구현에 따라 다르지만, 일정 시간 동안 트래픽이 없는 경우 연결이 종료된 것으로 판단합니다.
상태 추적 방화벽은 다음과 같은 장점이 있습니다.
- 수신과 관련된 보안 정책만으로 방화벽을 구성할 수 있습니다.
- 신뢰 수준이 낮은 네트워크에서 내부 네트워크로 진입하는 수신 규칙만 정의합니다.
- 수신 패킷이 방화벽 정책에 의해 허용되었다면 내부 네트워크에서 외부로 응답하는 송신 패킷은 방화벽을 정상적으로 통과합니다.
- 세션 테이블에서 관리되는 연결(connection)에 속하는 패킷이라면 별도의 정책 확인이 없으므로 일반적으로 높은 속도를 제공합니다.
상태 추적 방화벽은 다음과 같은 문제점이 있습니다.
- 세션을 관리하다보니 동시에 관리 가능한 세션 수를 초과하면 더 이상 세션을 생성할 수 없습니다.
- 신규 트래픽을 처리할 수 없는 상황이 발생합니다.
- DDos(Distributed Denial of Service) 공격처럼 대량의 트래픽을 발생시키는 공격에 취약합니다.
3.3. 3rd Firewall: Application Firewall
초창기 네트워크를 기반의 공격 패턴이 발달하면서 패킷 필터 기반의 방화벽으로 방어가 어려워지기 시작합니다. 이런 문제를 해결하기 위해 패킷의 내용을 검사하고 어플리케이션에 어떤 영향을 미칠지 분석하는 방화벽이 만들어집니다.
- IPS(Intrusion Prevention System)
Intrusion Detection and Prevention System
으로 불리기도 합니다.- 네트워크 보안 프로그램으로 네트워크와 악의적인 시스템 동작을 모니터링합니다.
- 악의적인 동작에 관련된 정보를 수집하고, 리포팅(reporting)합니다.
- 보안 관리자에게 수집한 이벤트들에 관련된 정보를 알립니다.
- WAF(Web Application Firewall)
- 일반적인 네트워크 방화벽보다 웹 어플리케이션 보안에 특화된 방화벽입니다.
- SQL Injection, XSS(Cross-Site Scripting) 같은 웹 공격을 탐지하고 차단합니다.
- 웨 공격 대응 이 외에도 정보 유출 방지, 부정 로그인 방지, 웹 사이트 위변조 방지 등으로 활용합니다.
- UTM(Unified Threat Management)
- 여러 개의 보안 도구를 이용한 관리 시스템입니다.
- 방화벽, 가상 전용 네트워크(VPN), 침입 차단 시스템, 웹 컨텐츠 필터링, 안티 스팸 소프트웨어 등을 포함합니다.
댓글남기기