GNU/Linux >> Belajar Linux >  >> Ubuntu

VPN IPsec berbasis StrongSwan menggunakan sertifikat dan kunci yang dibagikan sebelumnya di Ubuntu 16.04

Pengantar

Pada artikel ini, fokus kami adalah pada implementasi open source dari protokol IPsec. Keamanan lapisan jaringan dipastikan dengan menggunakan protokol IPsec yang terdiri dari dua komponen berikut.

  • Header Otentikasi (AH) 
  • Enkapsulasi Security Payload (ESP)

Integritas dan otentikasi paket dipastikan dengan menggunakan AH, komponen ESP menyediakan fitur kerahasiaan dan keamanan. Implementasi open source IPsec,  StrongSwan (Strong Secure WAN), adalah alat terkenal yang mendukung kedua versi pertukaran kunci internet (IKE v1/2)/. Berbagi kunci atau pertukaran kunci internet adalah bagian dari IPSec VPN (jaringan pribadi virtual). Mekanisme IKE digunakan untuk berbagi kunci antara dua pihak untuk enkripsi data dalam protokol ESP. Enkripsi &algoritma integritas (seperti AES, SHA dll) dari OpenSSL dan perpustakaan kripto digunakan selama langkah IKE. Namun, implementasi algoritma keamanan kernel Linux digunakan di bagian utama IPSec (ESP &AH). Strongswan.

Fitur Orang Kuat

  • Dukungan untuk otentikasi berbasis kunci yang dibagikan sebelumnya.
  • Sertifikat dalam format X.509 didukung untuk autentikasi.
  • Satu daemon yang mendukung IKE v1/v2.
  • Plugin dan pustaka pihak ketiga dapat diintegrasikan dengan mudah.
  • Token perangkat keras didukung dengan menggunakan proyek openSC.

VPN Gateway-to-Gateway dan Road warrior didukung oleh strongswan. Lalu lintas jaringan dienkripsi atau didekripsi pada perangkat gateway organisasi dalam vpn situs-ke-situs. Namun, saluran aman kedua dibuat dari perangkat gateway ke mesin pengguna akhir/klien.

Dalam artikel ini, alat strongSwan akan diinstal di Ubuntu 16.04 (LTS), saya akan menunjukkan integrasi OpenSC untuk token perangkat keras dan terakhir pembuatan terowongan gateway-ke-gateway menggunakan kunci yang dibagikan sebelumnya dan sertifikat x.509 . Token perangkat keras atau Modul Keamanan Perangkat Keras  (HSM) seperti USB dan kartu pintar dapat digunakan dengan strongswan untuk menyimpan kunci kriptografi (publik &pribadi ) dan sertifikat. Dukungan token perangkat keras di strongswan disediakan menggunakan OpenSC (kumpulan alat &pustaka), sebuah proyek sumber terbuka. Struktur file berbasis PKCS#15 dan akses kartu pintar menggunakan API PKCS#11 juga disediakan oleh alat OpenSC. Kartu pintar berikut didukung oleh openSC.

  • WestCOS
  • SetCOS
  • CardOs
  • STARCOS
  • ASEPCOS

Instalasi Strongswan (biner dan kode sumber)

Paket biner (deb/rpm ) dari strongswan tersedia di hampir semua distribusi Linux yang banyak digunakan. Instalasi strongswan dengan menggunakan binary dan source code (dengan fitur yang diinginkan) akan dijelaskan secara lengkap di artikel ini.

Paket biner strongswan dapat diinstal dengan menggunakan perintah berikut di Ubuntu 16.04 LTS.

aptitude install strongswan

Plugin strongswan yang tersedia di repositori Ubuntu ditunjukkan di bawah ini.

Setelah instalasi pada platform Ubuntu, file &folder konfigurasi (ipsec.conf, ipsec.secrets, ipsec.d,strongswan.conf, strongswan.d) disimpan di direktori /etc.

Kompilasi Strongswan menggunakan sumber

  • Opensc (untuk dukungan HSM di the strongswan).
  • PC/SC  (Diperlukan untuk dukungan pembaca kartu pintar di platform Ubuntu).
  • Perpustakaan GMP (diperlukan untuk operasi matematika di strongswan).
  • Alat OpenSSL (implementasi algoritme kriptografi yang terkenal seperti AES,SHA1).
  • PKCS (Standar kriptografi kunci publik) 1,7,8,11,12.

Pada artikel ini, alat PCSC-Lite akan diinstal bersama opensc pada platform Ubuntu untuk menambahkan dukungan bagi pembaca kartu pintar. PCSC-Lite disarankan untuk pembaca CCID.

Jalankan perintah berikut untuk menginstal perangkat lunak prasyarat sebelum kita memulai kompilasi strongswan.

1. Instalasi Opensc

