네트워크 보안의 초석, 방화벽에 대한 기본적인 개념과 기본적인 종류를 살펴보자.
네트워크의 가장 기본 개념 OSI 7계층 등의 핵심 내용은 다른 장에서 다룰 예정이다. 오늘날의 방화벽의 가장 기원은 "라우터의 필터 기능 활용, 트래픽 제어 기능 사용"이다. 네트워크에서 데이터 통신을 한다는 개념은, 📃 덩어리 형태의 데이터를 최대 1500byte 크기로 잘게 여러 조각으로 쪼개어 묶은걸 주고 받는 다고 생각하면 된다.
왜 1500byte가 최대인가? 에 대한 질문은 기본적인 7계층에 대한 이해와 "MTU" 대해 찾아 보는 것을 추천한다.
방화벽(防火壁) 또는 파이어월(firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다. 방화벽은 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크(예: 인터넷) 간의 장벽을 구성한다. 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다. (Wiki)
다른 서버, 네트워크 구간 들 사이 벽이라고 생각하면 된다. 이 벽이 S/W, H/W 모든 형태로 존재할 수 있다. 그리고 보통 네트워크 보안의 1차 방어선, 최전선에서 사용된다.
패킷 자체만을 보고 미리 설정된 정책에 따라 허용 또는 거부를 결정하는 초창기 방화벽은 1세대 방화벽이라고 한다. 방화벽 내부에서 상태(세션)를 관리하지 않는 기본 형태의 방화벽이다. 이 방화벽은 특정한 IP를 허용 또는 거부하거나 특정한 포트를 허용 또는 거부하는 용도로 사용된다.
장점
단점
1세대 방화벽의 "정책 많아 질수록 처리 속도 늦어짐", "돌아오는 패킷 허용으로 보안 취약 가능성", "FTP와 같이 파생 세션을 만드는 일부 프로토콜 지원 위해서는 결국 모든 포트 다 열어야 할 가능성"의 문제 때문에 패킷 단위 검사가 아닌 세션 단위 검사를 하는 스테이트 풀 검사가 등장했다. -> 연결이 시작되는 시점부터 끝날 때까지 모든 활동을 모니터링 한다.
기본적인 스테이트풀 검사는 다양한 파생 세션을 모두 처리하지 못하는 경우가 있는데, FTP의 능동적/수동적 데이터 세션등 복잡한 파생세션을 별도의 정책 추가 없이 모두 처리할 수 있는 확장된 스테이트풀 검사를 하는 방화벽도 있다.
더 자세한 글은 다음 브랜치 글을 추천한다. https://brunch.co.kr/@ka3211/5
초창기에 네트워크를 기반으로 하던 공격 패턴이 점차 발달하여 일상적인 트래픽과 같은 특성을 가지면서 시스템을 공격하는 형태로 발전하게 되었다. 패킷 필터 기반의 방화벽으로는 이러한 공격을 방어하기 어려워지면서 패킷의 내용을 검사하고 더 나아가서는 애플리케이션에 어떠한 영향을 미칠지를 분석하는 방화벽이 출현하기 시작한다. IPS, WAF, UTM 등으로 불리는 네트워크 장비들이 애플리케이션 방화벽이라고 할 수 있다.
다른 발전 방향으로는 IP 주소나 MAC 주소 같이 사용자가 기억하거나 이해하기 어려운 대상을 이용해서 방화벽 정책을 수립하던 과거의 방화벽과는 달리 새로운 방화벽들은 사용자에게 보다 친숙한 사람의 이름이나 도메인 주소를 이용해서 정책을 수립할 수 있게 하는 방화벽들도 속속 등장하고 있다.
모든 방화벽의 종류를 보기 보단, 핵심적인 방화벽을 살펴보자. "방화벽"의 기능으로써 구분과 구현 방법으로써의 구분을 한다.
Packet switching에서 패킷은 컴퓨터 네트워크의 가장 많이 사용하는 통신 방식이다. 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법을 말한다. 정보 전달의 단위인 패킷은 여러 통신 지점(Node)을 연결하는 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어된다.
패킷(packet, 문화어: 파케트, 소포)은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 패킷은 제어 정보와 사용자 데이터로 이루어지며, 이는 페이로드라고도 한다.
이 패킷을 검사해 미리 설정된 정책에 맞지 않을 경우 통과시키지 않도록 하는 형태의 방화벽을 패킷 필터라 한다. 패킷을 다룬다는 측면에서 TCP/IP의 네트워크 계층에서 동작하는 방화벽이다.
방화벽 관리자는 보호할 네트워크에 적용할 규칙 또는 정책을 설정하여야 하고 설정이 되어 있지 않다면 기본 정책이 적용된다. 흔히 커널 레벨에서 수행되고 프록시 방식에 비해 제한된 검사만을 수행하여 더 많은 트래픽을 처리할 수 있다는 장점이 있다.
패킷 필터 방화벽은 순수하게 패킷 자체를 볼 것인지, 패킷이 속하는 TCP 또는 UDP 세션 (또는 플로우 라고도 함)도 같이 관리할 것인지에 따라 다시 두 종류로 분류할 수 있다. 패킷 자체를 본다면 내부적으로 상태를 관리할 필요가 없으므로 이 종류를 스테이트리스 또는 무상태 방화벽이라 한다. 이 종류의 방화벽은 쉽게 구현할 수 있지만, 모든 패킷에 대해서 매번 정책을 검사하여야 하므로 정책이 많아질수록 속도가 느려지는 단점이 있다.
패킷이 속하는 세션을 관리하여 이 세션에 속하는 패킷들에 대해서 모두 동일한 처리를 하게 하는 방화벽의 종류를 스테이트 풀 방화벽이라 하고 "상태가 있는 방화벽" 또는 유상태 방화벽이라 번역할 수 있다. 방화벽은 두 통신 당사자 간에 세션이 생성될 수 있는 패킷 조합을 감지하여 동적 정책을 내부적으로 관리하며 이 세션에 속하는 패킷들은 방화벽 관리자에 의해서 한번 설정된 후 자주 바뀌지 않는 정적 정책에 비해서 빠르게 검색할 수 있는 동적 정책에 의해서 먼저 허용 또는 거부되므로 무상태 방화벽에 비해서 일반적으로 높은 속도를 제공할 수 있다.
유닉스 계열의 OS는 ipfw(FreeBSD), pf(OpenBSD 및 다른 BSD계열), ipf(다양한 유닉스에서 지원), iptables/ipchain(리눅스) 등의 다양한 커널 기반의 방화벽을 제공한다.
리눅스에서 실제 패킷 필터 작동, 더 자세히 알아보기
일반적으로 프록시는 중계기 등과 같이 대리로 어떤 행위를 하는 경우에 사용하는 단어다. 프록시 패턴, 프록시 서버 등으로 사용한다.
세션에 포함되어 있는 정보의 유해성을 검사하기 위해서 방화벽에서 세션을 종료하고 새로운 세션을 형성하는 방식의 방화벽. 출발지에서 목적지로 가는 세션을 명시적으로 또는 암시적으로 가로채어서 "출발지에서 방화벽까지의 세션과 방화벽에서 목적지까지의 두 세션으로 만든 다음", 하나의 세션에서 다른 세션으로 정보를 넘겨주기 전에 검사를 수행하는 형태이다. 패킷 필터에 비해서 방화벽에 더 많은 부하를 주어서 속도는 느리지만 더 많은 검사를 수행할 수 있고, 프로토콜 변경 등 추가적인 기능을 수행할 수 있다.
NAT은 컴퓨터 네트워킹에서 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
많은 방화벽은 네트워크 주소 변환 기능을 가진다. 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안 기능을 한다. 또한 내부에서 사용하는 IP 주소 수보다 더 적은 외부 IP 주소 수만 사용할 수 있기 때문에 인터넷 통신을 위해서 사용하는 모든 컴퓨터 수 만큼의 IP 주소를 구매할 필요가 없어져 경제적이다. 동시에 IPv4 주소를 더 효율적으로 이용할 수 있게 해서 IPv4 주소의 완전 고갈을 늦추고 있는 기능이기도 하다.
내부 IP 주소 개수보다 더 적은 외부 IP 주소를 사용하므로 하나의 외부 IP 주소 당 여러 내부 IP 주소가 짝 지어져야 한다. 이 때 내부에서는 서로 다른 세션이 외부에서는 하나의 세션으로 보일 경우가 생기며, 이처럼 세션 충돌이 생겼을 경우 출발지 포트를 변경하여 충돌을 피하는데 이를 포트 주소 변환 (PAT)라고 부르기도 한다.
네트워크 주소 변환을 위해서도 방화벽 정책과 같은 정책을 수립하여야 한다. 일반적으로 RFC1918에 정해진 내부 네트워크 대역인 10.0.0.0, 172.16.0.0, 192.168.0.0 대역을 내부 네트워크의 주소로 하고 이 네트워크 전체가 적은 수의 외부 IP 주소로 변환되도록 정책이 만들어져야 한다.
private ip(network) vs public ip(network) 개념도 같이 챙겨가자 : https://velog.io/@hidaehyunlee/%EA%B3%B5%EC%9D%B8Public-%EC%82%AC%EC%84%A4Private-IP%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
UTM(Unified Threat Management)이라고 불렸던 기능이 오늘날 NGFW라고 불려진다. 우선 UTM은 간단하게 말하면 통합 위현 관리 시스템이다. 방화벽, VPN, IPS, Anti-DDoS, Anti-Virus, Web-Filtering 등 여러가지 보안 기능을 결합시킨 시스템을 말한다.
NGFW(New Generation Firewall)은 일반적인 방화벽(FW), UTM의 한계 극복을 위해 만들어진 system이다. 보통 3세대 방화벽 기술의 일부로, 상황을 인지하는 지능형 보안 기능을 통해 애플리케이션 수준에서 고급 보안 위협을 해결하도록 설계된 것을 칭한다.
요즘 나오는 방화벽 솔루션들이 NGFW 수준이며, 아주 다양한 형태로 다양하게 제공되고 있다. 어떤 것이 NGFW 그 이상이다! 라고 규정하기는 어려운 상황인 것 같다.
소프트웨어 방화벽: CPU를 장착한 N/W장비 내부에 S/W이용해 방화벽 기능 구현한 것
하드웨어 방화벽: ASIC(특정 용도용 집적회로, 주문형 반도체)를 활용해 방화벽 초당 패킷처리 수 늘리는 방법
NPU: 소프트웨어 기반의 방화벽은 속도를 빠르게 하기 힘들고, 순수 하드웨어 기반의 방화벽은 유연성이 떨어지기 때문에 양쪽의 장점만을 취하는 방법이 발달하기 시작했다. 공통으로 사용되는 패킷처리 함수를 하드웨어로 구현하되 프로그래밍도 가능하게 만든것, 등이 있다.
추가로 리눅스 기반 OS에서 방화벽을 어떻게 다루는지 가볍게 살펴보자.