Ne gerekiyor?
Üzerinde tercihen bir Ubuntu GNU/Linux dağıtımının sunucu sürümü kurulu olan bilgisayara ihtiyacınız var. Bu dünyanın herhangi bir yerinde internet konusunda sansürcü zihniyete sahip olmayan, ifade özgürlüğü konusunu 20. yüzyılda tartışıp karara bağlamış bir ülkede bulunan bir sanal sunucu olabilir. Çok basit özelliklere sahip bir VPS/VDS bile işinizi görecektir. Aylık 10 liraya yakın bir maliyetle alabileceğiniz bu hizmet size 1 veya 2 GB bellek, 1 veya 2 sanal işlemci çekirdeği, 5-20 GB arası depolama alanı sağlayacak, bir tane IPv4 adresi verecek. Size yetecek olan minimum kaynak ise şu şekilde:
- 512 MB RAM
- 3 GB depolama alanı
- 1 vCPU core
- 1 adet IPv4 IP adresi
- Bu sistemde kurulu bir sunucu sürümü GNU/Linux dağıtımı ve root yetkisi.
Hizmeti satın alma kısmı tamamen sizin tercihiniz; fakat VPN sistemini etkin hâle getirdiğinizde internet deneyiminiz “o ülkede gibi” olacağı için bildiğiniz bir yabancı dile sahip ülkeden bu tercihi yapmanız hayatınızı kolaylaştıracaktır.
Bunun yanında Linux konsol bilgisi de gerekli olacaktır. Daha güvenli bir sunucu oluşturmak için birkaç sağlamlaştırma (hardening) ipucunu da yazının sonunda sizlerle paylaşacağız.
Nasıl yaparım?
Olağan şartlarda bir OpenVPN sunucusunu sıfırdan kurup yönetmek çetrefilli bir iş, fakat internette bir hayırseverin hazırladığı (Github.com/Nyr) birkaç yüz satırlık bir Bash betiği sayesinde bunu yapmak oldukça kolay.
İşleme başlamadan internette sansürü çok az uygulayan bir ülkede tüm portları açık bir sunucuya, bu sunucuda yönetici haklarına bir kullanıcıya ve bu kullanıcının parolasına ihtiyacınız var. Elbette sunucuda SSH sunucusu kurulu olmalı ki uzaktan komut satırı kullanarak erişebilesiniz.
GNU/Linux, BSD ve herhangi bir Unix benzeri diğer işletim sisteminde kabuk erişiminiz (terminal vb.) zaten mevcut; Windows kurulu bilgisayarda ise PuTTY veya Windows için Bash gibi uygulamaları kullanmanız mümkün.
Adım adım OpenVPN kuruyoruz
Öncelikle karşıdaki bilgisayara bağlanıyoruz. Bu bir IP adresi veya sunucu ismi olabilir.
ssh kullanici@sunucuadresi -p portnumarasi
Örnek: ssh [email protected] -p 22 veya [email protected] -p 9999 bu sunucu üzerinde başka hiçbir şey çalışmayacaksa, IP adresi üzerinden bağlanmak doğru seçenektir.
Şu komutu yazarak ilgili betiği GitHub’dan indiriyoruz:
wget git.io/vpn -O openvpn-install.sh
Alternatif olarak bu yazının hazırlandığı zamanki betik kopyasını HWP.com.tr sunucumuzdan indirebilirsiniz.
wget hwp.com.tr/wp-content/uploads/openvpn-install.sh
Ardından ise bu betiği çalıştırıyoruz:
sudo bash openvpn-install.sh
Bu betik size otomatik olarak gerekli OpenVPN kurulumunu ve temel konfigürasyonları yapacak, sonrasında ise bu betiği tekrar çalıştırıp kullanıcı ekleyip çıkartabileceksiniz.
Kurulum adımlarında bu betik size önce IP adresi soracak. Eğer makinenizde birden fazla ağ bağlantısı varsa bağlanmak istediğiniz bağlantının adresini yazın, eğer zaten tek ağ varsa doğrudan karşınıza onun adresini getirecek.
Ardından ise hangi port üzerinden bağlantı kurulacağını soracaktır. Varsayılan ayar olarak 1194 görünür ama ülkemizdeki yasakları düşündükçe bu port numarasını değiştirmenizi öneriyoruz. Örneğin 12465 gibi bir değer verebilirsiniz. Sunucunuzda bir de SSH sunucusu çalışıyorsa (varsayılan port 22) ondan başka herhangi bir portu kullanabilirsiniz.
Sonraki seçenekte hangi ücretsiz DNS çözücüyü kullanacağınız sorulacak. Biz 2 numarayı, yani Google’ı seçtik.
En son olarak da ilk kullanıcımız için bir isim soracak. Biz birçok kullanıcı yaratacağımız için buna hwp1 dedik.
Artık kurulum tamamlanıyor. Betik bu noktadan sonra gerekli paketleri kuracak ve bulunduğunuz dizinde (giriş yaptıktan sonra dizin değiştirmediyseniz /home/kullaniciadiniz/hwp1.ovpn konumunda) kullanabileceğiniz ilk kullanıcı hesabına ait ayar dosyasını oluşturacak. Aşağıdaki komutla üretilen sertifikayı/sertifikaları listeleyebilirsiniz:
ls *.ovpn
Daha fazla kullanıcı oluşturmak, var olan kullanıcıyı silmek veya bu OpenVPN kurulumunu kaldırmak için tekrar aynı komutu çalıştırmanız yeterli olacaktır. Bu defa zaten OpenVPN kurulu diyerek karşınıza diğer seçenekleri çıkartacaktır.
sudo bash openvpn-install.sh
Her şey bu kadar kolay!
Bilgisayar ve mobil cihazlardan bağlanmak
Her bir cihaz için ayrı birer sertifika (yani kullanıcı hesabı) ürettiğiniz sürece istediğiniz kadar cihazla bu sunucuyu kullanmanız mümkün. Tek çekirdekli ve çok az miktarda RAM’e sahip bir sunucu sistemi bile aynı anda bir düzine bağlantıyı rahatlıkla kaldırabilir. Burada sizi sınırlayan şey genellikle 100 Mbps hızında verilen sunucu çıkışı olacaktır.
Ayar dosyasını bilgisayar veya mobil cihazınıza indirmek için SFTP destekli bir yazılımla sunucunuza ssh yaptığınız bilgilerle erişip kendinize kopyalayabilirsiniz. Windows için WinSCP veya Filezilla uygulamaları işinizi görecektir; SFTP destekleyen herhangi bir yazılım herhangi bir platformda sorunsuzca bu işi gerçekleştirmenizi sağlar.
Bilgisayarlardan bağlanmak için OpenVPN.net adresinden indireceğiniz işletim sisteminize uygun OpenVPN uygulamasını indirmek ve ayar dosyasını programın dizinindeki config klasörüne atmak. OpenVPN GUI yazılımını çalıştırdığınızda bağlantı listesinden ayar dosyanızın ismiyle görünen bağlantıyı açarak VPN sunucusunu etkinleştirebilirsiniz.
OpenVPN COnnect uygulamasının Android, iOS ve Windows arayüzleri
Android ve iOS cihazlar için ise Google Play Store ve Apple AppStore üzerinden ücretsiz OpenVPN Connect uygulamasını indirerek gerekli ayar dosyasını işletim sisteminin izin verdiği biçimde (e-posta ekiyle göndermek, Apple keychain’e eklemek, dosya sisteminden eklemek vb.) uygulamayla açmanız yeterli.
Birkaç güvenlik önlemi (Hardening)
Burada anlatılanları gerçekleştirirken en nihayetinde bir GNU/Linux sunucu kullanacaksınız ve bu sunucuya başka yetkisiz kişilere erişimi engellemek ve potansiyel saldırılardan bu sunucuyu korumak isteyeceksiniz. Güvenlikle ilgili olarak çok fazla ayrıntıya girmeyeceğiz fakat birkaç önerimiz olacak. Bu adımları nasıl gerçekleştireceğinizi burada anlatalım:
► Varsayılan SSH portunu değiştirin, 22 olarak kalmasın. Taramalarda çıkmasın.
sudo nano /etc/ssh/sshd_config
bu komuttan sonra
# What ports, IPs and protocols we listen for Port 22
yazan kısmı bulun ve değiştirin; başka bir hizmetin portuyla aynı olmasın. 1923 olsun mesela. CTRL-X ile çıkın ve çıkarken y ile kaydedip çıkın. Bu ayar siz hizmeti veya makineyi yeniden başlattığınızda etkin olacaktır.
► Bu noktada sistemi yeniden başlatın ki karışıklık olmasın. Yeniden SSH yaparken az önce belirlediğiniz portu seçmeyi unutmayın.
sudo reboot
► Varsayılan OpenVPN portunu değiştirin (bunu kurulum adımlarında belirtmiştik, mesela 12465). Hem protokol IP üzerinden engellenmesin hem de saldırı için tarayanlara karşı hedef olmayın.
► Sunucunuzda UFW kurulu değilse kurun. Uncomplicated Firewall, yani karmaşık olmayan güvenlik duvarı paketi yalnızca bazı protokollere izin verip diğerlerini engelleyecektir.
sudo apt-get install ufw -y
► UFW üzerinden SSH ve OpenVPN’e izin verin. Burada kendi belirlediğiniz port numaralarını kullanmayı unutmayın yoksa sunucunuzu baştan kurmanız gerekir. Hoş bir durum değil.
sudo ufw allow 1923 sudo ufw allow 12465
► Doğru portları tanımladığınızdan eminseniz UFW’yi etkin hale getirin.
sudo ufw enable
Eğer o anda bağlı olduğunuzdan farklı bir SSH portunu kullanmak için ayar yaptıysanız ve o şekilde UFW’ye izin verdiyseniz tekrar bağlanmanız gerekecektir.
ÖNEMLİ NOT (ve bir güncelleme)
Bazı güncel GNU/Linux dağıtımlarında UFW’yi etkinleştirmeniz sonrasında VPN çalışmaz hâle gelebilir. Bu sorunu çözemedik ve pratik bir çözüm bulamadık. Eğer UFW etkinleştikten sonra VPN’iniz çalışmazsa aşağıdaki komutla UFW’yi devre dışı bırakın:
sudo ufw disable
Okurumuz Korcan Uğur tarafından dikkatimize sunulan bir bilgi aslında UFW’yi devre dışı bırakmadan bir çözümü olduğunu gösterdi. Burada bahsedilen çözüm için şunları yapmanız gerekiyor:sudo nano /etc/default/ufwBurada 15-20 satır kadar aşağıda şunu göreceksiniz:
DEFAULT_FORWARD_POLICY="DROP"Bu satırı aşağıdaki şekilde değiştirip
DEFAULT_FORWARD_POLICY="ACCEPT"sudo ufw enablekomutuyla UFW sistemini yeniden başlatırsanız sorunsuz şekilde sisteminiz çalışmaya devam edecek.
Sisteminizi güncel tutun
► Sisteminizi güncel tutmak için ara sıra şu komutu çalıştırmanız yeterlidir:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoclean -y && sudo apt-get autoremove -y
Aslında burada art arda beş farklı komut çalışıyor; bunları bir dosyaya kaydedip; örneğin
nano update
yazarak içine yazıp ctrl-x ile çıkıp yaparken y tuşuna basıp kaydettiğinizde artık konsoldan
sudo sh update