top of page

Debian 10 Üzerinde OpenVPN Sunucu Kurulumu

Yazarın fotoğrafı: Emirhan GülerEmirhan Güler


Sanal özel ağ (VPN), iki ağ ve bireysel kullanıcılar arasında internet bağlantınızı ve çevrimiçi gizliliğinizi koruyan güvenli ve şifreli bir bağlantıdır. OpenVPN, yönlendirilmiş konfigürasyonlarda noktadan noktaya güvenli bağlantı oluşturmak için kullanılan açık kaynaklı bir VPN protokolüdür.


Bu yazımızda Debian 10 üzerinde OpenVPN server kurulumu ve konfigürasyonu yapacağız.


1-) Server Olarak Kullanacağımız Makineye Giriş Yapın ve Paketleri Güncelleyin


Başlamadan önce Debian OS paketlerimizin yüklü ve güncel olduğundan emin olun.

> apt -y update
> apt -y upgrade

2-) OpenVPN ve EasyRSA Yükleyin


Standart olarak OpenVPN Debian repolarında mevcuttur. Aşağıdaki komut ile yükleyebilirsiniz.

> apt -y install openvpn

OpenVPN yüklendikten sonra sisteminize EasyRSA yüklemeniz gerekiyor.


EasyRSA, bir PKI CA'sı oluşturmak için bir komut satırı yardımcı programıdır. Birden çok türde sertifika oluşturmanıza olanak tanır. Bir kök sertifika yetkilisi oluşturmak, OpenVPN için sertifika istemek ve imzalamak için kullanılır.


Aşağıdaki komut ile Git reposu üzerinden indirebilirsiniz.

İndirme işlemi tamamlandıktan sonra tar yardımıyla arşivden dosyaları çıkartın.

> tar -xvzf EasyRSA-3.0.8.tgz

Çıkarttığınız dizini OpenVPN dizinine kopyalayın.

> cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa

Bu adımdan itibaren EasyRSA server'ınıza yüklenmiş olacaktır.


3-) Sertifika Yetkilisini Oluşturun


Şimdi sıra geldi OpenVPN için sertifika yetkilisi (CA) oluşturmaya.

İlk olarak EasyRSA dizinine aşağıdaki komut ile girin.

> cd /etc/openvpn/easy-rsa

Ardından bu dizin içinde bir vars dosyası oluşturmanız gerekecek. Vars dosyası, Easy-RSA'nın yapılandırma için kaynak sağlayacağı basit bir dosyadır.


Aşağıdaki komut ile oluşturun.

> nano vars

İhtiyacınıza göre değiştirerek aşağıdaki satırları ekleyin.

```
set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "TURKEY"
set_var EASYRSA_REQ_PROVINCE    "ISTANBUL"
set_var EASYRSA_REQ_CITY        "ISTANBUL"
set_var EASYRSA_REQ_ORG         "PC CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL    "admin@example.com"
set_var EASYRSA_REQ_OU          "PC EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE    7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT    "no"
set_var EASYRSA_NS_COMMENT    "PC CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"
```

CTRL+X ile kaydedip çıkın.


Ardından aşağıdaki komutla ortak anahtar altyapısını başlatın.

> ./easyrsa init-pki

Aşağıdaki gibi bir çıktı alacaksınız:

```
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
```

Ardından ca.crt ve ca.key dosyası oluşturmak için build-ca komutunu çalıştırmanız gerekecek. Aşağıdaki komutla çalıştırabilirsiniz:

> ./easyrsa build-ca nopass

Aşağıdaki gibi bir çıktı alacaksınız ve bir kaç soru sorulacak:

```
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
...+++++
......................................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpnserver

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt
```

4-) Server Sertifika ve Key Dosyalarını Oluşturun


Şimdi sunucu anahtarını oluşturmak için gen-req komutunu ve ardından ortak adı kullanmanız gerekecek.

> ./easyrsa gen-req vpnserver nopass

Aşağıdaki gibi bir çıktı alacaksınız:

```
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
.......................................................+++++
....+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1428.Angtmh/tmp.C9prw4'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [vpnserver]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req
key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key
```

Ardından CA sertifikanızı kullanarak vpnserver anahtarını imzalamanız gerekecek. Aşağıdaki komutla yapabilirsiniz:

> ./easyrsa sign-req server vpnserver

Aşağıdaki gibi bir çıktı alacaksınız:

```
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnserver'
Certificate is to be certified until Feb  6 14:38:52 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt
```

5-) Tüm Sertifika ve Anahtar Dosyalarını Kopyalayın


Tüm sertifika ve anahtar dosyasını /etc/openvpn/server/ dizinine kopyalamanız gerekecek. Aşağıdaki komutu kullanarak kopyalayabilirsiniz:

>cp pki/ca.crt /etc/openvpn/server/
>cp pki/dh.pem /etc/openvpn/server/
>cp pki/private/vpnserver.key /etc/openvpn/server/
>cp pki/issued/vpnserver.crt /etc/openvpn/server/

6-) Client Sertifika ve Anahtar Dosyasını Oluşturun


Ardından istemci sistemi için bir sertifika ve anahtar dosyası oluşturmanız gerekecektir.


Aşağıdaki komut ile oluşturabilirsiniz:

> ./easyrsa gen-req vpnclient nopass

Aşağıdaki gibi bir çıktı almalısınız:

```
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
....+++++
.................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1563.TeOf5v/tmp.i4YxLz'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [vpnclient]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req
key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key
```

Client anahtarını girin:

> ./easyrsa sign-req client vpnclient

Aşağıdaki gibi bir çıktı alacaksınız:

```
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnclient'
Certificate is to be certified until Feb  6 14:43:18 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt
```

Ardından tüm client sertifika ve anahtar dosyalarını /etc/openvpn/client dizinine kopyalayın.

>cp pki/ca.crt /etc/openvpn/client/
>cp pki/issued/vpnclient.crt /etc/openvpn/client/
>cp pki/private/vpnclient.key /etc/openvpn/client/

7-) OpenVPN Server'ı Konfigüre Edin


Bu noktada hem client hem de server sertifikası ve anahtarı hazır. Şimdi bir OpenVPN yapılandırma dosyası oluşturmamız ve tüm sertifikaları ve anahtarları tanımlamamız gerekiyor.

> nano /etc/openvpn/server.conf

Aşağıdaki Satırları Ekleyin:

```
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpnserver.crt
key /etc/openvpn/server/vpnserver.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3
```

Dosyayı kaydedip kapatın ve ardından OpenVPN server servisini başlatın.

>systemctl start openvpn@server
>systemctl enable openvpn@server

Her şey yolunda gittiyse yeni bir arayüz oluşturulmuş olması gerekiyor. Aşağıdaki komut ile kontrol edebilirsiniz:

> ip a show tun0

Aşağıdaki gibi bir çıktı alacaksınız:

```
4: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::153d:f29:39a2:571a/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
```

8-) IP Yönlendirmeyi Etkinleştirin


IP yönlendirme, işletim sisteminizin gelen ağ paketlerini kabul etmesini ve diğer ağa iletmesini sağlar. Aşağıdaki komutla etkinleştirin:

> nano /etc/sysctl.conf
> net.ipv4.ip_forward = 1

Dosyayı kaydedip kapatın ve değişiklikleri uygulamak için aşağıdaki komutu kullanın:

sysctl -p

9-) OpenVPN Client Yükleyin ve Konfigüre Edin


Buraya kadar geldiyseniz artık farklı bir sisteme OpenVPN client kurulumu gerçekleştirip konfigüre etmeniz gerekmektedir.


İlk olarak aşağıdaki komut ile OpenVPN yükleyin:

> apt -y install openvpn

Yüklendikten sonra tüm client sertiifka ve anahtar dosyalarını OpenVPN serverdan çekmemiz gerekiyor. Aşağıdaki komut ile alabilirsiniz:

> scp -r root@vpn-server-ip:/etc/openvpn/client .

Ardından dizini client olarak değiştirin ve Client konfigürasyon dosyası oluşturun:

> cd client
> nano client.ovpn

Aşağıdaki satırları ekleyin:

```
client
dev tun
proto udp
remote vpn-server-ip 1194
ca ca.crt
cert vpnclient.crt
key vpnclient.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
```

Kaydedip kapatın ve ardından konfigürasyon dosyanız ile OpenVPN server'ınıza bağlanın:

> openvpn --config client.ovpn

Bağlantı sağlandığında aşağıdaki gibi bir çıktı alacaksınız:

```
Sat Feb  6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1)
Sat Feb  6 14:53:50 2021 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: route options modified
```

Aşağıdaki komut ile bağlantıyı doğrulayabilirsiniz:

> ip a show tun0

Aşağıdaki gibi bir çıktı alacaksınız:

```
4: tun0:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::9206:94d7:8fb2:6b21/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
```

Yukarıdaki çıktıyı alıyorsanız bağlantı tamamlanmış ve sorun yok anlamına gelmektedir.


 

Bu kılavuz ile Debian 10 üzerinde OpenVPN sunucusu kurulumunu başarıyla gerçekleştirebilirsiniz. İyi çalışmalar!

35 görüntüleme0 yorum

Son Yazılar

Hepsini Gör

Comments


bottom of page