[Nasıl] Ubuntu 16.04 sunucu üzerine OpenVPN kurulumu

Başlatan fsutil, 06 Ekim 2016 - 01:53:27

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fsutil

Not: Bu anlatım aşağıdaki kaynak aracılıyla hazırlanmıştır.
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04



1. Sistemin güncellenmesi ve gerekli paketlerin kurulması:

apt-get update && apt-get upgrade
apt-get install openvpn easy-rsa





2. CA değişkenlerini yapılandırılması:

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars


Açılan dosyada aşağıdaki kısımları örnekteki gibi doldurmalısınız.

Alıntı Yap...
export KEY_COUNTRY="TR"
export KEY_PROVINCE="TR"
export KEY_CITY="Izmir"
export KEY_ORG="asd"
export KEY_EMAIL="asd@hotmail.com"
export KEY_OU="asd"
...

Ayrıca aşağıdaki ifadeyi düzeltmelisiniz.

Alıntı Yapexport KEY_NAME="server"

Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x"  tuşları ile dosyadan çıkabilirsiniz.




3. CA' nın inşaa edilmesi:

source vars
./clean-all
./build-ca


Burada çıkan her şeye "enter" yapmalısınız.




4. Sunucu sertifikası ve şifreleme dosyalarının oluşturulması:

./build-key-server server

burada aşağıdaki kısımlar hariç "enter" yapıyoruz. Aşağıda çıkan sorulara y, yani evet diyoruz. Eğer doğru yaparsanız "Data Base Updated" yazmalıdır.

