[보안] OpenVPN을 통한 VPN 환경 구축하기 – 아랑

######### openvpn 구축하기 ###############################################

작성자 : 서 진우 (alang@syszone.co.kr)
작성일 : 2008년 3월 1일

수정일 : 2008년 2월 25일
==========================================================================

외부에서 방화벽에 의해 차단된 회사나 연구실 내에 시스템으로 안전한 방법으로
접근하기 위해 OpenVPN을 사용할 수 있다.

본 문서는 OpenVPN 서버를 통해 VPN 환경을 구축하는 방법에 대해 설명한다.

1. OpenVPN 서버 설치

openvpn 환경을 구축하기 위해서는 아래와 같은 패키지를 설치해야 한다.

openvpn -> http://www.openvpn.net
lzo -> http://dag.wieers.com/packages/lzo
lzo-devel -> http://dag.wieers.com/packages/lzo
lzo 패키지는 VPN 접속 시 패킷의 암호화 압축에 사용된다.

본 패키지 설치는 서버/클라이언트 모두 동일하다. 윈도우 클라이언트의 경우
http://www.openvpn.se/files/install_packages/
에서 윈도우용 Openvpn을 설치하면 된다.
본 테스트에는 openvpn-2.0.7-gui-1.0.3-install.exe 파일을 사용하였다.

– lzo 설치

# rpm -Uvh lzo-1.08-4.2.el4.rf.x86_64.rpm
# rpm -Uvh lzo-devel-1.08-4.2.el4.rf.x86_64.rpm

– openvpn 설치

# wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
# rpmbuild -tb openvpn-2.0.9.tar.gz
# rpm -Uvh /usr/src/redhat/RPM/x86_64/openvpn-2.0.9-1.x86_64.rpm

– 인증서 생성

# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/

# vi vars
——————————————————————-
.
.
export KEY_COUNTRY=KR   
export KEY_PROVINCE=NA
export KEY_CITY=SEOUL
export KEY_ORG=”syszone.co.kr”
export KEY_EMAIL=”
alang@syszone.co.kr
——————————————————————-

# . vars

# ./clean-all
기존에 생성된 인증서가 있을 경우 삭제한다.

# ./build-ca
인증서를 생성한다.

/usr/share/doc/openvpn-2.0.9/easy-rsa/keys 디렉토리에 ca.key(개인키),ca.crt(공개키)
가 생성된다.
ca.crt파일은 모든 클라이언트에 배포. ca.key는 서버만 가지고 있으면 된다.

– OpenVPN 서버키 생성

# ./build-key-server server
전부 기본 값으로 진행한다. 그럼 keys 디렉토리에 server.crt, server.csr, server.key
가 생성된다. 모두 OpenVPN 서버 설정에 사용된다.

– OpenVPN 클라이언트 키 생성

# ./build-key <client_name>

서버키 생성 시와 동일한 질문을 한다. Common Name은 <client_name>과 동일하게
입력한다.

keys 디렉토리에 <client_name> 으로 crt, key 파일이 생성된다.

여러 클라이언트가 존재할 경우 같은 key로 접속은 가능하나, 클라이언트 개별 관리
를 위해 별도 key를 생성해 주는 것을 권장한다.

– Diffie Hellman 파라메터 생성(암호화에 필요)

# ./build-dh 
keys 디렉토리에 dh1024.pem 파일이 생성된다.

2. OpenVPN 설정

– OpenVPN 서버 설정

# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/
# vi server.conf
————————————————————————–
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 192.168.111.0 255.255.255.0 # Client에 배포되는 IP Subnet
ifconfig-pool-persist ipp.txt 0

;push “route 192.168.10.0 255.255.255.0”
;push “route 192.168.20.0 255.255.255.0”
;push “redirect-gateway”
;push “dhcp-option DNS 10.8.0.1”
;push “dhcp-option WINS 10.8.0.1”

client-to-client # client 간의 통신 가능
duplicate-cn
# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120

# Enable compression on the VPN link.
# If you enable it here, you must also
# enable it in the client config file.
comp-lzo

# The maximum number of concurrently connected
# clients we want to allow.
max-clients 10
persist-key
persist-tun
status /var/log/openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn-new.log
verb 3

# Silence repeating messages.  At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
;client-cert-not-required   # 사용자 인증서를 요청하지 않는다.
;username-as-common-name
———————————————————————–

