보안

Windows Vista 방화벽 관리

Jesper M. Johansson

 

한 눈에 보기:

  • 규칙 유형 및 시나리오
  • 방화벽 프로필
  • 도메인 격리 규칙
  • 아웃바운드 필터링의 문제

얼마 전 저는 Windows Vista 방화벽에 대한 글을 블로그에 남겼습니다. 당시 몇 가지 뛰어난 기능을 간단히 소개했지만 배포에 대한 조언은 별로 없었습니다.

이 글에서는 엔터프라이즈 관리를 용이하게 하는 Windows Vista® 방화벽의 기능을 보다 자세히 설명하고자 합니다. 또한 업무를 더욱 간소화하고 사용자를 더욱 안전하게 보호하는 방법에 대해서도 말씀드리겠습니다.

최근 Windows Vista SP1의 발표로 Windows Vista 엔터프라이즈 배포를 고려 중인 분이 계실 것입니다. (보통 기업에서는 새로운 OS로 마이그레이션하기 전에 첫 번째 서비스 팩이 발표될 때까지 기다립니다.) Windows Vista를 전보다 더 심각하게 고려 중인 엔터프라이즈 환경의 IT 전문가라면 방화벽에 대해 자세히 알아볼 필요가 있습니다. Windows Vista 방화벽의 가능성을 알고난 뒤에는 타사의 보안 패키지 계약에서 방화벽 제품을 빼고자 할 수도 있습니다.

Windows 방화벽의 과거와 현재

처음 릴리스된 Windows® XP의 방화벽에는 부족한 부분이 많았습니다. 당시 상용 호스트 기반 방화벽의 보안 기능을 대체하기에는 충분했지만 새롭거나 혁신적인 기능은 없었습니다.

Windows XP SP2의 방화벽은 완전히 바뀌었습니다. 특히 엔터프라이즈 관리가 용이하도록 설계되었습니다. Windows XP SP2 방화벽은 경량이며, 중앙에서 관리가 가능하고, 효과적이며, 방해가 되지 않는다는 점에서 매우 매력적입니다. 그러나 Windows XP SP2 방화벽의 가장 중요한 기능은 부팅 시 시스템을 보호하는 점이라고 생각됩니다.

이 마지막 기능은 매우 중요합니다. 과거에는 방화벽을 사용하고 있는데도 부팅 중 감염되는 시스템이 많았습니다. 사실 Blaster가 최고로 유행할 때는 4분에 하나씩 공격을 받을 정도였습니다. 즉, 보호되지 않은 컴퓨터로 인터넷에 접속할 경우 평균 4분에 한 대씩 감염될 수 있다는 것입니다. 그리고 부팅 시 시스템을 보호하지 않는 방화벽을 사용할 경우 12대 중 한 대가 재부팅 시 감염되었습니다. 이 수치는 Microsoft가 Windows XP SP2 방화벽이 부팅 시 시스템을 보호하도록 만드는 계기가 되었습니다.

Windows Vista에서 방화벽은 다시 한 번 탈바꿈하게 됩니다. 관리 측면에서 가장 눈에 띄는 변화는 IPsec(Internet Protocol Security)와 방화벽의 관리 인터페이스가 통합된 것입니다. 이것은 매우 자연스러운 변화입니다. IPsec와 방화벽은 둘 다 허용되지 않는 것을 차단하기 위해 설계되었습니다. 차이점이라면 방화벽의 경우 허용 항목을 정의하는 매개 변수가 별로 세밀하지 않고, IPsec에서는 대량의 주소 공간을 차단하거나 허용하기가 불편하다는 것입니다.

관리 인터페이스 하나에 두 기능이 모두 있다면 관리자는 어디에는 IPsec 규칙이 필요하고 어디에는 방화벽 필터가 필요한지 염려하지 않고 두 가지 기술을 효과적으로 활용할 수 있습니다. 즉, 시스템의 네트워크 공격 지점을 한꺼번에 볼 수 있으며 이로써 실수를 저지를 위험이 최소한으로 줄어듭니다.

Windows Vista SP1의 방화벽은 몇 가지 향상된 안정성 기능을 갖추고 있습니다. 또한 IPsec용의 새로운 기능(특히 Suite B 알고리즘)이 추가되었습니다. 이것은 AES(Advanced Encryption System), ECC(Elliptic Curve Cryptography), SHA(Secure Hash Algorithm) 256 및 384로 구성된 암호화 관련 알고리즘의 집합입니다.

그러나 가장 중요한 점은 서비스 팩 1에 NAP(네트워크 액세스 보호) 지원이 추가되었다는 것입니다. NAP는 관리되고 보안이 유지된 클라이언트가 네트워크에 연결하기 전에 최신 보안 정책, 업데이트 및 맬웨어 방지 정의를 적용하는 정책 적용 도구입니다. 악성 호스트의 네트워크 연결을 NAP로 막을 수는 없지만, 크게 손상되지 않은 한 관리되는 모든 호스트에 정책이 철저하게 적용되도록 할 수는 있습니다.