Alıntı Yap...
Certificate is to be certified until Oct  3 19:07:25 2026 GMT    (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated




5.

./build-dh
openvpn --genkey --secret keys/ta.key


source vars
./build-key client1


burada da aşağıdaki kısımlar hariç "enter" yapıyoruz. Aşağıda çıkan sorulara y, yani evet diyoruz. Eğer doğru yaparsanız "Data Base Updated" yazmalıdır.

Alıntı Yap...
Certificate is to be certified until Oct  3 19:15:25 2026 GMT    (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated




6. Gerekli dosyaların OpenPVN klasörüne kopyalanması:

cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf





7. OpenVPN'in yapılandırılması:

nano /etc/openvpn/server.conf

Dosya içerisinde ";tls-auth ta.key 0 # This file is secret" ifadesini bulun ve başındaki ";" i silin ve alt satırına "key-direction 0" ifadesini ekleyin. İşlem bittiğinde aşağıdaki gibi olmalıdır.

Alıntı Yap...
tls-auth ta.key 0 # This file is secret
key-direction 0
...

Ardından ";cipher AES-128-CBC" i bulun ve başındaki ";" i silin. Alt satırına "auth SHA256" ifadesini ekleyin. İşlem bittiğinde aşağıdaki gibi olmalıdır.

Alıntı Yap...
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
auth SHA256
;cipher DES-EDE3-CBC  # Triple-DES
...

Daha sonra ";user nobody" ve ";group nogroup" ifadelerini bulun ve başlarındaki ";" i silin işlem bittiğinde aşağıdaki gibi olmalıdır.

Alıntı Yap...
user nobody
gruop nogroup
...

Bu işlem de bittikten sonra DNS ayarlaması için "redirect-gateway" ve "dhcp-option" ifadelerini bulun ve başlarındaki ";" silin. İşlem bittikten sonra aşağıdaki gibi olmalıdır.

Alıntı Yap...
push "redirect-gateway def1 bypass-dhcp"
...
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
...

Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x" tuşları ile dosyadan çıkabilirsiniz.




8. Sunucu ağının yapılandırılması:

nano /etc/sysctl.conf

Dosya içerisinde "#net.ipv4.ip_forward=1" bulun ve başındaki "#" ifadesini silin. Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x"  tuşları ile dosyadan çıkabilirsiniz. Ardından aşağıdaki komutu yürütün.

nano /etc/ufw/before.rules

Dosya aşağıdaki gibi yapın.

Alıntı Yap#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES


# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x" tuşları ile dosyadan çıkabilirsiniz.

Daha sonra aşağıdaki komutu yürütün

nano /etc/default/ufw

Bu dosyada "DEFAULT_FORWARD_POLICY="DROP"" ifadesini bulun ve aşağıdaki gibi değiştirin. Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x" tuşları ile dosyadan çıkabilirsiniz.

Alıntı YapDEFAULT_FORWARD_POLICY="ACCEPT"

UFW'den gerekli izini verelim

ufw allow 1194/udp
ufw disable
ufw enable





9. OpenVPN' in başlatılması

systemctl start openvpn@server
systemctl statusopenvpn@server


Eğer Active: active (running) yazısını görüyorsanız sorunsuzca buraya kadar gelmişsiniz demektir. q tuşu ile oradan çıkabilirsiniz.

tun0 ı kontrol etmek için aşağıdaki komutu yürütün.

ip addr show tun0

bu sonuç çıkmalıdır.

Alıntı Yap4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 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


Her şey yolunda olduğuna göre OpenVPN i çalıştırabiliriz

systemctl enable openvpn@server




10. client' in ayarlanması

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf


Ardından aşağıdaki komutu yürütün

nano ~/client-configs/base.conf

ve "remote server_IP_address 1194" ifadesini bulup, ilgili yere sunucu ip adresinizi yazın.

Ardından ";user nobody" ve ";group nogroup" ifadelerini bulup ";" i silin. İşlem sonrası aşağıdaki gibi olmalıdır.

Alıntı Yap...
user nobody
group nogroup
...

Daha sonra "ca ca.crt" , "cert client.crt" , "key client.key" ifadelerini bulup aşağıdaki gibi yapın. Alt satıra aşağıdaki ifadesini ekleyin.  Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x" tuşları ile dosyadan çıkabilirsiniz.

Alıntı Yap...
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
key-direction 1
cipher AES-128-CBC
auth SHA256
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf


nano ~/client-configs/make_config.sh

Aşağıdaki yazıyı dosya içerisine yapıştırın.

Alıntı Yap#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Ardından "ctrl + o" tuşları ile kayıt edip "ctrl + x" tuşları ile dosyadan çıkabilirsiniz. Dosyanın gerekli izinlerini ayarlamak için aşağıdaki komutu yürütün.

chmod 700 ~/client-configs/make_config.sh




11. client' in oluşturulması

cd ~/client-configs
./make_config.sh client1


Eğer her şey sorunsuz gittiyse "~/client-configs/files" dizini altında client1.ovpn dosyası oluşmuş olmalı. Bu dosyayı sunucunuzdan indirip bağlanmak için kullanmalısınız.

sbaba

hangi komutla ineceğini yazsanız çok iyi olacaktı...

fsutil

Alıntı yapılan: sbaba - 04 Şubat 2017 - 19:43:51
hangi komutla ineceğini yazsanız çok iyi olacaktı...

önce sunucuya sftp ile bağlanmalısınız (not: eğer root değilde başka bir kullanıcı ekleyip kullanıyorsanız onu yazmalısınız):
sftp root@ipadresiniz

cd ~/client-configs/files

get client1.ovpn

erichtopp

Hocam çok basit ve akıcı şekilde anlatmışsınız teşekkürler. Yalnız yeni kurulmuş bir 16.04'e işlemleri gerçekleştirdikten sonra cep telefonu yada local haricindeki başka bir istemci bilgisayar ile bağlanmaya çalıştığımda bağlantıyı sağlayabiliyor fakat internet çıkışı alamıyorum. Firewall üzerinden gerekli izinleri hali hazırda işlemler sırasında zaten veriyoruz. Makina yeni kurulduğu için başka çalışan ve bloke edecek aplikasyon da bulunmamaktadır. Bunun ile ilgili bir çözüm öneriniz var mıdır?

Ps. işlem yapılan makine router üzerinden DMZ olarak atanmıştır.