Windows 2000/XP에 내장된

방화벽을 통한 보안

2003/10/15

이 완희(lwh@certcc.or.kr)

1. 개요

인터넷에 연결된 컴퓨터 시스템은 전 세계 어디에서나 인터넷을 통한 연결이 가능하기 때문에 악의를 가진 사용자가 타인의 컴퓨터로 해킹을 시도할 수도 있으며 최근에 나온 blaster웜처럼 웜에 감염된 시스템이 다른 시스템을 공격하여 시스템을 다운시킬 수도 있다.

이렇게 알려지거나 알려지지 않은 위험에 놓여져 있는 시스템을 유해 트래픽으로부터 차단 하여주는 보안 프로그램(하드웨어)이 방화벽이다. 또한 방화벽은 사용자도 모르는 사이에 자신의 컴퓨터가 다른 컴퓨터를 공격하는 데 사용되는 것을 막을 수도 있다.

이 문서에서는 Windows 2000/XP에 내장된 방화벽 기능을 설정하여 알려지거나 알려지지 않는 보안위험에서 자신의 시스템을 보호하는 방법을 알아본다.

본 문서는 □방화벽 설정을 위한 기본적인 네트워크 상식□, □Windows XP 방화벽 설정□, Windows 2000 방화벽 설정 등 크게 3부분으로 나뉘어져 있으며 실제 설정에서는 사용자별로 □일반사용자□과 □능숙한 사용자□로 구분되어져 있다.

2. 방화벽 설정을 위한 기본적인 네트워크 상식

① 포트

쉽게 설명하자면 사용자가 인터넷으로 야후나 다음의 홈페이지를 접속할 때 해당 웹서버로 접속을 하게 되는데 이때 야후나 다음에서 운영하는 웹서버에는 웹 서비스를 80번 포트로 서비스하고 사용자들은 80번 포트로 접속하여 웹서핑을 하게된다.

이와 같이 서비스마다 특정한 접속통로를 만들어서 이 서비스를 받고자 하는 클라이언트가 접속하는 통로를 포트라고 이해하면 된다.

이 포트들은 IANA(Internet Assigned Numbers Authority 인터넷 할당 번호 관리 기관)에 의해 지정되어 있으며 포트 번호는 3가지로 분류되어 있다.

잘알려진 포트(well-known port): 0번 에서 1023번까지

등록된 포트(Registerd port): 1024번에서 49151번까지

동적인 혹은 사적인 포트(Dynamic or Pivate port): 49152 에서 65535까지 이다.

※ 윈도우즈에서 주로 사용되는 서비스별 포트는 윈도우즈 디렉토리 일반적으로windows나  winnt 밑의 \system32\drivers\etc\services 파일에 등록되어 있다.

(부록 1. 윈도우즈에서 사용되는 포트 리스트 참조)

※ 정상적인 서비스로 등록된 서비스 전체 포트리스트는 아래에서 링크를 참조하기 바란다.

http://www.iana.org/assignments/port-numbers

※ 트로이잔(백도어)이 주로 사용하는 포트리스트

http://www.glocksoft.com/trojan_port.htm

② TCP(Transmission Control Protocol) / UDP (User Datagram Protocol)

TCP는 두 대의 컴퓨터가 데이터를 주고받을 때 전송되는 모든 패킷(전송단위)에 순번을 지정하여 다른 컴퓨터에 데이터가 받아졌는지를 조사하는 확인 작업을 거친 후 계속적으로 통신하기 때문에 신뢰성 있게 데이터를 전달할 수 있는 데이터 전송 규약이라고 보면 된다.

이에 비해 UDP는 신뢰할 수 없는 데이터 전송규약으로 UDP는 데이터 전달을 확인할 필요가 없거나 한번에 작은 양의 데이터를 전송하는 애플리케이션에 주로 사용된다.

③ ICMP(Internet Control Message Protocol)

ICMP는 쉽게 말하면 사용자가 접속하고자 하는 호스트가 실제로 운영되고 있는지 어떤 상태에 있는지를 진단하는 목적으로 사용되는 규약이라고 보면 된다.

