- Necati Demir -

Ağustos 11, 2010

Pi Bilişim Teknolojileri


Yaklaşık 1 yıl önce eski şirketimden ayrılarak yeni bir oluşum içine girmeye başlamıştım Kabil (Akpınar) ile. Yaklaşık 4 ay önce de resmi olarak kendi şirketimizi kurduk: Pi Bilişim Teknolojileri. Neler yapıyorsunuz diye soranlara kısaca şu şekilde söyleyebilirim: Linux tabanlı çözümler. Bu çözümler gömülü Linux çalışmalarından IP PBX çözümlerine kadar geniş bir alanda yer alıyor.

Ayrıca bir projemiz de KOSGEB tarafından kabul edildiği için Ege Üniversitesi içinde bulunan KOSGEB binası içinde faaliyet gösteriyoruz.

Son 1 yıllık çalışmaları tabi ki 5 cümleyle anlatamam ama gelişmelerin çok kısa bir özeti bu kadar diyebilirim.

Temmuz 31, 2010

DNS Cache Snooping

Normalde eğer bir DNS sunucusu, bir domain kaydı barındırıyorsa ve siz de direk bu domain'i sorgularsanız DNS sunucusu kendi yerel veritabanından bu bilgiyi size gönderir ve bunu önbelleğine alır. Eğer bu sorgulanan domain DNS sunucusunun yerelinde kayıtlı değilse ve de DNS sunucusu rekursif olarak ayarlanmış ise o zaman bu DNS sunucu sizin DNS sorgunuzun cevabını dışarıda arayıp bulacak ve size gönderecektir. Doğru olan DNS sunucuların rekursif sorgu yapmamasıdır.

Evlerimizde, ofislerimizde bulunan ADSL modemleri göz önüne alırsak, bu cihazlarıdaki DNS sunucularına aslında DNS Cache (Önbelleği) demek daha mantıklı olacaktır çünkü bunlar yerelinde bir veritabanı barındırmazlar sadece sizin domain sorgulama isteklerinizi rekursif olarak arayıp bulurlar,  önbelleklerine alırlar ve size cevap gönderirler.

'DNS Cache Snooping' bir DNS Önbelleğinin(Cache) önceden bir 'domain'i sorgulayıp sorgulamadığını  gösteren metoda verilen isimdir. Bunu yapmanın yolu DNS Önbelleğine sorgu gönderirken rekursif sorgulamadan bize cevap dönmesi sağlamak, bu sayede cevap önbelleğinden gelmiş  olacak. 

Örneğin benim evde modemim 192.168.1.1 adresine sahip ve önceden www.pibilisim.com.tr adresine girip girmediğime bir göz atalım. dig uygulamasına verilen +norecurse parametresi domain sorgulama işleminin rekursif olmasını engellemekte.

$ dig @192.168.1.1 www.pibilisim.com.tr +norecurse

; <<>> DiG 9.6.1-P1 <<>> @192.168.1.1 www.pibilisim.com.tr +norecurse
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31767
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.pibilisim.com.tr.              IN      A

;; Query time: 31 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jul 31 09:51:30 2010
;; MSG SIZE  rcvd: 34

Bu sorgu sonucu bize herhangi bir cevap dönmedi çünkü önceden böyle bir sorgu gönderilmemişti. Mesela şimdi web tarayıcım ile bu http://www.pibilisim.com.tr girip çıkayım (tabi ki web tarayıcım da dns sunucu olarak 192.168.1.1 kullanıyor olmalı). Şimdi tekrar aynı sorguyu yapalım.

$ dig @192.168.1.1 www.pibilisim.com.tr +norecurse

; <<>> DiG 9.6.1-P1 <<>> @192.168.1.1 www.pibilisim.com.tr +norecurse
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17522
;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.pibilisim.com.tr.              IN      A

;; ANSWER SECTION:
www.pibilisim.com.tr.       3598    IN      A       78.40.228.194

;; Query time: 36 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jul 31 09:54:36 2010
;; MSG SIZE  rcvd: 50

Görüldüğü üzere bu sefer "Answer Section" alanı dolu ve herhangi bir cevap döndü. 

DNS Cache Snooping sayesinde bir domain'in DNS Sunucu/Cache(Önbellek) kullanıcıları tarafından önceden kullanıp kullanılmadığını analiz etme mümkün hale geliyor. Tabi ki bu sadece web sayfası gezmekle sınırlı değil, domain sorgulaması yapan tamamen farklı türde uygulamalar da sorgulama yapacaktır ve bu da DNS önbelleğinde kayıt altına alınacaktır.

