OpenVPN'i güvenli bir sıcak noktadan interneti güvenle kullanabilmem için nasıl kurarım?


31

Hedef: Dizüstü bilgisayarım açık bir sıcak nokta / erişim noktasına bağlıyken, interneti ev bilgisayarım üzerinden güvenli bir şekilde kullanabilmek istiyorum.

Ben do Bir SSH tüneli / SOCKS proxy kullanabileceğinizi biliyor ama (hatta mümkünse onları kullanmak yapma) uygulamaları ile uğraşmak istemiyoruz. Sanırım ihtiyacım olan bir OpenVPN kurulumu, bu yüzden nasıl yapılacağına dair detaylı bir rehber arıyorum:

  1. OpenVPN sunucusunu kurun ve kurun
  2. OpenVPN istemcisini kurun (NetworkManager)

Bu çalışması gereken Ubuntu sürümleri 10.10 ve 11.04'tür.


Bu bence bir ubuntudan çok bir serverfault sorusu.
Luis Alvarado,

1
@Cyrex: 1), 2) muhtemelen değil
Lekensteyn

Yanıtlar:


40

Birkaç ay önce kesin bir sorum var ama ek olarak, mümkünse bir IPv6 bağlantısı kurmak istedim. Serverfault ile ilgili sorularıma ilgi duyabilirsiniz:

Sunucumda kullanım için yalnızca bir NIC ("ağ arayüzü") vardı. Kurulumumda, NetworkManager yeterli değildi, çünkü IPv6'yı desteklemek için özel bir komut dosyası çalıştırmam gerekiyordu. Ancak basitlik için, burada NetworkManager kullanacağım ve IPv6 desteğini ihmal edeceğim.

İlk önce, kimlik doğrulama yöntemine karar vermeniz yeterlidir. SSL gibi çalışan daha güvenli sertifika yöntemini kullanacağım: el sıkışma sırasında oturum için kullanılacak ortak bir sır seçildi. Diğer yöntemler paylaşılan bir anahtardır; bir kullanıcı adı ve şifre.

Sunucu

1. Hazırla

İlk olarak, openvpn sunucusunu kurun. Bu kadar kolay sudo apt-get install openvpn. Zor kısım onu ​​yapılandırıyor. Yapılandırma içinde mevcut /etc/openvpn.

2. Kimlik doğrulamasını yapılandırın

Sunucu, kendisini ve müşterilerini tanımlamak için sertifikalara ihtiyaç duyar. Bu sertifika bir CA'dan (Ortak Yetki) alınmıştır. Sertifikaların oluşturulması ve özel anahtarlar herhangi bir makinede yapılabilir, sunucuda yapılması zorunlu değildir. Gerçekten paranoyaksanız, bunu bir ağa bağlı olmayan bir makinede yapmalı ve sertifikaları aktarmak için bir bellek çubuğu kullanmalısınız.

Bir CA ve sunucu için sertifikalar oluşturun

CA'nızın özel anahtarının güvenliği ihlal edilmedikçe, bu adım bir kez yapılmalıdır. Bu durumda, sunucu tarafından kabul edilecek ve güvenlik ihlali ile sonuçlanacak geçerli sertifikalar oluşturulabilir.

Resmi belgeler içinde idaresini yapmak önerir /etc/openvpn. Her şeyi root olarak çalıştırmanın büyük bir hayranı değilim, bu yüzden farklı bir dizine koyacağım.

  1. Yönetim dizinini oluşturun ve aşağıdaki dosyaları çalıştırarak kopyalayın:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. Varsayılanları varsgerektiği gibi düzenleyin, örneğin KEY_SIZE=2048paranoyak olduğunuz için.
  3. Değişkenleri yükleyin ve çalıştırarak anahtar dizini oluşturun:

    . vars
    
  4. Eğer bir hata alırsanız , tekrar No ... openssl.cnf file could be found Further invocations will failçalıştırın .ln -s openssl-1.0.0.cnf openssl.cnf. vars

  5. Bu CA'yı ilk kez kullanıyorsanız, tuş ortamını hazırlayın. Do not Eğer daha önce oluşturulan CA'yı korumak istiyorsanız bu komutu çalıştırmak Bunu yapmak, yeni bir dağıtım yapmanızı gerektirir ca.crt.

    ./clean-all
    
  6. Yürüterek CA'yı oluşturun ./build-ca. İstediğiniz ayrıntıları doldurabilirsiniz, ancak istemciler sunucuya bağlandığında bu bilgilerin günlük dosyalarında görüneceğini unutmayın. Bu, dosyaları ca.keyve ca.crtalt klasörde yaratacaktır keys. Her koşuldaca.key dosyayı gizli tutun . Bunu yapmamak, anahtarı olan herkesin sunucunuza bağlanmasına izin verecektir.
  7. Kayıp veya süresi dolmuş bir sertifikanız varsa, önce eskisini iptal etmeniz gerekir ./revoke-full server. Aksi takdirde bir veritabanı hatası alırsınız.
  8. Sunucu için sertifikayı çalıştırarak oluşturun:

    ./build-key-server server
    

    Şifre istendiğinde, sunucu her başladığında şifreyi girmek istemediğiniz sürece boş bırakın (önerilmez). Sertifikayı imzalayıp onayladığınızı onaylayın. Dizinde iki yeni dosya görünecektir keys: server.keyve server.crt.

