Tails

Tails, açılımı The Amnesic Incognito Live System olan açık kaynak ve özgür yazılım işletim sistemidir. Tails açılımındaki kavramların neler olduğunu da kısaca bir incelemek sistemin neyi ifade ettiğini anlayabilmek açısından önemlidir. Kısaca:

amnesia: forgetfulness; loss of long-term memory.
Türkçesi hafıza kaybıdır. Tails’ta vurgulanmak istenen ise uzun dönemli bir hafıza kaybı olduğudur. Yani, kullandığınız bilgisayarlarda herhangi bir iz bırakmamasıdır.

incognito: (of a person) having one's true identity concealed.
Türkçesi kim olduğunu belli etmeyendir. Tails’ta vurgulanmak istenen ise bir kişinin gerçek kimliğinin gizlenmesidir. Yani, anonimlik.

Diğer bir ifadeyle Tails, canlı bir işletim sistemi olup bireyin gizliliğini ve anonimliğini, bunu aşmak isteyen saldırganlardan korumayı hedefler. Interneti herhangi bir sansüre takılmadan, gittiğiniz her yerde ve her bilgisayarda ve arkasında iz bırakmadan kullanmanızı sağlar.

Tails, tam bir işletim sistemi olup, DVD, USB, ve SD kartlara kurulabilen, bilgisayarlardaki işletim sisteminden bağımsız olarak kullanılması için tasarlanmıştır. Tails, özgür yazılımdır ve Debian GNU/Linux tabanlıdır.

Tails’ın daha iyi anlaşılabilmesi için çevrimiçi anonimliğin ve sansürlerden kurtulmanın neden önemli olduğunu tekrar ifade etmek gerekmektedir. Öncelikle, birey neden anonimliğe ihtiyaç duyar? Türkiye gibi devam etmekte olan baskıcı bir sistem içerisinde kendini özgürce ifade edecek bir alan bulunmamaktadır. Bunun nedeni baskı kelimesinin anlamında yatmaktadır. Çünkü, baskı muhalefetin kökünü kazımayı amaçlar ve bu yolda da kendine her şeyi mübah görecek sistematik bir şeydir. Siyasi ve psikolojik araçları kullanır ve kitleleri ifade özgürlüğünün dışına iter. Diğer taraftan, birey anaysal hakkı olan gizliliğinin bu baskı altında eridiğini ve kendisini birey yapan şeylerle çevrili yapay bir ada oluşturan gizliliğinin ortadan kalktığını görecektir. Bu yüzden de kendisini özgürce ifade edebilmek için anonimliği tercih edecektir. Ayrıca, baskı araçlardan bir tanesi de sansürdür. Sansür, her türlü yayının, sinema ve tiyatro eserinin hükûmetçe önceden denetlenmesi işi, sıkı denetim anlamına gelmektedir. Baskı için denetim her hükûmetin en sık başvurduğu yollardan biridir. Kendi çıkarları dışında kalan veya kendini eleştiren ve muhalefet eden her şeyin ifade özgürlüğünün dışına itilmesi için denetler ve sansürler.

Tails gibi işletim sistemleri ise içerdiği anonimlik araçları ile bireylerin kendilerini baskıcı yapılarda hiçbir sansür engeline takılmadan özgürce ifade edebilmelerine olanak sağlamaktadır. Tails’ın en önemli anonimlik aracı Tor’dur.

  • Tails’ın içerdiği tüm yazılımlar Internete Tor üzerinden bağlanır.
  • Eğer, bir uygulama Internete doğrudan bağlanmaya kalkarsa, bağlantı güvenlik sebebiyle otomatik olarak engellenir.

Tor (eski adıyla onion router), ilk olarak Amerikan Donanması ile beraber, devlet içi iletişimleri korumak için geliştirilmiştir. Günümüzde ise herkesin kullanabildiği (aktivist, ordu, gazeteci, kanun uygulayıcı vs.), sanal tünellerden oluşan, kişi ve grupların Internet üzerindeki gizliliklerini ve güvenliklerini sağlayan, geliştiren açık kaynak ve özgür yazlım olan bir anonimlik ağıdır.

Tor kullanarak:

  • Yerinizi belli etmeden anonim olarak çevrimiçi olabilirsiniz.
  • Sansürlenen içereklere herhangi bir engele takılmadan erişebilirsiniz.
  • Tor ağını engelleyen yapılardan köprü (bridge) kullanarak korunabilirsiniz.

Tails, özel olarak tasarlanmış olup kullanıldığı bilgisayarın harddiskini ve varsa takas (swap) alanlarını kullanmamak üzere çalışmaktadır. Tails’ın bir bilgisayar üzerinde kullandığı tek şey bellek (ram)’dir. Bilgisayarı kapattığınızda ise Tails otomatik olarak bellekteki tüm verileri geri getirilemeyecek şekilde siler ve arkasında herhangi bir iz bırakmaz. Bu yüzden, yazının başında bahsedilen “amnesic” kavramı Tails kavramlarından bir tanesidir. Fakat, Tails sihirli bir araç değildir ve çevrimiçi anonimlik gibi çok karmaşık problemler için %100 bir çözüm sunamaz. Bunun çeşitli sebepleri vardır:

  • Tor çıkış nodu ile bağlanmak istediğiniz websitesi arasındaki iletişim dinlenebilir. Bunun için HTTPS-Everywhere kullanmak veya HTTP sitelerine giriş yapmamak gerekmektedir.
  • Internet servis sağlayıları Tor kullandığını görmektedir. Bunun için köprü tercih edilebilir.
  • Bir MitM (man-in-the-middle) saldırısı kurbanı olunabilir.
  • Hem Tor ağına giden hem de Tor ağından çıkan trafiği görebilmek için tasarlanmış sistemlerde her yapılan görülebilir. İSS’nin de böyle bir çalışması olabilir.
  • Tails, belgelerini otomatik olarak şifrelemez.
  • Tails, belgelerin metadatalarını otomatik olarak silmez.
  • Tails, genel bir gözetim mekanizmasından korumaz. Örneğin, bağlanılan ağdaki tüm bilgisayarlar izleniyorsa bu bir koruma sağlamayacaktır.
  • Tails, kötü ve basit parolalarınızı güvenli hale getirmez.

Son bir kez daha belirtmek gerekirse, anonimlik ve güvenlik sadece bir araca bırakmak bireyi saldırganlardan korumayacaktır. Bu tarz araçları kullanırken ne amaçla kullandığının bilincinde olmak gerekmektedir. Çünkü, günümüz Interneti çoklu sekmelerden, her adımı şifrelenmiş ve anonimleştirilmiş yollardan akmamaktadır. Böyle bir yapı içerisinde tamamen anonim kalabilmek mümkün değildir.

Tails’i iki şekilde elde edilebilir.

  1. Doğrudan indirmek için buraya tıklayın.
  2. Torrent üzerinden indirmek için buraya tıklayın.

İmaj dosyasını çektikten sonraki en önemli adım imaj dosyasını doğrulamak olacaktır. Bu neden önemli? Eğer, bir MitM saldırısı varsa ve birey kaynak yerine aradaki saldırgandan dosyayı çektiyse, bu dosya değiştirilmiş olabilir ve kullandığında anonimlik tamamen tehlike altında olacaktır.

İlk olarak imaj dosyasının SHA256 çıktısına bakılmalıdır:
339c8712768c831e59c4b1523002b83ccb98a4fe62f6a221fee3a15e779ca65d

GNU/Linux
kame $ sha256sum tails-i386-1.4.iso

Windows
Raymond’s MD5 & SHA Checksum Utility uygulamasını indirin ve kurun. Browse diyerek tails-i386-1.4.iso dosyasını açıp yukarıdaki SHA256 çıktısı ile karşılaştırabilirsiniz.
windows-checksum-utility

İndirmiş olunan Tails imajının en önemli doğrulama adımı olan Tails imzasının kullanılmasıdır. Bütün Tails imajları Tails’e ait OpenPGP imzası ile imzalanmıştır. İmzayı indirmek için lütfen buraya tıklayın. İmza ile doğrulamak ise:

GNU/Linux
kame $ gpg --keyid-format long --verify tails-i386-1.4.iso.sig tails-i386-1.4.iso

gpg: Signature made Sun 08 Feb 2015 08:17:03 PM UTC
gpg: using RSA key 3C83DCB52F699C56
gpg: Good signature from "Tails developers (offline long-term identity key) " [unknown]
Primary key fingerprint: A490 D0F4 D311 A415 3E2B B7CA DBB8 02B2 58AC D84F
Subkey fingerprint: BA2C 222F 44AC 00ED 9899 3893 98FE C6BC 752A 3DB6

Eğer herhangi bir hata alınırsa, imajı silinmeli ve tekrar indirilmelidir.

Windows

  1. Öncelikle Gpg4win uygulamasını indirin ve kurun.
  2. Daha sonra Tails signin anahtarını indirin ve Gpg4win’e aktarın.
  3. Son olarak, indirmiş olduğunuz Tails imzası ve Tails imajını doğrulayın.

Doğrulama işlemini başarıyla tamamlandıysa artık imajı yazdırmaya geçilebilir. DVD, USB bellek veya SD kartlardan bir tanesini seçilebilir. DVD, hem ucuz hem de ele geçirilse bile virüs bulaşmayacağı ve üzerine tekrar bir şey yazılamayacağı için güvenli bir seçenektir. Fakat, hem taşınması hem de her bilgisayarda DVD sürücüsü bulunmayabileceği için bireyin insiyatifine kalmıştır. USB bellek ve SD kartlar ise taşınma ve kullanım kolaylığı açısından iyi bir esneklik sunabilmektedir fakat, saldırgan fiziksel olarak USB belleğe veya SD karta erişebilir ve içeriğini manipüle (virüs) edebilir.

GNU/Linux
USB belleğini takın ve bağlandıysa (mount) lütfen bağlantıyı kaldırın (umount). Kurulum yapacağınız bağlantı noktası çok önemli olduğu için dikkat edin yoksa kazara harddiskinizi silebilirsiniz. /dev/sd[x] USB belleğinizin bağlandığı yolu göstermektedir. Nümerik bir şey olmayacaktır; /dev/sdc1 gibi. Root olun ve:

root $ dd bs=4M if=tails-i386-1.4.iso of=/dev/sdx && sync

Bu işlem biraz vakit alacaktır. Başarıyla tamamlandığına dair çıktı ise aşağıdaki gibi olacaktır:

231+1 records in
231+1 records out
970584064 bytes transferred in 207.309208 secs (4681818 bytes/sec)

Windows
Windows’ta USB belleğe yazdırmak için Tails’ın yönergelerine buradan bakabilirsiniz.

Artık Tails kuruldu ve kullanıma hazır. Tek yapılması gereken, takılı olduğu bilgisayarı USB bellekten başlatmaktır. Bunun için taktığınız bilgisayarları yeniden başlatıp, açılış ekranında BIOS’a girerek USB belleği seçebilirsiniz.

Tails’ı USB bellekten başlattığımızda ilk olarak aşağıdaki ekran gelecektir. Enter’a basak devam edebilirsiniz. Eğer, basmazsanız 3 saniye içerisinde kendisi işletim sistemini başlatacaktır.
boot-menu-with-options

Başlatma bittiğinde karşınızda aşağıdaki karşılama ekran gelecektir. Bu karşılama ekranında alt satırda dil, ülke ve klavye seçeneklerini Türkçe olarak (veya hangi dilde kullanmak isterseniz) ayarlayabilirsiniz.
tails-greeter-welcome-to-tails

More options kutucuğunda lütfen Yes‘i seçin ve Login tuşuna basın.
3

Yukarıda gördüğünüz ekranda ilk olarak kendinize bir parola belirleyebilirsiniz. Güvenlik için parola kullanmamanızı tavsiye ederim. Yönetici hakları ile önemli ayarları istemeden değiştirebilirsiniz. Bir altta gördüğünüz Windows camouflage ise masaüstünün Windows 8’e benzemesini sağlayacaktır. Bu da kamuya açık ortamlarda dikkat çekmeden Tails kullanmanızı sağlar. Diğer seçenekleri varsayılan şekliyle olduğu gibi bırakabilirsiniz.

Screenshot from 2015-06-06 17:30:29

