Hükümetin internete yönelik yaptığı yanlışlar çok evet bazı yerlerin engellenmesi ve insanların buralara erişmesinin kısıtlanması gerekiyor ancak başının üzerinde saç var deyip yapılan engellemeler kabul edilemez, bu nedenle bu yazıda gereksiz sansürleri aşmak, verilerinizin güvenliğini artırmak ve çevrimiçi iletişiminizi güvence altına almanın en kesin yöntemini anlatacağım. SOCKS5 proxy tabanlı çok hızlı bir VPN hizmeti olan Shadowsocks’tan bahsedeceğim aslında yeni bir teknolojide değil.
İçindekiler
Daha öncesinde Shadowsocks Proxy Kurulumu ile ufak bir şekilde anlatmıştım. Ancak bu içerik daha gelişmiş bir versiyonu içeriyor trafiğin obfuscate edilmesi buna dahil artık.
Çin’de yaşayan insanlar, devlet sansürüyle çok daha uzun süredir mücadele etmek zorundalar gayet üzücü bir durum ama bu durum güzel bir projeyi de doğurdu adı “Shadowsocks” bu şifreli bir socks5-proxy aracı ve uzun süredir de başarıyla kullanılıyor.
Shadowsocks’un temel avantajları:
- Sunucuyu kolayca ayarlayabilirsiniz (yapılandırma json formatında 5 satırlık bir dosyadan ibaret)
- Hemen hemen tüm NAT ve kurumsal güvenlik duvarlarından geçer (yakın zamana kadar GFW’yi bile geçebiliyordu, şimdi ise sadece karmaşıklaştırma(Obfuscator) ile geçebiliyor)
- Tek tek programlar düzeyinde erişimi kolayca yapılandırabilirsiniz. Proxifier ile tek tek programların/tek tek sitelerin erişimini çok esnek bir şekilde yapılandırabilirsiniz
- IOS ve Android’de hız kısıtlaması yaşanmaz mobilde erişim engellerine asla takılmaz
Dezavantajları
- Kullanıcı yönetimi yok. Aslında tüm kullanıcılar tek bir yapılandırma, tek bir bağlantı noktası ve tek bir şifre ile bağlanır.
- Dokümantasyon Çinliler tarafından, Çince ve İngilizce yazılmıştır ama birçok eksik nokta ve çelişki içerir, ne yaptığınızı anlamıyorsanız AI kullanın
- Resmi denetimden geçmemiştir, çünkü kod aşırı basit topluluk düzgünce kodu incelemiş ancak resmi olarak denetimden geçmemiş her an bir zafiyet çıkabilir veya farklı aksiyonlar ile karşılaşabilirsiniz bunu bilin.
Bu içeriğin önemi nedir?
Makaleden sadece sunucuyu nasıl kuracağınızı ve istemciyi nasıl bağlayacağınızı öğrenmeyeceksiniz, aynı zamanda trafiği gizlemeyi ve başta CloudFlare CDN üzerinden yönlendirmeyi de göstereceğim. Böylece DPI ve kurumsal güvenlik duvarlarında, HTTPS üzerinden gittiğiniz rota erişimin sağlandığı bir web sitesi olarak gözükecek.
Peki bunun amacı nedir, neden böyle bir şey yapma ihtiyacı duyduk?
Çünkü karşılaştırma/ortadaki adam saldırısına karşı önlem almamız gerekiyor aynı zamanda saçma sapan fişlemelerden de kurtulacaksınız, korelasyon içerisinde gözle bakıldığında trafik bir noktadan başka bir noktaya sürekli olarak aktığı için bağlantıyı inceleyen kişi durumu anında fark eder tüm trafik bir adrese gider ve başka bir adresten geri gelir.
Bizde burada devreye girerek bağlanılan siteyi şuan anlatacağım yöntemle cloudflare ile değiştireceğiz, böylelikle trafiğin aktığı uç sunucu bilgisini açık etmemiş olacağız ve burada temelde websocketi kullanacağız çünkü Cloudflare CDN, 2014 yılından beri websocket trafiğini ücretsiz olarak proxy ediyor trafik Cloudflare CDN üzerinden doğrudan geçer. Cloudfare IP adresleri erişilebilir durumdaysa, bu yöntemi güvenle kullanabilirsiniz engellenme şansıda olmaz.
En basit haliyle sunucu kurulumu
İstediğiniz herhangi bir sağlayıcıdan bir adet sunucu edinin, aldığınız bu sunucu Türkiye’den bile olsa dönüş trafiğinin yurtdışından geldiği firmaları seçin Türkiye’de özellikle hem iç hem dış sansürleniyor güvenlik anlamında kimseye bir faydası yok ama her ne hikmetse birileri bir şeyleri görmesin diye DPI aktif, normal şartlarda daha hayırlı amaçlar için kullanılır neyse uzatmanın anlamı yok.
Gerekenler
- 1 Adet domain(en ucuzunu al geç veya ücretsiz olanları kullan)
- 1 Adet sunucu(en ucuzunu seç)
Aldığınız domain’i yani alan adını CloudFlare’ye ekleyin paket alınmasına gerek yok ücretsiz olanı yeterde artar bile.
Firma tercihi olarak nereyi seçerseniz seçin ama fikrimi sorarsanız vultr veya digitalocean seçin(abuse ile uğraşmazsınız). İşletim sistemi ubuntu olmalı sistem özelliklerinin zerre önemi yok en ucuzunu seçip geçin.
apt update
apt upgrade
apt install shadowsocks-libevPlaintextKurulum tamamlandıktan hemen sonra /etc/shadowsocks-libev/config.json dosyasını aşağıdaki gibi düzenleyin ve kaydedin. Dinlediği portlar gördüğünüz gibi local çünkü TLS sonlandırmasını nginx üzerinden yapıcaz. Merak etmeyin herkes kafasına göre bağlanamaz boşuna parola koymuyoruz.
{
"server": ["::1", "127.0.0.1"],
"server_port": 8080,
"password": "<RANDOM_PASSWORD>",
"timeout": 300,
"method": "xchacha20-ietf-poly1305",
"no_delay": true,
"fast_open": true,
"reuse_port": true,
"workers": 1,
"plugin": "v2ray-plugin",
"nameserver": "1.1.1.1",
"plugin_opts": "server;loglevel=none",
"mode": "tcp_and_udp"
}PlaintextBurada dikkat edilmesi gereken nokta plugin_opts TLS işleme web sunucusunda gerçekleştirileceği için, her birine kendi path parametresini atayarak farklı kullanıcıları buradan yönlendirebilirsiniz.
"plugin_opts": "server;tls;fast-open;path=<CUSTOM_PATH>;host=<DOMAIN_NAME>;cert=/etc/ssl/certificate.pem;key=/etc/ssl/certificate.key;loglevel=none",PlaintextÖnemli noktalar
host=cloudflare’de kayıtlı olan alan adının konumlandırılacağı yerpath=pluginin v2ray’e yönlendireceği konum, random bir şey yapabilirsiniz zerre önemi yok.cert=kullanılacak olan sertifikakey=kullanılacak olan private key
Buradaki cert ve key’i cloudflare üzerinden alacağız çünkü sunucu doğrudan cloudflare üzerinden erişecek yani tarayıcıda geçerli bir SSL/TLS ihtiyacımız yok gerekte yok, 90 gün ücretsiz SSL’i yenilemekle boştan yere uğraşmaya gerek yok boş iş bunlar.
SSL/TLS ayarını aşağıdaki görselde gördüğünüz gibi “Full (strict)” olarak ayarlayın.