고급 보안 기능의 Windows 방화벽이라고 불리는 Windows Vista 방화벽은 Windows Server® 2008에도 포함됩니다. 모든 기능은 원격으로 관리가 가능하며 그룹 정책을 사용하여 네트워크 전체에 대해 구성할 수 있습니다.

규칙 유형 및 시나리오

방화벽과 IPsec 기능을 관리 인터페이스에 결합한 결과 방향 규칙과 연결 규칙이라는 두 가지 서로 다른 유형의 규칙이 존재하게 되었습니다. 방향 규칙은 해당 방향에서 허용할 트래픽을 정의하는 표준 방화벽 규칙입니다. 연결 규칙은 컴퓨터 간 연결에 대한 보호 매개 변수를 정의합니다. 방향 규칙은 이전의 방화벽에서 사용하던 방화벽 규칙과 유사하고, 연결 규칙은 Windows XP SP2에서 방화벽과 함께 사용하던 IPsec 규칙과 유사합니다.

방화벽과 IPsec를 한 인터페이스에 결합한 결과 여러 가지 매우 흥미로운 시나리오가 가능해졌습니다. 예를 들어, 네트워크에서 시스템을 서로 격리하는 것은 오늘날 매우 중요한 보안 개념 중 하나입니다. Microsoft에서는 이것을 "서버와 도메인 격리"라고 합니다.

서버와 도메인 격리에서는 IPsec 기능과 방화벽 기능을 모두 사용합니다. 따라서 새로운 방화벽 관리 인터페이스에 격리 규칙을 위한 기능을 추가했습니다. 이 기능은 도메인 구성과 같이 소스 또는 대상 시스템의 속성을 기준으로 연결을 제한할 때 유용합니다.

그림 1에서 보듯이 "새 연결 보안 규칙 마법사"를 시작하면 어떤 유형의 규칙을 만들 것인지 묻습니다. "격리"를 선택하면 마법사가 격리 규칙에 맞는 설정을 미리 구성해 줍니다.

그림 1 새 연결 보안 규칙 마법사로 격리 규칙 만들기

그림 1** 새 연결 보안 규칙 마법사로 격리 규칙 만들기 **(더 크게 보려면 이미지를 클릭하십시오.)

그림 1을 보면 격리 규칙에 상태도 나타남을 알 수 있습니다. 서버와 도메인 격리에 사용되는 규칙은 사실 NAP에 사용하는 규칙과 동일합니다.

일부 유형의 트래픽에는 인증을 적용할 수 없습니다. 예를 들어, DNS 확인을 위해 인증을 요구하는 일은 없을 것입니다. 이러한 유형의 트래픽 끝점에 대해서는 인증 예외 규칙이 필요합니다. 인증 예외 규칙이란 말 그대로 IPsec 요구 사항에서 해당 트래픽을 제외하는 것입니다.

서버 간 규칙은 이름이 약간 잘못 붙여졌습니다. 서버에서 더 많이 사용되기는 하지만 클라이언트에서도 사용할 수 있습니다. 서버 간 규칙에서는 인증을 요구하도록 연결을 구성합니다. 격리 규칙의 경우 인증을 요구하고 도메인 구성 또는 상태와 같이 추가 기준의 이행을 요구한다는 점에서 서버 간 규칙과 다릅니다.

터널 규칙에서는 기본적으로 사이트 간 VPN(가상 사설망)과 게이트웨이 간 터널을 정의합니다. Windows Vista를 게이트웨이에 사용하는 일은 거의 없으므로 Windows Vista에서 터널 규칙은 거의 사용되지 않습니다. 완전히 사용자 지정된 규칙을 만들고 이를 통해 규칙의 모든 매개 변수를 사용자 지정할 수 있습니다.

규칙 순서 지정

규칙 순서 지정은 얼핏 보면 약간 복잡합니다. 규칙 순서 지정을 이해하는 비결은 먼저 순서를 잊는 것입니다. 이것은 순서 지정이라기보다 일치 항목을 선택하는 것에 더 가깝습니다. 인바운드 트래픽을 예로 들어보겠습니다. 허용 규칙과 일치하지 않는 인바운드 트래픽은 기본적으로 차단됩니다. 이것을 "허용 규칙부터 고려"하는 순서 지정으로 생각할 수 있지만 완전히 정확하지는 않습니다. 특정 패킷이 허용 규칙과 차단 규칙 양쪽에 모두 일치하는 경우 차단 규칙이 우선합니다. 간단히 말해, 일치는 다음과 같습니다.

  1. 차단 규칙. 이러한 규칙 중 하나와 일치하는 패킷 또는 연결은 삭제됩니다.
  2. 허용 규칙. 이러한 규칙 중 하나와 일치하는 패킷 또는 연결은 허용됩니다.
  3. 기본 방향 프로필 동작. 일치하는 차단 규칙 또는 허용 규칙이 없는 트래픽은 프로필에 해당 방향의 프로필에 대해 기본값으로 지정된 동작에 따라 처리됩니다. 모든 프로필에서 인바운드 방향은 기본 구성에서 해당 트래픽 차단을 의미합니다. 아웃바운드 방향은 기본적으로 기본 구성에서 트래픽을 허용한다는 의미입니다.