Internet bağlantınız Tor ağı üzerinden akmaya hazır olduğunda sağ üst köşede çıkan uyarıdaki gibi bir uyarı alacaksınız. Artık güvenli bir şekilde Tails üzerinden Internete girebiliriz. Windows tuşuna bastığınızda başlat menüsü açılacaktır. Bu menü:

5

şeklindedir. Dikkat ettiğiniz üzere hem Tor Browser hem de Unsafe Web Browser mevcuttur. Unsafe Web Browser, Tor ağını kullanmadan, doğrudan Internet bağlantınızı kullanarak websitelerine girmenizi sağlar. Bu ayrımı unutmamanız yararınıza olacaktır. Tor Browser’ı açtığınızda:

Screenshot from 2015-06-06 16:12:19

herhangi bir sansüre takılmadan, anonim olarak websitelerini görünteyebilirsiniz. Tails, Libre Office, Gimp ve Inkscape gibi grafik uygulamaları, Audacity ve Traverso gibi ses kayıt ve düzenleme uygulamaları, anlık mesaj uygulaması Pidgin‘i (OTR ayarlı), e-posta için Claws Mail‘ı, bir başka anonim ağ olan I2P‘yi, kablosuz ağlar için Aircrack-ng uygulaması, LUKS gibi disk şifreleme uygulaması ve birçok başka uygulamayı da içermektedir.

Tails üzerinden herhangi bir bulut üzerine veya herhangi bir yere dosya yüklemesi/göndermesi yapacaksanız, dosyaların Tor browser klasörü içerisinde yer alması gerekmektedir. Diğer türlü Tails dosyaların gönderilmesini engelleyecektir. Dosya gönderirken dikkat edilmesi gereken bir başka nokta da metadatalarının temizlenmesidir. Metadatalar dosyalarla ilgili eşsiz veriler saklar ve bu veriler dosyanın nerede, ne zaman, kimin tarafından oluşturulduğuna dair önemli bilgiler tutabilir. Bu bilgileri Tails’ta yer alan MAT uygulaması ile silebilirsiniz.

Screenshot from 2015-06-06 16:30:17

Add ile metadalarını silmek istediğiniz dosyaları ekleyebilir be Scourge ile silebilirsiniz.

Tails kullanırken dikkat etmeniz birkaç nokta aşağıdadır:

  • Tails kullanırken gerçek kimliğinize ait hesaplara (Facebook, Gmail gibi) giriş yapmamayı tercih edin.
  • Claws Mail, Internete Tor ağı üzerinden bağlanacağı için Gmail gibi hesaplar girişi engelleyebilir ve size şifre sıfırlama gibi mesajlar gönderebilir. Gmail, Hotmail, Yahoo gibi hesaplar yerine Tor ağı dostu e-posta servisleri tercih edilmelidir.
  • Kesinlikle Flash kurulmamalıdır.
  • Adblock gibi eklentiler reklamları engellerken IP bilgisi sızdırabilir.
  • Javascript kurulmamalı ve aktif edilmemelidir.

Tails kurulum ve kullanım olarak gayet kolay bir canlı işletim sistemidir. Öte yandan, bu yazı Tails’ın içerdiği tüm uygulamalara ait detaylar içeren bir yazı değildir. Birey, Tails’ı kendi bilgisayarında deneyerek içerdiği uygulamaların neler olduğunu çok kolay bir şekilde keşfedebilir. İlerleyen süreç içerisinde de bu uygulamalara ait detayları bu yazıda bulabilirsiniz.

Son olarak, Tails, Tor, VPN, Proxy vd. sizlere %100 anonimlik sağlamayacaktır. Bunun bilincinde olmak en az bir anonimlik aracını kullanmayı bilmek kadar önemlidir.

Twister

Twitter sık sık erişeme engelleniyor mu? Twitter hesapları takip mi ediliyor? Twitter’a erişemezsek ne mi olacak? Bu soruların cevaplarını Twister’da bulabiliriz.

Twister; Miguel Freitas tarafından yazılmış ve merkezsizleştirilmiş özgür yazılım olan bir P2P mikroblog platformudur. Platform bağımsızdır. GNU/Linux, Windows, Android ve Mac OS için kurup kullanabilirsiniz. Bittorrent ve Bitcoin benzeri bir yapıda çalışmaktadır. Merkezsizleştirilmiş olması kimsenin erişime engelleyemeyeceği, sansürleyemeyeceği ve ifade özgürlüğünü elinizden alamayacağı anlamına gelmektedir. Bununla birlikte, noktadan noktaya şifreleme kullandığı için iletişim (tüm iletişim değil, özel mesaj) gizlice izlenemez. IP kaydınız tutulmaz. Ayrıca, açık kaynak ve ücretsizdir.

Twister nasıl çalışıyor?
Twister; 3 katmandan oluşan bir ağ yapısına sahiptir. Birinci katmanda kullanıcı hesaplarının oluşturulması ve doğrulanması için Bitcoin protokolü kullanılır. Aslında bu tamamen Bitcoin protokolünün kullanılmasından ziyade blok zincirini ifade eder. Bu da şu demektir; blok zincirleri noter görevi görürler ve oluşturulan kullanıcı adının kime ait olduğu ve hangi anahtar çiftine sahip olduğunu onaylarlar. Twister’da doğrulama ve şifrelemeyi oluşturan nokta burasıdır. İkinci katmanda DHT protokolü bulunmaktadır. DHT, üçüncü katman için istemcilerde kullanıcı kaynakları olarak anahtar/değer ve tracker konumlarını barındırır. Son katmanda ise birbirlerini takip eden kullanıcılar için Bittorrent yapısına dayanan bir bildirim (girdiler, uyarılar, cevaplar vs gibi) sistemi vardır. Daha detaylı bilgiye Miguel Freitas yazdığı makaleden ulaşabilirsiniz.

Kurulum
Kurulum GNU/Linux içindir ve oldukça basittir. Diğer sistemler için lütfen buraya bakın. İlk olarak terminali açalım ve derleme için gerekli paketleri kuralım:

sudo apt-get (pacman -S, emerge -av vs) openssl db boost miniupnpc

Daha sonra Twister çekirdeğini kuralım:

kame ~ $ git clone https://github.com/miguelfreitas/twister-core
kame ~ $ cd twister-core
kame ~ $ ./bootstrap.sh
kame ~ $ ./configure --enable-logging --enable-debug
kame ~ $ make
kame ~ $ sudo make install

Son olarak Twister için HTML kullanıcı arayüzünü kuralım:

kame ~ $ mkdir .twister
kame ~ $ cd .twister
kame ~ $ git clone https://github.com/miguelfreitas/twister-html.git html/

Çalıştırma
Kurulum sorunsuz bir şekilde tamamlandıysa aşağıdaki komut satırını herhangi bir değişiklik yapmadan çalıştırıyoruz:

kame ~ $ ./twisterd -daemon -rpcuser=user -rpcpassword=pwd -rpcallowip=127.0.0.1

Adres: http://127.0.0.1:28332/home.html

Blok zincirleri eski olduğu için bir süreliğine güncelleştirme yapacaktır. Ağ durumuna Network sayfasından bakabilirsiniz.

twister network

Görüldüğü üzere blok zinciri güncel ve Twister kullanılmaya hazır. Bu sayfanın alt kısmında tıpkı Bitcoin’de olduğu gibi madencilik yapabilirsiniz. Madenciliğin ne gibi bir katkısı var? Blok zincirlerinin zorluk derecesi arttıkça daha yüksek bir güvenlik sağlanıyor ve ne kadar çok kişi madencilik yaparsa o kadar çok yeni zincir oluşturularak kullanıcıların zincirlere kayıt süresi azalıyor. Güncelleştirme tamamlandıktan sonra Login sayfasından yeni bir kullanıcı oluşturabilirsiniz.

twister login

Kullanıcı oluşturduğunuzda kullanıcı adınıza ait ve saklamanız gereken bir adet anahtar da oluşturulacaktır. Böylece farklı sistemlerde veya cihazlarda Twister kullandığınızda kendi hesabınızı bu anahtar ile aktarabileceksiniz. Profil sayfasında profil fotoğrafı, mekan, website adresi gibi profilinize ait bilgileri girip kaydedeceksiniz. Burada dikkat etmeniz gereken kayıt bağlantısının belirli bir süre aktif olmamasıdır. Çünkü, blok zincirine kayıt olunması biraz zaman alıyor. Kullanıcı adınızı oluşturduktan sonra belirli bir süre bekleyin.

twister profil

Kullanıcı kaydı da gerçekleştirildikten sonra artık siz de mikrobloglama başlayabilirsiniz.

twister profil2

Twister’la ilgili bilemeniz gereken bir kaç nokta var. Bunları sıralayacak olursak:

  • Twister’ın yapısı gereği sizleri takip eden kullanıcıları göremiyorsunuz. Ama takip ettiğiniz kullanıcılar görülmektedir.
  • Kullanıcı adınız için oluşturulan anahtarı kaybederseniz kullanıcı adınızı geri alma şansınız kalmaz.
  • Unutulmaması gereken nokta da Internet trafiğiniz gözetim altında ise Twister sizlere gizlilik sağlayamaz.
  • Twister, secp256k1 adında Bitcoin ile aynı eliptik eğri parametresini kullanmaktadır. NSA’in sec256r1 parametresini kırdığı biliniyor. Fakat, aynı durum Bitcoin ve Twister’da kullanılan parametre için -şimdilik- geçerli değildir.

Son olarak, Twister Türkçe dile de sahiptir. Daha çok ilgi görmeyi hakediyor ve özellikle engellemeler yüzünden gittikçe yalama olan Twitter gibi platformlar yerine tercih edilebilir. Bir diğer durum da Twitter kullanıcılarının ifade özgürlüğü haklarını mahkemelerde savunsa da, NSA ve PRISM ile işbirliği yapmasa da ifade özgürlüğünü bir şirketin eline bırakmak yanlış olacaktır. Bu yüzden bireylerin Twistter gibi uygulamalara önem vermeleri ve desteklemeleri gerekmektedir.

Unbound

Bugün, Google da Türk Telekom’un hukuki bir dayanak olmadan DNS sunucularını yönlendirdiğini ve Türkiye’deki Internet kullanıcılarının fişlendiğini belirten bir değerlendirme yaptı. İletişim özgürlüğüne ve özel hayatın gizliliğine yapılmış sayısız ihlale bir yenisinin daha eklenmesinin yanında henüz TİB ve Türk Telekom’dan da konuyla ilişkili bir bilgi verilmedi. Türkiye’de Google ve Open DNS sunucuları hukuka aykırı ve hiçbir dayanağı olmadan Türk Telekom’a yönlendiriledursun, bu durumu aşabilmek için çeşitli yöntemler de mevcuttur. Bunlardan biri GNU/Linux altında Unbound kurarak kullanıcı kendini DNS önbellek zehirlemesinden ve sahte yönlendirmelerden koruyabilir. Ayrıca, özellikle DNS sorgusunda araya girilmediği ve yapılan sorguların bu şekilde elde edilmediği takdirde de gayet iyi bir yöntem olacaktır.

Unbound; önbelleğe sahip ve DNSSEC doğrulaması yapan bir DNS çözümleyicisidir. Harici bir DNS sunucusuna ihtiyaç olmadan DNS çözümleme işlemini yerine getirir. İstenildiği takdirde harici DNS sunucusu da kullanılabilir. Bununla birlikte, DNSSEC ise Türkiye örneğindeki gibi kullancıyı ve uygulamayı manipüle edilen DNS verilerinden sahip olduğu dijital imza ile koruyan bir özelliktir. Biz ise örneğimizde DNSSEC doğrulaması yapan ve yerel bir DNS çözümleyici için Unbound kurup ayarlayacağız. İlk olarak, Türkiye’deki OpenDNS, Google DNS ve İSS’lerin kendi DNS sunucularının verdiği çıktıya bakalım:

nslookup twitter.com
Server:    192.168.1.100
Address:   192.168.1.100#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

nslookup twitter.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

nslookup twitter.com 208.67.222.222
Server:    208.67.222.222
Address:   208.67.222.222#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

Görüldüğü üzere iki DNS sunucusu ile İSS engelli sayfayı sahte bir DNS sunucusuna yönlendirilmekte ve kullanıcı sahte DNS sunucusunda bekletilmektedir. Bu, Google’ın değerlendirmesi ve ayrıca daha önceden de bu konuya ilişkin yazılmış yazılar da doğrulamaktadır.

