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.