ICMP의 대표적인 명령어인 ping을 예로 들면 특정 IP로 ping을 보냈을 때 Request time out이 나온다면 대상 컴퓨터가 현재 서비스되지 않고 있다고 볼수도 있다. (단, ICMP를 막았을 경우 제외)

④ 기타

* 소스포트(Source Port) : 데이터를 보내는 호스트의 TCP 포트

* 데스티네이션(Destination Port) : 데이터를 받는 호스트의 TCP 포트.

* 소스(원본) IP : 데이터를 보내는 호스트의 IP

* 데스티네이션대상(대상) IP : 데이터를 받는 호스트의 IP

예를 들어 인터넷으로 야후 홈페이지에 접속했을 때에는 자신이 야휴 홈페이지로 접속했으므로

소스 IP는 172.16.5.193번 소스포트는 4951포트이고

데스티네이션 IP는 211.174.51.144번 데스티네이션포트는 80번 포트이다.

< 야후로 접속할 때 80포트로 접속하는 화면 >

3. Windows XP 방화벽 설정하기

Windows XP 에서는 방화벽이 기본 제공되며 세부적인 설정을 통해 외부로부터의 내부로 들어오는(인바운드) 유해 트래픽을 효과적으로 차단할 수 있다.

※ 외부로 나가는 트래픽은 필터링이 불가능하고 인바운드 트래픽만 필터링 가능하다.

o Windows XP 방화벽 설정하기 위해서는 우선 [시작] □ [제어판]을 선택하고 제어판 창에서 [네트워크연결]을 더블클릭 한다.

o 네트워크연결 창에서 [로컬영역연결]을 선택한후 마우스 오른쪽 버튼 클릭하여

[속성]을 선택한다. 마지막으로 로컬영역 속성 창에서 [고급]탭을 선택하면 방화벽

설정이 가능하다.

1) 일반적인 경우 (일반 사용자)

기본적으로 Windows XP에서는 인터넷 연결 방화벽 기능이 설정이 되어 있지 않으므로 □인터넷 연결 방화벽 부분□이 체크가 되어 있지 않다. 아래 방화벽 관련부분을 체크하면 [설정]부분이 활성화되면서 세부적인 설정이 가능하게 되어있다. [설정]부분에 대해서는 □세부설정이 필요한 경우□부분에서 설명하겠다.

< 방화벽 설정 전 >

< 방화벽 설정 후 >

일반 사용자들은 □인터넷 연결 방화벽□ 부분만 체크하고 [확인]을 클릭하면 □외부(인터넷)로부터 내부(내컴퓨터)□로의 TCP/UDP/ICMP관련 트래픽을 효과적으로 차단할 수 있으며, 이 부분을 설정한다 해도 대부분의 인터넷 서핑 관련 서비스는 모두 이용이 가능하므로 일반 사용자들은 특별한 문제가 없을 시에는 이 부분을 체크해서 사용하기를 권고한다.

※ □인터넷 연결 방화벽□은 윈도우즈에서 서비스하는 정의된 특정한 포트들을 막는 것으로 해당 서비스에 취약점이 발생하여 공격에 이용될 때 효과적을 방어할 수 있지만 모든 포트를 막는 것은 아니므로 내부에서 백도어를 열어 줄 수 있는 해킹툴이나 바이러스 감염 등에는 항상 주의하여야 한다.

주의할 점은,

자신이 서비스를 제공하는 서버 역할을 하는 일부 메신져, P2P, 게임프로그램은 특정 서비스 포트를 열어 주어야 되는 경우가 있으므로 이런 프로그램을 사용할 때에는 □인터넷 연결 방화벽□ 체크를 제거하여 사용하고 평상시에는 □인터넷 연결 방화벽□ 체크를 한 상태에서 인터넷을 사용하면 유해 트래픽으로부터 시스템을 보호할 수 있다.

2) 세부설정이 필요한 경우 (능숙한 사용자)

사용하는 시스템에서 웹서버나 FTP서버를 설치하여 외부로 서비스하고자 할 때는 □인터넷 연결 방화벽 부분□ 체크시에 활성화된 [설정] 부분에서 서비스하고자 하는 서비스를 허용해줄 수 있게 설정할 수 있다.