Burada dikkat edilmesi gereken diğer bir konu da, DNS önbelleklerinin sonsuza kadar veri saklamadığıdır. Örneğin yukarıdaki www.pibilisim.com.tr örneğini ele alırsak, 3598 saniye sonra bu verinin ön bellekten silineceğini görebiliriz.

Temmuz 22, 2010

tcptraceroute ile NAT tespiti

Bir sunucunun NAT arkasından olup olmadığı tcptraceroute kullanılarak anlaşılabilir. tcptraceroute uygulaması, geleneksel olarak kullanılan traceroute uygulamasından farklı olarak tcp üzerinden çalışır.

sirket.com adresinin 222 nolu portunda bir servis çalıştığını biliyoruz ve bu servisi bulunduran sunucunun NAT arkasında olup olmadığını öğrenmek istiyoruz. 

# tcptraceroute sirket.com 222 -n
Selected device eth0, address 78.40.yyy.xxx, port 55511 for outgoing packets
Tracing the path to sirket.com (94.121.231.229) on TCP port 222, 30 hops max
 1  77.223.128.13  0.431 ms  0.392 ms  0.398 ms
 2  77.223.128.5  0.416 ms  0.388 ms  0.317 ms
 3  85.29.11.129  162.730 ms  0.709 ms  0.588 ms
 4  85.29.56.89  32.549 ms  204.363 ms  93.025 ms
 5  85.29.56.85  7.004 ms  7.039 ms  7.025 ms
 6  85.29.18.69  6.961 ms  7.009 ms  7.151 ms
 7  85.29.56.222  7.048 ms  7.049 ms  7.073 ms
 8  212.156.45.29  8.223 ms  7.898 ms  8.473 ms
 9  212.156.117.66  8.769 ms  7.716 ms  11.787 ms
10  81.212.208.125  8.088 ms  8.134 ms  7.964 ms
11  81.212.26.129  7.768 ms  7.810 ms  7.737 ms
12  212.156.117.38  14.865 ms  14.991 ms  14.865 ms
13  81.212.209.73  15.555 ms  15.796 ms  15.616 ms
14  81.212.217.45  26.604 ms  26.394 ms  26.948 ms
15  88.255.159.226  25.536 ms  25.486 ms  25.623 ms
16  94.121.231.229  35.515 ms  35.042 ms  35.170 ms
17  94.121.231.229 [open]  36.872 ms  38.588 ms  36.830 ms

Aldığımız çıktıda son iki adımdaki çıktının aynı IP adresine sahip olduğunu görünce, bu sunucunun NAT arkasında olduğu sonucunu çıkarabiliriz.

Temmuz 19, 2010

Tor ile DNS Sorgularını Gizlemek

Bir önceki yazımda Tor ile web tarayıcınız ile nasıl anonim bir şekilde internette gezeceğinizden bahsetmiştim. Ama bahsetmediğim kısım bu trafiğin hepsinin anonim olup olmadığı idi. HTTP ve HTTPS trafiğinizin hepsi anonim olarak iletiliyor ama bir web sitesine girerken yapılan DNS sorgusu anonim olarak iletilmiyor ve direk sizin IP adresinizden çıkıyor. Web sayfalarını gezerken buna Tor’u kullanan bir web proxy kullanarak çözüm getirebilirsiniz. Mesela; privoxy. Tor ve Privoxy kullanarak web üzerinde nasıl anonim olarak gezebileceğinizi şu adresten öğrenebilirsiniz: http://blog.demir.web.tr/2007/05/tor.html

Benim burada asıl anlatmak istediğim sistem genelinde bütün DNS sorgularının Tor üzerinden geçişininin nasıl sağlandığı. Bunu için kullanacağımız araç: ttdnds. ttdnsd tsocks’a ihtiyaç duyduğu için onu da indirip yüklemek gerekecek. ttdnsd ve tsocks kurulumu için şu adımlar gerekiyor:

cd /usr/local/src/
wget "http://downloads.sourceforge.net/project/tsocks/tsocks/1.8%20beta%205/tsocks-1.8beta5.tar.gz"
tar -zxvf tsocks-1.8beta5.tar.gz
cd tsocks-1.8
./configure && make && make install
wget "http://mulliner.org/collin/feed/ttdnsd-0.2.tar.gz"
tar -zxvf ttdnsd-0.2.tar.gz
cd ttdnsd-0.2
make
cp ttdnsd /usr/local/bin/

Kurulumlar bittikten sonra sıra geldi çalıştırmaya:

cp /etc/resolv.conf /etc/resolv.conf.tor
echo "nameserver 127.0.0.1" >/etc/resolv.conf
echo 8.8.8.8 > /etc/ttdnsd.conf
echo 8.8.4.4 >> /etc/ttdnsd.conf
TTDNSD_REALRESOLVCONF=/etc/resolv.conf.tor torify ttdnsd -b 127.0.0.1 -f /etc/ttdnsd.conf -c
LD_PRELOAD=/usr/local/src/ttdnsd-0.2/libttdnstor.so.1 tor

Artık yapacağınız bütün DNS sorguları Tor üzerinden yapılacak.

Haziran 20, 2010

SOCKS ve ProxyChains ile Engelleri Kırmak

Kimi zaman interneti rahat kullanmak için proxy'leri geçmek zorunda kalıyorum. Hele de friendfeed'deki gözüken bütün resimler web filtreleri tarafından porno kategorisine sokulunca bu artık zorunlu hale geliyor. Bu tür engellemeler bir web filtresi üzerinden yapılıyor yani port bazlı bir engelleme söz konusu olmayınca dışarıdaki sunucuların ssh portları erişmek mümkün oluyor. Ben de bu durumda SSH'in SOCKS protokol özelliğini kullanarak, kendi makinamda bir SOCKS sunucusu oluşturarak, HTTP trafiğimi buradan aktarıyorum; eğer internete çıkan uygulamamda SOCKS bilgilerini girebileceğim bir yer yok ise onu da ProxyChains ile kullanıyorum, bu sayede internette rahat bir dolaşım sağlıyorum. Şimdi kısaca bunların nasıl gerçekleştiğini anlatayım.

Dışarıda SSH sunucusuna bağlanabileceğiniz bir makina olduğunu varsayıyorum ve bu makina outside.test.com olsun. Bu durumda şu komutu kullanıyoruz.

ssh outside.test.com -D 9999
Bu komut ile kendi makinamızda bir SOCKS sunucusu oluşturduk. Şimdi kullandığınız web tarayıcısının ağ ayarları 
bölümünde SOCKS ayarlarına şekilde görüldüğü gibi SOCKS sunucusu olarak 127.0.0.1 port olarak da 9999 yazmanız gerekecek. Artık web trafiğiniz bağlandığınız sunucu üzerinden gerçekleşecek.
Diyelim ki öyle bir uygulama kullanıyorsunuz ki bu uygulamada SOCKS ayarlarını 
yapacak bir yer yok ya da ayarı nasıl yapacağınızı bilmiyorsunuz. Mesela bunun için örnek olarak links kullanalım. links metin tabanlı bir web tarayıcısı, aslında links parametreleri kullanılarak SOCKS sunucusu kullanılabiliyor ama bu örnekte anlatmak istediğim ProxyChains'in nasıl kullanıldığı. ProxyChains kurmak Ubuntu üzerinde herhangi bir başka paketi kurmak kadar kolay:
apt-get install proxychains
Kurulumdan sonra /etc/proxychains.conf dosyasına kendi makinanızdaki SOCKS sunucusunu tanımlamanız gerekiyor ki o da aşağıdaki satırı bu dosyaya eklemekle oluyor:

socks5 127.0.0.1 9999
Artık SOCKS sunucusu kullanarak internete çıkıp çıkmadığınızı anlamak için şu iki komutu kullanabilirsiniz.
proxychains links  http://www.ip-numaram.com/
links  http://www.ip-numaram.com/

Bu iki komutun sonucunda farklı IP adresleri görmeniz gerekiyor. İlkinde SSH sunucusunun bulunduğu makinanın IP adresi, ikincisinde sizin IP adresiniz belirmeli.

Haziran 16, 2010

Etik ve Ahlak Üzerine

Bir süredir etik ve ahlak kavramlarına takmış durumdayım. Biliyorsunuz, neredeyse her meslekte etik kuralları belirlenir, bir kaç google araması ile siz de kendi mesleğiniz ile ilgili belirtilen etik kurallarına ulaşabilirsiniz. Bir kaç google araması şu şekilde:


