Please Donate to Bitcoin Address : [[address]]

Donation of [[value]] BTC Received. Thank You.
[[error]]

Sansür Ülkeleri İçin Bir Linux Sunucuya Tor Bridge Kurmak

Merhaba,

Normalde daha fazla Türkçe teknik blog yazısı yazmayacaktım kimse okumuyor diye. Ancak ülkenin şartlarını her birimiz biliyoruz. VPN firmalarının websitelerine kadar sansürlenen bir internetle başbaşa kalmış durumdayız. Şunu söylemek istiyorum ki, gayet sıradan ve tek özelliği sunucu yönetmekten anlamak olan basit bir vatandaş olarak edindiğim Tor Network bilgisini ve her birinizin herhangi bir VPS kiralayarak kurup kullanabileceği bir Tor Bridge, sunucu ve istemci tarafında nasıl yapılandırılır bunu blog yazısında anlatacağım.  İstiyorum ki bu sansürlerden kralı gelse etkilenmesin hiç kimse. Bakın beni tanıyan bilir ben “politik” olmayı sevmem. Ancak buradan şunu anlayın; bu blog yazısı ile bu “sansürcü” zihniyete yekten tepkimi koyuyorum. Varsa içinizde bu tip zihniyetler, allah aşkına sansürleyin beni. Yiyosa 😉

Geçiyorum teknik kısıma, kemerleri falan bağlayın. Hazır olun çünkü kızdım ve ağır yazdım. Saat şu an 02:20 AM. Ona göre.

Ön Hazırlık – Tor Bridge Nedir?

Beni uğraştırmayın, okuyun : https://www.torproject.org/docs/bridges#Understanding

Şu bilgiyi not olarak düşeyim, Tor’u engellediğini “sananlar”, çok kullanılan Tor Bridge’lerinin IP’lerini birer birer alıp sansürlüyorlar. Bizim de amacımız yeni kiralanmış herhangi bir VPS’e yepisyeni bir Tor Bridge kurmak. Kısaca sansür yiyene kadar bu Tor Bridge’leri üzerinden Tor Ağına dahil olabilmeyi başarmak. Sansür yemenizi nasıl geciktirebileceğinizi de anlatacağım.

Ben bütün aşağıdaki teknik işlemleri CentOS 7 GNU/Linux dağıtımı üzerinde gerçekleştirdim. Debian/Ubuntu vs. için daha iyi dokümanlar var araştırırsanız.

Başlamadan önce herhangi bir public erişilebilir IPv4 (veya IPv6 ancak ben IPv4 için anlattım) sunucu kiralamanız gerekiyor, başka bir şeye gerek yok.

Tor ve obfs4proxy Kurulumu

Normal bir sistem yöneticisi olduğunuzu farzedemiyorum çünkü halka hitap etmem gerekiyor konu gereği. Dolayısıyla sunucunuzda ilk önce firewalld servisinin çalıştığına emin olun ve belli başlı portlar hariç diğer portlar dışarıya kapalı olsun. Firewall ayarlarını konu içersinde anlatacağım.

Tor kurmak için aşağıdaki şekilde epel deposunu kurup, tor’u sunucuya kurun :

# yum install epel-release ; yum update
# yum install tor -y

Kurulum bittikten sonra, malesef obfs4proxy’nin bir RPM paketi olmadığından, sunucuya go-lang kurup, obfs4proxy binary’sini sunucu sisteme almamız gerekecek.
Aşağıdaki adımları birebir takip edin :

# yum install golang git -y
# go version
go version go1.6.3 linux/amd64
# export GOPATH=`mktemp -d`
# go get git.torproject.org/pluggable-transports/obfs4.git/obfs4proxy
# cp $GOPATH/bin/obfs4proxy /usr/local/bin/

Bütün kurulum işlemleri bu kadar.

Gelelim yapılandırmaya.

Tor ve obfs4proxy’nin Tor Bridge Olarak Yapılandırılması

Tek bir yapılandırma dosyası var /etc/tor/torrc, dosyayı açın ve aşağıdaki gibi Tor Bridge’i yapılandırın :

RunAsDaemon 1
ORPort 443
BridgeRelay 1
ControlPort 9051
HashedControlPassword 16:7838ED53E0A003F66098A977910E3786F6549E541540FDD85266385875
ServerTransportPlugin obfs4 exec /usr/local/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:4443
ExtORPort auto
Exitpolicy reject *:*
#PublishServerDescriptor 0

#Set your bridge nickname and contact info
ContactInfo aydintd@gmail.com
Nickname aydintd
Log notice file /var/log/tor/notices.log

Bu ayarları tek tek açıklamayacağım, çoğu gayet açık zaten isminden ancak bazıları hakkında bilgi vermekte yarar var :