Şimdi, Debian ve türevi dağıtımlar için Unbound kuruluma geçecek olursak (Windows için buradan indirebilir ve yönergeler için el kitabına bakabilirsiniz. Gayet basitçe anlatılmış.):

kame ~ $ apt-get install unbound unbound-anchor
kame ~ $ sudo cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.save
kame ~ $ sudo wget -c ftp://FTP.INTERNIC.NET/domain/named.cache -O /etc/unbound/root.hints
kame ~ $ sudo cp /var/lib/unbound/root.key /etc/unbound/root.key
kame ~ $ sudo chown -R unbound:unbound /etc/unbound/root.key

/etc/unbound/unbound.conf:

###
server:
	auto-trust-anchor-file: "root.key"
	interface: 127.0.0.1
	interface: ::1
	root-hints: "root.hints"
	num-threads: 2
	hide-identity: yes
	hide-version: yes
	msg-cache-size: 16m
	msg-cache-slabs: 8
	rrset-cache-size: 32m
	rrset-cache-slabs: 8
	infra-cache-numhosts: 20000
	infra-cache-slabs: 8
	key-cache-slabs: 8
	key-cache-size: 8m
	jostle-timeout: 250
	so-rcvbuf: 4m
	so-sndbuf: 4m
	harden-short-bufsize: yes
	harden-large-queries: yes
	harden-glue: yes
	harden-dnssec-stripped: yes
	harden-below-nxdomain: yes
	prefetch-key: yes
	prefetch: yes
	unwanted-reply-threshold: 10000000
	rrset-roundrobin: yes
	outgoing-range: 8192
	num-queries-per-thread: 4096
	do-udp: yes
	do-ip4: yes
	do-ip6: no
	do-tcp: yes
python:
remote-control:
forward-zone:
###

Kopyalayıp kaydedin. Ağ yöneticinizdeki DNS sunucuları ayarını 127.0.0.1 yapın ve Unbound servisini çalıştırın (systemd ve openrc için iki örnek aşağıda).
kame ~ $ systemctl enable unbound.service
kame ~ $ systemctl start unbound.service

kame ~ $ /etc/init.d/unbound start

Yukarıdaki ayarlar hemen hemen bütün dağıtımlarda çalışacaktır. Herhangi bir sıkıntı yaşayacağınızı düşünmüyorum. DNSSEC kontrolü yapalım:

kame ~ $ dig sigok.verteiltesysteme.net @127.0.0.1

; <<>> DiG 9.9.5 <<>> sigok.verteiltesysteme.net @127.0.0.1
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 5409
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sigok.verteiltesysteme.net.	IN	A

;; ANSWER SECTION:
sigok.verteiltesysteme.net. 60	IN	A	134.91.78.139

;; AUTHORITY SECTION:
verteiltesysteme.net.	3600	IN	NS	ns1.verteiltesysteme.net.
verteiltesysteme.net.	3600	IN	NS	ns2.verteiltesysteme.net.

;; ADDITIONAL SECTION:
ns1.verteiltesysteme.net. 3600	IN	A	134.91.78.139
ns2.verteiltesysteme.net. 3600	IN	A	134.91.78.141

;; Query time: 1070 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 01 11:49:29 2014
;; MSG SIZE  rcvd: 167

Bu şekilde A çıktısı alıyorsanız DNSSEC doğrulaması yapılmakta olduğunu söyleyebiliriz. Bununla birlikte, DNSSEC doğrulaması yapabileceğiniz siteler de mevcuttur:

Şimdi, Unbound’un sorunsuz çalıştığını ve DNSSEC doğrulaması yapıldığını farzederek Twitter çıktımızı tekrar kontrol edelim:

nslookup twitter.com 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   twitter.com
Address: 199.59.148.82
Name:   twitter.com
Address: 199.59.149.230
Name:   twitter.com
Address: 199.59.149.198

Her şey yolunda gözüküyor. Yerel DNS çözümleyicimiz sayesinde İSS’nin yapmış olduğu yönlendirmeye takılmadan kullanabiliriz. Diğer yandan, adres/IP manipülasyonlarında da sahip olunan dijital imza ile kullanıcı korunabilecektir. Unbound, yerel DNS çözümleyici ve DNSSEC ile doğrulama gerçekleştirerek yaşanabilecek sıkıntıların engelleyebilmektedir. Türkiye’de Internetin gelmiş olduğu noktaya bakacak olursak herhangi bir sosyal medya üzerinde verilen DNS sunucularını kullanmak yerine Unbound iyi ve güvenli bir çözüm gibi durmaktadır. Açıkçası, Türk Telekom ve TİB’in bundan sonra ne tür bir yöntem ile Internet üzerinde kullanıcı takibi, sorgu denetimi yapabileceğini, SSL sertifikalarında mitm yapıp yapmayacağını, sahte sertifika üretip üretmeyeceğini de kestiremediğim için kesin bir şey söyleyemiyorum. Aceleci bir yapım olmadığı için bekleyip görmeyi tercih ediyorum.

YaCy – P2P Arama Motorunuz

Twitter‘ın erişime engellemesi ile ilgili mesajım için buraya tıklayabilirsiniz.

YaCy, p2p mantığı üzerine kurulu ücretsiz, açık kaynak, özgür bir arama motoru yazılımdır. Genel olarak Java dili ile yazılmıştır ve platform bağımsızdır. Yani, illa GNU/Linux kullanmanıza gerek yoktur. P2P ağlarda olduğu gibi YaCy’de de birçok istemci vardır. Her YaCy-istemcisi birbirlerinden bağımsız olarak bir Internet sayfasını tarayabilir, analiz edebilir, sonuçları YaCY-istemcilerinin erişebilmesi için ortak bir indeks veritabanında tutup paylaşabilir. Tüm YaCy-istemcileri eşittir ve arama portallarında (Google, Bing, Yandex vs) merkezi bir sunucusu yoktur. Kısaca, YaCy için merkezsizleştirilmiş arama motoru da denilmektedir.

Merkezsizleştirilmiş arama motoru nedir?

merkezsizleştirme

Özel mülkiyet bir arama motoru düşünün. Bir merkezi ve yönetici(leri) mevcuttur. Bu arama motorunun sizin kontrolünüz dışında olan özel sunucularının bir merkezi vardır, sizin aramalarınızla ilgili bilgi toplar, sonuçları çeşitli gerekçelerle (telif vs.) sansürleyebilir, sizin arama sorgularınız ve eriştiğiniz sonuçlarla ilgili profil oluşturup bunu reklam için kullanabilir veya satabilir. YaCy’de ise bu durum tamamen farklıdır. Öncelikle, böyle bir merkeze bağlı değilsiniz. Kendi arama motorunuzun hem yöneticisi hem de kullanıcısısınız. Diğer yandan arama portallarındaki gibi içeriğiniz sansürlenmez, yöneticiler tarafından gözetlenmez ve herhangi bir reklam yoktur. Kendi içeriğinizi oluşturabilir, istediğiniz siteleri indeksleyebilir ve 600’den fazla istemcinin düzenli olarak katkı yaptığı 1.4 milyardan fazla dökümana sorunsuz, herhangi bir engele ve kısıtlamaya takılmadan erişebilirsiniz.

Kurulum ve ilk çalıştırma

İlk önce sistemimize Java kurmalıyız. Ardından YaCy’i kurabilir ve çalıştırabiliriz. Windows kullanıcıları buradan MacOS kullanıcıları da buradan indirip kurabilirler. Paket yöneticiniz ve dağıtımınız ne olduğunu bilmediğim için Debian türevi dağıtımlara uygun bir Java kurulumu gösterdim. Diğer kurulum ve çalıştırma dağıtım bağımsızdır.

kame - $ apt-get install openjdk-7-jre
kame ~ $ wget -c http://yacy.net/release/yacy_v1.68_20140209_9000.tar.gz
kame ~ $ tar xzv yacy_v1.68_20140209_9000.tar.gz && mv yacy ~/.yacy
kame ~ $ cd ~/.yacy && sh startYACY.sh

Temel ayarlar

Tarayıcınızdan localhost:8090‘a girdiğinizde YacY’nin durum (status) ana sayfasını göreceksiniz. Şimdi ilk olarak yanındaki Basic Configuration‘a tıklayarak bizi ilgilendiren birkaç ayarı yapalım. 1. seçenek dil seçeneği. Buradan size uygun olan bir dili seçebilirsiniz. 2. seçenek kullanım amacı. Üç seçenek mevcut. İlki, topluluk tabanlı arama. YaCy-istemcileri üzerinden arama yaparsınız. İkincisi, YaCy’i diğer YaCy-istemcilerinden bağımsız olarak yapılandırır, kendi indekslediğiniz ve robotlarla taradığınız siteler üzerinde arama yapılacak şekilde yapılandırabilirsiniz. Üçüncüsü, kendi ağınız ve siteniz için bir arama moturu oluşturabilirsiniz. 3. seçenek kullanıcı adınız. Herhangi bir şey yazabilirsiniz. 4. seçenek ise diğer YaCy istemcilerinin de erişebilmesi için port ayarı. Çok şart değil, port erişilebilir olursa hem performans açısından hem de diğer istemcilere indeks katkısı açısından biraz daha iyi olacaktır. Ayarlarınız tamamsa Set Configuration diyerek kaydedebilirsiniz. iptables’da port açmak isterseniz:

kame ~ $ iptables -I INPUT -p tcp --dport 8090 --syn -j ACCEPT
kame ~ $ iptables -I INPUT -p udp --dport 8090 -j ACCEPT

Bir arama gerçekleştirelim

yacy_arama

Görüldüğü üzere çok kapsamlı bir sonuç (daha devam ediyordu fakat ben yarıda kestim) elde edemedik. Bunun temel nedeni çok taze bir konuyu aratmak istememdi, ayrıca daha çok robotlarla taramaya ve indekslemeye ihtiyacı olduğundandır. Diğer bir deyişle, YaCy’nin birçok istemciye ihtiyacı vardır. Fakat, bu arama YaCy’nin yetersiz olduğu fikri oluşturmasın. Şu ana kadar beni pek üzdüğünü söyleyemem. Sorgularıma verdiği yanıtlar hep yeterliydi.

Arama motoruma herkes erişebilir mi?

Evet. Herkes erişebilir. Bu ister YaCy istemcisi olsun, ister Internette arama moturunuzun açık 2014-03-21-170646_1920x1080_scrotadresini bilen olsun veya diğer arama portallarının örümcekleri olsun erişebilirler. Status sayfasında, sağ köşede bir kutu göreceksiniz. Address kısmına baktığınızda sunucu (host), açık adres (public adress) ve YaCy adreslerinizi (yacy address) görebilirsiniz. Açık adresinize herkes (örümcekler dahil ve adresinizi dağıttığınız sürece) erişebilir. Bu yüzden Account ayarlarında Acces only with qualified account seçeneği ile bir yönetici (admin) şifresi belirleyebilirsiniz. Local robots.txt bölümünden de örümceklerin neye erişemeyeceklerini de ayarlayabilirsiniz.

2014-03-21-170630_1920x1080_scrotBen de indeks yapmak istiyorum

Sol menüde Index Production alt menüsünü göreceksiniz. Crawler/Harvester‘a tıkladığınızda açılan sayfa üzerinden indekslemek istediğiniz sayfanın linkini girerek bu işlemi gerçekleştirebilirsiniz.

Son sözler

YaCy çok detaylı ve kapsamlı bir arama motorudur. Burada çok temel birkaç şeyden bahsettim. Genel anlamda dört temel özelliği vardır. Tarama (crawl), indeksleme, arama ve yönetici arayüzü ve veritabanı. Merkezi bir sunucusu yoktur, sansür, reklam, gözetim gibi durumlardan arındırılmıştır. Yüksek derecede gizlilik sağlar. Çeşitli sıkıntılara sahip olsa da kesinlikle desteklenmelidir. Son olarak, YaCy ne kadar çok istemci sahibi olursa o kadar çok etkin, güvenli, sansürsüz, reklamsız bir arama motoru olacaktır.

Tarayıcılar ve Eklentiler

E-postalar üzerinden de bu sorular devamlı sorulduğu için kısa bir rehber hazırladım. Umarım işinizi görür.