일치 프로세스는 인증된 우회(IPsec) 규칙으로 조정할 수 있습니다. 이 규칙 유형을 사용하면 규칙의 다른 매개 변수와 일치하는 모든 인증된 트래픽은 다른 규칙과의 일치 여부에 상관없이 허용됩니다. 인증된 우회 규칙은 그림 2와 같이 차단 규칙 무시 옵션이 선택된 방향 규칙입니다. 이러한 규칙은 인증된 트래픽이 시스템에 항상 도달하도록 하기 위해 가장 먼저 고려됩니다. 이것은 인증된 호스트의 트래픽을 허용하면서 다른 호스트의 트래픽은 손쉽게 차단하는 방법입니다. 이 규칙을 순서 지정에서 0순위로 고려할 수 있습니다. 따라서 전체 규칙 순서 목록은 다음과 같습니다.

그림 2 차단 규칙 무시 옵션을 선택하여 인증된 우회 규칙 구성

그림 2** 차단 규칙 무시 옵션을 선택하여 인증된 우회 규칙 구성 **(더 크게 보려면 이미지를 클릭하십시오.)

0. 인증된 우회 규칙

1. 차단 규칙

2. 허용 규칙

3. 기본 방향 프로필 동작

각 클래스에 트래픽 패턴과 일치하는 규칙이 여럿 있어도 별로 상관 없습니다. 트래픽과 일치하는 규칙이 나타나는 즉시 규칙 처리가 중지됩니다.

공개, 개인 및 도메인

네트워킹 리소스

새 방화벽에는 공개, 개인 및 도메인의 세 가지 프로필이 있습니다. 반면, Windows XP SP2 방화벽에는 표준과 도메인의 두 가지 네트워크 프로필이 있습니다. 도메인 프로필은 컴퓨터에서 도메인 컨트롤러를 찾을 수 있는 경우 자동으로 호출됩니다. 그렇지 않은 경우 Windows XP에서는 표준 프로필을 사용했습니다. 로밍 중인 컴퓨터를 완전히 잠그면서도 조직의 네트워크에서는 필요한 원격 관리 기능을 모두 허용하는 이 프로필은 보안 관리자를 위한 강력한 기능을 제공했습니다. 그러나 일부 사용자(특히 가정의 개인 네트워크 사용자)의 경우에는 약간의 문제가 있었습니다. 도메인 컨트롤러에 접근할 수 없을 때 언제나 표준 프로필을 사용했기 때문에 사용자의 가정에서는 시스템이 차단되었습니다.

Windows Vista의 새로운 개인 프로필은 이 문제를 해결하는 데 도움이 됩니다. 이제 시스템을 새 네트워크에 연결하면 네트워크가 공개(이전 표준 프로필의 새 이름)인지 아니면 개인인지 묻고 그에 따라 시스템을 구성합니다. 시스템은 네트워크의 인프라 서버에서 제공하는 네트워크 매개 변수를 기준으로 특정 네트워크에 연결될 때마다 해당 프로필을 기억합니다. 이 방법은 그렇게 간단하지 않지만 더 많은 네트워크를 효율적으로 차단하는 데 도움이 됩니다.

시스템이 도메인에 있는지 여부를 감지하는 논리도 향상되었습니다. 보다 빠르고 안정적인 전환이 가능해졌으며, 시스템이 실제로 도메인에 있을 때 공개 또는 개인 프로필을 사용하는 경우가 적어졌습니다.

규칙을 특정 유형의 네트워크에 연계함으로써 너무 많은 정보가 노출되거나 신뢰할 수 없는 네트워크의 시스템에 연결하지 않도록 할 수 있습니다. 이것은 방화벽과 IPsec의 통합으로 얻을 수 있는 이점 중 하나입니다.

이러한 새 규칙을 사용하면 이전에는 불가능하던 몇 가지 제한을 적용할 수 있습니다. 예를 들어, 수 년간 Windows 네트워킹에서 공격자들은 사용자가 신뢰할 수 없는 호스트에 SMB(서버 메시지 블록) 연결하도록 유도한 뒤 인증 시퀀스를 통해 암호 해킹에 필요한 질의-응답 쌍을 얻으려고 유인하는 공격을 시도했습니다. 이 공격의 이전 버전은 일반 텍스트 인증으로 다운그레이드하거나 사용자의 질의-응답 쌍을 원래 컴퓨터에 반영시키는 데 사용되기도 했습니다. 앞의 방법은 몇 년 전 해결되었습니다. 뒤의 방법은 Windows XP SP2에서 그 위험이 줄어들었지만 질의-응답 쌍을 노출하는 것은 현명하지 않은 행동입니다.