DH ve tls-auth için hazırla

Üret Diffie-Hellman kullanarak parametreleri:

./build-dh

Başına sertleştirme ipuçları , kullanım tls-auth. Bunun için aşağıdakileri kullanarak paylaşılan gizli anahtarı oluşturun:

openvpn --genkey --secret ta.key

Sonuçta ortaya çıkan dosya ( ta.key) istemcilere de dağıtılmalıdır, ancak halka açıklamamalısınız.

Müşteriler için sertifikalar oluşturun

Her müşteri için bu adımlar tekrarlanmalıdır:

  1. CA ve sunucu sertifikanızı oluşturduğunuz dizini girin:

    cd ~/openvpn-admin/easy-rsa
    
  2. Zaten bir tane olduğundan CA oluşturma adımını atladıysanız, önce değişkenleri yüklemeniz gerekir:

    . vars
    
  3. Eskileri kaybolduğu veya süresi dolduğu için yeni sertifikalar oluşturuyorsanız , önce eski olanı iptal etmeniz gerekir ./revoke-full you. Aksi takdirde bir veritabanı hatası alırsınız.
  4. İstemci sertifikasını you.keyve ilgili sertifikasını oluşturun you.crt:

    ./build-key you
    

    CommonNameBenzersiz olmalıdır. KDE kullanıyorsanız, henüz 10.10'dan itibaren desteklenmiyorsa şifreyi boş bırakın. Sunucu sertifikası oluşturma işleminde olduğu gibi, sertifikanın imzalandığını ve değişikliklerin yapıldığını onaylayın.

3. OpenVPN servisini ayarlayın

Varsayılan olarak, OpenVPN bağlantıları kabul ederken kök olarak çalışır. Hizmetin kötü Internet'ten erişilebilir olması iyi bir fikir değildir.

  1. OpenVPN için özel bir kullanıcı oluştur derler openvpn:

    sudo useradd openvpn
    
  2. Dosyaları kopyala server.key, server.crt, ca.crtve dh1024.pem(veya dh2048.pemanahtar boyutunu değiştirdiyseniz) içine tuşları dizinden /etc/openvpn. 400'ün izni (sahibi için salt okunur) gayet iyi.

    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. Dosyayı ta.keyda kopyalayın :

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. Dosyayı oluşturun /etc/openvpn/server.confve sonraki satırları içine yerleştirin:

    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. Uygun izinleri ayarlayın, bunun gizli olması gerekmez, ancak yapılandırma ayrıntılarını sızdırmamayı tercih ederim:

    sudo chmod 640 /etc/openvpn/server.conf
    

4. Sunucuyu bitirme

Sertifikaları sunucuda oluşturduysanız, şifrelemek veya sunucudan çıkarmak iyi bir fikirdir. Her durumda, ca.keyve kaybetmeyin server.key. İlk durumda, diğerleri sunucunuza bağlanabilecek. İkincisinde, bir MITM mümkündür.

müşteri

Sunucu IP adresinin yanı sıra, sunucu yöneticisi aşağıdaki dosyaları teslim etmelidir:

  • ca.crt: sertifikaları doğrulamak için
  • server.crt: sunucuyu doğrulamak ve onunla iletişim kurmak için
  • ta.key: güvenliği sertleştirmek için
  • you.crt: kendinizi sunucuyla tanımlamak için
  • you.key: şifreniz gibi, dosya izinleri 400 olmalıdır (sahipler için salt okunur)

1. kurulum

OpenVPN ve NetworkManager eklentisini kurun (KDE ve Gnome için uygun):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn evren deposunda.

2. Yapılandırma

Kontrol panelinde aşağıdaki ayrıntıları kullanın:

  • Ağ Geçidi: sunucunun IP adresi
  • Tür: "Sertifikalar (TLS)" (Gnome) veya "X.509 Sertifikası" (KDE)
  • CA Sertifikası: yolunu ca.crt
  • Kullanıcı Sertifikası: yolunu you.crt
  • Özel Anahtar: yol you.key

