'openvpn'에 해당되는 글 1건

  1. 2009.11.13 openVPN 설정 방법

* OpenVPN 통한 VPN 구현
 - Linux - Windows


@ 시스템 구성
 
VPN클라이언트 끼리도 통신 또한 가능해야 만들어보자. (서버측 server.conf로 설정)
  - VPN
서버 : Centos 4.7 (Vmware 브릿지)
  - VPN
클라이언트 : Windows XP
  - VPN
네트워크 : 10.100.0.0 (10.100.0.1 ~ 10.100.0.255) (서버측 server.conf로 설정)
  - VPN
사용포트 : 1194/UDP (서버측 server.conf로 설정)

@ 서버 Centos 4.7에서 OpenVPN설치
@lzo
설치 ( 실시간 압축 전송 라이브러리)
#http://dag.wieers.com/packages/lzo/
에서 적당한 버전의 rpm 받거나,

#wget 을 사용해 아래처럼 다운받을수있다.

@devel 버전이랑 2개를 받는 이유는? 잘은 모르지만 서로간의 의존성때문이라고한다.

#wget http://dag.wieers.com/packages/lzo/lzo-1.08-4.2.el4.rf.i386.rpm

사용자 삽입 이미지


#wget http://dag.wieers.com/packages/lzo/lzo-devel-1.08-4.2.el4.rf.i386.rpm

사용자 삽입 이미지

#rpm -Uvh lzo.. 명령으로 rpm을 설치하자.

사용자 삽입 이미지

 

@openvpn 받아서 rpm 으로 만들어 rpm형식으로 설치하자.
 wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

: 안된다면 DNS가 제대로 작동하는 지 확인하자.

사용자 삽입 이미지


@ rpmbuild -tb openvpn-2.0.9.tar.gz

- 압축파일을 rpm형식으로 만들어주는 명령이다.(lzo가 깔려있지않으면 실행되지않음)

- rpm으로 만들면 아래경로에 만들어진다. 경로를 적어주고 설치하자.

 

@rpm -Uvh  /usr/src/redhat/RPMS/i386/openvpn-2.0.9-1.i386.rpm

사용자 삽입 이미지


@Rpm으로 설치되는 파일 디렉토리들을 한번봐두자.