Windows Vista 방화벽의 또 다른 새 기능인 아웃바운드 필터링으로 이를 방지할 수 있습니다. 예를 들어, 관리자는 공개 프로필에서 모든 아웃바운드 SMB 연결(TCP 135, 139, 445 및 UDP 137, 138, 445 포트 연결)을 차단하도록 결정할 수 있습니다. 그러면 유인 공격에서 질의-응답 쌍을 얻기 위해 시스템을 사용하기가 더욱 어려워지고 인터넷에서 신뢰할 수 없는 Windows 파일 공유에 액세스하지 못하게 됩니다.

다시 말하지만 이 방법은 간단하지 않습니다. 예를 들어, 시스템의 보안이 이미 무력화되었다면 공격자가 간단히 규칙을 사용하지 않도록 설정할 수 있으므로 이 규칙으로 시스템의 통신을 막을 수 없습니다. 그러나 잘 작동하지만 위험에 노출될 수 있는 시스템을 보호하는 방법으로는 매우 유용할 수 있습니다.

Windows XP SP2와 마찬가지로 Windows Vista 및 Windows Server 2008에서도 한 번에 하나의 프로필만 활성화할 수 있다는 것을 기억해야 합니다. 시스템에 네트워크 인터페이스가 두 개 있는데 하나는 도메인에 있고 다른 하나는 공개 네트워크에 있는 경우 공개 방화벽 프로필이 양쪽 네트워크에 적용됩니다. 언제나 가장 제한적인 프로필이 사용됩니다. 짐작하시겠지만 공개 프로필이 개인 프로필보다 제한적이고, 개인 프로필이 도메인 프로필보다 제한적입니다. 따라서 아웃바운드 SMB 차단 규칙은 VPN 연결을 통해 많은 트래픽을 허용할 수 있습니다.

컴퓨터가 공개 또는 개인 네트워크에 있을 때 VPN 연결을 통한 트래픽을 허용하려면 VPN 인터페이스에만 적용되는 방향 규칙을 만듭니다. 이것이 작동하려면 Windows가 VPN 인터페이스를 그렇게 인식해야 합니다. Microsoft® 라우팅 및 원격 액세스 서비스 VPN 서버를 사용하지 않는 경우, 전체적으로 구현하기 전에 이 기능을 테스트하십시오. 클라이언트로 들어오는 인바운드 트래픽과 사용자 지정 아웃바운드 규칙에서 주로 문제가 발생할 수 있습니다.

방화벽 규칙 만들기

방화벽 규칙 만들기는 새 방화벽에서 더욱 쉬워졌습니다. 그림 3의 새 규칙 마법사에서 모든 일반 유형의 규칙을 정의할 수 있습니다. 그리고 여기에는 특정 서비스용으로 사전 정의된 규칙도 포함됩니다.

그림 3 새 규칙 마법사에서 사전 정의된 규칙

그림 3** 새 규칙 마법사에서 사전 정의된 규칙 **(더 크게 보려면 이미지를 클릭하십시오.)

사전 정의된 규칙은 특히 중요합니다. 서버 격리는 기본적으로 꼭 필요한 시스템에서만 서비스를 사용할 수 있도록 제한하는 것입니다. 서버 제품에서 Windows 보안 구성 마법사(SCW)를 사용하여 비교적 쉽게 이 작업을 수행할 수 있습니다. (TechNet Magazine 2008년 3월호에서 SCW에 대해 다루었습니다.)

그러나 클라이언트 버전의 Windows에는 아직까지 이와 유사한 기능이 없습니다. 사전 정의된 규칙 유형을 사용할 경우 서비스에 사용되는 끝점을 파악하는 것과 같은 힘든 작업이 대부분 사라집니다. 방화벽은 "iSCSI 서비스"가 나타내는 프로그램이 무엇인지 안다는 점에서 응용 프로그램을 인식할 뿐 아니라, 특정 기능을 설명하는 사전 정의된 규칙도 포함하고 있습니다. 그러므로 어떤 규칙으로 어떤 컴퓨터를 커버할 것인지만 생각하면 됩니다. 이것도 어렵고 시간이 많이 걸리기는 하지만 적어도 사용자의 환경에 맞출 수 있습니다.

인증 방화벽에서 기대할 수 있는 유연성을 모두 갖춘 사용자 지정 규칙(그림 3에 드롭다운으로 가려져 있음)도 있습니다. 예를 들어, IPsec 암호화 트래픽만 허용하는 규칙을 원한다면 그림 2에 표시된 마법사의 "동작" 페이지에서 보안 연결만 허용하는 옵션을 선택합니다.

