Windows'ta OpenVPN Sunucusu Nasıl Kurulur ve Yapılandırılır


OpenVPN, güvenli bir VPN uygulamak için gerçekten en popüler ve en kolay çözümlerden biri olan açık kaynaklı bir yazılım paketidir. OpenVPN, bir sunucuyu ve istemcileri (bir NAT veya güvenlik duvarının arkasındakiler bile) tek bir ağda birleştirmenize veya uzak ofis ağlarını bağlamanıza olanak tanır. OpenVPN'in bir sunucu bölümünü Linux, Windows, MacOS ve *BSD dahil olmak üzere neredeyse tüm mevcut işletim sistemlerinde dağıtabilirsiniz. Bir OpenVPN sunucusunu Windows Server 2022/20119/2016/2012R2'ye veya hatta masaüstü Windows sürümünü (Windows 10 veya 11) çalıştıran bir bilgisayara yükleyebilirsiniz.

Bu yazıda, Windows 10 çalıştıran bir bilgisayarda bir OpenVPN sunucusunun nasıl kurulacağını ve yapılandırılacağını, başka bir Windows cihazında bir OpenVPN istemcisinin nasıl kurulacağını ve güvenli bir VPN bağlantısının nasıl kurulacağını göstereceğiz.

OpenVPN, uzak çalışanlara erişim sağlamak için SOHO segmentinde son derece popülerdir: Windows Server tabanlı bir VPN sunucusu oluşturmak için herhangi bir özel donanım, lisans satın almanıza gerek yoktur, RDP bağlantı noktasını İnternet'e açık hale getirin ve RDP'ye karşı kolayca koruma sağlayabilirsiniz kaba kuvvet saldırıları.

Windows'ta OpenVPN Sunucu Hizmeti Nasıl Kurulur?

