Bagaimana cara mengatur OpenVPN agar saya dapat menggunakan internet dengan aman dari hotspot yang tidak aman?

31

Sasaran: Saya ingin dapat menggunakan internet dengan aman melalui PC di rumah saat notebook saya terhubung ke hotspot / titik akses terbuka.

Saya tidak tahu bahwa saya dapat menggunakan SSH terowongan / SOCKS proxy, tapi saya tidak ingin bermain dengan aplikasi (membuat mereka menggunakannya, bahkan jika mungkin). Saya kira yang saya butuhkan adalah pengaturan OpenVPN, jadi saya mencari panduan terperinci tentang cara:

  1. Instal dan setup server OpenVPN
  2. Menyiapkan klien OpenVPN (NetworkManager)

Versi Ubuntu yang harusnya digunakan adalah 10.10 dan 11.04.

htorque
sumber
Ini lebih merupakan pertanyaan serverfault daripada yang ubuntu saya pikir.
Luis Alvarado
1
@Cyrex: 1) adalah, 2) mungkin tidak
Lekensteyn

Jawaban:

40

Saya memiliki pertanyaan yang tepat beberapa bulan yang lalu, tetapi selain itu, saya ingin memiliki koneksi IPv6 jika memungkinkan. Anda mungkin tertarik dengan pertanyaan saya di Serverfault:

Saya hanya punya satu NIC ("antarmuka jaringan") di server saya untuk digunakan. Dalam pengaturan saya, NetworkManager tidak cukup karena saya perlu menjalankan skrip khusus untuk mendukung IPv6. Untuk kesederhanaan, saya akan menggunakan NetworkManager di sini dan menghilangkan dukungan IPv6.

Pertama, buat keputusan tentang metode otentikasi. Saya akan menggunakan metode sertifikat yang lebih aman yang berfungsi seperti SSL: selama jabat tangan sebuah rahasia umum dipilih yang akan digunakan untuk sesi tersebut. Metode lain adalah kunci bersama; nama pengguna dan kata sandi.

Server

1. Bersiap

Pertama, instal server openvpn. Ini semudah sudo apt-get install openvpn. Bagian yang sulit adalah mengonfigurasinya. Konfigurasi hadir di /etc/openvpn.

2. Konfigurasikan otentikasi

Server membutuhkan sertifikat untuk mengidentifikasi dirinya dan kliennya. Sertifikat ini diambil dari CA (Common Authority). Pembuatan sertifikat dan kunci pribadi terkait dapat dilakukan pada mesin apa pun, tidak harus dilakukan di server. Jika Anda benar-benar paranoid, Anda harus melakukannya pada mesin yang tidak terhubung ke jaringan, dan menggunakan memory stick untuk mentransfer sertifikat.

Buat CA dan sertifikat untuk server

Langkah ini harus dilakukan sekali kecuali kunci pribadi CA Anda terganggu. Dalam hal itu, sertifikat yang valid dapat dibuat yang akan diterima oleh server, yang mengakibatkan pelanggaran keamanan.

The dokumentasi resmi menyarankan untuk melakukan administrasi dalam /etc/openvpn. Saya bukan penggemar menjalankan segala sesuatu sebagai root, jadi saya akan meletakkannya di direktori yang berbeda.

  1. Buat direktori administrasi dan salin file di dalamnya dengan menjalankan:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. Edit default varssesuai kebutuhan, misalnya pengaturan KEY_SIZE=2048karena Anda paranoid.
  3. Muat variabel dan buat direktori kunci dengan menjalankan:

    . vars
    
  4. Jika Anda mendapatkan kesalahan itu No ... openssl.cnf file could be found Further invocations will fail, jalankan ln -s openssl-1.0.0.cnf openssl.cnf, lalu . varslagi.

  5. Jika ini adalah pertama kalinya Anda menggunakan CA ini, siapkan lingkungan tombol. Jangan tidak menjalankan perintah ini jika Anda ingin mempertahankan CA. Anda dibuat sebelumnya Dengan melakukan hal itu Anda harus menggunakan yang baru ca.crt.

    ./clean-all
    
  6. Buat CA dengan mengeksekusi ./build-ca. Anda dapat mengisi detail apa pun yang Anda inginkan, tetapi perhatikan bahwa informasi ini akan terlihat dalam file log ketika klien terhubung ke server. Ini akan membuat file ca.keydan ca.crtdalam subfolder keys. Jaga ca.keykerahasiaan file dalam segala keadaan . Kegagalan untuk melakukannya akan memungkinkan siapa saja dengan kunci untuk terhubung ke server Anda.
  7. Jika Anda memiliki sertifikat sebelumnya yang hilang atau kedaluwarsa, Anda harus mencabut yang lama dulu ./revoke-full server. Kalau tidak, Anda mendapatkan kesalahan database.
  8. Buat sertifikat untuk server dengan menjalankan:

    ./build-key-server server
    

    Ketika ditanya kata sandi, biarkan kosong kecuali Anda bersedia memasukkan kata sandi setiap kali server mulai (tidak disarankan). Konfirmasikan untuk menandatangani sertifikat dan lakukan. Dua file baru akan muncul di direktori keys: server.keydan server.crt.