이 옵션을 선택하면 암호화를 사용하는 옵션도 활성화됩니다. 이 옵션을 비워 둘 경우 해당 트래픽은 ESP-NULL(NULL 키로 캡슐화된 보안 페이로드)을 사용합니다. IPsec을 인증에 사용하는 경우 이 방법을 권장합니다. 그러면 트래픽이 암호화 없이 네트워크를 통과하므로 대부분의 네트워크 관리 도구를 계속 사용할 수 있고, 암호화를 원할 때는 확인란을 선택하기만 하면 됩니다.

많은 경우 네트워크 트래픽의 암호화는 악성 호스트로부터 트래픽을 받지 않는 것만큼 중요하지는 않습니다. 네트워크에서 트래픽 암호화를 통해 네트워크에 대한 액세스 권한을 얻은 악성 사용자가 패킷 내용을 보지 못하도록 막을 수 있습니다. 인증을 요구하면 패킷 자체를 전송하지 못하게 되므로 공격을 피할 수 있습니다. 네트워크 수준 암호화가 필요한 상황이 많다는 것은 분명하지만, 인증만으로 충분한 상황도 많습니다.

도메인 격리 규칙 만들기

대부분의 환경에서는 제한된 수의 컴퓨터만 워크스테이션에 트래픽을 보낼 수 있도록 하려고 할 것입니다. 적어도 모든 워크스테이션은 도메인 격리 규칙으로 구성되어야 합니다. Windows XP에서 복잡하던 이 작업이 Windows Vista에서는 쉬워졌습니다.

우선 관리 도구를 열고 "연결 보안 규칙" 노드를 선택합니다. 그런 다음 노드를 마우스 오른쪽 단추로 클릭하고 "새 규칙"을 선택하면 그림 1과 같은 대화 상자가 나타납니다. "격리" 규칙을 선택하고 "다음"을 클릭합니다. 이제 규칙을 강제로 적용할지 여부를 선택해야 합니다. 대부분의 워크스테이션에서는 인바운드 트래픽에 대한 인증이 필요합니다. 그러면 도메인에 가입되지 않은 컴퓨터가 워크스테이션에 트래픽을 보낼 수 없게 됩니다. 하지만 인프라 서비스에서 서비스를 요청하려면 시스템에서 일부 아웃바운드 트래픽이 암호화 없이 통과하도록 허용해야 합니다. 그러므로 가장 좋은 옵션은 인바운드 연결에는 인증을 사용하고 아웃바운드 연결에는 인증을 요청하는 것입니다.

이제 인증 방법을 선택합니다. 기본 선택은 "기본값"입니다. 별로 도움 되는 이름은 아니죠? 고급 보안이 설정된 Windows 방화벽 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택하면 나타나는 IPsec 속성에서 각 컴퓨터의 기본 인증 방법을 구성할 수 있습니다. 기본 인증 방법은 항상 가장 단순하면서도 안전한 Kerberos입니다. 그러나 확실히 하기 위해 말씀드리지만 규칙을 만들 때 이 방법을 실제로 선택하는 것이 좋습니다. 대개 사용자는 제외하고 컴퓨터만 인증하기를 원합니다. 둘 다 인증하도록 요구할 경우 익명으로 전송된 SNMP 트래픽과 같은 특정 유형의 관리 트래픽을 받지 못할 수 있습니다.

인증 방법을 선택했으면 이 규칙을 사용할 프로필만 선택하면 됩니다. Kerberos 티켓을 제공할 수 있는 도메인에 가입한 컴퓨터에 적용되는 규칙이므로 개인 또는 공개 프로필에서 이 특정 출구를 열어둘 필요는 없습니다. 규칙을 저장하면 작업이 완료됩니다.

기본 격리 규칙은 더 이상 복잡하지 않습니다. 하지만 IPsec의 강력한 기능을 격리에 활용하려면 워크스테이션에서도 서버 격리를 구현해야 합니다. 이렇게 하면 워크스테이션에서 다른 클라이언트를 수신하지 않도록 제한할 수 있습니다. 대신 워크스테이션은 해당하는 관리 스테이션에만 응답합니다. 클라이언트 시스템이 다른 클라이언트에 대한 수신을 거부한다면 각종 맬웨어의 발생 비율이 얼마나 줄어들지 상상해 보십시오.

방화벽 스크립트 작성

새 방화벽에는 구현 및 평가를 스크립트할 수 있는 중요한 API가 있습니다. 구현에 그룹 정책을 사용하는 것이 이상적이지만, 그룹 정책을 항상 사용할 수 있는 것은 아니므로 적절한 API 집합으로 방화벽을 구성하는 것이 중요합니다. 이 API는 INetFWPolicy2 API 그룹에 속합니다. SDK(소프트웨어 개발 키트) 및 MSDN® Library에 이 API의 사용 방법에 대한 자세한 설명이 있으나 몇 가지 예를 통해 핵심을 이해할 수 있을 것입니다.

한 가지 일반적인 사례를 들자면 규칙 그룹의 사용 여부를 결정해야 할 때가 있습니다. 예를 들어, 응용 프로그램 또는 관리자가 시스템에서 파일 및 프린터 공유의 필요성 여부를 결정해야 한다고 가정합시다. 이 작업은 INetFWPolicy2::IsRuleGroupCurrentlyEnabled를 통해 가능합니다. 그림 4는 이 기능을 보여주는 VBScript 샘플입니다.