Ama etik kuralları içerisinde listelenen ama bir şekilde uyulmayan bir kurala bu ülkede ne kadar tahammül gösterilebildiği beni ciddi biçimde şaşırtıyor. Bu tür sorunlar başka ülkelerde yok demiyorum ama bu ülkede bunlara daha fazla tahammül var diyorum. Mesela şuna benzer bir haberin Türkiye için geçerli olabileceğini düşünüyor musunuz?
"Japonya’nın sekiz aylık başbakanı Yukio Hatoyama, istifasını verdi. Hatoyama seçimlerden önce ülkenin güneyindeki Okinawa Adası’nda bulunan bir ABD üssünü kapatma sözü vermiş ancak geçen sekiz aylık sürede bu vaadini yerine getirememişti. Başbakan’ın istifasında bu durum etkili oldu."
Tekrar ediyorum; ben demiyorum ki etik çerçevesinde değerlendirilen ve olumsuz yönde gelişen olaylar sadece Türkiye'de oluyor. Bunlar dünyanın her yerinde oluyor. Bu etik dışı davranışlara tahammülün sebebinin aslında "etik" kavramın kendisi mi diye düşünmeye başladım bir süredir.

TDK sözlüğe göre etik ve ahlak kelimeleri şu anlamlara geliyor;
Etik: Çeşitli meslek kolları arasında tarafların uyması veya kaçınması gereken davranışlar bütünü.
Ahlak: Bir toplum içinde kişilerin uymak zorunda oldukları davranış biçimleri ve kuralları.

Buradan da anlaşılacağı gibi, etik meslek kollarını (toplumu değil) ilgilendiren bir konu iken, ahlak toplumu ilgilendiren bir konu. Demek ki "ahlak" kategorisine sokulabilen konularla toplum bu sebeple daha çok ilgileniyor ya da dikkate alıyor.

Şimdi iki örnek cümle vereyim;
  1. Bu adam etik davranışlar sergiliyor.
  2. Bu adam ahlaksızın biridir.
Hangi cümlenin daha vurucu olduğunu tahmin etmek zor değil, çoğu kişi buna ikinci cümle diyecektir. Çünkü toplum üzerinde ahlak daha büyük bir etkiye sahiptir. Aslında bunun gerçekten de böyle olduğu anlamak hiç zor değil gerçek dünya örneklerine bakara bu anlaşılabilir. Her alan gibi siyaset ve politika da etik ve ahlak kavramlarından etkileniyor elbette. Bir siyaset adamı var ve oğlu bir şirket kuruyor, çocuk yurt dışından mal getirecek ama vergilerle ilgili bir sıkıntısı var, baba hemen bir kanun ile oğluna yardımcı oluyor. Bunun gibi onlarca örnek verilebilir, gerek şu andan gerekse önceki hükümetlerde buna benzer örnekler bulunabileceğini biliyorum. Bu olay etik kategorisinde değerlendirilir zira siyaset adamı etik olmayan bir davranış sergilemiştir. Bu olay ahlak kategorisinde de değerlendirilebilir belki ama toplumun ahlak olgusu tam olarak bunu içermemektedir. Peki toplum ahlak olgusu neyi içeriyor? Şimdi başka bir örnek vereyim; diyelim bir siyasetçinin karısını aldattığı zaman içinde ortaya çıktı. Şüphe götürmez bir gerçektir ki bu adam istifa edecektir zira toplum bunu ahlak dışı bir davranış olarak görecektir.

Buna benzer örnekler gerek siyaset için gerekse başka alanlar için çok rahat bir şekilde verilebilir. Ama benim asıl anlatmak istediğim ahlak olgusu içinde değerlendirilen konuların etik olgusu içinde değerlendirilen konulardan toplum için çok daha önemli olması.

İşte bu toplumda çözülmesi gereken sorunlardan biri de bu gibi gözüküyor.

Haziran 04, 2010

Google Servislerinin Yasaklanmasını Destekliyorum

Google servislerinin yasaklanması kadar mantıklı bir şey yok. Destekliyorum bu kararı. Şimdi bakın niye desteklediğimi anlatayım ki bu yasakların bizi nasıl koruduğunu bilin.


Google Docs:
Ergenekoncular Google Docs kullanıyor devleti çökertme planlarını birbirleriye paylaşmak için, işte bir numaralı sebep bu. Böyle bir sebeple kurunun yanında yaş da yanıyor ama olsun. Google Docs feda olsun bunun için.

Google Groups:
Hepinizi biliyorum ben, hepinizi. O grupları boşuna kurmuyorsunuz. Kiminiz dünyayı ele geçirmek için planlar yapıyorsunuz, kiminiz de bilim adı altında dünyanın yuvarlak olduğunu tartışıyorsunuz. Oh iyi oldu!

Daha fazla yazamayacağım, şimdiden sinirlerim gerildi. O servisleri kullanarak artık amacınıza ulaşamayacaksınız.