# zip openvpn_server_key.zip server.* ca.* dh1024.pem
# cp openvpn_server_key.zip /etc/openvpn
# cd /etc/openvpn
# unzip openvpn_server_key.zip

openvpn_server_key.zip 파일은 OpenVPN 서버 복구 시 사용할 수 있게 백업해둠.

# /etc/rc.d/init.d/openvpn start
# ifconfig
.
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:192.168.111.1  P-t-P:192.168.111.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

– OpenVPN 리눅스 클라이언트 설정

# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/
# vi client.conf
———————————————————————–
client
dev tun
proto tcp
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert <client_name>.crt
key <cluent_name>.key
comp-lzo
verb 3
remote <VPN서버IP> 1194
auth-user-pass # 사용자 계정/암호 인증 -> 기본 시스템 계정 사용
————————————————————————

# cp client.conf client.ovpn

client.ovpn 파일은 윈도우 클라이언트 설정 파일
client.conf 파일은 리눅스 클라이언트 설정 파일

# zip vpn_client_key_linux.zip client.conf ca.crt <client_name>.*
# zip vpn_client_key_win.zip client.ovpn ca.crt <client_name>.*

# cp vpn_client_key_linux.zip /etc/openvpn
# unzip vpn_client_key_linux.zip

# /etc/rc.d/init.d/openvpn start 
——————————————————————————
openvpn을 시작 중: Enter Auth Username: <- OpenVPN 서버에 시스템 계정 입력
Enter Auth Password: <- 해당 계정의 패스워드 입력
                                                           [  OK  ]
——————————————————————————

# ifconfig
—————————————————————————–
.
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:192.168.111.6  P-t-P:192.168.111.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
—————————————————————————–

– 윈도우 클라이언트 설정

openvpn-2.0.7-gui-1.0.3-install.exe 설치
시작 -> 프로그램 -> OpenVPN -> Open VPN configuration file directory 선택

사용자 삽입 이미지

vpn_client_key_win.zip 파일을 해당 디렉토리에 복사한다.
현재 디렉토리에 압축 풀기를 한다.

사용자 삽입 이미지

작업표시창에 트레이아이콘에 오른쪽 마우스키를 클릭한후 connect 실행
시스템 계정과 패스워드를 입력하면 접속이 된다.

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

– OpenVPN 방화벽 설정

OpenVPN 서버에서 간단한 방화벽 설정을 한다.

.
iptables -A INPUT -p tcp –dport 1194 -m limit –limit 1/m -j LOG –log-prefix “VPN connect: “

-> VPN 접속 패킷이 들어오는 경우 /var/log/message 파일에 “VPN Connect” 이름의
로그를 생성한다.

iptables -A INPUT -p tcp -s 192.168.111.0/24 –dport 22 -j ACCEPT

-> VPN 클라이언트에서 VPN 서버의 22번 포트 접근 허용

iptables -A INPUT -p tcp  –dport 1194 -j ACCEPT

-> VPN 포트 허용

iptables -t nat -A POSTROUTING -s 192.168.111.0/255.255.255.0 -j MASQUERADE

-> VPN 클라이언트에서 인터넷 공유 기능 허용

3. VPN 사용 현황 파악

openvpn 서버에서 아래 명령 수행

# /etc/rc.d/init.d/openvpn status

그럼 /var/log/openvpn.log 에 OpenVPN CLIENT LIST 관련 로그가 생성된다.

# tail -f /var/log/openvpn.log
——————————————————————————
Wed Feb 25 13:47:02 2009 OpenVPN CLIENT LIST
Wed Feb 25 13:47:02 2009 Updated,Wed Feb 25 13:47:02 2009
Wed Feb 25 13:47:02 2009 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
Wed Feb 25 13:47:02 2009 alang03,123.xxx.xxx.xxx:50081,6954,7348,Wed Feb 25 13:36:42 2009
Wed Feb 25 13:47:02 2009 client,123.xxx.xxx.xxx:43584,19972,20988,Wed Feb 25 12:55:09 2009
Wed Feb 25 13:47:02 2009 ROUTING TABLE
Wed Feb 25 13:47:02 2009 Virtual Address,Common Name,Real Address,Last Ref
Wed Feb 25 13:47:02 2009 192.168.111.10,client,123.xxx.xxx.xxx:43584,Wed Feb 25 12:55:10 2009
Wed Feb 25 13:47:02 2009 192.168.111.6,alang03,123.xxx.xxx.xxx:50081,Wed Feb 25 13:37:57 2009
Wed Feb 25 13:47:02 2009 GLOBAL STATS
Wed Feb 25 13:47:02 2009 Max bcast/mcast queue length,0
Wed Feb 25 13:47:02 2009 END
—————————————————————————–