Figure 4 INetFWPolicy2::IsRuleGroupCurrentlyEnabled 사용

' Create the FwPolicy2 object.
Dim fwPolicy2
Set fwPolicy2 = CreateObject("HNetCfg.FwPolicy2")

' Get the Rules object
Dim RulesObject
Set RulesObject = fwPolicy2.Rules

'Create a profile object
Dim CurrentProfile
CurrentProfile = fwPolicy2.CurrentProfileTypes

'Check whether File and Printer Sharing is on, and turn it on if not
if fwPolicy2.IsRuleGroupEnabled(CurrentProfile, "File and Printer Sharing") <> TRUE then
    fwPolicy2.EnableRuleGroup CurrentProfile, "File and Printer Sharing", TRUE
end if

파일 및 프린터 공유 설정이 해제되어 있으며 이를 사용하도록 설정해야 하는 경우, 먼저 그러한 작업을 수행할 수 있는지와 그룹 정책에 의해 무효화되지 않을 것인지를 확인해야 합니다. 이 작업은 INetFWPolicy2::LocalPolicyModifyState API로 수행합니다. 실제 코드가 채워질 기본 구조는 다음과 같습니다.

Const NET_FW_MODIFY_STATE_OK = 0
Const NET_FW_MODIFY_STATE_GP_OVERRIDE = 1
Const NET_FW_MODIFY_STATE_NO_EXCEPTIONS = 2

Dim PolicyModifyState
PolicyModifyState = fwPolicy2.LocalPolicyModifyState
Select Case PolicyModifyState
  Case NET_FW_MODIFY_STATE_OK
  Case NET_FW_MODIFY_STATE_GP_OVERRIDE
  Case NET_FW_MODIFY_STATE_NO_EXCEPTIONS
End Select

명령줄 및 인터페이스 유형

관리에 사용할 적절한 명령줄이 없는 방화벽은 완전하지 않습니다. netsh에 advfirewall이라는 하위 컨텍스트가 있습니다. advfirewall 컨텍스트는 그래픽 UI에서 수행할 수 있는 모든 작업에 대한 명령줄 액세스를 제공합니다. 예를 들어, 포트 445에서 아웃바운드 차단을 구현하려는 경우 권한 상승된 명령줄에서 다음 명령을 실행할 수 있습니다.

netsh advfirewall firewall add rule name="Block CIFS Out in the Public profile"
dir=out action=block enable=yes profile=public
localIP=any remoteIP=any remoteport=445 protocol=TCP interfacetype=any

그런 다음 같은 명령을 실행하여 TCP를 UDP로 바꾸고 차단을 완료해야 합니다. 이로써 규칙 구현이 완료됩니다.

방화벽의 멋진 기능 중 하나는 네트워크 인터페이스 유형을 기준으로 규칙을 구성할 수 있다는 것입니다. 어떤 규칙은 VPN 연결에 영향을 줄 수도 있습니다. Windows에서 VPN 인터페이스로 인식하는 한, 이 유형의 규칙을 사용하여 해당 인터페이스를 통해 전달되는 트래픽을 제외시킬 수 있습니다.

netsh advfirewall firewall add rule name="Allow CIFS on VPN interfaces"
dir=out action=allow enable=yes profile=public localIP=any
remoteIP=any remoteport=445 protocol=TCP interfacetype=RAS

GUI에서도 이 작업을 수행할 수 있지만 규칙을 만들기 전까지는 불가능합니다. 이 경우 규칙을 마우스 오른쪽 단추로 클릭하고 "속성"을 선택한 다음 "고급" 탭을 클릭해야 합니다. 여기에 있는 "인터페이스 유형" 섹션에서 적절한 인터페이스 유형을 선택할 수 있습니다.

아웃바운드 필터링

Windows XP SP2 방화벽에 아웃바운드 필터링 기능이 없다는 사실은 내장 방화벽이 보안용으로는 부족하다는 주요 이유로 지적되었습니다. Windows XP SP2 방화벽은 아웃바운드 필터링 기능이 없기 때문에 안전하지 않다는 기사가 수천 가지나 있었습니다. 이것은 바꾸어 말하면 Windows XP에서는 어떠한 방화벽도 아웃바운드 필터링을 안전하게 제공할 수 없다는 것을 의미합니다.

아웃바운드 필터링을 단순한 과속 방지턱에서 유용한 보안 도구로 만드는 기본적인 기능(또는 정책 적용 도구)이 Windows XP에는 없습니다. 하지만 Windows Vista에서는 가능합니다. 따라서 새 방화벽에서는 이 기능을 사용할 수 있습니다. 기본적으로, 인바운드 트래픽은 대부분 차단되고 아웃바운드 트래픽은 대부분 허용됩니다.

