Ubuntu 20.04'te OpenVPN Sunucusu Nasıl Kurulur

Ubuntu 20.04'te güvenli bir OpenVPN Sunucusu kurmak için nihai kılavuz

Sanal Özel Ağ (VPN), ofis ağınız veya İnternet gibi uzak bir özel ağa, doğrudan özel bir ağa bağlıymışsınız gibi güvenli ve özel bir şekilde bağlanmanıza olanak tanır.

VPN, bir sunucu-istemci mimarisinde çalışır. Bir VPN sunucusu bir makineye dağıtılır ve İnternet üzerinden herkese açık olarak erişilebilir. VPN sunucusu, ofis ağı gibi özel bir LAN'a bağlanmaya veya İnternet bağlantılarına izin verecek şekilde yapılandırılabilir. Kullanıcı, yerel makinesinde bir VPN istemcisi kullanarak VPN sunucusuna bağlanır. VPN sunucusu ve istemci arasındaki iletişim, güvenli bir tünel protokolü kullanılarak gerçekleşir. İnternete, trafiğin hedefi VPN sunucusu gibi görünüyor; ancak trafik, sunucu aracılığıyla istemciye geçer.

VPN'nin günlük hayatta birçok kullanımı vardır; örneğin, genellikle güvenliği ihlal edilen veya web sitesinin izin verdiği bir ülkede bulunan bir VPN'e bağlanarak belirli web sitelerindeki coğrafi kısıtlamaları atlayan halka açık bir Wifi ağına güvenli bir şekilde bağlanmak gibi.

OpenVPN, çok çeşitli konfigürasyonlara ve seçeneklere izin veren, yaygın olarak kullanılan bir VPN uygulamasıdır. VPN istemcisinin kimlik doğrulaması için verilerin ve önceden paylaşılan anahtarların, kullanıcı adının/parolanın veya sertifikaların şifrelenmesi için Güvenli Yuva Katmanı (SSL) protokolünü kullanır. Bu yazımızda Ubuntu 20.04 üzerinde VPN sunucusu ve VPN istemcisi nasıl kurulur onu göreceğiz.

Kurulum

OpenVPN, paketteki resmi Ubuntu depolarında mevcuttur açık vpn. Bu paket hem OpenVPN sunucusunu hem de istemciyi kurar.

sudo apt openvpn yükleyin

Daha önce belirtildiği gibi, OpenVPN, sunucu ve istemci arasındaki verileri şifrelemek için SSL sertifikaları kullanır. VPN için sertifika vermek üzere kendi sertifika yetkilimizi (CA) kurmamız gerekiyor. Bunun OpenVPN'in kurulduğu makineden farklı bir makinede kurulması gerektiğini unutmayın; nedeni, aynı sunucudaysa ve güvenliği ihlal edilirse, bir saldırgan özel anahtara erişebilir ve böylece VPN bağlantısına saldırabilir.

Sertifika yetkilisini kurmak için 'Easy-RSA' adlı bir araç kullanacağız. Yüklemek için CA makinesinde, OpenVPN sunucu makinesinde ve istemci makinede aşağıdakileri çalıştırın, çünkü CA'yı kurmak için bunların üçünde de yapılandırma gerekir.

sudo apt kurulumu kolay-rsa

Şimdi önce sertifika yetkilisini CA makinesinde yapılandıracağız ve aynısı için Open VPN sunucu makinesinde gerekli bazı yapılandırma adımlarını gerçekleştireceğiz.

Sertifika Yetkilisi Kurulumu

CA makinesinde ilk kurulum

Şimdi, bu paket adlı bir komut yükler. make-cadir sertifika yetkilisi yapılandırması için bir klasör oluşturmak için kullanılır. Bunu kullanarak bir klasör oluşturalım ve klasöre girelim.

make-cadir cert_authority && cd cert_authority

