2008. 7. 2. 14:06

IPSec 를 이용한 "이미 공유된키" 인증 방식.

Windows 에서 지원되는 IPSec(Internet Protocol Security) 를 이용해서, Inbound/Outbound 패킷에 대해서 차단등의 컨트롤이 가능하기 때문에 많이 사용됩니다.

그러나 서버에서 IPSec 정책을 적용하여, 허용된 IP 만 오픈하고 싶은데 클라이언트가 유동 IP 라면 어떻게 할까요.

IP 가 변경될때마다 IPSec 보안정책을 변경할 수도 없는 노릇이고...

이때는 IPSec의 인증 방법인 [이미 공유된 키]인증 방법을 사용할 수 있습니다.
그러면 클라이언트는 IPSec을 통해서 서버와 통신을 하게 되며, 서버는 IPSec의  [이미 공유된 키]방식을 이용해서 접속해오는 클아이언트 들에게만 해당 접속을 허용하면 됩니다.

IPSec 에 대한 기본적인 지식이 있는 분이라면 누구라도 간단한 컨트롤 만으로도 설정이 가능합니다.

만약 모르신다면 다음 장좌를 참고하시기 바랍니다.(Microsoft IPSec Guide)



http://www.microsoft.com/korea/events/Online31_1101/default.mspx


서버 컨트롤 부분을 먼저 보겠습니다.
시작 -> 프로그램 -> 관리도구 -> 로컬 보안정책
또는 시작 -> 실행 -> secpol.msc


여기서 테스트 해볼 것은 IPSec 을 이용한 통신 방법으로 ICMP 프로토콜을 이용 할것이며
 Ping 으로서 테스트해볼것입니다.

* 아래와 같이 서버측에서는 기본 응답 거부를 추가해 줍니다.
(IPSec 을 설정하면 기본 모든 응답을 거부 후, 하나 하나 오픈 하는식으로 해야 할 것입니다.)


사용자 삽입 이미지


* 서버측에서 기본 응답 거부를 설정후 아래 그림과 같이 인증방법을 [이문자열 지정(이미 공유한 키)] 부분에 ICMP 를 기재하여, 클라이언트가 서버에 응답을 요청할때 ICMP 라는 키를 가지고 요청 하게 됩니다.

사용자 삽입 이미지


* 클라이언트 설정입니다. 필터 규칙을 생성 한후 [필터동작]에 보안 필요를 입력한다.

사용자 삽입 이미지


* 인증 방법에는 이미 서버측에서 설정한 [이미 공유된 키]를 ICMP 로 설정후 '확인'을 클릭합니다.

사용자 삽입 이미지


* IPSec 를 이용해서 "이미 공유된 키"로 통신하기 위한 서버의 IP 를 입력합니다.

사용자 삽입 이미지


* 서버에 ping 를 해봤을때 Request time out 가 나타난것은 서버서는 IPSec 이 할당 되어 있는 상태 이나 클라이언트에서 IPSec 가 설정되어 있지 않을때 나타난후. 클라이언트에서 IPSec 를 할당 하면 아래 그림과 같이 Negotiating IP Security. 라는 문구가 나타납니다.


사용자 삽입 이미지


* 이제 10.0.0.61 서버에 ping 를 날렸을때  IPSec 을 이용한 통신이 되게 됩니다.
당연 클라이언트에 IPSec 을 할당하지 않는 컴퓨터에서는 ping 를 날렸을때 Request time out 가 나타나겠지요..


#######################################################################

그럼 IPSec 을 위와 같이 GUI 방식이 아닌 Command 라인에 입력하여 생성하는 것을 간다히 알아 보겠습니다.

IPSec을 Command 라인에서 입력하기 이해서는 Windows2000에서는 IPSecpol.exe 가 필요하며
Windows2003에서는 ipseccmd.exe 파일이 필요합니다.

invalid-file

Windows2000에서는 IPSecpol.exe


invalid-file

Windows2003에서는 ipseccmd.exe


예)
Windows2000

ipsecpol -w REG -p "ipsec규칙이름" -r "all blocking" -f *+0:all -n BLOCK
ipsecpol -w REG -p "ipsec규칙이름" -r "IP_All_allow" -f 211.115.223.215+0:all -n PASS
ipsecpol -w REG -p "ipsec규칙이름" -r "in->out(outbound)" -f 0+*:80:TCP -f 0+*:53:TCP -f 0+*:53:UDP -f 0+*:443:TCP -f 0+*:445:TCP -f 0+*::ICMP -n PASS
ipsecpol -w REG -p "ipsec규칙이름" -r "out->in(inbound)" -f *+0:80:TCP -f *+0::ICMP -n PASS
ipsecpol -w REG -p "ipsec규칙이름" -x


* 마지막 ipsecpol -w REG -p "ipsec규칙이름" -x               의 -x 로 적용시켜줌

모든 사항을 끝맺고 '로컬 보안정책' 에서 확인 하는 것은 필수...


Winwods2003에서는
명령 옵션만 변경 되었을뿐 다른건 동일
pseccmd.exe -w REG -p "ipsec규칙이름" -r "out->in(inbound)" -f *=0:1221:TCP -n PASS

아래는 인증 방법에 이미 공유한 키 값을 입력하는 방법입니다.
ipseccmd.exe -p "ipsec규칙이름" -w REG -r "IP 필터 목록" -f 0=*:3389:tcp -n -a p:"이미 공유된키 값" -x