İlk olarak belirtmeliyim ki bu rehberin %100 anonimlik veya güvenlik sağladığı yanılgısına kapılmak veya burada yazan tarayıcı ve eklentileri kullanarak gizliliğin sağlandığı, anonim kalındığı ve güvenli olunduğu kullanıcıyı büyük riskler içine çekebilir. Bu kavramların içi iyi bir şekilde doldurulmadığı sürece, bir tarayıcıdan veya eklentiden bir şeyler beklemek hata olur. Buraya kadar her şey anlaşıldıysa bana sıkça sorulan sorulara geçelim.

Hangi tarayıcıları kullanıyorum?

Neden Firefox Aurora ve Tor Browser kullanıyorum?

Öncelikle bu iki tarayıcıyı şu şekilde ayıralım: Firefox Aurora benim anonimliğe ihtiyaç duymadan, güdenlik işlerimi yüksek bir güvenlik sağlayarak gerçekleştirdiğim, eklenti desteği yüksek, stabil ve hızlı bir tarayıcıdır. Diğer yandan Tor Browser, anonim kalmamı sağlayan ve bunu en iyi şekilde yapan, benimle ilgili, gerçek kimliğime veya trafiğime ait en düşük bilgiyi sızdıran (İSS trafiğinizi şifreli bile görse %100 anonimlik diye bir şey yoktur!) bir tarayıcı olup, anonimliğe ihtiyaç duyduğum zamanlarda kullandığım diğer tarayıcıdır. İki tarayıcının kullanım amaçlarını ayırdıktan sonra diyeceğim bir diğer şey de, evet Firefox Aurora veya Google Chrome veya Opera veya başka bir tarayıcı da Tor ağı üzerinden Internete çıkabilir. Fakat, anonimlik açısından bakarsak Firefox’un Tor ağı üzerinden Internete çıkması sizinle ilgili belirleyici bir bilgi sızdırır. Kaldı ki çeşitli ayarları (useragent vs) değiştirseniz dahi sizinle ilgili bilgi toplayan servisler Tor Browser’dan farklı bir tarayıcı kullandığınızı parmak izleri (fingerprinting) üzerinden görebilir.

Hangi eklentileri kullanıyorum?

Tor Browser; HTTPS-Everywhere, Tor Button ve NoScript eklentileri ile birlikte gelmektedir. Bunun dışında başka bir eklenti kurmaya gerek yoktur. Diğer yandan, kurulacak eklentilerin anonimlik derecesini etkileme olasılığı da mevcuttur. Tor Browser’ı olduğu haliyle korumak en iyisidir.

Firefox Aurora için kullandığım eklentileri ve özelliklerini sıralayarak ilerleyeyim.

Adblock Edge, Adblock Plus’ın forklanmış halidir. Kendi tanımında da yazdığı üzere farkı; Plus  –muhtemelen– maddi kazanç sağlamak için bazı reklamlara (acceptable ads) izin vermektedir, Edge’de ise izin yoktur.

Tarayıcı üzerinden şifreli ve gizli mesajlaşmak ve sohbet (OTR) için –şimdilik– en iyi eklenti. Ayrıca, grup özelliğine sahip olduğu için birden fazla kişi ile bir grupta toplu yazışma yapabilirsiniz. Bilinmesi gereken en temel şey, Cryptocat kullanırken IP adresiniz gizlenmiyor ve bu yüzden takip edilebilme olasılığınız vardır. Tor ağı üzerinden Cryptocat kullanarak bunu da aşabilirsiniz. Bunun için custom server’dan Tor Hidden Service’i seçebilirsiniz.

Eğer tarayıcı üzerinde bir proxy yönetimi ihtiyacı duyuyorsam bunun için kullandığım tek eklenti. Proxy yönetimi ile kastettiğim gerektiğinde örneğin Tor, i2p gibi proxyler veya sahip olduğum shell hesabı ile ssh tünel için kullanmaktır.

Birçok website https yapısına sahip olsa bile ziyaretçileri http üzerinden karşılamaktadır. Bu eklenti ise güvenli olmayan http bağlantısını –eğer website sahipse– https olarak yeniden yazar ve kullanıcıları şifreli bir bağlantı ile karşılamaya zorlar. Olmazsa olmazdır. Bunun örneğini çok yakınlarda bir Youtube videosuna yapılan URL tabanlı engeli aşmada ne kadar işe yaradığını görmüştük. Fakat tek sıkıntı, hala ve ısrarlar birçok website https kullanmamakta ve SSL sertifikası için para ödememektedir. Ayrıca, tavsiye olarak SSL Oberservation özelliğini aktif edin. Bu sizlere eğer bir man-in-the-middle saldırısı varsa bilgi verecek ve eklentinin daha iyi geliştirilmesi için EFF‘ye anonim rapor gönderecektir.

Tarayıcı üzerinden OpenPGP şifreli e-posta göndermek için -bence- en iyi eklenti. Grafik arayüzü, hazır gelen servisler (Gmail, Yahoo vs.), anahtar yönetimi ile son kullanıcıya yönelik ve bu işi de en basit şekilde yerine getiriyor. Artık günümüzde şifreli e-posta göndermek bir zorunluluk olduğu için denenmesinde fayda var.

Websiteleri üzerinde gelen JavaScript, Java, Flash, Silverlight ve diğer çalıştırılabilir eklentilerin kontrolünü ve iznini kullanıcıya bırakarak bu eklentilerden gelebilecek veri toplama ve saldırıları engeller. Hatırlarsanız, Freedom Hosting baskını sonrası zararlı bir JavaScript bulunduğundan Tor Browser’ın bundan etkilendiği –kısa süre içinde bu durum düzeltildi– sözedilmişti.

Bunu kısaca şöyle anlatayım; bir websiteye herhangi bir makaleyi okumak için girdiniz, bu site üzerinde sunulan içerik olarak bir Youtube videosu da var, bu videoyu izlemeseniz dahi tarayıcınız Youtube’dan gelen isteği yanıtladı, ayrıca bir de Analytics mevcut. Böylelikle Google, Analytics ve Youtube ile sizin girdiğiniz siteyi ve okumak istediğiniz makaleyi, bu site üzerinde ne kadar vakit harcadığınızı öğrenerek sizin profilinizi çıkarmaktadır. RequestPolicy ise bu websitelerden gelen istekleri otomatik olarak engelliyor. Yönetim işini kullanıcıya bırakıyor. Diğer yandan XSS veya CSRF gibi saldırıları da bu şekilde engellemektedir. NoScript ile birlikte müthiş bir ikili oluşturur.

Uzun zamandır Cookieless Cookies, yani çerezsiz çerezler (tercüme benim) nedir, bir sayfayı çerezler ve JavaScript kapalı, VPN üzerinden ziyaret ettiğiniz zaman bile bu yöntemle takip edilebildiğinizi anlatmak istiyordum. Nasip bu yazıya oldu. Kısaca Etag (entity tag) kavramını açıklayayım. Etag, http’nin parçası olan bir protokol olup, bir URL’de gelen içeriklerin (gif, jpeg, js vs.) değişip değişmediğini doğrular ve her içeriğe özgü bir etag (checksum, sağlama toplamı) atar. Eğer URL’deki içerik değişmişse yeni bir etag atanır. Bir örnek vereyim; bir sayfaya girdiniz, sayfada bir jpeg var. Bu jpeg’in kendine ait bir etag’ı mevcut. Tarayıcı jpeg’i açtığı ve etag’ı öğrendiği zaman sunucuya doğrulama için bilgi gönderir. Sunucu jpeg’de bir değişklik olup olmadığını kontrol eder. Eğer yoksa jpeg’i yeniden almaya gerek kalmaz ve böylece gereksiz veri akışından kurtulunur. Ziyaretçilerin takibi ise bu yöntemle olmaktadır. Çünkü sunucu her tarayıcıya has bir etag verecek ve veritabanından da bunu kontrol edecektir. Bunu aşmada Self-Destructing Cookies’in yanısıra Secret Agent eklentisi de işe yaramaktadır. Tarayıcının useragent’ını düzenli olarak değiştirerek devamlı farklı etag’ların oluşturulmasını sağlar ve bunlar üzerinden gerçekleştirilecek takibi aşmaya çalışır. Whitelist’e sahip, böylece güvendiğiniz websitelerini buraya ekleyebilir ve sorunsuz kullanabilirsiniz.

Otomatik olarak kullanılmayan çerezleri temizleyen bir eklenti. Ayrıca bir whitelist’e de sahip. Buraya güvendiğiniz websiteleri girerek diğer sitelerden gelen çerezlerin belirli bir zaman aralığında otomatik ve kalıcı olarak silinmesini sağlayabilirsiniz. Böylelikle farkında olmadan çerezler tarafından gözetlenmenin de önüne geçersiniz.

Bir imajın sahte olup olmadığını anlamanın en iyi yolu bu eklentiden geçiyor. Örneğin Twitter’da paylaşılan bir fotoğrafın o ana ait olup olmadığını merak ettiniz. Bu eklenti ile fotoğrafa sağ tıklayarak TinEye’ın devasa veritabanında aratabilir, daha önce kullanılmışsa hangi sitelerde ve ne zaman kullanıldığını görebilirsiniz. Dezenformasyona karşı ilaç gibi gelecektir.

WebPG’de tıpkı Mailvelope gibi GnuPG/PGP şifreli e-postalar göndermenizi sağlayan gayet kullanışlı bir eklenti. Bazı web arayüzleri ile sıkıntıları giderilebilmiş değil ama basit bir kullanıma sahip. Sisteminizde ekli olan size ve arkadaşlarınıza sahip tüm anahtarları otomatik olarak alıyor. Denemeye kesinlikle değer.

Vim kullanmaktan büyük keyif aldığım bir editör. Kısayolları çok sevdiğim için ve bunları da bir tarayıcı üzerinde fareye ihtiyaç duymadan rahat bir şekilde kullanabilmek için en iyi eklenti Vimperator. Gerçi, VimFx ve Vimium ve Pentadactyl gibi uygulamalar da mevcut. Hepsi de aynı işi yapıyor.

Tüm bunlar gizliliğim, anonimliğim veya güvenliğim için yeterli midir?

Hayır! Öncelikle gizlilik, anonimlik ve güvenlik gibi kavramlar doğru anlaşılmalıdır. Anlaşılmadığı takdirde kullandığınız araçlar elinizde bir çöpe dönüşür. Bu yüzden tekrar ve tekrar tavsiye olarak gizlilik, anonimlik gibi kavramların içini iyi doldurmak ve bu konularda bolca araştırma yapmak gerekiyor.

I2P’ye Giriş

Bir başka anonim ağ, I2P. Bir başka giriş yazısı, I2P’ye Giriş. Eksik olduğunu biliyorum. Fakat iş görmeyecek, anlaşılmayan noktaları gideremeyecek kadar kötü de değil.

Yeni 5651 sayılı kanun tasarısı 5 Şubat 2014 tarihinde kabul edildi. Ben de Tor’a Giriş yazısı gibi bir I2P’ye Giriş yazısı hazırlamaktaydım. Fakat, hem gündemin yoğlunluğu hem de kendi yoğunluğum nedeniyle bunu hep arka plana atıyordum. Şimdi bunu acilen yayımlamak şart oldu. Teknik olarak yazı biraz eksik. İlerleyen süre içerisinde bunu gidereceğim. Öte yandan, yazı içerik olarak kafanızdaki soru işaretlerini giderecek düzeyde ve kullanım açısından pek bir eksik içermiyor. Yazıyı okurken ve I2P kullanırken şunu aklınızdan hiç çıkarmayın; “I2P kullanan bir kişi gizli değildir. Gizli olan şey tıpkı router’ın (yönlendirici) bağlı olduğu belirli bir hedef gibi kullanıcının bu anonim ağda ne yaptığına dair bilgidir.