ORPort : 443 , Bridge’nizin 443. portta çalışacağınızı söylüyorsunuz. 443 tercih ediliyor çünkü sansürcü zihniyet 443. portu blocklamaktan çekiniyor. Çünkü 443 HTTPS default portu 🙂 9001 vs. gibi portlar da yaygın, ancak 9001 görüp ISP tarafından blocklanabilirsiniz. Bu yüzden çok sık kullanılan (ne bileyim https olur, ftp olur) portlardan birini Tor Bridge servisi olarak network interface’ine bağlamanız daha güvenilir bir yöntem.
ControlPort : Tor Control Portu, bu port normalde dışarıya açılmaz ve tor süreçlerini yönetebileceğiniz bir CLI araç vs amacıyla bind ediyorsunuz, konudan bağımsız ancak bir güvenlik önlemi olarak sunucuda aşağıdaki durumdan dolayı tanımlamak durumundayız. Optional ama size kalmış, ben obsesif davrandım.
HashedControlPassword : Bu hash, control portu için bir parola üretip parolasız girişleri engellemek için. Bu hash’i şu komut ile üretip, çıktısını ayar dosyasında ilgili yerde tanımlamanız yeterli : tor --hash-password s3cr3tp4ssw0rd s3cr3tp4ssw0rd parolası kullanarak 127.0.0.1:9051 ‘de çalışan Tor servisine bağlanabilirsiniz demek oluyor yani. Öntanımlı olarak parolasız girişli geliyor. Güvenlik önlemi yani.
PublishServerDescriptor : Bu ayar’ın 0 olması, Tor Bridge sunan public sitelere, sizin bridge’nizin eklenmemesini istediğiniz anlamına geliyor. Ben öntanımlı kapalı tuttum her yerde indexlensin ve herkes kullanabilsin diye, ancak ISP’lerin atlas.torproject.org vs. gibi yerlerden bu bridge tanımlarını alıp engellediğini unutmayın. Eğer indexlenmesine izin vermezseniz ISP’lerin VPS’inizin IP’sini blocklama ihtimalini daha da çok düşürürsünüz.

Sıkıldım, diğer ayarlar için okuyun işte : https://www.torproject.org/docs/tor-manual.html.en

Yukarıdaki linkten daha açık nasıl anlatabilirim bilmiyorum zaten. Neyse.

Bu şekilde ayarları yaptıktan sonra dosyayı kaydedip çıkın.

Son olarak sunucunun güvenlik duvarında dışarı açık olması gereken ORPort ve ServerTransportListenAddr’de tanımladığınız portlara izin verin, benim örneğimde bunlar :

# firewall-cmd --zone=public --permanent --add-port=4443/tcp
# firewall-cmd --zone=public --permanent --add-port=443/tcp
# firewall-cmd --reload

Tor servisini başlatın (ya da yeniden başlatın)

# systemctl restart tor

/var/log/tor/notice.log da aşağıdakine benzer bir çıktı görmeniz gerekiyor :

Jan 20 02:03:03.000 [notice] Tor 0.2.8.12 opening log file.
Jan 20 02:03:03.686 [warn] OpenSSL version from headers does not match the version we're running with. If you get weird crashes, that might be why. (Compiled with 1000105f: OpenSSL 1.0.1e 11 Feb 2013; running with 1000105f: OpenSSL 1.0.1e-fips 11 Feb 2013).
Jan 20 02:03:03.726 [notice] Tor v0.2.8.12 running on Linux with Libevent 2.0.21-stable, OpenSSL 1.0.1e-fips and Zlib 1.2.7.
Jan 20 02:03:03.727 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Jan 20 02:03:03.727 [notice] Read configuration file "/usr/share/tor/defaults-torrc".
Jan 20 02:03:03.727 [notice] Read configuration file "/etc/tor/torrc".
Jan 20 02:03:03.731 [notice] Based on detected system memory, MaxMemInQueues is set to 744 MB. You can override this by setting MaxMemInQueues by hand.
Jan 20 02:03:03.732 [notice] Opening Socks listener on 127.0.0.1:9050
Jan 20 02:03:03.732 [notice] Opening Control listener on 127.0.0.1:9051
Jan 20 02:03:03.732 [notice] Opening OR listener on 0.0.0.0:443
Jan 20 02:03:03.732 [notice] Opening Extended OR listener on 127.0.0.1:0
Jan 20 02:03:03.732 [notice] Extended OR listener listening on port 37342.
Jan 20 02:03:03.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Jan 20 02:03:03.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Jan 20 02:03:04.000 [notice] Configured to measure statistics. Look for the *-stats files that will first be written to the data directory in 24 hours from now.
Jan 20 02:03:04.000 [warn] Fixing permissions on directory /var/lib/tor
Jan 20 02:03:04.000 [notice] We were built to run on a 64-bit CPU, with OpenSSL 1.0.1 or later, but with a version of OpenSSL that apparently lacks accelerated support for the NIST P-224 and P-256 groups. Building openssl with such support (using the enable-ec_nistp_64_gcc_128 option when configuring it) would make ECDH much faster.
Jan 20 02:03:04.000 [notice] Your Tor server's identity key fingerprint is 'aydintd BD4BDF95BB083BE330B17935DA7C7D9FD4C0E5A2'
Jan 20 02:03:04.000 [notice] Your Tor bridge's hashed identity key fingerprint is 'aydintd DF45BB0E8E28844B098FCFA675FAAEA94353E872'
Jan 20 02:03:04.000 [notice] Bootstrapped 0%: Starting
Jan 20 02:03:08.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Jan 20 02:03:08.000 [notice] Opening Control listener on /run/tor/control
Jan 20 02:03:08.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
Jan 20 02:03:09.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Jan 20 02:03:09.000 [notice] Registered server transport 'obfs4' at '[::]:4443'
Jan 20 02:03:10.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Jan 20 02:03:10.000 [notice] Bootstrapped 100%: Done
Jan 20 02:03:10.000 [notice] Now checking whether ORPort 46.101.137.210:443 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Jan 20 02:03:10.000 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Jan 20 02:03:10.000 [notice] Performing bandwidth self-test...done.

