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:
(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:
(Ayarlarda bahsedilen “Chipers ve Hardening” bölümünün detayına OpenVPN 2.4 | Hardening sayfasından bakabilirsiniz.)
Kopyalayıp düzenlemek istiyorsak:
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 -yPaketler yüklendikten sonra sertifikalarımızı oluşturmaya başlayalım:
sudo yum update -y
sudo yum install openvpn easy-rsa firewalld -y
(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 ~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 init-pki
/usr/share/easy-rsa/3.0.3/easyrsa build-ca nopassKey değişiminde kullanmak için Diffie-Hellman keylerini oluşturalım:
/usr/share/easy-rsa/3.0.3/easyrsa gen-dhSunucumuz 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 nopassSertifikaları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"HMAC" mekaniğiyle, bizim tarafımızdan gönderilecek olan paketleri imzalayabileceğimiz bir anahtar yaratalım:
/usr/share/easy-rsa/3.0.3/easyrsa gen-crl
openvpn --genkey --secret pki/ta.keyOpenVPN'in "server.conf" dosyasını örneklerden kopyalayıp kendimiz düzenleyebiliriz ya da kendimiz dosyayı oluşturup, aşağıdaki ayarları kullanabiliriz:
Ş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
(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/openvpnDosyayı oluşturup, aşağıdaki ayarları kullanmak istiyorsak istiyorsak:
touch /etc/openvpn/server.conf
# OpenVPN Server AyarlarıSunucuyu başlatalım ve sistemin yeniden başlaması durumunda, otomatik olarak başlayacak hale getirelim.
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
sudo systemctl start openvpn@server.serviceSunucumuza gelen bağlantıları "IPv4" üzerinden yönlendirmeye izin vermek için “/etc/sysctl.conf“ dosyasına, aşağıdaki satırı ekleyelim:
sudo systemctl -f enable openvpn@server.service
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Önce açık olan servislerin listesini alalım:
sudo systemctl enable -f firewalld
sudo firewall-cmd --list-servicesOpenVPN servisini ekleyelim:
sudo firewall-cmd --add-service openvpnEklediğimizi teyit edelim:
sudo firewall-cmd --list-servicesOpenVPN’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 openvpnYukarıdaki komut, sistem yeniden başladığında port açmayacağı için “masquerade” ekleyelim.
sudo firewall-cmd --add-masqueradeSistem yeniden başlarsa çalışmaya devam etmesi için ayarlayalım:
sudo firewall-cmd --permanent --add-masqueradeKontrol edelim:
sudo firewall-cmd --query-masqueradeVPN 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Şimdi "~/testclient/" dizininin içine "testclient.ovpn" isminde bir ayar(config) dosyası oluşturalım ve içine bazı ayarlar ekleyelim:
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
# OpenVPN Client AyarlarıKaydedip çıkalım. Bu dizini, kullanmak istediğimiz cihaza indirdikten sonra ayarların yapılması için:
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
sudo openvpn --config testclient/testclient.ovpnyazdı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