Günümüzde internet kullanımı arttığı için çeşitli ortak alanlarda ve özellikle kafelerde ücretsiz olarak verilen kablosuz internet(wifi) sayısı arttı. Birçok insanın, çeşitli sebeplerden dolayı dışarıda çalışması gerekebiliyor. Bunun için internet bağlantısına ihtiyacı olduğunda kafelerde veya ortak alanlarda bulunan kablosuz internet ağlarına bağlanmayı tercih edebiliyor. Bu durumda ortak alanda bulunan herkes, aynı ağa bağlanmış oluyor ve birbirini bu ağda görebiliyor. Aslında ihtiyaçtan doğan bir işlem, internete bağlamak istediğimiz cihazımızı, ağdan gelebilecek saldırılara karşı "keşfedilebilir" hale getiriliyor. Bu yüzden kendimize veya şirketimize ait bir Virtual Private Network(VPN)'ümüzün olması, internete bağlanmak istediğimiz cihazımızı daha güvenli hale getiriyor. Tabi VPN'in tek kullanımı bu şekilde değil. Şirketimizin yerel ağına, sanki oradaymış gibi bağlanmak istiyorsak veya engellenen bir siteye, giriş yapmak istiyorsak VPN kullanmamız, bu sorunu ortadan kaldırmış oluyor.
OpenVPN Nedir?

OpenVPN açık kaynak kodlu ve özgür yazılım olarak geliştirilen(GNU GPL lisanslı), SSL/TLS destekli bir VPN yazılımıdır.

OpenVPN Nasıl Çalışır?

OpenVPN, işletim sistemlerinde sanal bir ağ bağdaştırıcısı oluştururak iki taraf arasında bağlantı oluşturur. Bu bağlantıyı bir tünel gibi düşünebiliriz. İnternete açık "IP" adresimiz duracağı gibi, bu iki taraf arasındaki bağlantıda alacağınız yeni, özel bir "IP2" adresiniz olur. Eğer istenilirse bütün trafik bu özel ağa yönlendirilebilir. Eğer tüm trafiğimizi yönlendirilmek istemezsek, sadece ilgili kaynaklara erişim sağlayabileceğimiz ama kalan trafiğimizin özel ağımıza gitmediği bir kullanımda mümkün. Bu tünelden akan verilere dışarıdaki birisi bakmak istediğinde, şifreli veriler dışında bir şey göremeyecektir. Dolayısıyla cihazımız ile internet arasında saldırıya açık olan verilerimiz, dışarıdan okunamaz hale gelecektir.

