Merhaba.
Geliştirmiş olduğum sistemi sizlerle paylaşmak istedim. Umarım ihtiyacı olan kullanıcıların işine yarar.

Sistem Ubuntu 18.04 üzerinde openvpn sisteminin hızlı bir şekilde kurulmasını sağlıyor. Ayrıca anahtar servisi ile sunucunuzda bulunan ovpn dosyasını geliştirici araçları olmayan yada sunucu ile bağlantısı olmayan cihazlarınızdan erişmeniz için hazırladım.

sistemin adresi https://install.ahmetozer.org/vpn/

Türkçe ve inglizce rehberi burada reklam olur diyenler olabilir diye paylaşmıyorum. Sitede linkler mevcut rehber ihtiyacı olan navbardaki linlerden rehberlere bakabilir.


Meraklısı için soru cevap

-Neden sunucu ip adresi bilgisini sayfaya giriyoruz ?
+ Sunucu ip adresinizi girme sebiniz tarayıcının veriyi sunucunuz üzerinden çekmesidir.

- Peki bu parola ne için ?
Sistemi geliştirirken ilk başta parola koymayacaktım bunun sebebi https kullanılması fakat içim rahat etmedi. Bazı kullanıcılar sen bizim dosyamızı okuyabilir misin sorusunun cevabının hayır olması ve üstümden bu yükümlülüğün kalması için dosyayı suncuda şifremeye karar verdim.

Dosyanız sunucu üzerinde AES ile şifrelenmektedir. Daha sonrasında siz tarayıcınızda ip adresini yazdığınızda bu şifrelenmiş dosya tarayıcınıza gelir. Eğer parola doğru ise bu şifrelenmiş dosya ayıklanır ve indirebileceğiniz şekilde zarayıcıda tutulur yani şifrelenmiş verinin çözülmesi tarayıcı üzerinde javascript ile gerçekleşir aradaki kimse okuyamaz.

- Sen benim parolamı okuyabiliyor musun ?
Hayır yukarıda bahsettiğim gibi işlem tarayıcı üzerinde javascript ile gerçekleşir ve tarayıcıdan veri dışarı çıkmaz.

- Parolanın doğru olup olmadığını sistemin nasıl anlayabiliyor ?
Bunun için sha256 kullanmaktayım. Sistem şöyle çalışıyor sizin şimdi bir tane ovpn dosyanız var . Bu dosya aes ile şifreleniyor ve diyelim bu veri "asdfasdgasdgkwqnpnhklnsdflgknl" şeklinde anlaşılmaz bir veri olsun bunu sadece parola ayıklayabilir. bu verinize birde ek olarak parola bilgisi ekleniyor yani "asdfasdgasdgkwqnpnhklnsdflgknl"+"parolanız" şeklinde oluyor. Daha sonra bu "asdfasdgasdgkwqnpnhklnsdflgknl"+"parolanız" veriniz den sha256 kodu oluşturuluyor. bu kod sistemden çıkan ilk 64 hanesini oluşturuyor ve geri kalan tüm haneler ise sizin şifrelenmiş veriniz.
Tarayıcıda parola doğru yada yanlış olup olmadığını anlamak için bu ilk 64 hanelik kod sha verisi kenarda tutuluyor ver sunucudan gelen 65. haneden itibaren oluşuan tüm veri ve sizin tarayıcıda girdiğiniz parola toplanıp yine sha256 uygulanıyor ve oluşan bu veri ile sunucudan gelen veri ile aynı ise parola doğru olduğu anlaşılıyor. Parola yanlışsa zaten hem sha256 uyuşmuyor ve sizin şifrelenmiş veriniz ayıklanamıyor.

+ Peki neden arada bir heroku servisi var ? Yani benim sunucumdan direk veri neden çekilmiyor ?
Bunun sebebi güvenlik. Daha önceden tarayıcıdan openssl webserver hizmeti ile anahtar dağıtımı yapıyorduk fakat HTTPS trafiğin servis sağlayıcıları tarafından sakatlanmasından dolayı openssl hizmetinde sıkıntı olduğuna dair yorumlar geldi kullanıcılardan. Bu problemi ekstradan web sunucusu kurarak aşabilirdim fakar sunucuda zaten web hizmeti kullananlar varsa sıkıntı yaşamaması ve sistemin daha hafif olması için bu fikirden vaz geçtim. sunucu ile hereko arasında şifrelenmiş veriniz geçiyor ve herokudan tarayıcınıza HTTPS olarak veri gönderiliyor.