Loglardan da görülebileceği gibi son 3 satır önemli. Sizin sunucunuz için de aynı satırları görebiliyor olmanız gerekli. Yoksa bir şeyler yanlış gidiyor demektir. Tekrar gözden geçirin yaptıklarınızı.

Son olarak da client’lar için sunucumuza kurduğumuz bridge tanımını nerden alacağız, bunun yanıtına gelecek olursak:

Önce Tor Bridge’in fingerprint değerini ya yukarıdaki loglardan ya da /var/lib/tor/fingerprintdosyasından alın :

aydintd BD4BDF95BB083BE330B17935DA7C7D9FD4C0E5A2

Daha sonra aşağıdaki dosya içeriğini alın ve yukarıdaki fingerprint bilgisi ve sunucu IP ve ORPort olarak ayarladığımız port numarasını aşağıdaki gibi bir formatta birleştirin :

# cat /var/lib/tor/pt_state/obfs4_bridgeline.txt

obfs4 IP ADDRESS:PORT FINGERPRINT cert=1lyG4Rkuk0deYXjBO9TGS/vE5SceYm4wYb4num+l/Ib3EUX3Tma/lY8jov2YUOf9toAJXw iat-mode=0

Benim durumumda son durum şöyle bir satır :

obfs4 46.101.137.210:443 BD4BDF95BB083BE330B17935DA7C7D9FD4C0E5A2 cert=1lyG4Rkuk0deYXjBO9TGS/vE5SceYm4wYb4num+l/Ib3EUX3Tma/lY8jov2YUOf9toAJXw iat-mode=0

İşte son olarak elde ettiğimiz bu ayarı, Tor Browser’ımıza obfs4 bridge’i olarak manuel yapılandırma yaparak eklediğimizde, Tor network’üne bu kurduğumuz VPS üzerinden çıkabileceğiz.

Tor Browser’da (İstemcide) Yapılması Gerekenler

Tor Browser’ı makinenize indirin önce : https://www.torproject.org/download/download (Platformunuza göre ilgili binary/paket vs seçin)

Daha sonra Tor Browser’ı başlatın ve Open Settings’e tıklayın.

Burada bizim gibi sansürlü ülkeler için bir seçenek var. Configure seçeneğine tıklayın. Daha sonraki ekranda ‘Yes’ seçeneği seçip, Next’e tıklayın.
Bu ekranda da yukarıda sunucudan çıkardığımız bridge relay ayarını tek satır olacak şekilde Enter Custom Bridges formundaki kısma ekleyin.
obfs4 46.101.137.210:443 BD4BDF95BB083BE330B17935DA7C7D9FD4C0E5A2 cert=1lyG4Rkuk0deYXjBO9TGS/vE5SceYm4wYb4num+l/Ib3EUX3Tma/lY8jov2YUOf9toAJXw iat-mode=0
Next dedikten sonra, local proxy’niz varsa ‘Yes’ (proxy yapılandırcaksınız tabi bi de) yoksa ‘No’ seçip devam edin ve Connect’e tıklayın.

Tor browser sorunsuz bir şekilde VPS’iniz üzerinden bridge relayinizi kullanarak Tor networküne dahil olmuş oldu.
Test for Network Settings’e açılış ekranında tıklayıp, Tor soğanından This Browser : Bridge obfs4 (Germany) vs bir tanım görmeniz gerekiyor. (VPS’i nereden almışsanız orası)

Daha detaylı istemci yapılandırması şurada da anlatılmış çok güzel : https://anonimmedya.com/tor-erisim-engeli-kopru

Hepsi bu.

Son olarak şunu demeden edemeyeceğim :

Yaşasın Özgür Yazılım! Yaşasın Özgür İnternet!

Bir cevap yazın

I'm not a freaking robot : Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

20 Ocak 2017

Posted In: Sistem, Teknik

Etiketler:, , , , ,

Leave a Comment