İnternetime Dokunma | VPN Kurulumu ve OpenVPN

Türkiyede “internet düzenlemeleri” adı altında kişisel hak ve özgürlüklerin ihlal edildiğine hepimiz şahit olmaktayız. Örnek olarak; insanların, “Ayda X TL ödediğim internet ile youtube.com’a giremiyorum!” şeklinde ki isyanlarında haklıydılar. Biliyorsunuz ki Türkiye’de youtube’un bile yasaklandığı dönemler oldu. Peki bu engellemeler şimdiye kadar nasıl oluyordu ?

DNS

DNS’ler web sitesi adreslerinin hangi ip adresli sunucuda hizmet verdiğinin kayıtlarını tutan ve bu kayıtlara gelen talepleri cevaplandıran sistemlerdir. Son kullanıcılar ADSL modem’lerini takıp internete eriştiklerinde, İnternet Servis Sağlayıcı (ISP)’ler tarafından belirtilen DNS sunucularını kullanırlar. Eğer DNS sunucusunda www.youtube.com için ilgili kayıt gerçekte youtube’a ait olmayan bir ip adresi ile güncellenmişse, bu DNS’leri kullanan herkes gerçekte youtube’a ait olmayan sunuculara erişmeye başlarlar. Mahkeme kararı ile bir siteye erişimin kapatılırken, kapatılan siteye ait DNS kayıtları İnternet Servis Sağlayıcı’larının DNS’lerinde değişitirilmekte. Bunun neticesinde Google yada Open DNS kullanmayan kullanıcılar siteye erişememektedir.

Ülkemizde yeni internet düzenlemesi gelmeden önce ki dönemde tüm engellemeler bu mantık üzerinden yapılmaktaydı. www.pastebin.com adresine gitmek istediğinizde, karşınıza alıştığımız açık mavi bir sayfa ve “Telekomünikasyon İletişim Başkanlığı” karşılıyor ise; DNS adreslerinizi değiştiriniz. OpenDNS kullanabilirsiniz.

Peki yeni düzenlemelerden sonra ?

DNS değişikliği bir çözüm olmaktan çıkacak. Çünkü erişim esnasında eskiden sadece DNS üzerinden engellemeler yapılırken şimdi mahkeme kararı olmadan direk TIB başkanının yetkisi dahilinde ip bazlı erişim engellenecektir. Bu, erişilmek istenen web sitesinin hizmet verdiği sunucunun ip adresine giden taleplerin durdurulması anlamına gelmektedir. DNS değişikliğinin artık bir çözüm olmaması, “artık dns değiştirmeye gerek yok.” anlamına gelmemektedir. OpenDNS sunucularının kullanılmaya devam edilmesi önemlidir.

VPN

VPN, Virtual Private Network anlamına gelmektedir. Bilgisayarınız fiziksel olarak bağlı olmadığı başka bir ağa uzaktan erişim sağlanması ile gerçekleşir.  VPN’in en güzel özelliği ise şifreli trafik sunmasıdır. Yani sizin bilgisayarınız ile VPN bağlantısı gerçekleştirdiğiniz ağ arasında ki tüm trafik şifrelenir. VPN bağlantısı gerçekleştiren bilgisayarın tüm internet trafiği bağlanılan VPN üzerinden gerçekleştiği için, trafiğinizin dinlemesi veya analiz edilmesi mümkün değildir. Buda yeni internet düzenlemeleri ile gelecek olan ip bazlı engellemeye çözüm üretmektedir. Çünkü erişmek istediğiniz sitenin ip adresi dahil tüm trafiğiniz şifrelendiği için, İnternet Servis Sağlayıcılarının bu noktada yapabilecek bir şey yoktur. Tahmin edebileceğiniz üzere aynı durum HTTPS hizmeti veren siteler içinde geçerlidir.

CentOS OpenVPN Kurulumu

Bu başlıktan sonra anlatılanlar teknik bilgi içerir. Linux sunucuya openVPN kurulumu ve kullanımına dair adımlar anlatılacaktır.

Öncelikle yurt dışından bir adet linux sunucu kiralanması gerekmektedir. Bu noktada maliyeti düşük ve performansı iyi olan DigitalOcean Aylık 5$ paket seçilebilir.