DH dan gunakan persiapan untuk tls-auth

Hasilkan parameter Diffie-Hellman menggunakan:

./build-dh

Per tips pengerasan , gunakan tls-auth. Untuk itu, buat kunci rahasia bersama menggunakan:

openvpn --genkey --secret ta.key

File yang dihasilkan ( ta.key) juga harus didistribusikan ke klien, tetapi Anda tidak boleh mempublikasikannya ke publik.

Buat sertifikat untuk klien

Untuk setiap klien, langkah-langkah ini harus diulangi:

  1. Masukkan direktori tempat Anda membuat CA dan sertifikat server:

    cd ~/openvpn-admin/easy-rsa
    
  2. Jika Anda telah melewatkan langkah pembuatan CA karena Anda telah melakukannya, Anda perlu memuat variabel terlebih dahulu:

    . vars
    
  3. Jika Anda membuat sertifikat baru karena yang lama hilang atau kedaluwarsa , Anda harus mencabut yang lama terlebih dahulu ./revoke-full you. Kalau tidak, Anda mendapatkan kesalahan database.
  4. Buat sertifikat klien you.keydan sertifikatnya yang sesuai you.crt:

    ./build-key you
    

    The CommonNameharus unik. Biarkan kata sandi kosong jika Anda menggunakan KDE karena belum didukung pada 10.10. Seperti halnya pembuatan sertifikat server, konfirmasikan penandatanganan sertifikat dan lakukan perubahan.

3. Atur layanan OpenVPN

Secara default, OpenVPN berjalan sebagai root ketika menerima koneksi. Bukan ide yang baik jika layanan ini dapat diakses dari Internet jahat.

  1. Buat pengguna khusus untuk OpenVPN, katakan openvpn:

    sudo useradd openvpn
    
  2. Salin file server.key, server.crt, ca.crtdan dh1024.pem(atau dh2048.pemjika Anda telah mengubah ukuran kunci) dari direktori kunci dalam /etc/openvpn. Izin 400 (hanya-baca untuk pemilik) baik-baik saja.

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. Salin file ta.keyjuga:

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. Buat file /etc/openvpn/server.confdan masukkan baris berikutnya ke dalamnya:

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. Tetapkan izin yang sesuai untuk itu, tidak perlu dirahasiakan, tapi saya lebih suka tidak membocorkan detail konfigurasi jadi:

    sudo chmod 640 /etc/openvpn/server.conf
    

4. Menyelesaikan server

Jika Anda telah membuat sertifikat di server, itu ide yang baik untuk mengenkripsi atau memindahkannya dari server. Bagaimanapun, jangan kehilangan ca.keydan server.key. Dalam kasus pertama, orang lain akan dapat terhubung ke server Anda. Dalam yang terakhir, MITM dimungkinkan.

Klien

Selain alamat IP server, administrator server harus menyerahkan file-file berikut:

  • ca.crt: untuk memverifikasi sertifikat
  • server.crt: untuk memverifikasi server dan berkomunikasi dengannya
  • ta.key: untuk pengerasan keamanan
  • you.crt: untuk mengidentifikasi diri Anda dengan server
  • you.key: seperti kata sandi Anda, izin file harus 400 (hanya baca untuk pemilik)

1. Instalasi