I2P; açık kaynak, P2P anonim bir ağ olup,  basit bir katman oluşturarak çeşitli araçların birbirleriyle güvenli bir iletişim kurmalarını sağlayan özgür bir yazılımdır. I2P’de anonim olarak e-posta servisini kullanabilir, sörf yapabilir, blog ve forum hizmetlerinden yararlanabilir, sitenizi yayımlayabilir,  anlık mesajlaşma yapabilir (IRC), dosya paylaşabilir veya yükleyebilirsiniz. Tüm veriler birkaç katmandan oluşan şifreleme ile paketlenir ve tüneller ile iletilir. Bu yüzden I2P ile ilgili bilinmesi gereken en önemli noktalardan biri “tünel” kavramıdır. I2P’deki bir tünel yönlendiriciler listesinden seçilen bir yoldur. Katmanlı şifreleme kullanılır ve böylece yönlendiricilerden herbiri sadece bir katmanın şifresini çözer. Şifre çözümü sonunda elde edilen bilgi, şifreli bilginin iletileceği bir sonraki yönlendiricinin IP adresidir. Bununla birlikte, her tünelin bir başlama noktası (ilk router) ve bir de bitiş noktası (son router) vardır. Ayrıca, gönderilen bir mesaj sadece tek yönlüdür. Eğer bu mesaja cevap verilecekse, yeni bir tünel üzerinden yapılacaktır.

I2P’de iki çeşit tünel mevcuttur. Bunlar, tüneli oluşturan tarafından gönderilen mesajları içeren “outbound” (giden) ve mesajları almak için tünel oluşturan “inbound” (gelen)’dur. Bu iki tünelin bir araya gelmesiyle kullanıcılar birbirleriyle iletişim kurabilmektedirler. Şimdi bunu bir şema üzerinde görelim (şemalar i2p‘den alıntıdır):

net2014-02-07-200942_1920x1080_scrotÖrneğimizde Ayşe Ali ile buluşmak istemektedir. Bunun için de ona “Bugün buluşalım mı?” diye bir mesaj gönderecektedir. Şemada gördüğünüz gibi her giden ve gelen tünelleri (1, 2, 3, 4, 5 ve 6) 2 sıçramaya sahiptirler. Bu sıçramalar peer’ler (eşler) üzerinden gerçekleşecektir. Sıçrama sayısını Eşler bölünden ayarlayabilirsiniz. Tıpkı torrentte olduğu gibi bağlandığınız birçok eş olacaktır. Bunlar I2P’nin ağ veritabanı (network database) içinde Kademlia algortiması ile bulunur. Ayrıca, sol ana menüde ve altta Shared Clients (Paylaşılmış İstemciler)’den ayrıntılı bilgiye ulaşabilirsiniz. Ayşe, Ali’ye mesajını gönderdiği zaman pembe renkli olan giden tüneli üzerinden 3 veya 4 numaralı tünel geçidini kullanarak Ali’nin yeşil renkli gelen tüneli ile mesaj Ali’nin yerel istemcisine ulaşacaktır. Eğer, Ali bu mesaja “Evet, nerde?” diye cevap verecek olursa yeni bir tünel oluşuturulacak, bu sefer de Ali’nin pembe renkli olan giden tüneli üzerinden 1 veya 2 numaralı tünel geçiti kullanılarak Ayşe’nin yeşil renkli gelen tüneli ile yerel istemcisine ulaşacaktır. Mesajın iletimi sırasında bir katmanlı şifreleme mevcuttur. Bir de katmanlı şifreleme nasıl oluyormuş ona bakalım:

endToEndEncryptionÖrneğimizde Ayşe’den Ali’ye “Bugün buluşalım mı?” mesajının gönderildiğini söylemiştik. Birinci katmanda mesajın ilerleyeceği tüm tünel (a’dan h’ye) garlik şifreleme ile şifrelenmiştir. Ayrıca, ikinci katmanda giden tüneli (a’dan d’ye) ve gelen tünelleri (e’den h’ye) bundan bağımsız olarak AES ile şifrelenmiştir. Bununla birlikte, üçüncü katmanda iletim esnasında her sıçrama (a’dan b’ye, b’den c’ye, c’den d’ye, d’den e’ye, e’den f’ye, f’den g’ye ve g’den h’ye) da şifrelenmiş durumdadır. Bir saldırgan eğer bu mesajın içeriğini öğrenmek istiyorsa tüm bu katmanların şifreleri kırmak zorundadır. Şifreleme ile ilgili ayrıntılı bilgiye buradan ulaşabilirsiniz. Kafamıza bu kısım oturduysa artık kuruluma geçebiliriz.

  • Kurulum

I2P platform bağımsızdır. Burada anlatacağım GNU/Linux üzerinde nasıl kurulacağıdır. Kullanım olarak platform farketmiyor. Sisteminizde OpenJDK kurulu olursa iyi olur. Değilse paket yöneticinizden kuruverin. Debian/Ubuntu türevi dağıtımlar kullanıyorsanız bir terminal açın ve:

Ubuntu için;
kame ~ $ sudo apt-add-repository ppa:i2p-maintainers/i2p
kame ~ $ sudo apt-get update
kame ~ $ sudo apt-get install i2p

Debian için;
kame ~ $ sudo nano etc/apt/sources.list.d/i2p.list

Aşağıdaki repo adreslerini yapıştırıp kaydedin:

deb http://deb.i2p2.no/ stable main
deb-src http://deb.i2p2.no/ stable main

kame ~ $ sudo apt-key add debian-repo.pub
kame ~ $ sudo apt-get update
kame ~ $ sudo apt-get install i2p i2p-keyring

Elle kurmak isterseniz önce şu adrestenjar” paketini indirin ve bir terminal açın:

kame ~ $ java -jar i2pinstall_0.9.10.jar

Kurulumu gerçekleştirin. Hepsi bu kadar.

  • Kullanım

Hangi dizine kurulumu gerçekleştirdiğinizi bilmiyorum. Ben varsayılan olarak /home/kullanıcı/i2p dizini (bende kullanıcı kame) üzerinden gideceğim.Öncelikle i2p’yi çalıştıralım:

Repolardan paket olarak kurduysanız servis yöneticiniz (openrc, systemd vd.) otomatik olarak eklemiştir. Eklememiş, çalıştırmamış vs ise:

kame ~ $ sudo /etc/init.d/i2prouter start
kame ~ $ sudo systemctl start i2prouter.service

Elle kurulum yaptıysanız:

kame ~ $ cd /home/kame/i2p
kame ~ $ sh i2prouter start

2014-02-07-201005_1920x1080_scrotI2P çalışmaya başladığı zaman varsayılan tarayıcınız hangisiyse onda I2P Router Console sayfasını açacaktır. Aşağıda Local Services kısmını göreceksiniz. Buradan isterseniz Configure Language ile dilini (eksik çeviri) Türkçe yapabilirsiniz. Bizleri ilgilendiren ilk kısım ağ durumudur. Birkaç dakika içinde sizlere “OK (Tamam)“, “Firewalled (Güvenlik duvarı engeli)“, “Hidden (Gizli)” vs gibi bir şekilde geri dönecektir. Bu ana sayfadaki sol kutu içinde görebilirsiniz. Eğer uyarı alıyorsanız güvenlik duvarınızda “17193” UDP portunu açabilirsiniz.

Örneğin:

kame ~ $ iptables -A UDP -p udp -m udp --dport 17193 -j ACCEPT

Ağ durumumuz “Tamam” ise kullanım kısmını ben üç bölümde anlatacağım. Bunlar:

  1. Internete I2P üzerinden anonim olarak çıkmak ve Eepsitelere erişmek
  2. Anonim torrent kullanmak
  3. Anonim e-posta almak

Internete I2P üzerinden anonim olarak çıkmak ve Eepsitelere erişmek:

Önce, I2PTunnel (I2PTüneli) içinde tanımlı olan tünelleri başlatabilir veya durdurabilirsiniz. Http, https, IRC veya e-posta istemcisi gibi hazır tüneller göreceksiniz. Ayrıca, yeni bir tünel oluşturma işlemini de buradan yapabilirsiniz. I2P kullanımıyla ilgili detaylı bilgilere Logs (Günlük), Stats (İstatistik) ve Graphs (Çizelgeler) üzerinden ulaşabilirsiniz.

Eepsites (Eepsiteler), tıpkı Tor‘daki Hidden Services gibi I2P ağı içinden erişilen sitelerdir. Birçok konuda ve içerikte sitelere buradan erişebilirsiniz. Ayrıca, kendiniz de bir eepsite hazırlayıp, yayımlayabilirsiniz. Bunun için Local Services kısmından Websites‘e girerek gerekli bilgileri alabilirsiniz.

Tarayıcınız için en kolay çözüm FoxyProxy kullanmak olacaktır. FoxyProxy eklentisini kurduktan sonra HTTP için Options -> Add New Proxy diyorsunuz. Bununla birlikte, i2p ile Internete Tor ağı üzerinden çıkmaktasınız. i2p’nin outproxy’si Tor ağı olarak ayarlanmıştır. Tarayıcınızdan kontrol etmek isterseniz https://check.torproject.org adresine girebilirsiniz.

Host or IP Address = 127.0.0.1
Port = 4444
HTTPS için Port = 4445

Ayrıca, tüm bunları Privoxy kurarak da halledebilirsiniz. Privoxy ayarı için (/etc/privoxy/config):

forward-socks5 / 127.0.0.1:9050 .
forward .i2p 127.0.0.1:4444
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .

Tarayıcınızı HTTP ve HTTPS için ağ ayarlarından 127.0.0.1, port 8118 olarak ayarlayıp kullanabilirsiniz. Hepsi bu kadar.

Anonim torrent kullanmak:

I2P’nin kendi ait I2PSnark adında anonim bittorent istemcisi vardır. Farklı istemciler ile (Azureus, Transmission vd.) kullanabilirsiniz. Sizin dikkat etmeniz gereken I2P üzerinden I2P’ye ait olmayan torrentleri indiremeyeceğinizdir. Yani, kickass’ten kopyaladığınız bir magnet linkini I2PSnark ile indiremezsiniz. Fakat, I2PSnark ile I2P üzerinde dolaşımda olan her torrenti indirebilirsiniz. Zaten, Eepsiteler içinde torrent siteleri var. İçerikleri de çok kötü değil. i2p planet veya DifTracker ile bunlara erişebilirsiniz. Torrentin ve I2P’nin daha hızlı olmasını istiyorsanız bant genişliğini ve paylaşımı artırmanız gerekmektedir.

Anonim e-posta almak:

I2P’nin Susimail adında kendi ait anonim bir e-posta servisi vardır. Servislerden buraya ulaşabilirsiniz. Dışarıdan (clear web) kendinize e-posta atacaksanız i2pmail.org kullanarak atabilirsiniz. Kendi sayfasında açıklamalar mevcut ama ben burada tekrar belirteyim, i2p hesabınızdan gerçek hesaplarınıza veya gerçek hesaplara e-posta atmamaya özen gösterin. Bunu anonimlik derecenizi azaltmamak adına yapmayın dediğimi de unutmayın.

Son birkaç şey

I2P kullanmak, I2P ile torrent indirmek ve bunlara istinaden anonimliğiniz tekrar sizin tehlike modelinizde dayanır. Kimsiniz ve kimden saklanıyorsunuz? Neden ve ne tür bir risk almayı hedefliyorsunuz? I2P ile gelen anonim bittorrent istemcisi Azuerus’a kıyasla daha güvenlidir. I2P’ye ait yerel kimliğinizi kimseyle paylaşmayın. Hızlı olmasını istiyorsanız bant genişliğini ve paylaşımı lütfen artırın. I2P’ye giriş biraz kısa gibi oldu. İlerleyen zamanda bunu detaylandıracağım. Sizler de indirip kurar ve kurcalamaya başlarsanız çok çabuk birkaç şeyi deneyebilir ve belirli bir yol katedebilirsiniz.

DNSCrypt

Veri trafiğini daha iyi şifrelemenin en iyi yollarından biri de DNSCrypt kullanmaktır. Sizleri küresel dinleme ve yapacağınız hatalardan korumayacak ama DNS trafiğiniz şifreli bir hale dönüşecektir.

DNSCrypt kısaca, bir istemci ile DNS çözücü arasındaki iletişimi şifreleyen bir araçtır. Diğer bir deyişle, DNSCrypt proxysi doğrudan yerel çözücü olarak kullanabileceğiniz ya da DNSCrypt protokolü olarak DNS isteklerini gönderen, şifreleyen ve doğrulayan yerel bir servis sağlamaktadır. Bununla birlikte, DNSCrypt yüksek hızlı ve yüksek güvenlikli elliptic-curve kriptosu kullanmakta ve istemci ile birinci-seviye çözücü arasındaki iletişimi korumaya odaklanmaktadır.

DNSCrypt’i bu kadar farklı kılan şeylere bakarsak eğer, SSL nasıl HTTP web trafiğini HTTPS şifreli web trafiğine çeviriyorsa DNSCrypt de sıradan bir DNS trafiğini şifreli DNS trafiğine dönüştürmektedir. Bu da kullanıcıya dinleme ya da man-in-the-middle saldırıları gibi durumlarda koruma sağlamaktadır. Ayrıca, DNSCrypt platform bağımsız bir uygulamadır ve GNU/Linux, Windows ya da iOS (jailbreak şartı var) sistemlerde rahatlıkla kullabilirsiniz. Örneğimiz GNU/Linux üzerinde olacak fakat sizler farklı platformlar için en altta verilmiş bağlantılar üzerinden hareketle gidebilirsiniz.  Bununla birlikte, dağıtımınızın ne olduğunu bilmiyorum. Eğer, kullandığınız dağıtımın depolarında dnscrypt paketi yok ise direkt 2. yönteme bakabilirsiniz.

1. Depodan kurulum

İşlemlerimizi terminal üzerinden root olarak gerçekleştireceğiz. Hemen bir tane açın ve:

kame ~ $ apt-get install dnscrypt-proxy (pacman -S dnscrypt-proxy veya dağıtımınız neyse onun paket yöneticisi ile kurulumu gerçekleştirin.)

Kurulum tamamlandıktan sonra dnscrypt-proxy servisini başlatın. Debian ve türevi dağıtımlarda bu otomatik olarak gerçekleşecektir. Eğer başlamazsa:

kame ~ $ /etc/init.d/dnscrypt-proxy start

systemd kullanan farklı bir dağıtımda:

kame ~ $ systemctl enable dnscrypt-proxy
kame ~ $ systemctl start dnscrypt-proxy

yaparak başlatabilirsiniz.

2. Elle kurulum

Eğer depolarınızda yok ise aşağıdaki adımları gerçekleştirin.

kame ~ $ wget -c http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.3.tar.gz
kame ~ $ tar xzf dnscrypt-proxy-1.3.3.tar.gz
kame ~ $ cd dnscrypt-proxy-1.3.3
kame ~ $ ./configure
kame ~ $ make
kame ~ $ sudo make install

Bu aşamaların herhangi birinde (make install hariç) hata alırsanız mevcut hatayı aratarak eksik kütüphane veya paketleri kurmanız gerekebilir.

3. Kullanım

Kurulum aşamalarını tamamlamış iseniz artık kullanıma geçebiliriz. Statik IP ayarları yaparak kullanımını göstereceğim. Sadece DNS sunucusuna yazarak da kullanabilirsiniz. Seçim size kalmış.

kame ~ $ sudo ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::52e5:49ff:feda:8b5a  prefixlen 64  scopeid 0x20
        ether 50:e5:49:da:8b:5a  txqueuelen 1000  (Ethernet)
        RX packets 345058  bytes 405146897 (386.3 MiB)
        RX errors 0  dropped 8  overruns 0  frame 0
        TX packets 231282  bytes 53324829 (50.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Görüldüğü üzere eth0 kullanmış olduğum bağlantım. inet değeri ise bilgisayarımın ip’si. Ağ yöneticiniz NetworkManager veya başka bir şey olabilir. Ağ yöneticinizinde düzenlemek üzerekullandığınız bağlantıyı (eth0, wlan0 vs.) açın (örneğin Edit connections -> Ethernet (eth0) -> Edit -> IPv4 Settings) ve:

Adress: 192.168.1.3
Netmask: 255.255.255.0
Gateway: 192.168.1.1

şeklinde düzenleyin. Son olarak DNS Servers (DNS sunucusu) kısmına 127.0.0.1 yazın, kaydedin ve ağ yöneticinizi tekrar başlatın. 127.0.0.1, bizim yerel DNSCrypt proxymizdir. Bundan sonraki süreçte artık trafiğimiz şifreli bir şekilde akmaya başlayacaktır.

Dikkat etminiz gereken en önemli nokta DNSCrypt erişime engelli siteleri aşmak için bir araç olmadığıdır. Veri trafiğini en iyi şekilde şifrelemeye çalışmakta fakat bu süreçte IP’niz gizlenmiyor, yeriniz değişmiyor, Internete çıkış noktanız farklılık göstermiyor. Bunu kesinlikle aklınızdan çıkarmayın. Diğer platformlar için indirme bağlantıları aşağıdadır:

Arch Linux’u USB Belleğe Kurmak

Bu rehberin amacı kendinize ait ve USB bellek içinde taşıyabileceğiniz, sizin özelleştirdiğiniz ve kurulumun her adımını bilerek yaptığınız bir GNU/Linux’a sahip olmak. Yani, ihtiyaçlarınız nelerse sadece onları ekleyecek, her an yanınızda taşıyabilecek ve sorunsuz bir şekilde güvenle kullanabilecek, kişiselleştirilmiş bir dağıtımınızın olması.

Herhangi bir GNU/Linux dağıtımını da USB belleğinize yazdırabilir, tüm bu aşağıda anlattığım kısımlara girmeden kolayce USB belleğinizde çalışan bir dağıtıma sahip olabilirsiniz. Fakat bu yöntemin sağlayacağı faydalara bakarsak eğer:

  • Kurulumun her aşamasını görme, yapma ve düzenleme fırsatına sahip olacaksınız.
  • Bu sizin GNU/Linux bilginizi arttıracak mükemmel bir fırsat olabilir.
  • İstemediğiniz bir sürü gereksiz uygulama yerine sadece sizin istediğiniz uygulamalardan oluşan bir sisteme sahip olma olanağı.
  • Güvenliği kendi ihtiyaçlarınız doğrultusunda sağlayabilme (iptables vs).
  • Güvenmediğimiz makinelerde kullanabilme. (Eğer internet dinleniyorsa gene güvenliğiniz tehlikede olabilir fakat Tor ve VPN seçenekleri mevcut.)

O kadar faydasını saydım peki bize zararı olabilir mi?

  • Zaman gerektirebilir.
  • Aşamalarda karşılaşabileceğiniz sorunlar sizi yıldırabilir. Ama yılmayın, arayın muhakkak yazılmış bir şeyler bulursunuz.

Karışık bir rehber gibi gözükebilir ama elimden geldiğince her şeyi çok açık olarak yazacağım. Önce, elimizde GNU/Linux kurulu bir sistem olursa (Arch olmadığı varsayılarak anlatılacak rehber) sorunsuz bir şekilde ilerleyebilirsiniz. Hemen hemen tüm işlemler root olarak gerçekleştirilecek, o yüzden dikkatli olmanızda fayda var. Komutlar “~ $” ile düzenlenecek kısımlar “#”  (başlarına # koymayın) ile gösterilmiştir.

1. USB belleği biçimlendirmek

USB belleğimizi taktık ve öncelikle bunda bir bölüm oluşturmalıyız. Bu da cfdisk’i kullanarak yapacağız. Sizin dikkat etmeniz gereken USB’nin bağlama noktasının ne olduğu. Ben /dev/sdc olarak alıyorum. Sizde bu /dev/sdb olabilir veya /dev/sd[x] (x herhangi bir değer) olabilir. Yanlışlıkla kullandığınız alanı seçerseniz bilgileriniz silinecektir.

~ $ cfdisk /dev/sdc
New -> Primary -> Linux, Write diyerek yazıyor ve Quit diyerek bu ekrandan çıkıyoruz.

2. Arch Linux Bootstrap paketi

Arch Linux’un cd imajını yazdırıp oradan da gidebilirsiniz. Fakat, bu rehberde bootstrap ile kurulumu gerçekleştireceğiz. Öncelikle Arch Linux’un bu paketini indirip arşivden çıkartmalıyız. İndireceğiniz dizinde açacağınızı varsayıyorum.

~ $ wget -c http://mirrors.kernel.org/archlinux/iso/2013.12.01/archlinux-bootstrap-2013.12.01-x86_64.tar.gz
~ $ tar xzf archlinux-bootstrap-2013.12.01-x86_64.tar.gz

Arşivi çıkarttıktan sonra elimizde root.x86_64 adında bir klasörümüz olacak. Burada chroot olmadan önce Arch Linux’un yansı dosyasını düzenlemeliyiz.

~ $ nano root.x86_64/etc/pacman.d/mirrorlist

Size en yakın olan sunucunun başındaki # işaretini kaldırın ve kaydedip çıkın. Buradan sonra şu işlemleri gerçekleştirin:

~ $ cp /etc/resolv.conf root.x86_64/etc
~ $ mount --rbind /proc root.x86_64/proc
~ $ mount --rbind /sys root.x86_64/sys
~ $ mount --rbind /dev root.x86_64/dev
~ $ mount --rbind /run root.x86_64/run

Önemli noktaları bağladıktan sonra chroot için artık hazırız:

~ $ chroot root.x86_64 /bin/bash

Kuruluma geçmeden önce son adım olarak Arch Linux paket yöneticisi pacman‘in anahtarları kurması gerekmektedir.

~ $ pacman-key --init
~ $ pacman-key --populate archlinux

İlk bölümde USB belleğimizde bir alan oluşturmuş fakat bunu biçimlendirmemiştik. Şimdi bu oluşturduğumuz alanı biçimlendirelim:

~ $ mkfs.ext4 /dev/sdc1 -L /

Görüldüğü üzere “-L /” ile biçimlendirdiğim bu alana “/” etiketini verdim. Bu seçenek size kalmış. Ext4 yerine farklı bir dosya sistemi de seçebilirsiniz. Daha sonra USB belleğimizi bootstrap altında bağlamalıyız:

~ $ mount /dev/sdc1 /mnt

Her şey buraya kadar yolunda gittiyse rahatça kuruluma geçebebiliriz.

3. Arch Linux kurulumu

Önce, temel Arch Linux kurulumu gerçekleştirip Grub yerine Syslinux’u tercih edeceğiz. Grub’la devam etmek isteyen varsa kurulumu yapıp Grub ayarları için Arch Linux’un wikisine bakabilir. Biraz sıkıntılı olduğu için ben Grub’u atladım. Syslinux hiç sıkıntı çıkartmadı bana. Temel kurulum:

~ $ pacstrap /mnt base syslinux

Bu işlem biraz sürebilir. Yaklaşık 150mb kadar paket indirip kuracak. USB belleğinizin yazma hızı da önemli. Kurulum tamamlandıktan sonra fstab‘ı oluşturalım:

~ $ genfstab -p /mnt >> /mnt/etc/fstab

Burada /dev/sdc1 olarak değil de UUID üzerinden gitmeliyiz. Çünkü farklı makinelere taktığımız zaman bağlama noktası farklılık gösterebilir ve sistemimiz açılmayabilir. USB belleğinizin UUID numarası fstab içinde var. Eğer yoksa:

~ $ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 17:09 6c27259c-bff8-42a2-b14a-df16aad78ba4 -> ../../sdc1

UUID numaranız 6c27259c-bff8-42a2-b14a-df16aad78ba4, fstab ise:

~ $ nano /etc/fstab

# UUID=6c27259c-bff8-42a2-b14a-df16aad78ba4 / ext4 defaults,noatime 0 1

Şeklinde düzenlemeniz yeterli. Buradan sonra syslinux’u kurarak ayarlarını gerçekleştireceğiz:

~ $ syslinux-install_update -i -a -m
~ $ nano /boot/syslinux/syslinux.cfg

Syslinux’un ayar dosyasını açtıktan sonra LABEL Arch kısmını bulun ve USB belleğinizin UUID numarasını yazın:

LABEL Arch
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
APPEND root=UUID=6c27259c-bff8-42a2-b14a-df16aad78ba4 ro
INITRD ../initramfs-linux.img

Kaydedin ve çıkın. Şimdi sıra Arch Linux içinde chroot olmaya geldi:

~ $ arch-chroot /mnt

Hostname –diğer deyişle bilgisayarınızın adı– oluşturalım:
~ $ nano /etc/hostname

Hosts dosyamızı düzenleyelim (localhost’u bilgisayarınızın adıyla değiştirin):
~ $ nano /etc/hosts

Vconsole dosyamızı –klavye, yazı tipi düzeni– oluşturalım:
~ $ nano /etc/vconsole.conf
# KEYMAP=trq
# FONT=iso09.08

Locale dosyamızı –sistem dilini– oluşturalım:
~ $ nano /etc/locale.conf
# LANG=tr_TR.UTF-8

Yerel saatimizi belirleyelim:
~ $ ln -s /usr/share/zoneinfo/Europe/Istanbul /etc/localtime

Karakter desteği (başlarındaki # işaretini kaldırın):
~ $ nano /etc/locale.gen
# tr_TR.UTF-8 UTF-8
# tr_TR ISO-8859-9

~ $ locale-gen/

Initramfs imajını oluşturmadan önce mkinitcpio.conf dosyası içinde küçük bir yer değişikliği yapacağız (block görüldüğü üzere udev’den sonra gelecek):

~ $ nano /etc/mkinitcpio.conf
# HOOKS="base udev block autodetect modconf filesystems keyboard fsck"
~ $ mkinitcpio -p linux

Root şifremizi belirleyelim:
passwd

Kullanıcı (kullanici yerine kendi kullanıcı adınızı seçin) ve kullanıcı şifresi oluşturalım:
~ $ useradd -m -g users -G audio,video,wheel,storage,optical,power,network,log -s /bin/bash kullanici
~ $ passwd kullanici

4. Xorg kurulumu

Şimdi Xorg kuracağız. Farklı makinelerde çalışan bir sistem hazırladığımız için Xorg’u tüm sürücüleriyle kurmalıyız (all diyin).

~ $ pacman -S xorg

5. ALSA kurulumu

Ses için gerekli olan ALSA paketini kurmamız gerekmekte:

~ $ pacman -S alsa-utils alsa-firmware

6. NetworkManager kurulumu

Ben NetworkManager’ı seçtim. Wicd veya başka alternatifler size kalmış. NetworkManager’ı seçmemdeki neden OpenVPN. Kuruluma bunu da dahil edeceğiz:

~ $ pacman -S networkmanager networkmanager-openvpn network-manager-applet
~ $ systemctl enable NetworkManager

7. Masaüstü ortamının kurulması

USB belleğinizin boyutu ne kadar bilmiyorum. Tavsiye olarak ben pencere yöneticisi ya da LXDE gibi hafif masaüstü ortamlarını tercih ederdim. Rehberde LXDE’yi seçtim. Bu seçim size kalmıştır, istersenix XFCE, istersenix Openbox vs. de kurabilirsiniz. Fakat seçimlerinizin yanında bir tane de giriş yöneticisi seçmeli ve ayarlamalısınız. LXDE’de lxdm var o yüzden farklı bir şey seçmemize gerek yok.

~ $ pacman -S lxde ntfs-3g dosfstools
~ $ systemctl enable lxdm

8. Basit bir kişiselleştirme

Buradan sonra kullanmak istediğimiz programların kurulumu var. Ben basit bir örnek üzerinden göstereceğim. Tarayıcı seçiminden ofis ortamına kadar her şey size kalmıştır.

~ $ pacman -S firefox pidgin pidgin-otr abiword abiword-plugins gnumeric transmission-gtk icedtea-web-java7 gimp epdfview tor vlc ttf-dejavu
~ $ systemctl enable tor.service

Kurulumda indirilen paketleri yer kaplamaması için temizlemek isterseniz:
~ $ pacman -Scc
~ $  exit

9. Son adımlar

Buraya kadar da her şey sorunsuz bir şekilde kurulmuşsa artık bağlama noktalarını kaldırabilir ve chroot’tan çıkabiliriz.

~ $ umount /mnt
~ $ exit
~ $ umount -lf root.x86_64/proc
~ $ umount -lf root.x86_64/sys
~ $ umount -lf root.x86_64/dev
~ $ umount -lf root.x86_64/run

Artık bilgisayarınızı USB belleğinizden başlatabilir ve Arch Linux’unuzu kullanmaya başlayabilirsiniz. Kurulumun 5, 6, 7 ve 8. adımları kuracak kişiye kalıyor. Burada her adımı kendinize göre özelleştirebilir ve istekleriniz doğrultusunda kurulum yapabilirsiniz. Hepinize kolay gelsin, iyi yıllar.

Şifreler, Şifreler Ve Şifreler

Basit ve etkili bir şifrelemeden bahsettim fakat bir şifrenin nerede saklandığı, nasıl saklandığı, bu şifrelerin nasıl kırıldığında dair bir yazım yoktu. En azından temel kriptografi bilgisi ve basit bir Hashcat örneği ile bu eksikliği giderebilirim. Yazının eksik kaldığı noktalar elbette vardır ve herhangi bir grubu tatmin etme amacı yoktur. Bu yazı bunun ve bunun derlenmiş halidir.

  • Şifreler nerede saklanıyor?

Veritabanlarında. İlk bakışta dalga geçiyorum gibi gelecek ama durum bu. Unix ve Unix benzeri işletim sistemlerinde şifreler tek bir metin dosyasında, Windows’ta ise binary dosyasında saklanmaktalar. Elbette şifrelerin kriptosuz hallerini herhangi bir metin dosyasında bulundurmak mantıklı değildir. Bu dosyayı eline geçiren bir saldırgan şifrelerinize de sahip olacaktır. Bu nedenden dolayı bütün işletim sistemleri şifreleri bir hash algoritması ile çalıştırır, sonuç olarak veritabanlarında kriptografik hash olarak saklarlar. Bu ise şunu sağlar; eğer bir saldırgan bu veritabanını bir şekilde eline geçirirse, hash olarak saklanmış şifreleri bakarak çözemeyecektir.

Örneğin, GNU/Linux’ta kullanıcı için bir şifre oluşturduğunuz zaman bu şifre sha-512 algoritması ile hashlenerek /etc/shadow dosyası içinde yerini alır (AES ve Rijndael şifrelemesini de ekleyelim). Bu dosyaya baktığımız zaman;

kame:$6$7gNvdbpz$c6fb024a22c4db9101ea1d20596034../:15758:0:99999:7:::

$6 = Sha-512 hash algoritması.
$7gNvdbpz = Salt değeri.
$6fb024a22c4db9101ea1d20596034.. = Şifre.
:15758= Son şifre değişikliği tarihi (gün sayısıdır, başlangıç tarihi 1 Ocak 1970).
:0 = Şifre değişiklikleri arasındaki minimum süre.
:99999 = Şifrenin maksimum geçerlilik süresi (gün sayısıdır).
:7 = Hesap kapatıldıktan sonra şifrenin dolma süresi.

  • Peki hash nedir?

Hash, bir hashing algoritmasının (md5, sha-1, sha-2 vs.) kriptografik çıktısıdır. Bir hashing algoritması açık metin ile şifrelenmiş metin arasında tek yönlü bir dönüşüm sağlar. Bu şu demektir; eğer ben herhangi bir açık metni bir hashing algoritması ile şifrelenmiş metne dönüştürmüşsem, hashing algoritmasını tekrar kullanarak şifrelenmiş metinden açık metne ulaşamayacağım. Herhangi bir hashing algoritması tarafından boyutu standart olmayan bir girdinin şifrelenmiş çıktısı hashing algoritmasına göre eşit uzunluktadır. Diğer bir deyişle, bir e-kitabın boyutu ya da bir filmin boyutu ya da bir metnin boyutu ne olursa olsun, çıktının uzunluğu algoritmaya göre sabittir. Bunun kriptografide önemli olmasının sebebi, eğer bütün algoritmalar kendi türleri içinde aynı uzunlukta çıktıyı verirse, girdinin boyutunu ya da türünü belirlemek mümkün olamaz.

  • Salting, biz buna tuzlama mı desek?

Salting‘in türkçeye nasıl çevrildiğini ya da ne denildiğini bilmiyorum. Nedir noktasına gelirsek eğer, Salt rastgele verilen bir değer olup gizli değildir ve rastgele oluşturulur, şifre hashi ile birlikte saklanır. Büyük boyutlardaki salt değeri önceden hesaplanmış saldırılarını, mesela rainbow tablousu, her şifreyi eşsiz olarak hashleyerek engeller. Yani Ali ile Ayşe, aynı veritabanında saklanan tıpatıp aynı şifrelere sahip olsa bile, salt değerleri ile birbirinden farklı hash değerlerine sahip olacaklar ve bir saldırgan veritabanına erişse bile bu iki kişinin şifresinin aynı olduğunu bilemeyecektir.

Saldırganın başarılı olabilmesi için her salt değerini de ayrı ayrı hesaba katması gerekmektedir. Salting’in kullanılmasının nedeni şifrelerdeki entropi düzeyini arttırmaktır. Bir diğer deyişle, bizlere fazladan koruma sağlar.

Kripto fonksiyonunda iki girdi vardır. Bunlar $salt ve $key’dir, crypt($salt, $anahtar). Eğer salt değerimizin “0Z” ve şifremizin “kame” olduğunu varsayarsak $salt + $şifre;

0Zkame

Artık bu hashlenecek ve şifre veritabanında saklanacaktır. Bu şifrenin eğer bir kullanıcı şifresi olduğunu varsayarsak, /etc/shadow altında hash ile birlikte saklandığını görebiliriz. Örneğin, sisteme giriş yapmak istediğimizde, doğrulama yapmamız gerekecektir. Doğrulama, kullanıcı adı ve şifresi girildiğinde önce salt değerini alacak ve girilen şifre ile birlikte kripto fonksiyonunu çalıştıracaktır. Ardından, eğer şifreniz doğru ise hashler birbirini tutacak ve sisteme girebileceksiniz.

  • Birkaç örnek

En popüler hashing algoritmalarından biri (bugünlerde zayıf olduğu sıkça tekrarlansa da) MD5‘tir. MD5 hashing algoritması 128 bit yani 16 byte’tır. Çıktısı 32 haneli, onaltılı (0,…,9, a,…,f) (hex) sayıdan oluşur. Yani, 2 hex = 1 byte, 16 byte = 128-bit.

kame” dizisini MD5’e dönüştürürsek;

kame ~ % echo -n 'kame' | md5sum | cut -f 1 -d " "
366b18ce0695e44bfc30423b9eb8a793

İçinde sadece “test” yazan “test.txt” dosyasını MD5’e dönüştürürsek;

kame ~ % md5sum test.txt
098f6bcd4621d373cade4e832627b4f6  test.txt

MD5’e göre daha güçlü ve NSA tarafından tasarlanan bir diğer hashing algoritması ise SHA-2‘dir. SHA-2, 224, 256, 386 ve 512 gibi çeşitli bit uzunluklarında 4 farklı seçenek sunar.

kame ~ % echo -n 'kame' | sha256sum | cut -f 1 -d " "
be45d72f76fc702161620f5d5462443cb038fffd5b839d28d5c85dcf3b46cac5

kame ~ % sha256sum test.txt
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08  test.txt

256/128 = 2 > 32 x 2 = 64! Yani, algoritma, 64 hex haneli hash üretir.

Hashing algoritmaları ayrıca bir veriyi doğrulamak için de kullanılmaktadır. Örneğin, Internet üzerinden indirmek istediğiniz herhangi bir dosya için yayınlayan kişi bu dosyaya ait bir hash bilgisi de vermektedir. Böylece indirdiğiniz dosya ile Internette verilen hashleri karşılaştırıp doğrulama yapabilirsiniz.

Hashlere saldırılar ikiye ayrılmaktadır. Birincisi çevrimiçi saldırılar, yani elinizde kırmak isteyeceğiniz bir hash listesi yoktur, Internet üzerinden bulunan bir uygulama ya da servise, veritabanlarında bulunan hashlerle karşılaştırması için çoklu şifre tahminlerinde bulunursunuz. İkincisi ise çevrimdışı olan saldırılardır. Bunlarda ise elinizde bulunan veya bir yerlerden elde ettiğiniz hash listesini çeşitli saldırı türleri ile kırmaya çalışırsınız. Bu saldırı türlerinden en bilinenleri, bruteforce, rainbow tablosu ve sözlük saldırılarıdır.

  • Bruteforce

Varolan bütün kombinasyonların denenmesi anlamına gelmektedir. Kullanılan karakterlere göre değişmektedir. Örneğin sadece a,z aralığı ya da a,z ve A,Z aralıkları veya A,Z,0,9 aralığı gibi çok çeşitli kombinasyonlar oluşturabilirsiniz. En yavaş yöntem olabilir fakat sadece kombinasyon oluşturmaz. Ayrıca her kombinasyon için hash de oluşturur ve bunları karşılaştırır.

Elbette 4 hanelik bir şifrenin hash’ini kırmak çok uzun sürmez fakat hanesi sayısı artarsa, bunu kırmak için geçecek süre de artacaktır.

  • Rainbow Tablosu

Bir Rainbow (gökkuşağı) tablosu, daha önceden hesaplanmış hash’leri içermektedir. Yani, diğer bir deyişle, hash’ler hazır ve karşılaştırılmayı beklemektedir. En önemli artısı, işlemci yükünü azaltarak küçük boyutlu işlerde çok etkili sonuç verir. Sözlük saldırılarında, önce hash oluşturup ardından bunu kırmak istediğimiz hash ile karşılaştırırız. Gökkuşağı’nda ise hashlere zaten sahibiz ve tek yapmamız gereken bunları karşılaştırmak. İyi bir gökkuşağı tablosu oluşturmak vakit alacak bir iştir fakat etrafta çok büyüt boyutlu ve işe yarar tablolar da dolanmaktadır.

Gökkuşağı tablosunun etkisini azaltmak için yukarıda bahsettiğim salt yöntemi etkili bir yöntemdir.

  • Sözlük

Sözlük, kelimelerden, karakterlerden ve bunların kombinasyonlarından oluşan basit bir metin dosyasıdır. Sağda solda gördüğünüz “wordlist” ya da kelime listeleri de aynı anlama gelmektedirler. Sözlük, genel olarak kullanıcının basit şifreler kullanması fikrine dayanır. Bu yüzden herhangi bir sözlük metin dosyasına baktığınız zaman “12345678”, “qwerty” gibi ya da “home”, “pass” gibi dizilerden oluştuğunu görebilirsiniz.

Sözlük saldırıları şu şekilde olur; kırmak istediğiniz hash’e karşılık sözlükteki her dizinin bir hash karşılığı oluşturulur ve bununla karşılaştırılır. Eğer iki hash de birbirini tutarse, kırılmış demektir. Günümüzde artık CPU’lar epey güçlü olduğu için 1-2 dakika içerisinde 14 milyon girdi test edilebilir.

Bu saldırıları gerçekleştirebileceğimiz çevrimdışı bir uygulama arıyorsak eğer Hashcat bu iş için biçilmiş kaftan.

  • Hashcat

Hashcat, çok hızlı ve çok yönlü hash kırıcısı (cracker)’dır. Dağıtımlarınızın repolarında muhtemelen vardır, kurarsanız altta vereceğim örnek üzerinde nasıl çalıştığını daha iyi anlayabilirsiniz.

kame
dizisinin MD5 çıktısı “366b18ce0695e44bfc30423b9eb8a793” olduğunu yukarıda söylemiştik. Bunu bir metin dosyası içine, örneğin test.txt, yapıştırın ve kaydedin. Bu örneğimiz için bize bir sözlük lazım;

1ANORMUSWL
RockYou

İstediğinizi indirebilirsiniz. Bu örnekte 1ANORMUSWL dosyasını kullanacağım.

kame ~ % hashcat -m 0 -a 0 -o /home/kame/hashcat/sonuc.txt /home/kame/hashcat/test.txt /home/kame/hashcat/pass/1aNormusWL.txt
Initializing hashcat v0.46 by atom with 8 threads and 32mb segment-size...

Added hashes from file /home/kame/hashcat/test.txt: 1 (1 salts)
Activating quick-digest mode for single-hash


NOTE: press enter for status-screen

366b18ce0695e44bfc30423b9eb8a793:kame

All hashes have been recovered

Input.Mode: Dict (/home/kame/hashcat/pass/1aNormusWL.txt)
Index.....: 1/5 (segment), 3498468 (words), 33550338 (bytes)
Recovered.: 1/1 hashes, 1/1 salts
Speed/sec.: - plains, 33.39M words
Progress..: 3428536/3498468 (98.00%)
Running...: --:--:--:--
Estimated.: --:--:--:--

Started: Tue Oct 29 20:49:48 2013
Stopped: Tue Oct 29 20:49:49 2013

Görüldüğü üzere “-m“, seçtiğim hash algoritmam, 0, yani MD5, “-a” ise saldırı türüm , 0, yani doğrudan (burada sözlüğe bakıp her dizi için hash karşılaştırması yapıyor).

Herhangi bir sözlük kullanmadan bu saldırıyı yapmak istersek;

kame ~ % hashcat -m 0 -a 3 -o /home/kame/hashcat/sonuc.txt /home/kame/hashcat/test.txt ?l?l?l?l

Terminal çıktısı çok uzun olduğu için onu koymadım. Burada, farklı olarak saldırı türünü 3, yani bruteforce olarak belirledik ve sözlük yerine “?l” parametresini, yani sadece küçük harfleri (a,…,z) kullanmasını söyledik. 4 tane koymamın nedeni 4 haneden (kame) oluşması. Hangi şifrenin kaç haneden oluştuğunu, hangi karakterleri içerebileceğini bilemeyeceğimiz için saldırı modellerini kendiniz geliştirmeniz gerekmektedir.

Hashcat, çok başaralı ve hızlı bir hash kırıcısıdır. Burada çok temel bir örnek vererek anlatmam, sizlerin sağda solda denk getirdiğiniz herhangi bir hash algoritmasını oturup kırsın diye değildir. Daha fazla ayrıntılı bilgi almak isterseniz Hashcat’in wikisi, özellikle mask saldırısı ya da RTFM ve internette bulabileceğiniz sayısız döküman var.

Ccrypt İle Şifreleme

Platform bağımsız ve kullanması kolay bir uygulama olarak, ccrypt, dosya şifrelemede kullanmak için gayet basit ve güvenli, ayrıca sistem kaynaklarını da bir o kadar az tüketen bir araç olarak durmakta. Bu basit rehberi en azından denemeniz ve hatta kalıcı olarak kurup kullanmanız için hazırladım.

ccrypt, dosyaları şifrelemek ve şifresini çözmek için kullanılan, Rijndael Blok Şifresi üzerine kurulu açık kaynak, özgür yazılım bir uygulamadır. ccrypt’in sahip olduğu algoritma simetrik değildir. Bununla birlikte, ccencrypt ile dosya şifrelerken ccdecrypt ile şifre çözemektedir (ccrypt -e ya da ccrypt -d ile de yapabilirsiniz). Ayrıca ccat ile şifresiniz çözdüğünüz dosyayı sadece terminal ekranına yazdırabilir ve bilgisayarınızda geçici dosyalar bırakma riskinizi düşürebilirsiniz.

  • ccrypt güvenliği

ccrypt 256-bitlik bir şifrelemeye sahiptir. AES’in de seçtiği Rijndael Blok Şifresi‘ni kullanmaktadır. ccrypt’in AES ile farkı ise, AES 128-bit blok boyutu kullanırken kullanırken, ccrypt, Rijndael’in izin verdiği 256-bit blok boyutu kullanmaktadır. Bu onu elbette AES’ten daha az güvenli yapmamaktadır. Sadece AES standartına sahip değildir. Ayrıca, bu şifreleme eğer kırılırsa duyulması da o kadar çabuk olacaktır.

ccrypt ile bir dosyayı şifrelerseniz eğer, ccrypt o dosyanın üzerine yazacak, yeni bir dosya oluşturmayacaktır. Bununla birlikte, artık harddiskinizde orjinal dosya olmayacaktır. Fakat, siz bu dosyayı silseniz dahi donanım ataklarında harddiskiniz/ram’iniz/takasınız bu dosyanın izini taşıyabilir. Eğer bu izleri silmek isterseniz, bunun için çeşitli araçlar mevcut. Bunlardan bir tanesi GNU/Linux için wipe.

Eğer, şifreleme esnasında “–tmpfiles” parametresi kullanırsanız, orjinal dosyanın üzerine yazmak yerine geçici bir dosya oluştabilir, ardından da wipe ile silebilirsiniz.

kame ~ % ccencrypt --tmpfiles sifrelenecekdosya && ls

sifrelenecekdosya
sifrelenecekdosya.cpt

  • Dosya ve dizin şifreleme, şifre çözme

ccrypt ile herhangi bir dosyayı sorunsuz bir şekilde şifreleyebilirsiniz. Fakat, sizinleri şifrleyemezsiniz. Dizin için farklı bir yol izleyeceğiz.

Dosya şifreleme;
kame ~ % ccencrypt sifrelenecekdosya
Enter encryption key:
Enter encryption key: (repeat)

Gördüğünüz üzere ccencrypt (ya da ccrypt -e sifrelenecekdosya) ile dosyamızı anahtarımız ile şifrelemiş olduk. Anahtarı ise unutmamanız çok önemli. Tamamen unutursanız eğer şifrelenen dosyayı kurtarmanız mümkün olmayacaktır.

Dizin şifreleme;
kame ~ % tar -zcvf sifrelenecekdizin.tar.gz dizin/
kame ~ % ccencrypt sifrelenecekdizin.tar.gz

İlk komutumuz dizin adındaki dizinimizi (balık adındaki balık, komik değil biliyorum.) tar.gz formatında sıkıştırmak olacaktır. Ardından arşiv dosyamızı ccrypt ile sorunsuz bir şekilde şifreleyebilirsiniz.

Şifre çözme;
kame ~ % ccdecrypt sifrelenmisdosya.cpt
Enter decryption key:

ccrypt’in şifrelediği dosyaların uzantısı “.cpt” olarak değiştirmektedir. Eğer şifreyi çözmek isterseniz kullandığınız ccdecrypt ile (ya da ccrypt -d sifrelenmisdoya.cpt) anahtarınızı girerek dosyanızın şifresini çözebilirsiniz.

  • Anahtarımı unuttum, ne yapmalıyım?

Eğer anahtarınızı unutmuşsanız, şifrelediğiniz dosyaya erişmeniz mümkün olmayacaktır. Fakat, ccguess ile şifrenizi yanlış yazmış olabileceğinizi düşünerek ne olabileceğine dair bir kalıp deneyebilirsiniz.

Diyelim ki, şifrenizi “abcdefg” yaptınız (ben yaptım siz yapmayın), ve aklınızda sadece a, b, c, d ile e’yi içerdiği kalmış;

kame ~ % ccguess sifrelidosya.cpt
Enter approximate key: abcde


Generating patterns...1..2..3..4..5..sorting...done.

Possible match: abcdefg (2 changes, found after trying 1890639 keys)

Burada şu unutulmamalı; anahtarınız ne kadar çok karakter içerirse doğru tahmin için o kadar çok karakteri doğru hatırlamak zorundasınız, yoksa çabalarınız boşuna olacaktır.

  • Şifreleme esnasında sistem çöktü, peki şimdi ne olacak?

Örneğin, elinizde 100mb bir dosya var ve tam bunu şifrelerken ya da şifreyi çözerken sisteminiz kitlendi, elektrikler gitti vs. Ayrıca, bu dosyanın yedeğini şifrelemeden önce almadınız ve tek kopya şifrelemeye çalıştığınız dosya. Öncelikle yapmanız gereken şifrelenen dosyayın şifresini “-m” parametresi ile çözmek olacaktır.

kame ~ % ccdecrypt -m bozukdosya.cpt

Bu yöntemle dosyanın çözülen şifrelenmiş kısmı ile bozuk kısmından oluşan 2 ayrı dosya oluşturacak. Orjinal dosyayı bu iki kısmı birleştirerek tekrar oluşturabilirsiniz, fakat şifreleme ve çözümün birleştiği noktadaki 32-63 byte’lık bölümü malesef kaybedeceksiniz.

  • Anahtar oluştururken neleri kullanmamalı?

Yazdırılabilir ASCII karakterlerin hepsini kullanabilirsiniz. Sadece ‘n’, ‘r’ ve ”’ı kullanamazsınız. Bunların dışında, işletim sisteminiz eğer bazı özel karakterleri yazdıramıyorsa, doğal olarak onları da anahtar oluştururken kullanamayacaksınız.

  • Windows’ta şifreledim, GNU/Linux veya Mac Os’ta açabilir miyim?

Evet! ccrypt, platform bağımsız bir uygulamadır.

  • Şifrelenecek dosyanın boyutu önemli mi?

Hayır! İstediğiniz büyüklükte bir dosyayı ccrypt ile şifreleyebilirsiniz. Önemli olan sisteminizin bunu kaldırabilmesi.