aptitude install opensc

2. Instalasi pustaka GMP

aptitude install libgmp10

Instal pustaka pengembangan GMP.

aptitude install libgmp-dev

OpenSSL libcrypto diinstal dengan menggunakan perintah berikut.

apt-get install libssl-dev

Langkah-langkah kompilasi

Buka /usr/src/ folder dan unduh rilis terbaru strongswan dengan menggunakan perintah wget.

cd /usr/src
wget https://download.strongswan.org/strongswan-5.5.0.tar.gz

Ekstrak file terkompresi dan masuk ke dalam folder yang diekstrak untuk menjalankan skrip konfigurasi.

tar –xzf strongswan-5.5.0.tar.gz
cd strongswan-5.5.0

Jalankan skrip konfigurasi untuk memeriksa dependensi strongswan. Dukungan HSM sudah diaktifkan di versi terbaru untuk strongswan seperti yang ditunjukkan di bawah ini.

Jalankan skrip konfigurasi, gunakan awalan /usr/local dan aktifkan dukungan openssl.

./configure --prefix=/usr/local  --enable-openssl

Cuplikan berikut menunjukkan bahwa tidak ada kesalahan yang dibuat oleh skrip konfigurasi karena semua dependensi yang diperlukan telah diinstal pada sistem.

Jalankan dua perintah berikut untuk mengompilasi dan menginstal strongswan di bawah /usr/local direktori.

make

make install

Kompilasi dan instalasi strongswan pada platform Ubuntu selesai, beberapa file konfigurasi (strongswan.conf, ipsec.conf dan ipsec.secrets ) dan folder (strongswan.d,ipsec.d ) disalin di bawah /usr/local/etc jalur. Konfigurasi kebijakan VPN ditempatkan di ipsec.conf file dan rahasia rahasia disimpan di ipsec.secrets mengajukan. Konfigurasi plugin Strongswan disimpan di strongswan.d direktori.

Baik transport dan tunnel VPN didukung oleh strongswan. Dalam mode terowongan, keamanan saluran dari situs ke situs disediakan dan berfungsi dengan vendor lain seperti perangkat cisco, huawei, dan juniper.

VPN Situs-ke-Situs

Gambar berikut menunjukkan penempatan perangkat gateway VPN berbasis strongswan dalam jaringan. Saluran komunikasi yang aman akan dibuat antara 192.168.223.0/24 dan 192.168.222.0/24 jaringan pribadi organisasi.

Sebelum menggunakan IPsec antara jaringan pribadi A dan B, pastikan perutean antara Gateway VPN organisasi berfungsi sehingga gateway VPN di A sisi dapat melakukan ping ke mesin VPN sisi jarak jauh (B ) yang memastikan konektivitas jaringan baik-baik saja.

Seperti yang ditunjukkan di bawah ini, konfigurasi default alat strongswan ada di dalam  /usr/local/etc/ direktori.

Terowongan berbasis kunci yang dibagikan sebelumnya

Dalam kasus pertama, VPN berbasis rahasia bersama akan dibuat di antara perangkat gateway. Algoritme berbagi kunci yang terkenal Diffie-Hellman digunakan oleh strongswan untuk otentikasi bersama. Detail tentang cara kerja protokol IPsec tersedia di tautan berikut.

http://www.unixwiz.net/techtips/iguide-ipsec.html

Konfigurasi VPN:

(Sisi samping )

Konfigurasi utama dari kebijakan VPN strongswan ada di file ipsec.conf. Informasi seperti yang diberikan di bawah ini ditemukan dalam file konfigurasi ini.

  • Versi IKE
  • Jenis terowongan
  • gerbang sumber &tujuan
  • jaringan pribadi VPN

ipsec.conf dari Sisi diberikan di bawah ini.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.101
        leftsubnet=192.168.223.0/24
        right=192.168.1.102
        rightsubnet=192.168.222.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel

Rahasia IPsec (kunci bersama, sandi kunci pribadi, pin untuk membuka kunci hsm ) disimpan di ipsec.secrets file . Seperti yang ditunjukkan di bawah ini, shard secret antara kedua pihak VPN adalah "test12345".

192.168.1.101 192.168.1.102 : PSK 'test12345'

(Sisi B)

Konfigurasi di file ipsec.conf dan ipsec.secrets di sisi jauh akan menjadi kebalikan dari situs lokal seperti yang diberikan di bawah ini.

Isi file ipsec.conf diberikan di bawah ini.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.102
        leftsubnet=192.168.222.0/24
        right=192.168.1.101
        rightsubnet=192.168.223.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel

File ipsec.secrets berisi rahasia bersama di sisi jarak jauh.

192.168.1.102 192.168.1.101 : PSK 'test12345'

Mulai daemon strongswan (charon ) menggunakan perintah berikut setelah Anda mengatur file konfigurasi di kedua sisi.

ipsec restart

Perintah berikut menunjukkan status VPN yang dibuat pada perangkat.

status ipsec

Status terowongan di kedua sisi (lokal dan jarak jauh) ditunjukkan di bawah ini.

Perintah Linux ini menunjukkan kebijakan dan status terowongan IPsec.

ip xfrm state
ip xfrm policy

Seperti yang ditunjukkan pada output perintah di atas, informasi sensitif esp/hmac (keys) juga ditampilkan oleh perintah ip xfrm.

Terowongan berbasis sertifikat X.509

Dalam terowongan berbasis sertifikat X.509 (Otentikasi kunci publik), diperlukan untuk membuat sertifikat untuk otoritas sertifikasi (CA), klien A dan B.

Membuat sertifikat CA yang ditandatangani sendiri menggunakan utilitas PKI dari strongswan ditampilkan dalam screenshot berikut.

Masuk ke dalam /usr/local/etc/ipsec.d path dan jalankan perintah berikut.

cd /usr/local/etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/strongswanKey.pem
ipsec pki --self --ca --lifetime 3650 --in private/strongswanKey.pem --type rsa --dn "C=CH, O=strongSwan, CN=Root CA" --outform pem > cacerts/strongswanCert.pem    

Pembuatan sertifikat untuk klien A ditunjukkan di bawah ini.

ipsec pki --gen --type rsa --size 2048 --outform pem > private/client1Key.pem
chmod 600 private/client1Key.pem
ipsec pki --pub --in private/client1Key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=device1" --san device1 --flag serverAuth --flag ikeIntermediate --outform pem > certs/client1Cert.pem

Demikian pula, pasangan kunci publik/pribadi dan sertifikat dibuat untuk klien B.

ipsec pki --gen --type rsa --size 2048 --outform pem > private/client2Key.pem
chmod 600 private/client2Key.pem
ipsec pki --pub --in private/client2Key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=device2" --san device2 --flag serverAuth --flag ikeIntermediate --outform pem > certs/client2Cert.pem

Setelah pembuatan CA dan sertifikat klien berhasil, langkah selanjutnya adalah mengubah konfigurasi ipsec.conf dan ipsec.secrets. Silakan berkonsultasi dengan dokumentasi strongswan untuk detail lebih lanjut tentang perubahan ipsec.conf dan file rahasia.

Isi dari ipsec.conf &ipsec.secrets untuk sisi A diberikan di bawah ini.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.101
        leftsubnet=192.168.223.0/24
        right=192.168.1.102
        rightsubnet=192.168.222.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        #authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel
        leftcert=client1Cert.pem
        leftid="C=CH, O=strongSwan, CN=device1"
        rightid="C=CH, O=strongSwan, CN=device2"

#192.168.1.101 192.168.1.102 : PSK 'test12345'
: RSA client1Key.pem

Konfigurasi sisi B juga diberikan di bawah ini.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.102
        leftsubnet=192.168.222.0/24
        right=192.168.1.101
        rightsubnet=192.168.223.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        #authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel
        leftcert=client2Cert.pem
        leftid="C=CH, O=strongSwan, CN=device2"
        rightid="C=CH, O=strongSwan, CN=device1"


#192.168.1.102 192.168.1.101 : PSK 'test12345'
: RSA client2Key.pem

Jalankan ipsec restart perintah untuk menerapkan perubahan di atas dan memeriksa status terowongan yang dibuat menggunakan sertifikat.

ipsec statusall    # at side A

ipsec statusall    # at side B

Akhirnya, VPN berbasis sertifikat telah berhasil dibuat dengan menggunakan alat strongswan.


Ubuntu
  1. Cara Menginstal dan Mengkonfigurasi Server VPN Algo di Ubuntu 20.04

  2. Menggunakan Ansible untuk menginstal dan mengkonfigurasi Elasticsearch di Ubuntu 20.04

  3. Cara Menginstal dan Mengonfigurasi StrongSwan VPN di Ubuntu 18.04

  1. Cara membuat tumpukan LAMP berbasis buruh pelabuhan menggunakan buruh pelabuhan di Ubuntu 20.04

  2. Cara membuat VPN di Ubuntu 20.04 menggunakan Wireguard

  3. Cara Mengatur IKEv2 VPN Menggunakan Strongswan dan Mari Enkripsi di CentOS 8

  1. Siapkan Pengguna Baru dan Auth Kunci SSH. menggunakan Ansible di Ubuntu 18.04

  2. VPN Ipsec berbasis Libreswan menggunakan kunci yang dibagikan sebelumnya dan RSA di Ubuntu

  3. Cara mengatur Server VPN menggunakan Pritunl di Ubuntu 18.04 LTS