adlı dosyayı açın vars bu dizinde oluşturulur. Bu dosya, değiştirmemiz gereken bazı yapılandırma değişkenlerini içerir. Değiştirilmesi gereken değerler, yorumdan sonra 91-96 satırlarındadır. Organizasyon Alanları hangi bu alanları açıklar. Satırları kaldırın ve örnek değerlerin yerine uygun değerleri doldurun.

Dosyayı kaydedin ve çıkın. vim düzenleyici kullanıyorsanız, tuşuna basın. ESC, tip :wq ve bas Girmek kaydetmek ve çıkmak için.

Ardından, çalıştırıyoruz kolay Ortak anahtar ve sertifikalar oluşturmak için kullanılacak ortak anahtar altyapısını (PKI) kurmak için dizindeki program.

./easyrsa init-pki

Sonraki adım, CA anahtarını ve sertifikasını oluşturacaktır. Komut bir parola istediğinde, CA anahtarı için bir parola girin. Ayrıca, istendiğinde ortak bir ad girin. Bunu boş bırakırsanız, varsayılan ad Easy-RSA CA adı kullanılacaktır.

./easyrsa build-ca

Çıktıdan da görebileceğimiz gibi sertifika ve anahtar üretildi. Bu anahtar, istemci ve sunucu sertifikalarını imzalamak için kullanılacaktır, bu nedenle asla dokunulmamalı/değiştirilmemelidir.

Şimdi, PKI kurulumumuz var. Bir sonraki adım, OpenVPN sunucusu olarak kullanacağımız makinede bir sunucu anahtarı ve sertifikası oluşturmaktır. Bu sertifika daha sonra CA makinesi tarafından imzalanacaktır.

Sunucu makinesinde Sunucu Anahtarı ve Sertifika Oluşturma

Sunucu makinesine Easy RSA'yı zaten kurduk. Şimdi daha önce CA makinesinde gerçekleştirdiğimiz sunucu makinesinde üç adımı gerçekleştirin, yani. kullanarak bir CA dizini oluşturma make-cadir ve içine girerek, içindeki değişkenleri değiştirerek vars dosya ve kullanarak PKI oluşturma ./easyrsa init-pki emretmek.

Ardından, bir sunucu sertifikası isteği ve anahtarı oluşturmak için komutu çalıştırmamız gerekiyor.

./easyrsa gen-req sunucu nopass

Seçeneği geçtiğimizi unutmayın Geçiş yok böylece komut, sunucu anahtarı için bir parola girmemizi istemeyecektir. Yine de sunucu için herhangi bir şey girebileceğiniz veya varsayılan ad için boş bırakabileceğiniz ortak bir ad isteyecektir (sunucu) kullanılacak olan.

Oluşturulan anahtar dosyasını içine taşıyın. /etc/openvpn dizin.

sudo mv pki/private/server.key /etc/openvpn

Sertifika isteğini CA makinesine gönderin. komutunu kullanacağız scp bu amaç için.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/dizin

Yukarıdaki ekran görüntüsünde ana bilgisayar 45.79.125.41 CA makinesidir. Sertifikayı /root dizinine kopyaladık.

Artık sunucunun sertifikası CA makinesine kopyalanmıştır. Sonraki adım, CA makinesine geri dönüp bu sertifikayı imzalamaktır.

CA'da sunucu sertifikasının imzalanması

Öncelikle sunucudan gelen sertifika istek dosyasının CA makinesine kopyalanıp kopyalanmadığını doğrulayalım. Dosyayı kopyaladığımız dizine gidin (benim örneğimde/root) ve çalıştırın ls.

:~# cd /root && ls cert_authority server.req

Gördüğümüz gibi dosya sunucu.req mevcut. Ardından, CA dizinine gidin ve bu isteği içe aktarın.

cd cert_authority ./easyrsa import-req /root/server.req sunucusu

Bu isteği imzalamak için aşağıdaki komutu çalıştırın.

./easyrsa sign-req sunucu sunucusu