At Gelişmiş :

  • Ağ Geçidi bağlantı noktası: Otomatik (1194) (değiştirilmesi gerekmez)
  • LZO veri sıkıştırmasını kullan: etkin
  • TCP bağlantısını kullan: devre dışı
  • TAP cihazını kullan: etkin
  • Şifreleme: varsayılan
  • HMAC kimlik doğrulaması: varsayılan
  • TLS kimlik doğrulamasını kullan: etkin
    Anahtar Dosya yolunu belirtin ta.keyve "Anahtar Yönünü" olarak ayarlayın 1.
  • ( yapılacak - kontrol etme ) sunucu varsayılan ağ geçidini iter, böylece tüm trafik VPN bağlantısı üzerinden gider. En son kontrol ettiğimde network-manager-openvpn eklentisi bunu yapmadı.

NetworkManager'ı çalıştıramazsanız veya kullanmak istemiyorsanız, dosyaları ( ca.crt, ...) yerleştirin /etc/openvpnve dosya /etc/openvpn/client.confdosyasını oluşturun:

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

Bu VPN'yi önyükleme zamanında etkinleştirmek istemezseniz, aşağıdakileri /etc/default/openvpnkaldırarak bir sonraki satırı düzenleyin ve yorumunu kaldırın #:

#AUTOSTART="none"

Bu bağlantıyı başlatmak için şunu çalıştırın:

sudo /etc/init.d/openvpn start client

clientyapılandırma dosyanız adlandırılmamışsa yeniden adlandırılmalıdır client.conf. Örnek: Yapılandırma dosyanızı adlandırdıysanız, safe.confçalıştırmanız gerekir sudo /etc/init.d/openvpn start safe.

OpenVPN'i durdurmak için aşağıdakileri çalıştırmalısınız:

sudo /etc/init.d/openvpn stop

1
Kullanıcı adı / şifre tabanlı oturum açma için sunucu yapılandırması nedir, istemcimin vpn istemcisini kurma bilgisine sahip olmadığı, sunucu ipi, kullanıcı adı, şifre kullanmasını istiyorum.

@YumYumYum Kullanıcı adı / şifrenin nasıl kullanılacağı hakkında hiçbir fikrim yok, openvpn ( man openvpn) kılavuz sayfasına bakın . Openvpn'nin son sürümleri sertifikaları ve anahtar dosyaları gömme yeteneğine sahip olduğundan, bu tek yapılandırma dosyasına kullanıcıya talimat vermek daha da kolaydır.
Lekensteyn

Ubuntu'nun daha yeni sürümlerinin OpenSSL 1.0.1 ile birlikte geldiğini ve . varsyukarıdaki komutu çalıştırmanın "openssl.cnf dosyası bulunabileceğini" ve daha fazla başlatma başarısız olacağını "belirten bir hataya yol açabileceğini unutmayın. İhtiyacınız olmalı sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf, sonra çalıştırın . varsve diğer komutlar.
Dan Dascalescu

@DanDascalescu Betik dosyayı benim için doğru şekilde whichopensslbulur openssl-1.0.0.cnf(easy-rsa 2.3.2, OpenSSL 1.0.1e)
Lekensteyn

Çok bilgilendirici, kapsamlı cevap. Bu soruya cevap verir misin ?
JB0x2D1

8

Aslında herhangi bir uygulamayla oynamanıza gerek yok. Bu, "tıpkı VPN gibi" çalışır.

  1. İlk önce tsockspaketi (geçici çoraplar) takın :

    sudo apt-get install tsocks
    
  2. Sonra düzenleyin /etc/tsocks.confve girin

    server = 127.0.0.1
    server_port = 3333
    
  3. Şimdi bir terminal açın ve şunu yazın (bu sizi birbirine bağlar):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. Çalıştır (başka bir terminal veya ALT-F2 üzerinden):

    tsocks firefox
    

Şimdi, Firefox tüm iletişimi, bilgisayarınızdaki SSH'nin oluşturduğu SOCKS sunucusuna iletir. Bu, ev makinenize, yani web'e yönlendirildiği yere tünellenir. Ev makinenizde tek ihtiyacınız olan bir SSH sunucusudur. İlk seferden sonra 3. ve 4. adımları tekrarlayın.

Bir cazibe gibi çalışıyor! Ne yazık ki, krom tsocks sevmiyor, ama hey, Firefox çalışıyor.


3
Eh, son cümlenizi görün - İlk önce tüm programlarımı, gerçekten Tsocks ile birlikte iyi çalışırlarsa, OpenVPN ile NetworkManager uygulamasında tek bir tıklamanın ne zaman olabileceğini kontrol etmek istemiyorum.
htorque

TAMAM. Cevabım muhtemelen web sitelerine erişmek için hızlı bir çözüm arayanlar için faydalı olacaktır.
MarkovCh1

1

SSH tünel çözümü düşündüğünüzden daha kolay. GSTM gibi bir program sizin için bir GUI ile tünelleri başlatacak / durduracaktır. Ardından Network Proxy’yi açın ve Direct internet bağlantısından Manuel proxy yapılandırmasına geçin, "Sistem genelinde uygula" ya basın ve tüm uygulamalarınız verilerini tünelden göndermelidir;

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.