세부 설정 부분은 □서비스□, □보안로킹□, □ICMP□ 3가지 부분으로 구분되어져 있다.

□ 서비스

예를 들어 웹서버를 설치하여 웹 서비스를 하고자 한다면 □웹 서버(HTTP)□항목을 체크하여 허용해 주어야 한다.

※ 주의 : 허용할 서비스를 체크하므로 기본설정은 모두 막혀있다.

□웹 서버(HTTP)□ 항목을 더블클릭하면 미리 정의된 웹서버 관련된 80포트가 정의되어 있는 것을 볼 수 있다. 웹서버를 80이 아닌 포트로 서비스를 하고 싶다면 아래의 [추가] 버튼을 클릭하여 새롭게 정의해 줄 수도 있다.

※ MSN 메신져 같은 경우는 자동으로 자신이 사용하는 포트를 서비스로 등록하기도 한다.

또, 잘 사용하고 있던 P2P프로그램이 방화벽을 설정한 후 특정기능이 안 된다면 이 프로그램은 서비스를 이용하기 위해서 열어주어야 되는 포트가 있으므로 해당 프로그램 사이트에서 필요한 포트를 확인하여 꼭 필요한 서비스 포트를 허용해 주어야 한다.

예를 들어 특정 P2P프로그램이 TCP 9292포트를 이용하여 파일을 주고받을 때는 [추가] 옵션을 통해 새로운 항목을 추가하면 된다.

□이 서비스에 대한 내부포트번호□에 □9292□를 넣고 □이 서비스에 대한 외부포트번호도 같이 □9292□를 넣으면 된다.

※ 자신의 IP확인방법

[시작] □ [실행] □ [ cmd 입력 확인] □ [도스창에서 ipconfig 입력]

② 보안로깅

두 번째 탭인 보안 로깅 부분은 자신의 시스템에 접근한 패킷에 대한 로그를 남기는 부분이다.

로그옵션을 보면 두 가지 옵션이 있는데 손실된 패킷이나 성공적으로 연결된 패킷에 대해 로그를 남길 것인가를 설정하는 부분으로 기본설정은 두 개 옵션에 체크가 되어 있지 않으므로 로그를 남기지 않게 되어있다.

일반 사용자들은 이 부분을 체크하지 않아도 상관없으므로 체크하지 않을 것을 권장한다.

③ ICMP

세 번째 ICMP탭은 ICMP 프로토콜 관련 세부항목으로 네트워크 관리자가 전체네트워크를 관리할 때 주로 사용하므로 일반사용자는 이 부분도 체크하지 않은 상태로 두면 된다.

( 허용할 부분을 체크하므로 방화벽 사용 체크시 기본설정은 모두 막혀있다. )

※ 보안로깅 부분은, 일반적으로 개인방화벽에서 제공하는 특정포트(서비스)에 대한 필터링 규칙에 의해 로그를 작성 것이 아니라 성공/실패로만 구분하여 모든 패킷에 대한 로그를 남기므로 인터넷 사용을 위한 정상적인 패킷도 로그가 남게된다. 이로 인해 짧은 시간에도 엄청난 로그가 생성되며 정해진 크기제한을 넘으면 pfirewall.log.old로 한번 백업되지만 그 이후로는 자동으로 기존에 있던 로그를 덮어쓰게 되므로 적절하게 로그의 크기 및 백업관리를 해 주어야 한다.

생성된 로그를 분석해 보려면 윈도우 도움말(F1)에 자세히 나와 있으므로 참조하기 바란다.

3. Windows 2000 방화벽 설정하기

Windows 2000 시스템은 TCP/IP 필터링 옵션(인바운드 트래픽만 필터링)이나 IPSEC( 인바운드/아웃 바운드 모두 필터링 가능)을 이용하여 유해한 트래픽을 차단할 수 있다.

1) TCP/IP 필터링 옵션을 이용 ( 일반사용자 )

먼저 방화벽을 구성하기 위해서는 아래의 단계를 실행하여 TCP/IP 필터링 설정화면으로 넘어간다.

o 윈도우즈 바탕화면에서 [네트워크환경] 아이콘 선택 한 후 마우스 오른쪽 버튼 클릭하여  [등록정보]를 선택하고 네트워크 및 전화접속 연결창에서 [로컬영역연결]을 선택한다.

