티스토리 뷰

반응형

구글 이나 AWS 등의 Public Cloud 를 사용하는 경우, 또 해외 등에 IDC를 운영할 경우 터미널이나 중요한 포트 접근시 중계서버를 거치거나 공인IP를 통해 접속을 해야하는 경우가 발생하게 된다.
 이 경우 DB 서버나 개인정보등 중요한 데이터를 보관하고 있는 서버는 공인IP가 아닌 사설 IP만으로 통신하게 구성하는것이 안전하다. 이를 위해서는 VPN 가상 사설 망을 구성하여 내부 사설 IP끼리 통신이 가능하도록 구성할 수 있다.

  AWS나 구글 클라우드와 같은 유명 클라우드 업체에서는 전용 VPN 솔루션을 제공해 주고 있으며 약간의 비용을 지불하여 해당 VPN을 사용하는 것이 운영 측면에서 훨신 편리하다.  
 그러나 VPN 을 제공해주지 않는 업체도 있어서 이럴경우에 오픈소스를 활용하여 별도 VPN을 구축하여 사용할 수 있다. 이 글에서는 오픈소스 VPN 중 StrongSwan 에 대해 알아보고 설치 및 설정하는 방법을 설명하려고 한다. 

반응형

StrongSwan
  - StrongSwan은 OpenSource IPsec 기반 VPN 솔루션으로 IKEv1 및 IKEv2 ( RFC 7296 ) 키 교환 프로토콜을 모두 구현하며, 가장 강력한 인증 메커니즘에 포커스를 맟춘 프로젝트 이다.
  - 또한 멀티플랫폼 IPSEC을 구현하여, 타사 벤더의 방화벽이나 VPN 장비와 문제 없이 연동이 가능하다.

<구성도 예시 >
 아래와 같이 본사 방화벽과 클라우드간 VPN 을 구성하려고 한다. 

1. StrongSwan 설치.
  - strongswan Repository 추가 및 설치
     wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
     rpm -Uvh epel-release-7-12.noarch.rpm
     yum install strongswan

2. 패킷 포워딩 활성화
  - vi 편집기 로 /etc/sysctl.conf 파일 내용 추가

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_no_pmtu_disc = 1
반응형


3. ipsec.conf 터널 파일 설정

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
    strictcrlpolicy=no
    uniqueids = no
    charondebug="cfg 2, ike 2, knl 2"
# Add connections here.
conn officevpn
    authby=secret
    auto=start
    type=tunnel
    leftauth=psk
    rightauth=psk
    left=2.2.2.2          // Local IP Assress 
    leftsubnet=10.10.10.0/24,10.10.20.0/24  // Local VPN 사용 대역
    right=1.1.1.1       // Remote VPN IP
    rightsubnet=192.168.0.0/24, 172.16.100.0/24  // Remote VPN 대역 IP
    leftfirewall=no
    keyexchange=ikev2         // ikev2 사용(Multisubnet 지원)
    ike=aes128-sha1-modp2048    // pharse 1 인증 방식 설정.
    ikelifetime=28800             // pharse 1 key lifetime
    esp=3des-md5-modp2048     // pharse 2 인증 방식 설정.
    lifetime=3600                 // pharse 2 key lifetime
    compress=no
    keyingtries=%forever
반응형

※ 참고로 MultiSubnet을 사용할 경우 인증키는 ikev1이 아닌 ikev2로 사용을 해야 한다. 확인해본 결과 ikev1은 여러개 서브넷을 지원하지 않고 가장 마지막에 설정한 IP대역만 할당하는 것을 확인하였다. 

4. 암호화 인증키 값 설정
 인증방법은 인증서를 사용하거나 presharedkey 값을 통한 인증방식이 있으며, 여기서는 presharedkey를 통한 인증 방법을 사용하였다. 추후 기회가 되면 인증서를 활용하는 방법에 대해서도 포스팅을 해 보겠다.
 - ipsec.secret 값 설정. ( vi /etc/strongswan/ipsec.secret , 패스워드는 임의의 값 지정. )

1.1.1.1 : PSK "password"
2.2.2.2 : PSK "password"

 

반응형

5. strongswan 시작 및 상태 확인.
 - strongswan start
 - strongswan statusall 

[root@vpn ~]# strongswan statusall
Status of IKE charon daemon (strongSwan 5.7.2, Linux 3.10.0-957.21.3.el7.x86_64, x86_64):
  uptime: 2 hours, since Nov 20 10:30:51 2019
  malloc: sbrk 2801664, mmap 0, used 624976, free 2176688
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 6
  loaded plugins: charon pkcs11 tpm aesni aes des rc2 sha2 sha1 md4 md5 mgf1 random nonce x509 revocation constraints acert pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt fips-prf gmp curve25519 chapoly xcbc cmac hmac ctr ccm gcm curl attr kernel-netlink resolve socket-default farp stroke vici updown eap-identity eap-sim eap-aka eap-aka-3gpp eap-aka-3gpp2 eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap xauth-generic xauth-eap xauth-pam xauth-noauth dhcp led duplicheck unity counters
Listening IP addresses:
  2.2.2.2
Connections:
   officevpn:  2.2.2.2...1.1.1.1  IKEv2
   officevpn:   local:  [2.2.2.2] uses pre-shared key authentication
   officevpn:   remote: [1.1.1.1] uses pre-shared key authentication
   officevpn:   child:  10.10.0.0/16 === 192.168.0.0/24 172.16.100.0/24 TUNNEL
Security Associations (1 up, 0 connecting):
   officevpn[3]: ESTABLISHED 2 hours ago, 2.2.2.2[2.2.2.2]...1.1.1.1[1.1.1.1]
   officevpn[3]: IKEv2 SPIs: 6fd2c767e22898ba_i 03421dd57066da71_r*, pre-shared key reauthentication in 5 hours
   officevpn[3]: IKE proposal: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
   officevpn{6}:  INSTALLED, TUNNEL, reqid 2, ESP SPIs: c4dcdcf1_i a88939db_o
   officevpn{6}:  3DES_CBC/HMAC_MD5_96/MODP_2048, 6383 bytes_i (67 pkts, 0s ago), 6689 bytes_o (43 pkts, 7s ago), rekeying in 32 minutes
   officevpn{6}:   10.10.0.0/16 === 192.168.0.0/24 172.16.100.0/24
[root@vpn ~]#
반응형
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함