현재 alang03, client 란 이름의 클라이언트에서 VPN 접속 중에 있는 것을 알수 있다.

이로써 OpenVPN을 이용한 VPN 환경 구축에 대해 설명을 마친다.


 

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

79 Responses

  1. cwhHA0jA 말해보세요:

    cehhenemgeridondu.bKUizvgzJssmMB2C

  2. freetaxi Q911RqsH 말해보세요:

    uzuleceksinizya.v2YjteqJzmvq

  3. porn sex 말해보세요:

    tornadodanselam.qbtBeg3ohJet

  4. seks siteleri 말해보세요:

    kenaragecin.QLAAJzEbLJJ3

  1. 2022년 6월 18일

    3epilogue

  2. 2023년 1월 26일

    3portend

  3. 2023년 6월 7일

    … [Trackback]

    […] Read More here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  4. 2023년 6월 23일

    … [Trackback]

    […] Read More Information here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  5. 2023년 6월 26일

    … [Trackback]

    […] Find More Info here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  6. 2023년 7월 21일

    … [Trackback]

    […] Read More on to that Topic: nblog.syszone.co.kr/archives/3210 […]

  7. 2023년 8월 12일

    … [Trackback]

    […] Find More Information here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  8. 2023년 8월 17일

    … [Trackback]

    […] Information on that Topic: nblog.syszone.co.kr/archives/3210 […]

  9. 2023년 8월 22일

    … [Trackback]

    […] Information to that Topic: nblog.syszone.co.kr/archives/3210 […]

  10. 2023년 8월 27일

    … [Trackback]

    […] Read More Info here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  11. 2023년 9월 11일

    … [Trackback]

    […] Read More to that Topic: nblog.syszone.co.kr/archives/3210 […]

  12. 2023년 9월 12일

    … [Trackback]

    […] Find More here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  13. 2023년 9월 26일

    … [Trackback]

    […] Here you can find 25577 additional Info to that Topic: nblog.syszone.co.kr/archives/3210 […]

  14. 2023년 9월 30일

    … [Trackback]

    […] Here you will find 91716 more Information on that Topic: nblog.syszone.co.kr/archives/3210 […]

  15. 2023년 10월 9일

    … [Trackback]

    […] Find More on to that Topic: nblog.syszone.co.kr/archives/3210 […]

  16. 2023년 10월 19일

    … [Trackback]

    […] Info on that Topic: nblog.syszone.co.kr/archives/3210 […]

  17. 2023년 10월 31일

    … [Trackback]

    […] Read More Info here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  18. 2023년 11월 7일

    … [Trackback]

    […] There you will find 40427 additional Information to that Topic: nblog.syszone.co.kr/archives/3210 […]

  19. 2023년 11월 7일

    … [Trackback]

    […] Find More Information here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  20. 2023년 11월 8일

    … [Trackback]

    […] Find More here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  21. 2023년 11월 9일

    … [Trackback]

    […] Information to that Topic: nblog.syszone.co.kr/archives/3210 […]

  22. 2023년 11월 12일

    … [Trackback]

    […] Read More Info here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  23. 2023년 11월 14일

    … [Trackback]

    […] Read More here to that Topic: nblog.syszone.co.kr/archives/3210 […]

  24. 2023년 11월 16일

    … [Trackback]

    […] Information to that Topic: nblog.syszone.co.kr/archives/3210 […]

  25. 2023년 11월 17일

    … [Trackback]

    […] Find More on on that Topic: nblog.syszone.co.kr/archives/3210 […]

  26. 2023년 11월 18일

    … [Trackback]

    […] There you can find 58867 more Info on that Topic: nblog.syszone.co.kr/archives/3210 […]

  27. 2023년 11월 22일

    … [Trackback]

    […] Find More to that Topic: nblog.syszone.co.kr/archives/3210 […]

  28. 2023년 11월 26일

    batmanapollo.ru

    batmanapollo.ru

  29. 2023년 11월 27일

    … [Trackback]

    […] Read More Info here on that Topic: nblog.syszone.co.kr/archives/3210 […]

  30. 2023년 11월 28일

    777

    778

  31. 2023년 11월 29일

    wlw.su

    wlw.su

  32. 2023년 11월 29일

    vxi.su

    vxi.su

  33. 2023년 12월 1일

    nlpvip.ru

    nlpvip.ru

  34. 2023년 12월 1일

    russianmanagement.com

    russianmanagement.com

  35. 2023년 12월 1일

    Slovo pacana 6 seriya

    Slovo pacana 6 seriya

  36. 2023년 12월 3일

    site

    site

  37. 2023년 12월 3일

    slovo-pacana-6-seriya

    slovo-pacana-6-seriya

  38. 2023년 12월 4일

    manipulyation

    manipulyation

  39. 2023년 12월 4일

    … [Trackback]

    […] Here you can find 81865 more Info to that Topic: nblog.syszone.co.kr/archives/3210 […]

  40. 2023년 12월 6일

    … [Trackback]

    […] There you will find 46192 more Information on that Topic: nblog.syszone.co.kr/archives/3210 […]

  41. 2023년 12월 21일

    Update Site Error ¹ 654

    Update Site Error ¹ 654

  42. 2023년 12월 21일

    Update Site Error ¹ 655

    Update Site Error ¹ 655

  43. 2023년 12월 23일

    354

    354

  44. 2023년 12월 29일

    Link

    Link

  45. 2024년 1월 5일

    kiino4k.ru

    kiino4k.ru

  46. 2024년 1월 11일

    depresiya

    depresiya

  47. 2024년 1월 12일

    film

    film

  48. 2024년 1월 14일

    new 2024

    new 2024

  49. 2024년 1월 18일

    batman apollo

    batman apollo

  50. 2024년 1월 22일

    film2024

    film2024

  51. 2024년 1월 23일

    123 Movies

    123 Movies

  52. 2024년 1월 23일

    laloxeziya-chto-eto-prostymi-slovami.ru

    laloxeziya-chto-eto-prostymi-slovami.ru

  53. 2024년 1월 28일

    000

    000

  54. 2024년 1월 28일

    samorazvitiepsi

    samorazvitiepsi

  55. 2024년 1월 29일

    psy

    psy

  56. 2024년 2월 9일

    Tucker Carlson – Vladimir Putin – 2024-02-09 Putin interview summary, full interview.

    Tucker Carlson – Vladimir Putin – 2024-02-09 Putin interview summary, full interview.

  57. 2024년 2월 9일

    Tucker Carlson – Vladimir Putin

    Tucker Carlson – Vladimir Putin

  58. 2024년 3월 28일

    spisok

    spisok

  59. 2024년 4월 10일

    list

    list

  60. 2024년 6월 24일

    bit.ly/kto-takoy-opsuimolog

    bit.ly/kto-takoy-opsuimolog

  61. 2024년 7월 21일

    shorts

    shorts

  62. 2024년 8월 31일

    yaltalife.ru

    yaltalife.ru

  63. 2024년 9월 5일

    kinogo

    kinogo

  64. 2024년 9월 10일

    rasschitat dizayn cheloveka onlayn

    rasschitat dizayn cheloveka onlayn

  65. 2024년 9월 10일

    raschet karty dizayn cheloveka

    raschet karty dizayn cheloveka

  66. 2024년 9월 11일

    humandesignplanet.ru

    humandesignplanet.ru

  67. 2024년 9월 11일

    human design

    human design

  68. 2024년 9월 18일

    Opsumiologist

    Opsumiologist

  69. 2024년 9월 18일

    Psychologist #1 in the World

    Psychologist #1 in the World

  70. 2024년 9월 18일

    Best Psychologist in the World

    Best Psychologist in the World

  71. 2024년 10월 15일

    printsipy forda

    printsipy forda

  72. 2024년 10월 19일

    dizain-cheloveka

    dizain-cheloveka

  73. 2024년 11월 8일

    10000

    10000

  74. 2024년 11월 8일

    9gm.ru

    9gm.ru

  75. 2024년 11월 10일

    raso.su

    raso.su

페이스북/트위트/구글 계정으로 댓글 가능합니다.