Burada ilk argüman, talebin türüdür, yani, sunucu, ve ikinci argüman, daha önce varsayılan değeri kullandığımız sunucu makinesinin ortak adıdır, yani, sunucu.

İfadeyi girin Evet, ve istendiğinde CA anahtarının parolası.

Artık sertifika istek dosyasını kaldırabilir ve sunucu için oluşturulan sertifikanın yanı sıra CA genel sertifikasını sunucu makinesine geri kopyalayabiliriz.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Ardından, VPN'nin güvenli bağlantısını sağlamak için birkaç adım daha gerçekleştirmeliyiz.

DH Parametre Oluşturma

DH (Diffie-Hellman) anahtar değişimi, güvenli olmayan bir kanal üzerinden kripto anahtarlarının güvenli değişimini sağlayan bir algoritmadır. İlk olarak, alınan sertifikayı ve CA genel sertifikasını şuraya taşıyalım: /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Sunucu makinedeki CA klasörüne gidin ve DH parametrelerini oluşturmak için aşağıdaki komutu çalıştırın. Oluşturulması uzun zaman alabilir.

./easyrsa gen-dh

Şimdi, oluşturulan dosyayı şuraya taşıyın: /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

TA anahtarları oluşturma

OpenVPN, TLS kimlik doğrulama anahtarını kullanarak başka bir ek güvenlik önlemi kullanır. TLS kimlik doğrulama anahtarını oluşturmak için şunu çalıştırın:

openvpn --genkey --gizli tls_auth.key

Ve anahtarı hareket ettirin /etc/openvpn.

mv tls_auth.key /etc/openvpn

Sunucu anahtarı yapılandırması ve sertifika yetkilisi kurulumu artık tamamlanmıştır. Şimdi VPN sunucusunun gerçek yapılandırmasına geçelim.

OpenVPN Sunucu Yapılandırması

OpenVPN sunucusu için yapılandırma dosyası otomatik olarak oluşturulmaz, ancak şu adresten bir şablon yapılandırma dosyası kullanabiliriz: açık vpn paket.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

Dosyayı vim veya istediğiniz herhangi bir düzenleyiciyi kullanarak açın.

cd /etc/openvpn vim server.conf

Daha önce ürettiğimiz anahtarların ve sertifikaların ortak isimlerini girmeliyiz. numaralı satıra gidin. 78. Tüm varsayılan adları kullandığımız için bunları değiştirmedik. Ardından 85. satırdaki DH parametre dosyasının adını kontrol edin. dh.pem adını kullandık, şimdi değiştirelim.

Ardından, OpenVPN sunucusunun ayrıcalıklarını değiştirelim. 274 ve 275. satıra gidin ve baştakileri kaldırın ; yorumunu kaldırmak için.

Benzer şekilde 192. satıra gidin ve noktalı virgülü kaldırın. Bu yönerge, tüm istemcilerin trafiğinin VPN'den geçmesini sağlar.

Dosyayı kaydedin ve çıkın.

/etc/openvpn klasörünün sahipliğini root olarak değiştirin.

sudo chown -R kökü: kök /etc/openvpn

Ağ ve Güvenlik Duvarı kurulumu

Paketlerin VPN istemcisinden ve istemcisine iletilmesine izin vermek için sunucuda IP iletmeye izin vermemiz gerekiyor. 28 numaralı yorum satırında /etc/sysctl.conf:

Dosyayı kaydedin ve çıkın.

Tekrar başlat sistemctl Bu değişikliklerin gerçekleşmesi için.

sudo sysctl -p

VPN İstemcisinin VPN sunucusunun IP Adresini kullanarak İnternete erişmesine izin vermek için bir UFW güvenlik duvarı kullanarak sunucuda Ağ Adresi Çevirisi (NAT) kurmamız gerekiyor. İlk olarak, güvenlik duvarı yapılandırmasında paket iletmeyi etkinleştirelim. Açık /etc/default/ufw ve 19. satırdaki değişkeni KABUL olarak değiştirin.