#rpm -ql openvpn 으로 확인해보자.  대충 중요한 디렉토리위치는 아래에 적어놨다.
  /etc/openvpn //openvpn 설정
  /etc/rc.d/init.d/openvpn //openvpn데몬 위치
  /usr/sbin/openvpn //관리자권한의 openvpn명령
  /usr/share/doc/openvpn-2.0.9/*
  /usr/share/man/man8/openvpn.8.gz
  /usr/share/openvpn
  /usr/share/openvpn/plugin/* //openvpn의 plugin이 있는 디렉토리


3.
인증서 생성 - 서버
 
인증서 생성은 필수이다.
 1) CA
생성 (상위 인증기관)
  먼저
 인증서를 관리하는 /usr/share/doc/openvpn-2.0.9/easy-rsa/ 디렉토리로 이동하자.
 @vars
파일은 인증서 생성시 넣어야할 정보를 미리넣어두어서 나중에 인증서생성시 간단하게 생성할수있게 참조시켜주는 파일이다.

vars파일을 열어 젤 아래쪽에 간단한 정보를 기입하자.

사용자 삽입 이미지

< /usr/share/doc/openvpn-2.0.9/easy-rsa/vars>


@mkdir /usr/share/doc/openvpn-2.0.9/easy-rsa/keys

: 인증키를 보관할수있는 keys디렉토리를 생성해주자.

사용자 삽입 이미지


   . ./vars
  : vars내용을 include한다는 명령
  ./clean-all
  :
기존에 생성 인증서가 있으면 모두 삭제
  @./build-ca
 - CA
인증서를 생성한다. 생성시 vars파일을 참조하기때문에 기본설정이 내가 설정된값이

되어있기 때문에 간단하게 넘어갈수있다.

 - 하지만 Common Name에서 server & hostnme 에서 반드시 server를 적어두자.

 - 실수로 Enter로 넘어갔다면 다시 ./build-ca를 실행하면 된다.
 -
이렇게하면 keys라는 폴더에 ca.key(개인키), ca.crt(공개인증서) 생성된것을 확인한다.
 -  ca.crt
파일은 모든 클라이언트에 배포. ca.key 서버만 가지고 있음.


사용자 삽입 이미지


 2) 서버키 생성 (서버에 사용될 인증서 개인키)
   ./build-key-server server

 -  위와 똑같이 넘어간다.

 - Sever설정이기때문에 Common Name에선 sever라고 넣어주자.

 - 나머지 설정은 중요하지 않기때문에 변경안하고 Enter로 넘어가고 Y/N이 나오면 Y만 누르면된다.

 - 설정이 끝나면 keys 디렉토리에 서버의 인증서(server.crt) 및 개인키(server.key) 등이 생긴것을 확인할수 있다.
 -
키들은 CA 의해 사인된 인증서이다.
  -
모두 서버에만 사용된다. 클라이언트용은 따로 만들어준다.

사용자 삽입 이미지


 3) 클라이언트키 생성 (클라이언트에 사용될 인증서)
   ./build-key client
- 서버설정과 동일하다 다만 Common Name 설정에 Client라고만 설정하자.

사용자 삽입 이미지


- keys 디렉토리에서 생성된 클라언트 인증서/키 확인하자.

- keys 디렉토리에 생성된 모든 인증서는 CA에서 검증받은것이니 신뢰할수있다.

사용자 삽입 이미지

 


 4) Diffie Hellman
파라메터 생성

:암호화에 필요하다.
  ./build-dh
  - keys
디렉토리에 dh1024.pem 파일이 생긴것을 확인할 있다.
  - dh1024.pem
서버에만 가지고 있는다.

@dh1024.pem 은 1024bit로 dh방식으로 암호화

사용자 삽입 이미지


@클라이언트용 파일을 Windows Xp에서 받을수있게 압축한뒤 /var/ftp/pub 안에 넣자.

@pub디렉토리는 ftp접속시 보여주는 기본 디렉토리이므로 윈도즈에서 ftp 주소를 넣었을때 바로 파일을 찾기위해서 하는것이다.

# mkdir -p /root/client-keys 후 /usr/share/doc/openvpn-2.0.9/easy-rsa/keys 디렉토리안의 ca.crt, client.crt, client.csr, client.key를 만들어준 /root/client-keys디렉토리에 복사하여 아래와같이 압축후 /var/ftp/pub안에 넣어주자.

사용자 삽입 이미지

 

@이제 설정이 끝났으니 openvpn데몬을 시작시켜 tun 이라는 vpn통신을 하기 위한 이더넷카드가 생성되는 지 확인해본다.

@ /etc/rc.d/init.d/openvpn restart 실행후

 ifconfig 명령을 실행 tun0 정보가 올라와 있나 확인해 본다.

@ 없다면 /dev/net/tun 이 있는지 확인하고 없으면 /dev/net 디렉토리에서 net/tun c 10 200이라고 써서 생성시켜준다.

그래도 tun카드가 올라오지 않을경우  /var/log/messages 목록을 보면 무엇때문에 동작이 안되었는지를 알수있다. 실시간으로 보기위해서 터미널창을 한개 더 열어서 #tail -f 옵션으로 메세지를 확인해보자.

@나는 여기까지 했지만 tun이 올라오지 않았다. 그러면 /etc/openvpn디렉토리에서 다시 설정을 해줬다. 그러면 우리가 설정 했던 디렉토리에서 파일들을 /etc/openvpn으로 복사를 해야한다.

#현재 Centos 4.7을 Vpn서버로만 사용할거기 때문에 server.* 무조건 복사하고 나머지 기본 인증서 / 키 들을 복사한다.

아래는 /etc/openvpn으로 복사할 파일들을 나열했다.
-  먼저 파일이 있는  /usr/share/doc/openvpn-2.0.9/ 들어가서 작업을 해주자.
- cp sample-config-flies/server.conf /etc/openvpn/
- cp easy-rsa/keys/server.* /etc/openvpn/
- cp easy-rsa/keys/dh1024.pem /etc/openvpn/  
- cp easy-rsa/keys/ca.* /etc/openvpn/


사용자 삽입 이미지

<복사후 /etc/openvpn>    


@ 그럼이제 서버설정파일을 수정해보자.(/etc/openvpn/server.conf)

사용자 삽입 이미지

<server.conf안의 내가 설정한 부분>

@ 주의할점 구문앞에 붙어있는 세미콜론(;)은 주석을 뜻하므로 사용하고자하는 설정 앞에 세미콜론이 있다면 제거한후 입맛에 맛게 다시 설정해주면된다.


   - vpn sever 네트워크 대역을 10.100.0.0 netmask 255.255.255.0으로 설정
   - client-to-client : vpn
클라이언트 끼리 통신 가능하게 해주게 한다.
   - duplicate-cn : client
인증서 하나로 여러대의 PC에서 사용할 있게한다.
   - max-clients 100 : 최대
연결수를 100으로 제한한다.
   - plugin .... : user/pass
인증을 받는다. (접속시 서버시스템안의 계정을 넣어야 접속가능)

:@주의 할점 plugin 띄워쓰기를 잘해주자~! 참고로 전 띄워쓰기때문에 오류가 났었다.

위와같이 설정후 다시 #service openvpn restart 를 해보자.

/etc/rc.d/init.d 안의 데몬과 /etc/services 같다. 그래서 난 간단하게 #service명령으로 다시 데몬프로세스를 동작시켰다.


그럼 아래와 같이 Vpn 장치가 올라오는 것을 ifconfig로 확인할수있다.

자 그럼 이제 서버설정은 끝났다.


사용자 삽입 이미지

<tun0:vpn용 가상카드>
 

@ 그럼이제 클라이언트 windows XP에 설치하기로 했었다. 그러기 위해선 서버시스템에서 생성한 클라이언트용 인증서 // 키 그리고 ca인증서가 필요하다. 그러므로 윈도우로 복사를 해줘야하는 파일들이다. 아래그림처럼 4개의 파일을 압축시키자.

사용자 삽입 이미지


@윈도우 브라우저에서 ftp centos 4.7을 열었을때 기본제공 디렉토리가 /var/ftp/pub이다. . 즉 브라우저에선 pub밖에 보이지 않는다. 그러므로 압축파일을 바로 찾을수있게 pub디렉토리에 복사를 해준다.

사용자 삽입 이미지

@아참! 그리고 중요한것은 ftp서버를 동작시키는 거다. ^^
# service vsftpd start 를 해주자.
그리고 만약 ftp사용계정이나 기타 설정을 하려면 /etc/vsftpd/vsftpd.conf파일을 수정하면된다.

@ Windows XP 클라이언트 세팅!

먼저 아래 사이트에서 openvpn 윈도우용 패키지를 다운받아서 설치하자
http://www.openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe

사용자 삽입 이미지

< openvpn install.exe 실행시 >


 

@ 서버측에 만들어 놓았던 압축파일을 다운받자.

사용자 삽입 이미지

@ 파일 받아서. 압축해제  시 -> 프로그램 -> OpenVPN -> Open VPN configuration file directory 누르면 폴더가열리는 데 이곳에다. 압축푼 4개파일을 넣어주자. *다른 압축파일등은 넣지말자. 그리고 이 디렉토리에 하나의 파일을 더 복사를 해줘야한다. 그파일은 아래 그림을 참조하자.

@그림을 과 같이 sample configuration files알의 Client.ovpn도 위의 디렉토리에 복사(중요)

: 접속할 서버의 정보를 세팅을 해줄수있는 파일이기때문

사용자 삽입 이미지
사용자 삽입 이미지



@복사를 하고 configuration file directory폴더를 확인 해서 아래와 같이 파일들이 존재해야한다.

사용자 삽입 이미지


@여기서 client.ovpn을 열어 원격접속할 서버의 주소와 포트를 넣어준다.

사용자 삽입 이미지


@이제 설정이 끝났다. 그럼이제 서버에서 작업한것과 마찬가지로 vpn 이더넷 카드 를 아래의 메뉴를 클릭하여 만들어주자.(제대로 동작되지 않으면 아래의 Delete ... 로 지운후 다시 ADD 해주면된다)

사용자 삽입 이미지


@위의 작업을 하셧다면 작업표시줄에 새로운 네트워크가 생긴다. 이것을 Connect 해주자.

사용자 삽입 이미지


@만약 생성하고도 작업표시줄에 뜨지 않았다면 Openvpn메뉴에서 GUI를 실행시키면 된다.

사용자 삽입 이미지


@Connect화면

: 서버시스템안에 생성된 계정중의 한개를 넣어주자 전 test/1234로 미리 설정해두었음.

사용자 삽입 이미지


@만약제대로 접속이 되었다면 기본설정으로 자동Ip를 받는다.

:현재 10.100.0.6 ip가 배당된것을 작업표시줄에서 실시간으로 확인가능하다.

사용자 삽입 이미지


@ 아니면 cmd창에서 ipconfig로도 확인가능하다.

사용자 삽입 이미지


@ 그럼이제 vpn끼리 통신이 되는지 또 어떻게 동작하는지를 알아보자.

: vpn서버주소로 ping으로 icmp프로토콜을 날려보자.

서로 그럼 vpn으로 통신이 연결된것을 확인할수 있게 된다.

사용자 삽입 이미지


@ Putty로 ssh 로도 접속을 해보자.(서버측에 sshd가 동작되고있어야함)

: 그럼 아래의 그림과 같이 동작은 잘되는 것을 확인할수있다.

사용자 삽입 이미지


@그럼이제 이것들이 통신할때 어떤 식으로 동작하길래 VPN이 신뢰성이 있는 지 Wire Shark(패킷 분석기)로 확인해보자.

@@@@@@ 아래 그림은 패킷분석기로 port 1194 를 스니핑한 그림이다. @@@@@

udp 라고 나오는 것은 서버측 /etc/openvpn/server.conf 안에 udp 와 포트 1194로 설정되어있기문에 설정된것으로만 보여지는 것이다. .

즉 Vpn으로 통신하고 있는 경우 어떤 통신을 하고있는지 조차 알수가 없다

SSh랑 다른점은 ssh은 그냥 원격접속시 암호화를 제공한다는 것이고 접속이 된 상태에선 암호화를 제공하지 않는다.

사용자 삽입 이미지

 <port 1194만 스니핑 한 패킷분석기 화면 >

Posted by hjlee
:

Google
 
BLOG main image
http://hjoo.org by hjlee

공지사항

카테고리

분류 전체보기 (154)
연구실생활 (9)
여 행 (8)
영어공부 (4)
취미생활 (7)
논 문 (2)
My Stories (31)
기 사 (11)
Computer (15)
즐길거리 (15)
스크랩 (3)
Web Progmming (0)
유용한 정보 (21)
KISANTEL (5)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :