Selasa, 24 November 2009

Zero to IPSec in 4 minutes

Artikel pendek ini melihat bagaimana untuk mendapatkan IPSec VPN berfungsi penuh dan berjalan di antara dua instalasi OpenBSD segar dalam waktu sekitar empat menit saja.
Sampai baru-baru ini, mendirikan sebuah open-source solusi IPSec telah menyedihkan kompleks dan melibatkan mengarungi melalui sup alfabet komite-dirancang protokol. Banyak orang menyerah pada IPSec setelah mengintip pertama mereka yang mengerikan dan dokumentasi perangkat lunak yang rumit, bukannya memilih untuk menginstal beberapa jenis SSL VPN komersial yang tampaknya jauh lebih sederhana. Bagi mereka yang telah melalui latihan ini, campur aduk SAS, ESPs, AHS, Spis, CAS, certs, FIFOs, kebijakan IKEs dan jargon dalam RFC sudah cukup untuk memberi orang sakit kepala. Namun, ada yang baik IPSec baru di depan: ia memiliki semua akhirnya telah ditutup-tutupi dengan baik, cara sederhana untuk mengatur itu di bawah OpenBSD.

Dalam artikel singkat ini kita akan melihat bagaimana untuk mendapatkan IPSec VPN berfungsi penuh dan berjalan di antara dua mesin OpenBSD segar dalam waktu sekitar empat menit saja. Tujuannya di sini pasti tidak untuk memberikan gambaran lengkap dari semua pilihan yang tersedia dalam IPSec atau OpenBSD, melainkan hanya seberapa cepat dan mudah kita dapat berdiri dan berjalan ketika yang lain waktu berhari-hari atau berminggu-minggu untuk melakukan hal yang sama.
Memperkenalkan ipsecctl di OpenBSD
Anda mungkin tidak menyadari hal itu, tetapi perintah baru telah menyelinap masuk ke OpenBSD, dimulai dengan versi 3.8: ipsecctl. Dan itu benar-benar indah. Ini memberikan sangat dibutuhkan lapisan abstraksi untuk semua yang sangat fleksibel, tapi mengerikan rincian IPSec rumit. Dalam kenyataannya, kebanyakan orang tidak perlu setengah dari konfigurasi dan protokol IPSec menyediakan pilihan yang, jadi lapisan abstraksi ini sangat dibutuhkan.

Jika semua orang ingin lakukan adalah mengatur enkripsi sederhana Virtual Private Network (VPN) antara dua situs, langkah-langkah konfigurasi seorang pun harus melalui cara lain selalu benar-benar jelek, dan sebotol aspirin adalah aksesori wajib. Lagi! Sekarang dengan ipsecctl, sederhana setup VPN dapat dengan mengedit satu file konfigurasi sederhana pada OpenBSD: / etc / ipsec.conf.

Sebagai ujian, Sean Comeau kolega saya dan saya mengambil dua baru diinstal OpenBSD firewall, dalam konfigurasi standar mereka, dan disunting tiga file. Kami berubah total tujuh baris konfigurasi pada setiap sistem - dan IPSec VPN memiliki paket pertukaran antara dua situs dalam empat menit pertama boot.

Mereka yang belum menginstall OpenBSD sebelumnya akan menemukan ternyata proses instalasi mudah. Dua cara yang paling populer adalah instalasi melalui CD-ROM (pilihan yang tidak mahal, tetapi harus dibeli dari tim OpenBSD), atau melalui FTP sederhana menginstal menggunakan floppy atau CD-ROM boot media. Dengan koneksi broadband, FTP lengkap instalasi sistem default dengan mudah dapat diselesaikan dalam waktu kurang dari sepuluh menit. Untuk tujuan pasal ini, kami akan menganggap Anda memiliki dua menginstall segar dari OpenBSD siap untuk pergi. Catatan bahwa jika Anda mengikuti build CVS OpenBSD baik 3,8-stabil atau 3,8 OpenBSD-current, baik mesin dalam VPN Anda harus menjalankan snapshot yang sama.
Sebuah contoh IPSec
Untuk menggambarkan betapa IPSec sederhana adalah untuk setup di OpenBSD, mari kita mulai dengan sebuah contoh. Pertama, mari kita tinjau tujuan dengan cepat. Kami ingin dua remote subnet jaringan melalui sepenuhnya terenkripsi, standard IPSec Virtual Private Network (VPN). Kedua subnet kita akan memiliki OpenBSD Network Address Translation (NAT) firewall.

Jaringan A:

External IP address: 1.2.3.4 Internal blok alamat IP: 10.1.1.0/24

Jaringan B:

External IP address: 5.6.7.8 blok alamat IP Internal: 10.2.2.0/24

Konfigurasi pf, yang kami menyediakan firewall dan NAT, ditemukan / etc / pf.conf. Pada kedua sistem dalam contoh ini, pf.conf akan terlihat sebagai berikut:

ext_if = "fxp0"
int_if = "fxp1"
set skip on (lo $ int_if)
nat on $ ext_if from! ($ ext_if) -> ($ ext_if: 0)
blok
keadaan pingsan terus

Kedua sistem memiliki IP forwarding terangsang oleh uncommenting yang "net.inet.ip.forwarding = 1" baris di / etc / sysctl.conf file. IP forwarding dimatikan secara default, tetapi diperlukan untuk NAT. Sekarang setelah kita memahami tujuan dan memiliki dua sistem dasar yang berfungsi penuh, apa yang harus kita lakukan untuk menghubungkan dua internal subnet kita bersama-sama dengan VPN? Seperti yang akan Anda lihat, konfigurasi secara mengejutkan sederhana.
Langkah 1. Konfigurasi IPSec
Pertama, tambahkan baris berikut ke Firewall A di / etc / ipsec.conf:

ike esp dari 10.1.1.0/24 untuk 10.2.2.0/24 rekan 5.6.7.8
ike esp dari 1.2.3.4 ke 5.6.7.8 rekan 10.2.2.0/24
ike esp dari 1.2.3.4 ke 5.6.7.8

Selanjutnya, tambahkan baris berikut ke Firewall B's / etc / ipsec.conf:

ike esp pasif dari 10.1.1.0/24 rekan 10.2.2.0/24 ke 1.2.3.4
ike esp pasif dari 5.6.7.8 ke 1.2.3.4 rekan 10.1.1.0/24
ike esp pasif dari 5.6.7.8 ke 1.2.3.4

Pengubah pasif dalam konfigurasi menunjukkan bahwa Firewall A akan memulai sambungan dan Firewall B akan mendengarkannya.
Langkah 2. Biarkan IPSec melalui firewall
Sekarang, tambahkan baris berikut ke / etc / pf.conf untuk mengkonfigurasi Firewall Sebuah firewall pada:

lulus cepat pada $ ext_if dari 5.6.7.8

dan mengubah "set skip" baris dari:

set skip on (lo $ int_if)

untuk:

set skip on (lo $ int_if enc0)

Ini menambah antarmuka enc0 dikemas ke dalam daftar.

Sekarang mari kita lanjutkan dengan Firewall B. Dalam hal ini / etc / pf.conf, tambahkan baris berikut:

lulus cepat pada $ ext_if dari 1.2.3.4
set skip on (lo $ int_if enc0)

Kita sudah selesai dengan baik firewall / NAT dan IPSec configiguration, jadi mari kita lanjutkan ke langkah berikutnya - menyalin kunci.
Langkah 3. Salin isakmpd kunci untuk setiap sistem
On Firewall A (1.2.3.4), salin / etc / isakmpd / swasta / Firewall local.pub dari B ke / etc/isakmpd/pubkeys/ipv4/5.6.7.8.

Demikian pula, pada Firewall B (5.6.7.8) salin / etc / isakmpd / swasta / local.pub dari Firewall A ke / etc/isakmpd/pubkeys/ipv4/1.2.3.4.

Pembaca harus mencatat bahwa sementara konfigurasi ini menggunakan alamat IP numerik, konfigurasi juga dapat dilakukan dengan nama domain berkualifikasi lengkap. Untuk menggunakan nama domain, cukup salin kunci ke dalam / etc / isakmpd / pubkeys / FQDN direktori, dan gunakan kata kunci srcid dan dstid di dalam kamu / etc / aliran ipsec.conf spesifikasi.
Langkah 4. Buat VPN
Untuk memulai VPN, gunakan perintah berikut pada kedua sistem:

isakmpd-K
ipsecctl-f / etc / ipsec.conf