새 Windows Vista 방화벽의 아웃바운드 필터링은 기본적으로 필요 없는 트래픽의 서비스 이용만 차단합니다. 이 기능은 사실상 아웃바운드 필터를 제공하는 호스트에서 공격 방어를 위해 수행할 수 있는 전부이며, Windows XP에서는 이 기능이 별 의미가 없었을 것입니다.

Windows Vista의 서비스는 매우 제한적인 토큰으로 실행할 수 있습니다. 기본적으로 각 서비스에는 고유한 보안 식별자(SID)가 있습니다. 이 서비스 SID를 사용하여 네트워크 포트와 같은 리소스에 대한 액세스를 제한할 수 있습니다. 이것은 앞에서 사용자에게 트래픽을 제한할 때 살펴보았던 기능과 동일합니다. 즉, NetworkService로 두 서비스를 실행할 수 있더라도 서로의 프로세스를 관리할 수는 없으며, 방화벽에서는 이 중 하나만 외부 통신이 가능하도록 구성할 수 있습니다. 차단된 서비스가 공격을 당하더라도 허용된 서비스는 영향을 받지 않으며, 포트는 서비스 SID로 제한되므로 허용되는 포트를 사용하여 외부와 통신할 수 있습니다.

이 기능은 Windows Vista에 추가된 훌륭한 보안 기능 중 하나이며, 새 방화벽에서는 아웃바운드 방화벽 필터링으로 뛰어난 보안 수준을 얻을 수 있습니다.

사실 서비스 SID에 대한 방화벽 필터링은 새 방화벽에서 기본적으로 사용됩니다. 하지만 이를 구성할 수 있는 GUI가 없습니다. 규칙은 HKLM\System\CurrentControlSet\services\sharedaccess\parameters\firewallpolicy\RestrictedServices 레지스트리 키에 사전 정의되어 있습니다. 그러나 이 키를 직접 수정할 수는 없으므로 주의해야 합니다.

아웃바운드 필터링으로 가능한 보안 수준

보안 커뮤니티에서 잘못 이해하고 있는 문제 중 하나는 아웃바운드 필터링의 실질적인 보안 가치가 얼마나 되느냐 하는 것입니다. 지금까지 아웃바운드 필터링을 통한 두 가지 보안 시나리오를 소개했지만, 둘 다 이전에는 사용할 수 없었던 Windows Vista의 새로운 기능을 사용하고 있습니다. 그럼에도 불구하고, 대개 아웃바운드 필터링이 유용하며 구매할 방화벽을 결정할 때 이 점을 중요하게 고려해야 한다는 생각이 일반적입니다.

아이러니하게도 아웃바운드 필터링 기능을 보고 방화벽을 구매한 많은 조직들이 일단 방화벽이 구현된 후에는 아웃바운드 필터링을 사용하지 않았습니다. 이것은 결국 정보 보안 그룹의 비용과 인력 낭비로 이어집니다. 실제 위협에 대한 실질적인 분석보다 무엇인가 보안에 좋을 것 같다는 느낌으로 방화벽을 구매하는 것 같습니다. 이렇게 "보안 위협"에 대한 느낌으로 결정을 내리지 말고, 사실을 기반으로 결정해야 합니다.

지지자들이 책임지지 못하는 아웃바운드 필터링에 대한 매우 단순한 사실이 있습니다. 호스트 기반 방화벽 제공업체들은 웜이나 악의적인 사용자의 공격을 받는 시스템이 아웃바운드 필터링을 통해 그 웜이 다른 시스템을 감염시키는 것을 막거나 공격자가 외부와 통신하지 못하도록 한다고 주장합니다. 그것은 사실이 아닙니다.

사실 다른 모든 조건이 같다면 지금까지 알려진 맬웨어를 아웃바운드 필터링으로 막을 수 있습니다. 하지만 Windows XP에 아웃바운드 필터링 기능이 있었다면 지금까지 발견된 웜 역시 이 기능을 해제하거나 회피하는 방법으로 만들어졌을 것입니다.

Windows XP(및 이전 버전의 Windows)에서 서비스로 실행되는 모든 웜(및 서비스로 실행되지 않는 모든 일반 웜)의 경우 그렇게 되었을 가능성이 있습니다. 그러나 그렇게 되지 않았던 한 가지 이유는 사실상 아웃바운드 필터링을 사용하는 환경이 없었고, 따라서 사용하지 않도록 할 필요가 없었기 때문입니다. 대화형 공격에서는 공격자가 마음대로 아웃바운드 필터를 회피할 수 있습니다. 임의 코드를 실행할 수 있는 공격자라면 간단한 작업입니다. 그리고 필요하다면 공격자는 사용자가 필터를 회피하도록 유인할 수도 있습니다.

