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.
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
- Varsayılanları
vars
gerektiği gibi düzenleyin, örneğin KEY_SIZE=2048
paranoyak olduğunuz için.
Değişkenleri yükleyin ve çalıştırarak anahtar dizini oluşturun:
. vars
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
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
- 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.key
ve ca.crt
alt klasörde yaratacaktır keys
. Her koşuldaca.key
dosyayı gizli tutun . Bunu yapmamak, anahtarı olan herkesin sunucunuza bağlanmasına izin verecektir.
- 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.
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.key
ve 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:
CA ve sunucu sertifikanızı oluşturduğunuz dizini girin:
cd ~/openvpn-admin/easy-rsa
Zaten bir tane olduğundan CA oluşturma adımını atladıysanız, önce değişkenleri yüklemeniz gerekir:
. vars
- 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.
İstemci sertifikasını you.key
ve ilgili sertifikasını oluşturun you.crt
:
./build-key you
CommonName
Benzersiz 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.
OpenVPN için özel bir kullanıcı oluştur derler openvpn
:
sudo useradd openvpn
Dosyaları kopyala server.key
, server.crt
, ca.crt
ve dh1024.pem
(veya dh2048.pem
anahtar 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}
Dosyayı ta.key
da kopyalayın :
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Dosyayı oluşturun /etc/openvpn/server.conf
ve 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
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.key
ve 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.key
ve "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/openvpn
ve dosya /etc/openvpn/client.conf
dosyası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/openvpn
kaldı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
client
yapı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