o [로컬영역 연결 선택]후 마우스 오른쪽 버튼을 클릭하여 [등록정보] 선택한다. 로컬영역 연결 등록 정보 창에서 [인터넷프로토콜(TCP/IP)선택]한 후 □ [등록정보]를 클릭한다.

o 인터넷 프로토콜(TCP/IP) 등록 정보 창에서 [고급]을 클릭한 후 [옵션]탭의 [TCP/IP필터링]을  선택한다. 마지막으로 [등록정보]를 클릭 한다.

디폴트 설정은 TCP/IP 필터링 사용 (모든 어댑터) 확인란에 체크가 되어 있지 않아 필터링 정책이 설정되어 있지 않다.

※ 세 번째 항목인 IP프로토콜은 모두 허용으로 설정해두고 변경하지 않는다.(구현안된 기능)

일반사용자가 유해 트래픽을 차단하려고 한다면

TCP/IP 필터링 사용 (모든 어댑터) 부분을 체크하고

TCP 포트 부분에서 다음만 허용을 선택한 후 포트를 추가하지 않고

UDP 포트에서 모두허용을 선택하면 된다.

※ 설정이 끝난 후 시스템을 재부팅 하여야 필터링 설정이 적용된다.

물론, Windows XP 방화벽에서처럼 특정포트를 필요로 하는 프로그램을 서비스하는 경우 다음만 허용을 선택한 후 [추가]옵션을 선택하여 서비스포트를 등록해 주면 된다.

예를 들어 웹서비스를 한다면 TCP/80 포트를 등록해 주면 된다.

2) IPSEC(Internet Protocol Security Protocol) 기능을 이용한 필터링 ( 능숙한 사용자 )

Windows 2000에는 IPSEC 기능을 자체적으로 내장하고 있다. 이 IPSEC은 보안 통신을 위해서 여러 가지 기능을 제공하지만 여기에서는 간단하게 인바운드, 아웃바운드에 대한 필터링 부분만 설명하기로 한다.

※ IPSEC을 이용한 필터링 부분은 인바운드 트래픽 뿐만 아니라 아웃 바운드 트래픽도 제어가 가능하므로 개요부분에서 말한 □사용자도 모르는 사이에 자신의 컴퓨터가 다른 컴퓨터를 공격하는 데 사용되는 것□을 막을 수도 있다.

o IPSEC을 설정하려면 [시작] □ [제어판] □ [관리도구]에서 [로컬보안정책]을 더블 클릭한다.

o 로컬 보안설정 창의 [로컬 컴퓨터의 IP 보안정책] 항목에서 설정 가능하다.

① [동작] 메뉴에서 [IP 보안정책 만들기]를 선택한다.

※ 필터링의 예로 Windows 2000에서 공유 관련포트인 TCP/139,445 관련포트를 막는 예를 든다.

② 필터링 규칙 이름을 임의로 정한다. 여기서는 □공유접근막기□로 명명하였다. 기본응답 규칙 활성화 체크를 제거하고 다음을 누른다.

③ [등록정보 편집]이 체크되어 있는 상태에서 [마침]을 누르면 필터링 세부 규칙을 설정할 수 있는 □공유접근막기 등록정보□ 창이 뜬다.

④ 개인 PC에서 기본적으로 필터링 규칙만 사용할 것이므로 □추가마법사 사용□이 체크를 지운 후 추가 버턴을 클릭 한다. 첫 번째 [IP 필터 목록]에서 추가를 클릭 한다.

⑤ 이름 칸에 임의의 이름을 넣고(여기서는 □139/445 포트막기□로 정의했다) [추가]를 클릭 하여 필터 마법사를 시작한다.

⑥ 여기서부터 제일 중요한 부분으로 외부로부터 내부로 들어오는 모든 TCP 139/445번을 막고자 하므로 원본 주소란에는 □모든 IP 주소□를 선택하고 그리고 대상 주소는 □내 IP 주소□를 선택한다.

⑦ IP 프로토콜은 TCP를 선택하고 외부쪽의 소스포트는 임의적 바뀌므로 □모든 포트에서□를 선택하고 내 시스템으로는 139번 포트로 접속하므로 139번을 적는다.