아웃바운드 호스트 기반의 방화벽 필터 회피는 실제 공격 시나리오에 따라 여러 가지로 이루어질 수 있습니다. 가장 간단한 방법은 권한을 가진 사용자에게 그렇게 하도록 "요구"하는 것입니다. 아직도 너무 많은 환경에서 일반 사용자를 관리자로 실행하고 있습니다. 이러한 사용자는 원한다면 보안 정책을 회피할 권한이 있습니다. 공격자는 파악할 수 없고 즉각적이지 않은 보안 이점과 사용자에게 더 가치가 있는 어떤 것(유명한 춤추는 돼지 등) 중 하나를 사용자가 선택하도록 하기만 하면 됩니다.

많은 사용자는 이러한 유형의 대화 상자가 표시되면 실제로 무슨 일이 발생할지 예측하지 못하고 빠르게 마우스를 클릭합니다. 이것이 아웃바운드 필터링의 첫 번째 문제입니다. 보안이냐 아니면 춤추는 돼지처럼 흥미로운 것이냐, 둘 중 하나를 선택하라고 하는 대부분의 대화 상자에서는 결정을 내리는 데 필요한 실제 정보를 제공하지 않으므로 매번 춤추는 돼지가 이기게 됩니다.

보안 결정을 요구하는 대화 상자에 결정을 내리는 데 필요한 기본 정보를 충분히 표시하는 것은 생각만큼 쉽지 않습니다. 방화벽과 같은 보안 제품에서 요청하는 포트, 프로토콜 및 응용 프로그램을 이해해야 할 뿐만 아니라 그 요청이 실제로 무슨 의미이고 사용자에게 어떤 영향을 미치는지 알아야 하기 때문입니다. 이러한 정보는 프로그래밍을 통해 얻기가 매우 어렵습니다. 예를 들어, Microsoft Word가 아웃바운드 연결을 시도하고 있다는 사실은 그 연결을 통해 Word가 무엇을 시도하고 있는지만큼 흥미롭지가 않습니다.

의미 없는 대화 상자의 수를 늘리지 말고 줄여야 하는데, 아웃바운드 필터링 방화벽은 여기에 도움이 되지 않습니다. 사용자에게 꼭 필요한 정보를 제공한다는 주요 호스트 기반 방화벽 제공업체의 판촉물을 살펴보았습니다. 브로셔에서는 방화벽의 아웃바운드 필터링 기능과 권고 기능을 선전하고 있었습니다. 권고 기능은 사용자가 시도하려는 작업을 감지하고 적절한 권고를 해 줍니다. 또는 이론상 그렇게 한다고 되어 있습니다. 브로셔의 텍스트에는 스크린샷과 함께 "이 프로그램에는 아직 권고 기능을 사용할 수 없습니다. 자세한 내용은 아래를 선택하거나 추가 정보를 클릭하십시오."라고 되어 있습니다. 마케팅 자료를 보아도 이런 공급업체들은 정보가 담긴 대화 상자를 만들 수 없는 것 같습니다.

사용자에게는 올바른 보안 결정을 내리기 위한 정보가 없기 때문에 모든 아웃바운드 필터링을 구성하는 것은 관리자의 책임입니다. 따라서 관리자의 관리 부담이 크게 증가합니다.

방화벽의 질문에 사용자가 "아니요. 나중에 다시 알림"을 클릭하더라도 대개의 맬웨어는 방화벽을 회피할 수 있습니다. 악성 코드가 실행되는 동안 사용자가 일부 포트에서 아웃바운드 연결을 열 수만 있다면 악성 코드는 간단히 해당 포트를 사용할 수 있게 됩니다. 즉, 어떤 프로세스든 기존의 프로세스를 활용할 수 있습니다. 낮은 수준의 운영 체제에서는 이런 것이 허용됩니다. Windows Vista부터는 프로세스를 적절하게 제한할 수 있습니다. 이것이 기본 제한되는 서비스, 즉 아웃바운드 필터를 사용하여 기본적으로 차단하는 서비스가 있는 이유입니다.

애석하게도 대부분의 사람들은 아웃바운드 호스트 기반의 방화벽 필터링을 통해 손상된 자산이 다른 자산을 공격하지 못하도록 할 수 있다고 생각하고 있습니다. 하지만 이것은 불가능한 일입니다. 공격 당한 자산에 대해 보호 조치를 취하면서 다른 자산을 공격하지 않도록 하는 것은 소용이 없습니다. 보호라는 것은 보호하려는 자산에 대해 수행해야 하는 것이지 막아야 하는 대상을 위한 것이 아닙니다. 이미 집안으로 들어온 도둑에게 물건을 가져가지 말라고 요청하는 것은 처음부터 집에 들어오지 못하게 하는 것만 못합니다.

Jesper M. Johansson은 보안 소프트웨어 분야의 소프트웨어 설계자이자 TechNet Magazine의 객원 편집자로서, 정보 관리 시스템 박사 학위를 소지하고 20여 년간 보안 분야에 종사해 온 Microsoft 기업 보안 MVP입니다. 최근 저서로는 Windows Server 2008 Security Resource Kit가 있습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..