Instal OpenVPN dan plugin NetworkManager (cocok untuk KDE dan Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn ada di repositori alam semesta.

2. Konfigurasi

Di panel kontrol, gunakan detail berikut:

  • Gateway: alamat IP server
  • Ketik: "Sertifikat (TLS)" (Gnome) atau "Sertifikat X.509" (KDE)
  • Sertifikat CA: jalur ke ca.crt
  • Sertifikat Pengguna: jalur ke you.crt
  • Kunci Pribadi: path ke you.key

Di Tingkat Lanjut :

  • Gateway port: Otomatis (1194) (tidak perlu diubah)
  • Gunakan kompresi data LZO: diaktifkan
  • Gunakan koneksi TCP: dinonaktifkan
  • Gunakan perangkat TAP: diaktifkan
  • Cipher: default
  • Otentikasi HMAC: default
  • Gunakan otentikasi TLS: diaktifkan.
    Menentukan path File Kunci ke ta.keydan mengatur "Arah Kunci" untuk 1.
  • ( todo - memeriksanya ) server mendorong gateway default sehingga semua lalu lintas melewati koneksi VPN. Terakhir kali saya memeriksa, plugin network-manager-openvpn tidak melakukannya.

Jika Anda tidak dapat mengaktifkan NetworkManager atau tidak ingin menggunakannya, masukkan file ( ca.crt, ...) /etc/openvpndan buat file /etc/openvpn/client.conffile:

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

Jika Anda tidak ingin mengaktifkan VPN ini saat boot, edit /etc/default/openvpndan batalkan komentar pada baris berikutnya dengan menghapus #:

#AUTOSTART="none"

Untuk memulai koneksi ini, jalankan:

sudo /etc/init.d/openvpn start client

clientharus diganti namanya jika file konfigurasi Anda tidak bernama client.conf. Contoh: jika Anda memberi nama file konfigurasi safe.confAnda, Anda harus menjalankannya sudo /etc/init.d/openvpn start safe.

Untuk menghentikan OpenVPN, Anda harus menjalankan:

sudo /etc/init.d/openvpn stop
Lekensteyn
sumber
1
Apa konfigurasi server untuk login berbasis nama pengguna / kata sandi, di mana klien saya tidak memiliki pengetahuan untuk mengatur klien vpn saya ingin dia menggunakan ip server, nama pengguna, kata sandi.
@YumYumYum Tidak tahu cara menggunakan nama pengguna / kata sandi, lihat halaman manual openvpn ( man openvpn). Openvpn versi terbaru memiliki kemampuan untuk menyematkan sertifikat dan file kunci, jadi mungkin bahkan lebih mudah untuk memberikan file konfigurasi tunggal dengan instruksi kepada pengguna.
Lekensteyn
Perhatikan bahwa versi terbaru dari Ubuntu dikirimkan dengan OpenSSL 1.0.1, dan menjalankan . varsperintah di atas dapat menghasilkan kesalahan bahwa "file openssl.cnf dapat ditemukan. Permintaan lebih lanjut akan gagal". Anda perlu sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf, lalu jalankan . varsdan perintah lainnya.
Dan Dascalescu
@DanDascalescu Script whichopensslmenempatkan openssl-1.0.0.cnffile dengan benar untuk saya (easy-rsa 2.3.2, OpenSSL 1.0.1e)
Lekensteyn
Sangat informatif, jawaban menyeluruh. Bisakah Anda menjawab pertanyaan ini ?
JB0x2D1
8

Anda sebenarnya tidak perlu mengutak-atik aplikasi apa pun. Ini berfungsi "seperti halnya VPN."

  1. Pertama instal tsockspaket (kaus kaki sementara):

    sudo apt-get install tsocks
    
  2. Kemudian edit /etc/tsocks.confdan masuk

    server = 127.0.0.1
    server_port = 3333
    
  3. Sekarang, buka terminal dan ketik (ini menghubungkan Anda):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. Jalankan (melalui terminal lain atau ALT-F2):

    tsocks firefox
    

Sekarang, Firefox mentransmisikan semua komunikasi melalui ke server SOCKS di komputer Anda yang dibuat SSH. Selanjutnya ini akan diteruskan ke mesin rumah Anda, di mana ia pergi ke web. Yang Anda butuhkan pada mesin di rumah Anda adalah server SSH. Setelah pertama kali, ulangi langkah 3 dan 4.

Itu bekerja seperti pesona! Sayangnya, chromium tidak suka tsocks, tapi hei, Firefox berfungsi.

MarkovCh1
sumber
3
Nah, lihat kalimat terakhir Anda - Saya tidak ingin memeriksa semua program saya terlebih dahulu jika mereka benar-benar bekerja dengan baik bersama dengan tsocks, padahal itu bisa hanya satu klik di applet NetworkManager dengan OpenVPN.
htorque
BAIK. Jawaban saya mungkin akan bermanfaat bagi orang yang menginginkan solusi cepat untuk mengakses situs web.
MarkovCh1
1

Solusi terowongan SSH lebih mudah dari yang Anda pikirkan. Program seperti gSTM akan memulai / menghentikan terowongan untuk Anda dengan GUI. Kemudian cukup buka Proksi Jaringan dan ubah dari koneksi internet langsung ke konfigurasi proksi Manual, tekan "Terapkan di seluruh sistem" dan semua aplikasi Anda harus mengirim data mereka ke terowongan - tidak perlu bermain-main dengan masing-masing secara individual.

Felix
sumber