INSTALASI                  VPN                   GATEWAY 2 GATEWAY
(Dengan freeswan && shorewall ):: Quick Edition
Mirrored form : http://irvan.or.id/tutorial.php?act=view&id=5




Oleh:
Z3r0byt3


http://irvan.or.id
http://echo.or.id

irv@irvan.or.id
http://echo<dot>or<dot>id<slash>paper


*editor : No preface


Instalasi   vpn menggunakan freeswan versi 2.06 untuk koneksi gateway to
gateway


Catatan: Konfigurasi ini dilakukan pada kedua mesin yang bertindak sebagai
gateway untuk masing-masing jaringan

Kondisi awal, kita memiliki 2 buah mesin yaitu:
- Server A : - memiliki:
          - ip publik = 202.155.138.101
          - netmask = 255.255.255.240
          - ip router = 202.155.138.240
          - ip lokal = 172.16.0.49
          - netmask = 255.255.252.0
- Server B : - memiliki:
          - ip publik = 202.155.100.100
          - netmask = 255.255.255.240
          - ip router = 202.155.100.101
          - ip lokal = 192.168.1.130
          - netmask = 255.255.255.0
- Paket Tcpdump terinstall pada masing-masing mesin


Konfigurasi umum untuk Server A dan Server B

1. Mesin linux lengkap dengan iptables, shorewall dan source code kernel

2. Pindah direktori ke direktori /var/tmp

 #cd /var/tmp

3. ekstrak file freeswan-2.06.tar.gz

 #tar -zxvf secure-linux/source/freeswan-2.06.tar.gz

4. pindah ke direktori freeswan-2.06

 #cd freeswan-2.06

5. edit file Makefile.inc
http://echo<dot>or<dot>id<slash>paper




 #vi Makefile.inc


6. Ubah baris berikut:

 INC_USRLOCAL=/usr/local
 menjadi
 INC_USRLOCAL=/usr

 dan baris berikut:
 INC_MANDIR=man
 Menjadi:
 INC_MANDIR=share/man

7. Patch kembali kernel dengan freeswan

 #make kpatch

8. konfigurasi ulang kernel dan kompile dengan mengaktifkan modul
IPSEC/Freeswan

 #cd /usr/src/linux
 #make menuconfig

 aktifkan modul IPSEC/Freeswan, kemudian simpan konfigurasi dan keluar

 #make dep clean bzImage
 #cp arch/i368/boot/bzImage /boot/vmlinuz-2.4.26
 #cp System.map /boot/System.map-2.4.26
 #lilo

9. Reboot mesin

 #reboot

10. Pindah ke direktori freeswan

  #cd /var/tmp/freeswan-2.06
http://echo<dot>or<dot>id<slash>paper


11. Compile dan install freeswan

  #make program
  #make install

12. pindah direktori kerja menjadi /root

  #cd /root

Pada server A

13. Buat 2 buah rsa key yang akan di gunakan untuk kedua mesin (key ini hanya
di generate pada satu buah mesin)

  #ipsec rsasigkey --verbose 2192 > left-key
  #ipsec rsasigkey --verbose 2192 > right-key

14. Copy file left-key menjadi file ipsec.secrets

  #cp left-key /etc/ipsec.secrets

15. Edit file /etc/ipsec.secrets, tambahkan parameter berikut:

  202.155.138.101 202.155.100.100: RSA      { #pada baris awal
  } #pada baris akhir

  *catatan: ip tersebut merupakan ip publik kedua mesin.
  *catatan: ip tersebut merupakan ip publik kedua mesin.

16. dengan menggunakan sftp atau scp copy file right-key ke server B

Pada server B

17. Copy file right-key menjadi file ipsec.secrets

  #cp right-key /etc/ipsec.secrets

18. Edit file /etc/ipsec.secrets, tambahkan parameter berikut:

  202.155.138.101 202.155.100.100: RSA      { #pada baris awal
  } #pada baris akhir

  *catatan: ip tersebut merupakan ip publik kedua mesin.
http://echo<dot>or<dot>id<slash>paper




Pada Kedua mesin, server A dan server B

19. Edit file /etc/ipsec.conf, kemudian isi dengan konfigurasi berikut:

  config setup
    interfaces="ipsec0=eth0"
    klipsdebug=none

  conn block
    auto=ignore

  conn private
    auto=ignore

  conn private-or-clear
    auto=ignore

  conn clear-or-private
    auto=ignore

  conn clear
    auto=ignore

  conn packetdefault
    auto=ignore

  conn a-b
    left=202.155.138.101
    leftsubnet=172.16.0.0/22
    leftnexthop=202.155.138.240
    right=202.155.100.100
    rightsubnet=192.168.1.0/24
    rightnexthop=202.155.100.101
    keyingtries=0
    auth=esp
    authby=rsasig
    leftrsasigkey=0sAQNZYi1vkyiJN.......(dipotong, karena terlalu panjang)
    rightrsasigkey=0sAQOoYLTSZRvx.......(dipotong, karena terlalu panjang)
    auto=start

  *Catatan:
http://echo<dot>or<dot>id<slash>paper


   -   leftrsasigkey= diambil dari file /etc/ipsec.secrets pada server A pada
       bagian pubkey=
   -   righttrsasigkey= diambil dari file /etc/ipsec.secrets pada server B pada
       bagian pubkey=

20. Edit file /etc/shorewall/tunnels

  #vi /etc/shorewall/tunnels

  kemudian isi dengan parameter berikut:

  Untuk server A
  ipsec net 202.155.100.100

  Untuk server B
  ipsec net 202.155.138.101

21. Edit file /etc/shorewall/zones

  #vi /etc/shorewall/zones

kemudian isi dengan parameter berikut:

  Pada Server A dan Server B
  vpn VPN           VPN Euuuyyyyy

22. Edit file /etc/shorewallinterface

  #vi /etc/shorewall/interfaces

  kemudian isi dengan parameter berikut:

  Pada Server A dan Server B
  vpn ipsec0

23. Edit file /etc/shorewall/hosts

  # vi /etc/shorewall/hosts

  kemudian isi dengan parameter berikut:

  Pada Server A
  vpn       eth0:192.18.1.0/24
http://echo<dot>or<dot>id<slash>paper




  Pada Server B
  vpn       eth0:172.16.0.0/22

24. Edit file /etc/shorewall/masq
  #vi /etc/shorewall/masq

  kemudian isi ubah parameter yang ada menjadi:

  Pada Server A
  eth0:!192.168.1.0/24      172.16.0.0/22

  Pada Server B
  eth0:!172.16.0.0/22      192.168.1.0/24

25. Edit file /etc/shorewall/policy
  #vi /etc/shorewall/policy

  kemudian isi dengan parameter berikut:

  Pada Server A dan Server B
  loc      vpn        ACCEPT
  vpn       loc       ACCEPT

26. Restart service shorewall pada kedua server
  #/etc/init.d/shorewall restart

27. Jalankan ipsec pada kedua server
  #/etc/init.d/ipsec start

28. Lihat log pada file /var/log/secure
  #tail -f /var/log/secure

  Jika hasil log menunjukan hasil seperti di bawah:

ipsec__plutorun: Starting Pluto subsystem...
pluto[14479]: Starting Pluto (FreeS/WAN Version 2.06 PLUTO_USES_KEYRR)
pluto[14479]: Using KLIPS IPsec interface code
pluto[14479]: added connection description "servera-serverb"
pluto[14479]: listening for IKE messages
pluto[14479]: adding interface ipsec0/eth0 202.155.100.100
pluto[14479]: loading secrets from "/etc/ipsec.secrets"
pluto[14479]: "a-b" #1: initiating Main Mode
http://echo<dot>or<dot>id<slash>paper


pluto[14479]: "a-b" #1: ISAKMP SA established
pluto[14479]: "a-b" #2: initiating Quick Mode RSASIG+ENCRYPT+PFS+UP
{using isakmp#1}
pluto[14479]: "a-b" #2: sent QI2, IPsec SA established {ESP=>0x2dfcd977
<0xada21f1a}
pluto[14479]: "a-b" #3: responding to Main Mode
pluto[14479]: "a-b" #3: sent MR3, ISAKMP SA established
pluto[14479]: "a-b" #3: retransmitting in response to duplicate packet; already
STATE_MAIN_R3
  pluto[14479]: "a-b" #4: responding to Quick Mode

maka koneksi vpn telah berhasil, dan tinggal melakukan pengetesan serta
sniffing paket untuk pembuktian.
jika hasil output log tidak seperti di atas, maka terjadi kesalahan pada
konfigurasi ipsec atau pun kernel. lihat error message dan perbaiki kembali
konfigurasi tersebut.

29. Jalankan tcpdump pada server B

  #tcpdump -n -i eth0

30. Lakukan ping dari salah satu ip di jaringan lokal B (192.168.1.14) ke salah satu
ip jaringan lokal A (172.16.0.3)

  #ping 172.16.0.3

31. Lihat output dari tcpdump pada server Jika hasil output tcpdump pada
server B seperti di bawah:

14:39:28.504834      IP       202.155.100.100             >        202.155.138.101:
ESP(spi=0x2dfcd978,seq=0x36c)
14:39:29.644717      IP       202.155.138.101             >        202.155.100.100:
ESP(spi=0xada21f1b,seq=0x38e)
14:39:29.645521      IP       202.155.100.100             >        202.155.138.101:
ESP(spi=0x2dfcd978,seq=0x36d)

  maka koneksi vpn telah benar-benar berhasil.

Vpn gw2gw

  • 1.
    INSTALASI VPN GATEWAY 2 GATEWAY (Dengan freeswan && shorewall ):: Quick Edition Mirrored form : http://irvan.or.id/tutorial.php?act=view&id=5 Oleh: Z3r0byt3 http://irvan.or.id http://echo.or.id irv@irvan.or.id
  • 2.
    http://echo<dot>or<dot>id<slash>paper *editor : Nopreface Instalasi vpn menggunakan freeswan versi 2.06 untuk koneksi gateway to gateway Catatan: Konfigurasi ini dilakukan pada kedua mesin yang bertindak sebagai gateway untuk masing-masing jaringan Kondisi awal, kita memiliki 2 buah mesin yaitu: - Server A : - memiliki: - ip publik = 202.155.138.101 - netmask = 255.255.255.240 - ip router = 202.155.138.240 - ip lokal = 172.16.0.49 - netmask = 255.255.252.0 - Server B : - memiliki: - ip publik = 202.155.100.100 - netmask = 255.255.255.240 - ip router = 202.155.100.101 - ip lokal = 192.168.1.130 - netmask = 255.255.255.0 - Paket Tcpdump terinstall pada masing-masing mesin Konfigurasi umum untuk Server A dan Server B 1. Mesin linux lengkap dengan iptables, shorewall dan source code kernel 2. Pindah direktori ke direktori /var/tmp #cd /var/tmp 3. ekstrak file freeswan-2.06.tar.gz #tar -zxvf secure-linux/source/freeswan-2.06.tar.gz 4. pindah ke direktori freeswan-2.06 #cd freeswan-2.06 5. edit file Makefile.inc
  • 3.
    http://echo<dot>or<dot>id<slash>paper #vi Makefile.inc 6.Ubah baris berikut: INC_USRLOCAL=/usr/local menjadi INC_USRLOCAL=/usr dan baris berikut: INC_MANDIR=man Menjadi: INC_MANDIR=share/man 7. Patch kembali kernel dengan freeswan #make kpatch 8. konfigurasi ulang kernel dan kompile dengan mengaktifkan modul IPSEC/Freeswan #cd /usr/src/linux #make menuconfig aktifkan modul IPSEC/Freeswan, kemudian simpan konfigurasi dan keluar #make dep clean bzImage #cp arch/i368/boot/bzImage /boot/vmlinuz-2.4.26 #cp System.map /boot/System.map-2.4.26 #lilo 9. Reboot mesin #reboot 10. Pindah ke direktori freeswan #cd /var/tmp/freeswan-2.06
  • 4.
    http://echo<dot>or<dot>id<slash>paper 11. Compile daninstall freeswan #make program #make install 12. pindah direktori kerja menjadi /root #cd /root Pada server A 13. Buat 2 buah rsa key yang akan di gunakan untuk kedua mesin (key ini hanya di generate pada satu buah mesin) #ipsec rsasigkey --verbose 2192 > left-key #ipsec rsasigkey --verbose 2192 > right-key 14. Copy file left-key menjadi file ipsec.secrets #cp left-key /etc/ipsec.secrets 15. Edit file /etc/ipsec.secrets, tambahkan parameter berikut: 202.155.138.101 202.155.100.100: RSA { #pada baris awal } #pada baris akhir *catatan: ip tersebut merupakan ip publik kedua mesin. *catatan: ip tersebut merupakan ip publik kedua mesin. 16. dengan menggunakan sftp atau scp copy file right-key ke server B Pada server B 17. Copy file right-key menjadi file ipsec.secrets #cp right-key /etc/ipsec.secrets 18. Edit file /etc/ipsec.secrets, tambahkan parameter berikut: 202.155.138.101 202.155.100.100: RSA { #pada baris awal } #pada baris akhir *catatan: ip tersebut merupakan ip publik kedua mesin.
  • 5.
    http://echo<dot>or<dot>id<slash>paper Pada Kedua mesin,server A dan server B 19. Edit file /etc/ipsec.conf, kemudian isi dengan konfigurasi berikut: config setup interfaces="ipsec0=eth0" klipsdebug=none conn block auto=ignore conn private auto=ignore conn private-or-clear auto=ignore conn clear-or-private auto=ignore conn clear auto=ignore conn packetdefault auto=ignore conn a-b left=202.155.138.101 leftsubnet=172.16.0.0/22 leftnexthop=202.155.138.240 right=202.155.100.100 rightsubnet=192.168.1.0/24 rightnexthop=202.155.100.101 keyingtries=0 auth=esp authby=rsasig leftrsasigkey=0sAQNZYi1vkyiJN.......(dipotong, karena terlalu panjang) rightrsasigkey=0sAQOoYLTSZRvx.......(dipotong, karena terlalu panjang) auto=start *Catatan:
  • 6.
    http://echo<dot>or<dot>id<slash>paper - leftrsasigkey= diambil dari file /etc/ipsec.secrets pada server A pada bagian pubkey= - righttrsasigkey= diambil dari file /etc/ipsec.secrets pada server B pada bagian pubkey= 20. Edit file /etc/shorewall/tunnels #vi /etc/shorewall/tunnels kemudian isi dengan parameter berikut: Untuk server A ipsec net 202.155.100.100 Untuk server B ipsec net 202.155.138.101 21. Edit file /etc/shorewall/zones #vi /etc/shorewall/zones kemudian isi dengan parameter berikut: Pada Server A dan Server B vpn VPN VPN Euuuyyyyy 22. Edit file /etc/shorewallinterface #vi /etc/shorewall/interfaces kemudian isi dengan parameter berikut: Pada Server A dan Server B vpn ipsec0 23. Edit file /etc/shorewall/hosts # vi /etc/shorewall/hosts kemudian isi dengan parameter berikut: Pada Server A vpn eth0:192.18.1.0/24
  • 7.
    http://echo<dot>or<dot>id<slash>paper PadaServer B vpn eth0:172.16.0.0/22 24. Edit file /etc/shorewall/masq #vi /etc/shorewall/masq kemudian isi ubah parameter yang ada menjadi: Pada Server A eth0:!192.168.1.0/24 172.16.0.0/22 Pada Server B eth0:!172.16.0.0/22 192.168.1.0/24 25. Edit file /etc/shorewall/policy #vi /etc/shorewall/policy kemudian isi dengan parameter berikut: Pada Server A dan Server B loc vpn ACCEPT vpn loc ACCEPT 26. Restart service shorewall pada kedua server #/etc/init.d/shorewall restart 27. Jalankan ipsec pada kedua server #/etc/init.d/ipsec start 28. Lihat log pada file /var/log/secure #tail -f /var/log/secure Jika hasil log menunjukan hasil seperti di bawah: ipsec__plutorun: Starting Pluto subsystem... pluto[14479]: Starting Pluto (FreeS/WAN Version 2.06 PLUTO_USES_KEYRR) pluto[14479]: Using KLIPS IPsec interface code pluto[14479]: added connection description "servera-serverb" pluto[14479]: listening for IKE messages pluto[14479]: adding interface ipsec0/eth0 202.155.100.100 pluto[14479]: loading secrets from "/etc/ipsec.secrets" pluto[14479]: "a-b" #1: initiating Main Mode
  • 8.
    http://echo<dot>or<dot>id<slash>paper pluto[14479]: "a-b" #1:ISAKMP SA established pluto[14479]: "a-b" #2: initiating Quick Mode RSASIG+ENCRYPT+PFS+UP {using isakmp#1} pluto[14479]: "a-b" #2: sent QI2, IPsec SA established {ESP=>0x2dfcd977 <0xada21f1a} pluto[14479]: "a-b" #3: responding to Main Mode pluto[14479]: "a-b" #3: sent MR3, ISAKMP SA established pluto[14479]: "a-b" #3: retransmitting in response to duplicate packet; already STATE_MAIN_R3 pluto[14479]: "a-b" #4: responding to Quick Mode maka koneksi vpn telah berhasil, dan tinggal melakukan pengetesan serta sniffing paket untuk pembuktian. jika hasil output log tidak seperti di atas, maka terjadi kesalahan pada konfigurasi ipsec atau pun kernel. lihat error message dan perbaiki kembali konfigurasi tersebut. 29. Jalankan tcpdump pada server B #tcpdump -n -i eth0 30. Lakukan ping dari salah satu ip di jaringan lokal B (192.168.1.14) ke salah satu ip jaringan lokal A (172.16.0.3) #ping 172.16.0.3 31. Lihat output dari tcpdump pada server Jika hasil output tcpdump pada server B seperti di bawah: 14:39:28.504834 IP 202.155.100.100 > 202.155.138.101: ESP(spi=0x2dfcd978,seq=0x36c) 14:39:29.644717 IP 202.155.138.101 > 202.155.100.100: ESP(spi=0xada21f1b,seq=0x38e) 14:39:29.645521 IP 202.155.100.100 > 202.155.138.101: ESP(spi=0x2dfcd978,seq=0x36d) maka koneksi vpn telah benar-benar berhasil.