Resmi web sitesinden (https://openvpn.net/community-downloads/) Windows sürümünüz için OpenVPN MSI yükleyicisini indirin. Bizim durumumuzda bu, OpenVPN-2.5.7-I602-amd64.msi'dir (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi) ).

Kurulumu çalıştırın ve yüklemek için OpenVPN Hizmeti'ni seçin. OpenVPN sunucunuzun otomatik olarak başlamasını istiyorsanız, OpenVPN GUI kurmayabilirsiniz.

OpenVPN 2.5 (ve daha yenisi), WireGuard geliştiricilerinin WinTun sürücüsünü destekler. Bu sürücü, varsayılan TAP OpenVPN sürücüsünden daha hızlıdır. TAP-Windows6 yerine Wintun sürücüsünü kurmanızı öneririz.

EasyRSA Sertifika Yönetimi Komut Dosyaları OpenSSL yardımcı programını kurun.

Kurulumu tamamlayın.

OpenVPN varsayılan olarak C:\Program Files\OpenVPN konumuna kurulur.

Yükleme tamamlandığında, yeni bir ağ bağdaştırıcısı Wintun Userspace Tunnel göreceksiniz. OpenVPN hizmeti çalışmıyorsa bu bağdaştırıcı devre dışı bırakılır.

OpenVPN Şifreleme Anahtarları ve Sertifikaları Oluşturun

OpenVPN, OpenSSL şifrelemesine dayalıdır. Bu, istemci ile VPN sunucusu arasında bir ağ bağlantısı kurmak için RSA3 anahtarlarının ve sertifikalarının kullanılması gerektiği anlamına gelir.

Komut istemini açın ve easy-rsa dizinine gidin:

cd "C:\Program Files\OpenVPN\easy-rsa"

Dosyanın bir kopyasını oluşturun:

copy vars.example vars

vars dosyasını herhangi bir metin düzenleyicide açın. OpenVPN ve EaseRSA çalışma klasörlerinin yollarını kontrol edin.

EASYRSA_TEMP_DIR değişkenini aşağıda gösterildiği gibi düzenlediğinizden emin olun:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

Sertifika alanlarını doldurabilirsiniz (isteğe bağlı):

set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "BY"
set_var EASYRSA_REQ_CITY "MUN"
set_var EASYRSA_REQ_ORG "WOSHUB-Com"
set_var EASYRSA_REQ_EMAIL "admin@a-d.site"
set_var EASYRSA_REQ_OU "IT dept"

Sertifika son kullanma tarihlerini ayarlayın:

set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 825

Dosyayı kaydedin ve komutu çalıştırın:

EasyRSA-Start.bat

Aşağıdaki komutların tümü EasyRSA kabuğunda çalıştırılmalıdır:

PKI'yı başlat:

./easyrsa init-pki

Bu mesajı görmelisiniz:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki

Ardından kök CA'yı oluşturun:

./easyrsa build-ca

Bir CA parolasını iki kez girin:

CA creation is complete and you may now import and sign cert requests.

Yukarıdaki komut oluşturdu:

  • Sertifika Yetkilisinin kök sertifikası:

    C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt
  • Bir Sertifika Yetkilisi anahtarı: C

    :\Program Files\OpenVPN\easy-rsa\pki\private\ca.key

Ardından, OpenVPN sunucunuz için bir sertifika isteği ve bir anahtar oluşturun:

./easyrsa gen-req server nopass

Araç iki dosya oluşturacaktır:

gerek:

C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req

anahtar:

C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key

CA'nızı kullanarak bir sunucu sertifikası vermek için isteği imzalayın:

./easyrsa sign-req server server

Evet yazarak verileri onaylayın.

Ardından, kök CA'nız için CA parolasını girin.

server.crt dosyası verilen klasöründe görünecektir (

C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt

).

Ardından, Diffie-Hellman anahtarlarını oluşturabilirsiniz (uzun zaman alır):

./easyrsa gen-dh

VPN sunucunuza ek koruma sağlamak için tls-auth'u etkinleştirmeniz önerilir. Bu özellik, SSL/TLS el sıkışmasında HMAC imzalarının kullanılmasına izin vererek ekstra bir bütünlük kontrolü başlatır. Böyle bir imzası olmayan paketler VPN sunucusu tarafından bırakılacaktır. Bu sizi VPN sunucusu bağlantı noktası taramasına, DoS saldırılarına, SSL/TLS arabellek taşmalarına vb. karşı koruyacaktır.

Bir tls-auth anahtarı oluşturun:

cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key

Bu

C:\Program Files\OpenVPN\bin\ta.key

dosya görünecektir. C:\Program Files\OpenVPN asy-rsa\pki klasörüne taşıyın.

Ardından, OpenVPN istemcileriniz için anahtarlar oluşturabilirsiniz. VPN sunucunuza bağlanan her istemcinin kendi anahtar çifti olmalıdır.

OpenVPN anahtarları oluşturmanın ve bunları müşterilere dağıtmanın birkaç yolu vardır.

Aşağıdaki örnekte, sunucuda bir istemci anahtarı oluşturacağız ve bunu bir parola (PEM parolası) ile koruyacağız:

./easyrsa gen-req testuser1
./easyrsa sign-req client testuser1

Anahtar dosyasını kopyalayın (

C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key

) istemci bilgisayara kullanıcıya parolayı söyleyin (ses, e-posta, SMS). İstemci, anahtar için parola korumasını devre dışı bırakabilir:

openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1_use.key"

Parola korumalı olmayan bir anahtar oluşturmak istiyorsanız, şu komutu çalıştırmanız gerekir:

./easyrsa gen-req testuser2 nopass

VPN sunucunuzdaki kullanıcılar için istediğiniz sayıda anahtar ve sertifika oluşturabilirsiniz. Aynı şekilde diğer istemciler için anahtarlar ve sertifikalar oluşturun.

Güvenliği ihlal edilmiş istemci sertifikalarını iptal edebilirsiniz:

cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke testuser2

Bu nedenle, OpenVPN sunucusu için bir dizi anahtar ve sertifika oluşturduk. Artık VPN hizmetinizi yapılandırabilir ve çalıştırabilirsiniz.

Windows için OpenVPN Sunucu Yapılandırma Dosyası

OpenVPN sunucusu için yapılandırma dosyası şablonunu kopyalayın:

copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"

server.ovpn'yi herhangi bir metin düzenleyicide açın ve ayarlarınızı yapın. Aşağıdaki OpenVPN yapılandırmasını kullanıyorum:

# Specify a port, a protocol and a device type
port 1194
proto udp
dev tun
# Specify paths to server certificates
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
# Specify the settings of the IP network your VPN clients will get their IP addresses from
server 10.24.1.0 255.255.255.0
# If you want to allow your clients to connect using the same key, enable the duplicate-cn option (not recommended)
# duplicate-cn
# TLS protection
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Other options
keepalive 20 60
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintun

Dosya 'yı kaydet.

OpenVPN, hem TCP hem de UDP protokollerini kullanmanıza izin verir. Bu örnekte OpenVPN'i UDP bağlantı noktası 1194'te çalıştırdık. Hem performans hem de güvenlik için en uygun olduğu için UDP kullanılması önerilir.

İstemcide ve sunucuda belirttiğiniz OpenVPN bağlantı noktası numarası için güvenlik duvarındaki bağlantı noktalarını açmayı unutmayın. Bağlantı noktasını PowerShell kullanarak Windows Defender'da açabilirsiniz.
OpenVPN sunucusu için güvenlik duvarı kuralı:

New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allow

Müşteri için kural:

New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP -LocalPort 1194 -Action Allow

Ardından OpenVPN hizmetini çalıştırın ve başlangıç türünü otomatik olarak değiştirin. Hizmeti etkinleştirmek için PowerShell komutlarını kullanın:

Set-Service OpenVPNService -startuptype automatic -passthru
Get-Service OpenVPNService| Start-Service

Ağ bağlantıları iletişim kutusunu açın (

ncpa.cpl

) ve OpenVPN Wintun sanal bağdaştırıcısının etkinleştirildiğinden emin olun. Değilse, günlük dosyasını kontrol edin

C:\Program Files\OpenVPN\log\server.log

OpenVPN'i başlatırken günlükte aşağıdaki hatayı görüyorsanız:

Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with…

server.ovpn'de satır sonu karakterini Windows CRLF olarak değiştirin (Notepad++'da Düzenle -> EOL Dönüştürme -> Windows CR LF'yi seçin). Dosyayı kaydedin ve OpenVPNService'i yeniden başlatın.

Bu OpenVPN yapılandırması, uzak istemcilerin yalnızca sunucu kaynaklarına erişmesine izin verir. Sunucunun yerel ağındaki diğer bilgisayarlar ve hizmetler uzak istemciler tarafından kullanılamaz. OpenVPN istemcilerinin dahili LAN'a erişmesine izin vermek için kayıt defterinde IPEnableRouter seçeneğini etkinleştirin (Windows'ta Hyper-V ağları arasında yönlendirme dahil olmak üzere IP yönlendirmeyi etkinleştirir ve bağlantı noktası iletmeyi kullanmanıza izin verir):

reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /f

Yerel IP ağınıza giden yolları sunucu yapılandırma dosyasına ekleyin:

push "route 10.24.1.0 255.255.255.0"
push "route 192.168.31.0 255.255.255.0"

Gerekirse, istemciye DNS sunucusu adresleri atayın:

push "dhcp-option DNS 192.168.31.10"
push "dhcp-option DNS 192.168.31.11"

Tüm istemci isteklerini (İnternet trafiği dahil) OpenVPN sunucunuza yönlendirmek istiyorsanız, şu seçeneği ekleyin:

push "redirect-gateway def1"

Bu seçenekler, daha önce ele alınan durumları açıklar: VPN'ye bağlandıktan sonra İnternet bağlantısının kaybedilmesi ve VPN'ye bağlanıldığında DNS çözümü yok.

OpenVPN İstemcisini Windows'ta Yapılandırma

Aşağıdaki ayarlarla (dosya adı testuser1.ovpn) sunucunuzda bir VPN istemcisi için (client.ovpn şablonunu temel alan) bir şablon yapılandırma dosyası oluşturun:

client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert testuser1.crt
key testuser1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3

uzak yönergesinde OpenVPN sunucunuzun genel bir IP adresini veya DNS adını belirtin.

Windows için OpenVPN Connect'i (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi) indirin ve kurun.

Ardından, sunucunuzdan aşağıdaki dosyaları OpenVPN istemcisinin kurulu olduğu bilgisayara kopyalayın:

  • ca.crt
  • testuser1.crt
  • testuser1.key
  • dh.pem
  • ta.key
  • testuser1.ovpn

İçe aktarmak

*.ovpn

profile dosyasını açın ve VPN sunucunuza bağlanmayı deneyin.

Doğru ayarladıysanız, aşağıdaki görüntüyü göreceksiniz:

İstemcideki OpenVPN bağlantı günlüğünü kontrol edin:

C:\Program Files\OpenVPN Connect\agent.log
Mon Jul 17 08:09:30 2022 proxy_auto_config_url
Mon Jul 17 08:09:31 2022 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection'
Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.10 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1

İstemci, VPN sunucusuna başarıyla bağlandı ve 10.24.1.10 IP adresini aldı.

Şimdi sunucu tarafındaki OpenVpn günlüğünü kontrol edin (

C:\Program Files\OpenVPN\log\openvpn.log

). Burada, testuser1 sertifikasına sahip istemcinin sunucuya başarıyla bağlandığını da görebilirsiniz.

2022-07-17 08:09:35 192.168.13.20:55648 [tesuser1] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI_sva: pool returned IPv4=10.24.1.10, IPv6=(Not enabled)
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: Learn: 10.24.1.10 -> testuser1/192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: primary virtual IP for tesuser1/192.168.13.20:55648: 10.24.1.10

İlgili makaleler