⑧ 이로써 하나의 필터링 룰이 정해졌고 목록에 하나가 정의 있는 것을 볼 수 있다.

⑨ ⑤번에서 ⑧번 까지 반복하면 필터링을 원하는 모든 프로토콜과 포트를 정의할 수 있다. TCP 445번을 필터링 하는 항목도 만든 후 닫기를 클릭하면 [IP 필터목록]에 새로운 목록인 □139/445 포트막기□ 항목이 만들어졌다.

⑩ 이제는 정의된 필터목록의 동작을 정의해 주어야 하므로 새롭게 만든 필터목록을 선택한 후 두 번째 탭인 [필터동작]부분을 선택하고 [추가]를 클릭 한다.

⑪ 139/445번 포트로 접근하는 것을 막는 것이기 때문에 거부를 선택하고 확인을 누른다. 이제 새로운 필터 동작이 생성되었다. 등록해 놓은 필터 동작은 다음에도 계속 사용할 수 있으므로 필터 동작을 알기 쉽게 이름을 변경해 놓자. □새 필터 동작□을 선택한 후 [편집]을 클릭 한다.

⑫ 일반탭에 있는 □새 필터 동작□을 □거부□로 이름을 바꾸자. 마지막으로 새 규칙 등록정보 창에서 거부필터 동작을 클릭한 후 [적용]을 누르면 [닫기] 버튼이 [확인]으로 바뀐다. 이제 [확인]을 누르자.

⑬ 이제 마지막으로 [닫기]를 클릭하면  □공유접근 막기□라는 새로운 정책이 완성되었다.

지금까지 IPSEC을 설정하면서 기타 다른 옵션 및 세부설정이 많이 있으나 개인이 사용하기에는 위의 과정만 따라한다면 간단하게 필터링 부분은 쉽게 설정할 수 있으리라 본다.

⑭ 마지막으로 만들어진 정책을 적용하려면 만들어진 정책을 클릭후 마우스 오른쪽 단축 메뉴에서 □할당□을 선택하면 정책이 활성화되고 다시 설정을 해지하려면 할당된 정책을 선택한 후 □해제□를 선택하면 된다.

⑮ 위에서 만들어진 정책이 제대로 작동을 하는지 테스트 해 보자.

< 공유 접근금지 정책 할당 전 >

< 공유폴더 접근 가능>

정책을 할당하기 전에는 공유 폴더로 접근이 가능했지만 아래쪽에는 정책을 할당한 후 공유 접근이 불가능함을 확인할 수 있다.

< 공유 접근금지 정책 할당 후 >

< 공유폴더 접근 불가 >

4. 마치며

Windows에서 기본적으로 제공하는 방화벽으로 모든 침입을 막는데는 한계가 있으며 침입시 사용자에게 알림 기능이 없으므로 이것만으로는 완전한 보안을 기대하기는 어렵다. 그러므로 현재 개인사용자를 위한 방화벽이 무료 또는 상용으로 많이 나와 있으므로 가능하다면 관련제품을 설치하여 활용하는 방법도 해킹에 대비할 수 있는 좋은 방법이다.

기타 무료 악성프로그램 제거툴이나 개인 방화벽 관련은 아래의 사이트를 참조하기 바란다.

http://www.cyber118.or.kr/tools/tools_windows.html

마지막으로 대부분의 해킹사고와 바이러스 전파는 알려진 취약점을 이용하여 일어나므로  Windows 시스템을 항상 최신버젼으로 업데이트 하여야 하며 사용자 계정에는 꼭 암호를 설정하여 다른 사용자가 암호 없이 시스템에 침입할 수 없도록 해야 함을 잊지 말기를 바란다.