Updateler yapıldıktan sonra,i htiyaç duyulan paketleri içeren epel reposu sisteme eklenmelidir.

#Updateler yapılıyor.
yum -y update

#wget yoksa kuruluyor.
yum -y install wget

#EPEl reposu sisteme ekleniyor.
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

OpenVPN hazır bir konfigürasyon dosyası ile kurulmaktadır. Bu konfigürasyon dosyası /etc/openvpn klasörü kopyalanmalıdır.

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/

Ardından bu dosya metin ediötür ile açılarak değişiklikler yapılmaldırı.

vi /etc/openvpn/server.conf

Öncelikle aşağıdaki satırın başında diyez ( # ) işareti varsa kaldırılmalıdır. Bu ayar değişikliği ile VPN networkü üzerinden internette erişmek istediğiniz adrese paketlerin gönderilmesi gerçekleşecektir.

;push "redirect-gateway def1 bypass-dhcp"

Eğer VPN ağına bağlanan kullanıcıya sizin tarafınızdan belirlenmiş bir DNS adresi vermek istiyorsanız aşağıdaki satırlarda bulunan DNS adresleriniz değiştirebilirsiniz. Mevcut adresler OpenDNS’e aittir. Başka bir zorunluluk gelişmediği sürece değiştirilmesine gerek yoktur.

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

OpenVPN sistemde servis olarak çalışmaktadır. Kullanıcı yetkisi olarak OpenVPN servisinin yetkileri düşürülmek istenirse -ki güvenlik açısından yapılmalıdır- aşağıdaki satırların başında ki diyezler kaldırılmalıdır.

;user nobody
;group nobody

Sertifikaların Oluşturulması

VPN servislerinde, VPN’e bağlantı gerçekleştiren kullanıcının bilgisayarı ile VPN networkü arasındaki trafik şifrelenmektedir. Bunun için aşağıdaki adımları takip ederek gerekli olan sertifikalar oluşturulmalıdır.

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Not: Eğer “cp: cannot stat `/usr/share/openvpn/easy-rsa/2.0/*’: No such file or directory” hatası alıyorsanız, bu linkteki ajftek nicname’li kullanıcının ilk yorumundaki adımları uygulayabilirsiniz.

Ardından oluşturulacak sertifikası için tanımlamaların girileceği dosyada düzenlemeli yapılmalıdır. Dosya içeriğinde “KEY_” ile başlayan satırları değiştiriniz.

vi /etc/openvpn/easy-rsa/vars

Değişiklik aşağıdaki örneğe benzer olacaktır.

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="administrator@example.com"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

Son olarak aşağıdaki komutları çalıştırarak sertifikalar oluşturulup OpenVPN’e tanıtılmalıdır.

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

OpenVPN’in kurulu olan Linux’un gelen paketleri gideceği adrese iletmesi için ip forward özelliği enable edilmelidir -arp poisoning’ci arkadaşlar..- . Ardından openvpn servisi başlatılacaktır.

sysctl -w net.ipv4.ip_forward=1
sysctl -p
service openvpn start
chkconfig openvpn on

Kişisel not: Hayatın hemen hemen her noktası Etki-Tepki hiyerarşi’ne göre işlemektedir. Bundan 4 sene önce DNS’i bilmeyen insanlar şimdi 4.2.2.3 ve 8.8.8.8’e teşekkür etmekteler. Bundan 1 sene önce Talcid’i sadece mide bulantısı için kullanan insanlar şimdi “Her yer talcid her yer direniş” demekteler. Şimdi ise VPN’i öğrenmekteyiz… Umarım bu blogda Dns Tunneling’e değinmek zorunda bırakılmayız. Gerekir ise değiniriz. “Bypasslayabiliyorum.. Size kolay gelsin.” yanılgısına düşülmemelidir. Çünkü tecavüz edilen hak ve özgürlükler sizinki değilse bile, bu memlekette ki bir başka vatandaşın yada üniversite okuyan öğrencilerin. 

Kaynakça: https://www.digitalocean.com/community/articles/how-to-setup-and-configure-an-openvpn-server-on-centos-6