(Kurulum esnasında kullandığımız komutları daha detaylı incelemek için, OpenVPN'in resmi sitesinde bulunan:OpenVPN 2.4 | Man Page sayfasını kullanabilirsiniz.)

OpenVPN Nasıl Kurulur?

Öncelikle bazı paketleri kurmamız gerekiyor:
sudo yum install epel-release -y
sudo yum update -y
sudo yum install openvpn easy-rsa firewalld -y
Paketler yüklendikten sonra sertifikalarımızı oluşturmaya başlayalım:
(Komutlarda kullanıdığımz “nopass” parametresi, oluşturulacak sertifikaları kullanırken, parola sorulmasını istemediğimizi belirtir. Ekstra güvenlik için bu parametreyi kaldırabilirsiniz.)

Home(~) dizinimize gidelim ve sertifikalarımızın oluşacağı "pki" dizinini "easyrsa" nın hazırlaması için komut verelim:
cd ~
/usr/share/easy-rsa/3.0.3/easyrsa init-pki
Bu komut ile Certificate Authority(CA) oluşturuyoruz. Yani bu sertifika "master" sertifikamız. Bu sertifika ile istenilmeyen sertifikaların erişim yetkisini iptal edebiliriz:
/usr/share/easy-rsa/3.0.3/easyrsa build-ca nopass
Key değişiminde kullanmak için Diffie-Hellman keylerini oluşturalım:
/usr/share/easy-rsa/3.0.3/easyrsa gen-dh
Sunucumuz için bir sertifika yaratıyoruz. Burada kullandığımız "testserver" yerine istenilen isim verilebilir. Bu komut, oluşturduğumuz sertifikayla, bulunduğumuz sunucuyu kaydediyor.
/usr/share/easy-rsa/3.0.3/easyrsa build-server-full testserver nopass
Şimdi VPN'e bağlanacak cihaz(client) için bir sertifika oluşturuyoruz:
/usr/share/easy-rsa/3.0.3/easyrsa build-client-full testclient nopass
Sertifikalarımızı çeşitli sebeplerden dolayı iptal(revoke) etmemiz gerekebilir. Bunun için iptal edeceğimiz "client"ı listeye ekliyoruz ve listeyi güncelliyoruz:
/usr/share/easy-rsa/3.0.3/easyrsa revoke clientname
/usr/share/easy-rsa/3.0.3/easyrsa gen-crl
"HMAC" mekaniğiyle, bizim tarafımızdan gönderilecek olan paketleri imzalayabileceğimiz bir anahtar yaratalım:
openvpn --genkey --secret pki/ta.key
Şimdi oluşturduğumuz tüm sertifikaları “~/pki” dizinine kopyalayalım:
sudo cp pki/ca.crt /etc/openvpn/ca.crt
sudo cp pki/dh.pem /etc/openvpn/dh.pem
sudo cp pki/issued/testserver.crt /etc/openvpn/testserver.crt
sudo cp pki/private/testserver.key /etc/openvpn/testserver.key
sudo cp pki/ta.key /etc/openvpn/ta.key
sudo cp pki/crl.pem /etc/openvpn/crl.pem
OpenVPN'in "server.conf" dosyasını örneklerden kopyalayıp kendimiz düzenleyebiliriz ya da kendimiz dosyayı oluşturup, aşağıdaki ayarları kullanabiliriz:
(Ayarlarda bahsedilen “Chipers ve Hardening” bölümünün detayına OpenVPN 2.4 | Hardening sayfasından bakabilirsiniz.)

Kopyalayıp düzenlemek istiyorsak:
sudo cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn
Dosyayı oluşturup, aşağıdaki ayarları kullanmak istiyorsak istiyorsak:
touch /etc/openvpn/server.conf
# OpenVPN Server Ayarları

persist-key
persist-tun
comp-lzo

dev tun
proto udp


# Port belirler.
port 1194

# Bağlantı üzerinde veri akışı olmadan, hareketsiz kalabileceği süreyi belirler.
keepalive 10 120

# Kullanıcı limitini belirler.
max-clients 6

# Sunucuya bağlanan kullanıcıların, ağ da birbirlerini görüp göremeyeceğini belirler. Bu ayar görmelerini sağlar.
client-to-client

# Sertifikaları belirtelim.
ca /etc/openvpn/ca.crt
cert /etc/openvpn/testserver.crt
key /etc/openvpn/testserver.key
dh /etc/openvpn/dh.pem
tls-auth /etc/openvpn/ta.key 0

# Ciphers ve Hardening.
reneg-sec 0
remote-cert-tls client
crl-verify /etc/openvpn/crl.pem
tls-version-min 1.2
cipher AES-256-CBC
auth SHA512
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

# Kurulum sonrasında “root” yetkilerini düşürür.
user nobody
group nobody

# Sunucunun otomatik olarak vereceği IP aralığını belirleyelim.
server 10.3.28.0 255.255.255.0
topology subnet

# Bütün trafiğin VPN üzerinden geçmesini sağlar ve belirlediğimiz DNS’leri kullanır.. OpenDNS ayarlarında bırakılabilir veya aşağıdaki gibi Google'ın DNS ayarlarına göre kullanılabilir.
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Logların kaydedileceği yeri belirler.
log-append /var/log/openvpn.log

# Logların hangi derece ile kaydedileceğini belirtir.
verb 3
Sunucuyu başlatalım ve sistemin yeniden başlaması durumunda, otomatik olarak başlayacak hale getirelim.
sudo systemctl start openvpn@server.service
sudo systemctl -f enable openvpn@server.service
Sunucumuza gelen bağlantıları "IPv4" üzerinden yönlendirmeye izin vermek için “/etc/sysctl.conf“ dosyasına, aşağıdaki satırı ekleyelim:
net.ipv4.ip_forward = 1
Dosyayı kaydedelim ve “sysctl -p” komutu ile değişiklikleri güncelleyelim.
Şimdi güvenlik duvarının, gelen bağlantıların kabul edilmesiyle ve yönlendirmesiyle ilgili ayarları yapalım. Güvenlik duvarı için kullanacağımız servisi çalışırıyoruz ve sistem yeniden başladığında aktif hale gelmesi için ayarlıyoruz:
sudo systemctl start firewalld
sudo systemctl enable -f firewalld
Önce açık olan servislerin listesini alalım:
sudo firewall-cmd --list-services
OpenVPN servisini ekleyelim:
sudo firewall-cmd --add-service openvpn
Eklediğimizi teyit edelim:
sudo firewall-cmd --list-services
OpenVPN’in çalışmasına izin verelim. Sistem yeniden başlarsa çalışmaya devam etmesi için “permanent” parametresini ekleyelim:
sudo firewall-cmd --permanent --add-service openvpn
Yukarıdaki komut, sistem yeniden başladığında port açmayacağı için “masquerade” ekleyelim.
sudo firewall-cmd --add-masquerade
Sistem yeniden başlarsa çalışmaya devam etmesi için ayarlayalım:
sudo firewall-cmd --permanent --add-masquerade
Kontrol edelim:
sudo firewall-cmd --query-masquerade
VPN Sunucumuza dahil etmek istediğimiz cihaz ayarları için sertifikaları almamız gerekli. Bu yüzden sertifikaları bir dosya oluşturup içine kopyalayalım:
mkdir ~/testclient
sudo cp ~/pki/ca.crt ~/testclient/ca.crt
sudo cp ~/pki/issued/testclient.crt ~/testclient/client.crt
sudo cp ~/pki/private/testclient.key ~/testclient/client.key
sudo cp ~/pki/ta.key ~/testclient/ta.key
Şimdi "~/testclient/" dizininin içine "testclient.ovpn" isminde bir ayar(config) dosyası oluşturalım ve içine bazı ayarlar ekleyelim:
# OpenVPN Client Ayarları

tls-client
pull
client
dev tun
proto udp

# Bu ayarda sunucunuzun IP’si belirtilmeli.
remote 123.456.789.123 1194
redirect-gateway def1

nobind
persist-key
persist-tun
comp-lzo
verb 3

ca ~/testclient/ca.crt
cert ~/testclient/client.crt
key ~/testclient/client.key
tls-auth ~/testclient/ta.key 1

remote-cert-tls server
ns-cert-type server
key-direction 1
cipher AES-256-CBC
tls-version-min 1.2
auth SHA512
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
Kaydedip çıkalım. Bu dizini, kullanmak istediğimiz cihaza indirdikten sonra ayarların yapılması için:
sudo openvpn --config testclient/testclient.ovpn
yazdıktan sonra kullanmaya başlayabiliriz. Test için "router" görevini yapan, işlemlerimiz sonucu oluşan sanal ağ bağdaştırıcımıza "ping" atabiliriz:
ping 10.3.28.1

 

 

 

 

 

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Submitted comments will be subject to moderation before being displayed.