Congratualtions! Anda baru saja mendirikan sebuah IPSec VPN. Anda harus senang mengetahui bahwa perintah ipsecctl telah dikonfigurasi secara otomatis isakmpd dan semua file konfigurasi yang mengerikan, dan itu telah memilih bagus, masuk akal, dan aman default untuk Anda.

Opsi-opsi K mengatakan isakmpd untuk melewatkan rumit dan jarang diperlukan konfigurasi kebijakan yang seharusnya dapat diperlukan.

Sekarang mari kita menguji VPN. Anda harus dapat melakukan ping ke node pada 10.2.2 .* dari node pada 10.1.1 .* dan sebaliknya. Jika ini tidak berhasil, cobalah memulai debug isakmpd dengan opsi "isakmpd-K-d" untuk mendapatkan lebih banyak diagnosa.
Langkah 5. Set hal ini untuk memulai secara otomatis di reboot
Startup default daemon pada OpenBSD dapat ditemukan dalam file rc.conf standar. Edit / etc / rc.conf dan mengubah baris isakmpd:

isakmpd = "-K"

Juga memastikan bahwa 'PF = YES "di rc.conf juga, sehingga pf firewall / NAT dimulai pada boot berikutnya. Sekarang kami juga ingin memastikan bahwa ipsecctl dimulai secara otomatis. Untuk / etc / rc.local, tambahkan baris berikut:

ipsecctl-f / etc / ipsec.conf

Akhirnya, Anda mungkin ingin mengedit file / etc / changelist pada kedua Firewall A dan B untuk memastikan bahwa Anda baru / etc / ipsec.conf file konfigurasi terdaftar. Meskipun langkah ini adalah opsional sepenuhnya, menjamin bahwa setiap perubahan pada konfigurasi IPSec dilacak dan dikirimkan lewat email kepada Administrator setiap hari, sebagai bagian dari skrip mail sehari-hari. Ini bekerja, Anda harus mengkonfigurasi / etc / mail / aliases dan telah memberikan root alias alamat email Anda sendiri, dan kemudian jalankan 'newaliases' untuk melakukan perubahan.

Dan di sana Anda memilikinya. Bukankah itu bagus dan sederhana? Jika Anda sudah familiar dengan pf dan pfctl, ipsecctl akan tampak sangat mudah dan menyediakan antarmuka yang sangat mirip. Dengan kata lain, Anda bisa mendapatkan status ipsec mengalir dan asosiasi dengan:

ipsecctl-sa

Dan seterusnya. Herannya, butuh lebih dari satu dekade bagi seseorang untuk akhirnya memberikan sederhana, langsung konfigurasi antarmuka untuk IPSec. Sekarang cukup sederhana bahwa kita akhirnya bisa merekomendasikan IPSec untuk pemula orang sehingga mereka dapat dengan mudah men-setup sebuah IPSec VPN.
Kesimpulan
Dalam artikel yang singkat ini kita melihat bagaimana mudahnya untuk mendirikan IPSec VPN antara dua instalasi OpenBSD segar. Kami mulai dengan dua instalasi standar dan mengubah total tujuh baris konfigurasi. Alih-alih mengambil hari atau berminggu-minggu untuk mendapatkan IPSec VPN dan berjalan, kami berlari dalam waktu sekitar empat menit.

Thanks Theo dan tim OpenBSD untuk ini, karena kami percaya ini benar-benar suatu langkah maju yang besar bagi pengguna di mana-mana yang ingin menggunakan IPSec. Ipsecctl adalah apa yang kita telah lama diperlukan.

Sebagai catatan pribadi, saya ingin melihat lain * BSD committers pelabuhan ini banyak sistem lain. Ipsecctl itu ditentukan oleh Matt Sauve-Frankel, dan dikodekan oleh Hans-Joerg Hoexer. Sementara ipsecctl tidak muncul untuk bekerja belum sepenuhnya dengan IPv6, dukungan untuk ini harus di jalan. Juga mencatat bahwa mungkin ada perbedaan dengan cara bekerja di ipsecctl versi CVS saat ini dan 3,8-3,8-stabil, dan oleh karena itu disarankan bahwa baik firewall di konfigurasi IPSec Anda menjalankan versi yang sama OpenBSD.

Tidak ada komentar:

Posting Komentar