( 참고문서 : http://www.certcc.or.kr/announce/cyberterror.hwp )

부록 1. 윈도우즈에서 사용되는 포트 리스트

아래의 링크에 윈도우즈 시스템에서 사용하는 서비스의 포트 리스트가 모두 나와 있다. (영문)

http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/tcpip/part4/tcpappc.asp

http://www.microsoft.com/windows2000/techinfo/reskit/samplechapters/cnfc/CNFC_POR.DOC

※ 이 리스트는 윈도우즈 시스템에서 제공하는 서비스이기 때문에 마이크로소프트 외의 회사에서 제공하는 프로그램의 서비스 포트는 나와 있지 않을 수 있으며 널리 알려진 소프트웨어가 사용하는 서비스 포트를 확인하려면  http://www.iana.org/assignments/port-numbers에서 확인해 보기 바란다.

* A ∼ Z 올림차순  정렬

Service Name	UDP		TCP
Browsing datagram responses of NetBIOS over TCP/IP	138
Browsing requests of NetBIOS over TCP/IP		137
Client/Server Communication				135
Common Internet File System (CIFS)		445		139, 445
Content Replication Service				560
Cybercash Administration				8001
Cybercash Coin Gateway				8002
Cybercash Credit Gateway				8000
DCOM (SCM uses udp/tcp to dynamically assign ports for DCOM)		135		135
DHCP client				67
DHCP server				68
DHCP Manager				135
DNS Administration				139
DNS client to server lookup (varies)		53		53

Service Name	UDP		TCP
Exchange Server 5.0
Client Server Communication				135
Exchange Administrator				135
IMAP				143
IMAP (SSL)				993
LDAP				389
LDAP (SSL)				636
MTA - X.400 over TCP/IP				102
POP3				110
POP3 (SSL)				995
RPC				135
SMTP				25
NNTP				119
NNTP (SSL)				563
File shares name lookup		137
File shares session				139
FTP				21
FTP-data				20
HTTP				80
HTTP-Secure Sockets Layer (SSL)				443
Internet Information Services (IIS)				80
IMAP				143
IMAP (SSL)				993
IKE (For more information, see Table C.4)		500
IRC				531
ISPMOD (SBS 2nd tier DNS registration wizard)				1234
Kerberos de-multiplexer				2053
Kerberos klogin				543
Kerberos kpasswd (v5)		464		464
Kerberos krb5		88		88

Service Name	UDP		TCP
Kerberos kshell			544
L2TP		1701
LDAP				389
LDAP (SSL)				636
Login Sequence		137, 138		139
Macintosh, File Services (AFP/IP)				548
Membership DPA				568
Membership MSN				569
Microsoft Chat client to server				6667
Microsoft Chat server to server				6665
Microsoft Message Queue Server		1801		1801
Microsoft Message Queue Server		3527		135, 2101
Microsoft Message Queue Server				2103, 2105
MTA - X.400 over TCP/IP				102
NetBT datagrams		138
NetBT name lookups		137
NetBT service sessions				139
NetLogon		138
NetMeeting Audio Call Control				1731
NetMeeting H.323 call setup				1720
NetMeeting H.323 streaming RTP over UDP		Dynamic
NetMeeting Internet Locator Server ILS				389
NetMeeting RTP audio stream		Dynamic
NetMeeting T.120				1503
NetMeeting User Location Service				522
NetMeeting user location service ULS				522
Network Load Balancing		2504
NNTP				119
NNTP (SSL)				563
Outlook (see Exchange for ports)
Pass Through Verification		137, 138		139
POP3				110

Service Name	UDP		TCP
POP3 (SSL)			995
PPTP control				1723
PPTP data (see Table C.4)
Printer sharing name lookup		137
Printer sharing session				139
Radius accounting (Routing and Remote Access)		1646 or 1813
Radius authentication (Routing and Remote Access)		1645 or 1812
Remote Install TFTP				69
RPC client fixed port session queries				1500
RPC client using a fixed port session replication				2500
RPC session ports				Dynamic
RPC user manager, service manager, port mapper				135
SCM used by DCOM		135		135
SMTP				25
SNMP		161
SNMP Trap		162
SQL Named Pipes encryption over other protocols name lookup		137
SQL RPC encryption over other protocols name lookup		137
SQL session				139
SQL session				1433
SQL session				1024 - 5000
SQL session mapper				135
SQL TCP client name lookup		53		53
Telnet				23
Terminal Server				3389
UNIX Printing				515
WINS Manager				135
WINS NetBios over TCP/IP name service		137
WINS Proxy		137
WINS Registration				137
WINS Replication				42
X400				102