Dosyayı kaydedin ve çıkın.

Şimdi dosyaya aşağıdaki kuralları ekleyin /etc/ufw/before.rules önce filtre dosyadaki satır.

*nat :POSTROUTING KABUL [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASKELİ KOMUT

yerine ağ arayüzünüzü girin . Komutu ile ağ arayüzünüzü görebilirsiniz. ifconfig.

Güvenlik Duvarında OpenVPN hizmeti için trafiğe izin verin ve 1194 numaralı bağlantı noktasına izin verin.

sudo ufw openvpn'ye izin verir && sudo ufw 1194'e izin verir

Güvenlik duvarı hizmetini yeniden yükleyin.

sudo ufw yeniden yükle

Artık Open VPN sunucu arka plan programını çalıştırarak yeniden başlatabiliriz:

sudo hizmeti openvpn yeniden başlatma

Çalıştırarak önyükleme zamanında başlaması için etkinleştirin:

sudo systemctl openvpn'yi etkinleştir

OpenVPN sunucusu şimdi yapılandırıldı ve başladı. Şimdi istemci sertifikası isteğine ve anahtar oluşturma ve diğer yapılandırmaya geçelim.

OpenVPN İstemci Yapılandırması

İstemci için bir anahtar ve bir sertifika isteği oluşturmamız gerekiyor. Bunu yapma prosedürü, sunucu için olanla aynıdır.

İstemci makinesinde bir istemci anahtarı ve sertifika isteği oluşturulup ardından CA makinesine aktarılabilse de, bunun sunucu makinesinde oluşturulması önerilir. Bunu sunucuda yapmanın avantajı, sunucuda gerekli tüm adımları gerçekleştirmek için yeni bir istemcinin VPN'ye katılmasını kolaylaştıran bir komut dosyası oluşturabilmenizdir.

Sunucudaki CA klasörüne gidin ve aşağıdakileri çalıştırın:

cd ~/cert_authority ./easyrsa gen-req istemci nopass

Daha önce yapılana benzer şekilde, istendiğinde ortak bir ad girin veya varsayılan ortak adı kullanmak için boş bırakın, ör. müşteri.

Şimdi oluşturulan istemci sertifikası talebini CA makinesine kopyalayalım.

scp pki/reqs/client.req [email protected]:/root

Bu isteği CA makinesine aktaralım:

./easyrsa import-req /root/client.req istemci

Ve şimdi imzalayalım:

./easyrsa sign-req istemci istemcisi

GirmekEvet devam etmesi istendiğinde. Sorulduğunda CA anahtarı için parolayı girin.

Artık istemci için istenen dosyayı kaldırabilir ve isteği tekrar VPN sunucu makinesine kopyalayabiliriz.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

adında bir klasör oluşturalım. müşteri istemciyle ilgili tüm dosyaları VPN sunucusunda tutmak için. İstemci anahtarını ve sertifikayı bu klasöre taşıyacağız.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Şimdi sunucu yapılandırma dosyasını nasıl oluşturduğumuza benzer şekilde mevcut bir şablondan bir yapılandırma dosyası oluşturalım.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client

Dosyayı aç istemci.conf. 42. satırda, yerine sunucu makinenizin ana bilgisayar adını veya IP Adresini girin. sunucum-1.

Dosya ayrıcalıklarını düşürmek için baştaki noktalı virgülü kaldırarak 61 ve 62. satırları kaldırın.

Ardından, 88-90 satırlarını ve 108 satırlarını yorumlayın. Bunun nedeni, belirtilen dosyaların içeriklerini dosya konumlarını kullanmak yerine manuel olarak eklemek istememizdir. Bunu yapmanın amacı, istemci yapılandırma dosyasının daha sonra istemciye aktarılmasıdır, burada aslında istemci anahtarına ve sertifika dosyalarına sahip değiliz; bu nedenle, yapılandırma dosyasının içindekilerin içeriğini kopyalarız.

İstemci yapılandırma dosyasına aşağıdakini ekleyin. Verilen etiketlerin içine ilgili dosyaların dosya içeriklerini girin.

 # ca.crt dosyasının içeriğini buraya yapıştırın # client.crt dosyasının içeriğini buraya yapıştırın # client.key dosyasının içeriğini buraya yapıştırın key-direction 1 # tls_auth.key dosyasının içeriğini buraya yapıştırın 

Dosyayı kaydedin ve çıkın. Bu dosyayı şuradan yeniden adlandır: istemci.conf ile müşteri.ovpn, ikincisi ağ yapılandırmaları olarak içe aktarılabilen yapılandırma dosyaları için gereken uzantıdır.

Şimdi, dosyayı aktarın müşteri.ovpn müşteriye, yani yerel makineye.

Çalıştırmak scp Dosyayı sunucu makinesinden yerel makinenize aktarmak için istemci makinenizde.

scp user@server_ip:/path_to_file local_destination_path

Son olarak, VPN sunucusuna bağlanmak için bu yapılandırma dosyasını kullanmamız gerekiyor. Bu, hem komut satırı hem de GUI aracılığıyla yapılabilir.

VPN istemcisini komut satırından başlatmak için şunu çalıştırın:

sudo openvpn --config client.ovpn

Ve VPN İstemcisini başlatmak için çalıştırmanız gereken tek komut budur.

VPN istemcisini GUI aracılığıyla başlatmak için aşağıdaki adımları gerçekleştirin.

İstemci makinenizde Ayarlar » Ağ'a gidin.

Tıkla + VPN bölümündeki düğmesine tıklayın ve seçeneklerden 'Dosyadan içe aktar…'ı seçin.

VPN'yi kullanmaya başlamak için "Ekle"yi tıklayın.

'Gateway' altında, sunucunun IP Adresi olduğunu unutmayın.

Son olarak, makinede VPN'yi etkinleştirmek için 'istemci VPN' düğmesini değiştirin.

Bir VPN bağlantısının kurulması birkaç saniye sürebilir. Kurulum sırasında ekranınızın sol üst köşesinde VPN için yeni bir ilerleme logosu görünecek ve kurulduktan sonra bir VPN logosuna dönüşecektir.

VPN'nin düzgün çalışıp çalışmadığını doğrulamak için aşağıdakileri çalıştırın:

kıvrılma //ipinfo.io/ip

Sunucu makinenizin IP adresini döndürmelidir. Veya IP adresinizi Google'da 'IP'm' araması yaparak da kontrol edebilirsiniz. VPN kurulumumuz düzgün çalışıyorsa, VPN sunucunuzun IP adresini göstermelidir.

Çözüm

Bu yazıda, bir OpenVPN sunucusunun, bir Sertifika Yetkilisinin ve bir OpenVPN İstemcisinin nasıl yapılandırılacağını gördük. VPN'ye daha fazla istemci eklemek için, şimdi istemci için bir sertifika oluşturma ve imzalama prosedürünü izlememiz ve burada oluşturulan aynı yapılandırma dosyasını, yalnızca istemci anahtarı ve sertifika değerleri değiştirilerek kullanmamız gerekiyor.

Daha yavaş internet bağlantılarında, iletişim için UDP kullanılıyorsa, önemli miktarda paket kaybı olması mümkündür. Kullanıcı, hattın yorumunu kaldırarak TCP'ye geçebilir ön tcp ve hatta yorum yapmak ön udp sunucu yapılandırma dosyasında.

Ayrıca, başka hataların olması durumunda, kayıt seviyesini şuradan ayarlayabilirsiniz: fiil hem sunucu hem de istemci yapılandırma dosyalarında yönerge. 0 ile 9 arasında değerler girebilirsiniz. Bu yönergenin değeri ne kadar yüksek olursa, günlük daha ayrıntılı olacaktır.