7장. 방화벽

많은 사람들이 정보 보안이란 제품이라기 보다는 하나의 과정이라고 생각하고 있습니다. 그러나 표준 보안 구현을 위해서는 일반적으로 여러 형태의 전용 도구를 사용하여 접근 권한을 제어하고 권한을 가진 사용자에게만 네트워크 자원에 접근을 허용하며 사용자를 식별하고 추적합니다. Red Hat Enterprise Linux는 관리자와 보안 엔지니어들이 네트워크 수준의 접근 제어 작업하는데 도움이 될 강력한 도구들을 제공합니다.

방화벽은 6 장에서 다루어진 IPsec과 같은 VPN 솔루션과 함께 네트워크 보안 실행에 사용되는 핵심 요소입니다. 여러 업체에서는 가정용 컴퓨터 보호에서부터 중요한 기업 정보를 보호하는 데이터 센터 솔루션에 이르기까지 다양한 시장 요건에 맞는 방화벽 솔루션을 판매하고 있습니다. 방화벽은 Cisco, Nokia 및 Sonicwall 사에서 내놓은 방화벽 장치와 같은 독립형 하드웨어 솔루션도 있습니다. 또한 Checkpoint, McAfee, Symantec과 같은 업체에서 가정과 기업용으로 개발한 사유 소프트웨어 방화벽 솔루션도 존재합니다.

하드웨어와 소프트웨어 방화벽 간의 차이점 말고도 각 솔루션마다 다른 기능을 제공합니다. 표 7-1에서는 자주 사용되는 3가지 유형의 방화벽과 기능을 보여줍니다:

방법설명장점단점
NAT네트워크 주소 변환 (NAT)은 외부에 알려진 IP 주소와는 다른 IP 주소를 내부 네트워크에서 사용하여 모든 요청이 여러 주소가 아닌 한 주소로 향하는 것처럼 주소 변환 과정을 거쳐 보안을 강화합니다.

LAN 상 시스템에 투명하게 설정 가능합니다
한 개 이상의 외부 IP 주소를 사용하는 다수의 시스템과 서비스를 보호하여 관리자의 임무를 줄여줍니다
NAT 방화벽/게이트웨이 상의 포트를 열고 닫음으로서 LAN으로 들어오고 나가는 사용자를 제한 설정할 수 있습니다

일단 사용자가 방화벽 외부의 서비스에 연결하면 해킹 행위를 방지할 수 없습니다

패킷 필터패킷 필터링 방화벽은 LAN 내에서 그리고 외부에서 전달되는 모든 데이터 패킷을 읽습니다. 패킷 헤더 정보를 읽고 처리한 후 방화벽 관리자가 프로그램한 규칙에 따라 패킷을 걸러냅니다. 리눅스 커널은 넷필터(Netfilter) 커널 하부 시스템을 통한 내장된 패킷 필터링 기능을 갖추고 있습니다.

iptables 프론트 엔드 유틸리티를 사용하여 사용자 정의 가능합니다
모든 네트워크 활동이 응용 프로그램 수준이 아닌 라우터 수준에서 필터되므로 클라이언트에서 사용자 정의할 필요가 없습니다
패킷이 프록시를 통하여 전송되지 않으므로 클라이언트가 원격 호스트에 직접 연결할 수 있어 네트워크 성능이 훨씬 빨라집니다

프록시 방화벽과 같은 내용을 패킷 필터하지 못합니다
패킷을 프로토콜 계층에서는 처리 가능하지만 응용 계층에서는 패킷을 거르지 못합니다
복잡한 네트워크 구조 때문에 패킷 필터링 규칙을 수립하는 것이 힘들어집니다. 특히 IP masquerading이나 지역 서브넷과 DMZ 네트워크가 함께 사용되면 더더욱 그러합니다

프록시프록시 방화벽은 LAN 클라이언트로부터 프록시 기계로 들어오는 모든 요청에서 특정 프로토콜이나 유형을 걸러낸 후 이러한 유형을 로컬 클라이언트를 대신하여 인터넷에 보냅니다. 프록시 기계는 악의를 가진 원격 사용자와 내부 네트워크 클라이언트 기계 사이에서 버퍼로 작동합니다.

관리자가 LAN 외부에서 응용 프로그램과 프로토콜의 기능을 제어할 수 있습니다
일부 프록시 서버는 데이터를 캐시 저장하여 클라이언트가 인터넷 대신 로컬 캐시에서 자주 요청한 데이터를 찾아볼 수 있도록 해줍니다. 따라서 불필요한 대역폭 소모를 줄일 수 있습니다
프록시 서비스를 기록하여 자세히 모니터 가능하기 때문에 네트워크 상 자원 이용을 보다 엄격하게 제어할 수 있습니다

프록시는 종종 특정 응용 프로그램에만 사용되며 (HTTP, telnet 등) 또는 사용 가능한 프로토콜이 한정되어 있습니다 (대부분의 프록시는 TCP 연결된 서비스만 가능합니다)
응용 서비스는 프록시가 사용된 경우 실행되지 않기 때문에 응용 서버는 다른 유형의 네트워크 보안을 사용해야 합니다
프록시를 사용하면 클라이언트에서 직접 원격 서비스에 연결하지 않고 모든 요청와 전송이 한 개의 소스를 통과해야 하므로 병목 현상을 초래할 수 있습니다

표 7-1. 방화벽 유형

7.1. Netfilter와 iptables

리눅스 커널은 Netfilter라는 강력한 네트워킹 하부시스템을 제공합니다. netfilter 하부시스템은 NAT 및 IP 마스커레이딩 서비스를 비롯하여 상태를 계속 추적하는 (stateful) 패킷 필터링 또는 상태를 정의하지 않고 독립적인 (stateless) 패킷 필터링을 제공합니다. Netfilter는 또한 고급 라우팅과 연결 상태 관리를 위해 IP 헤더 정보를 검색하여 볼 수 있는 기능도 갖추고 있습니다. Netfilter는 iptables 유틸리티를 통해 제어됩니다.

7.1.1. iptables 개요

ipchainss 인터페이스를 통하여 netfilter가 실행됩니다. 이 명령행 도구는 이전에 사용되는 ipchains와 유사한 구문을 사용하지만, ipchains는 netfilter 하부시스템을 사용하여 네트워크 연결, 감시와 처리 기능을 강화하였습니다. 반면 ipchains는 소스와 목적 경로에 필터링하는데 연결 포트 뿐만 아니라 복잡한 규칙을 사용하였습니다. ipchains는 한 줄의 명령행 인터페이스에 고급 로깅 기능, 라우팅 이전(pre-routing)과 라우팅 이후(post-routing) 작업 기능, 네트워크 주소 변환 및 포트 포워딩과 같은 모든 기능을 제공합니다.

이 부분에서는 iptables에 대한 기본적인 정보를 제공합니다. iptables에 대한 자세한 정보를 원하신다면 Red Hat Enterprise Linux 참조 가이드를 참조하시기 바랍니다.