Origin Server için Sertifika oluşturun

“Create Certificate” seçeneğini seçin, Private key type olarak “ECC” seçin geri kalanına dokunmayın 15 yıllık oluştursun. Size pem olarak iki çıktı verecek onları kayıt edin. Nginx’de kullanılacak bu aşağı da yapılandırmayı bıraktım.
- Bot Fight Mode -> Off
- Browser Integrity Check -> Off
Önce bunları kapalı olacak, ayrıca diğer bütün güvenlik ayarlarını da kapatın zerre önemi yok ve kullanmayacağız bizim amacımız sadece trafiği kaçırmak.
v2ray eklentisi ile https obfuscate
Trafiği gizleyecek olan eklentimizi kurmaya geldi sıra umarım sunucuyu amd64 olarak aldınız, bunu belirtmedim şimdi öğreniyorsunuz ama arm falan seçmeyin.
cd /usr/local/bin
wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.2/v2ray-plugin-linux-amd64-v1.3.2.tar.gz
tar xf v2ray-plugin-linux-amd64-v1.3.2.tar.gz
mv v2ray-plugin_linux_amd64 v2ray-pluginPlaintext/usr/local/bin klasöründe v2ray-plugin dosyası olacak sakın ola ellemeyin orada dursun.
nginx kurulumu
Dümdüz apt install nginx komutu ile kurup geçin, 443 ve 80 portunun kullanılmadığına ve nginx’in çalıştığına systemctl status nginx ile emin olun. Bu sadece bizim kılıf ip ye gelen artık kim olursa ne göreceğini belirleyeceksiniz aynı zamanda da bir path üzerinden bizim trafik dönecek.
/etc/nginx/sites-available/default dosyasını editörde açın, içeriği silin sahte olarak ne gösterecekseniz onu ekleyin statik bir sayfa veya paravan bir blog bile olabilir hayal gücünüze kalmış hatta bir yere yönlendirebilirsiniz.
server
{
listen 443 ssl http2 fastopen=256;
listen [::]:443 ssl http2 fastopen=256;
server_name <DOMAIN_NAME>;
ssl_certificate /etc/ssl/<DOMAIN_NAME>.pem;
ssl_certificate_key /etc/ssl/<DOMAIN_NAME>.key;
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 4h;
ssl_session_tickets on;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ecdh_curve secp384r1;
add_header Strict-Transport-Security 'max-age=63072000; includeSubdomains; preload' always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Xss-Protection "1; mode=block" always;
resolver localhost valid=300s;
ssl_buffer_size 8k;
ssl_prefer_server_ciphers off;
# proxy to youtube
location /
{
proxy_redirect off;
proxy_pass https://youtube.com/;
}
# websocket for v2ray
location /<CUSTOM_PATH>
{
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_pass http://localhost:8080/;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}PlaintextNginx’i yeniden başlatın ve artık hazırsınız, paravan site ve buna bağlı olan trafik yönlendirme aktif.
Performans İyileştirme
Yüksek trafiği işlemek amacıyla ki bu 1ge ve üstü olabilir aşşağıdaki adımları yapmayı ihmal etmeyin.
limit ayarlamaları
/etc/security/limits.conf
* soft nofile 51200
* hard nofile 51200Plaintextkernel ayarlamaları
/etc/sysctl.conf
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hyblaPlaintextkullanabileceğiniz clientler
Windows ve Linux’de client kullanımlarında yukarıda kullandığımız v2ray eklentilerinin de ayrıca indirilip kurulması gerekmektedir, ios ve android clientlerinde “websocket-tls” modunun seçilmesi gerekmektedir.
