Perşembe, Temmuz 27, 2006

...Başarabiliriz...

İnanmak ve Başarmak. Birbirine çok sıkı bağlı iki kavram. Aşağıdaki bağlantılar inanmayanlar ve inancını tazelemek isteyenler için.

Vista,Red Hat,Ubuntu,Suse,Pardus

Windows XP,Red Hat,Ubuntu,Suse,Pardus

Salı, Temmuz 25, 2006

Hızlı ve Kirli Bir mod_chroot Kılavuzu

Başlangıç ve Sorumluluk Reddi

Bu belge Apache yi chroot içinde çalıştırmak için uğraşırken yaşadığım kişisel tecrübelerden ortaya çıkmıştır. Kullanılan sistem Fedora Legacy projesi ile güncellemeleri yapılan bir Fedora Core 1 sunucu ve üzerinde Apache 2.x PHP 4.x barındırmaktadır. Bu belgeyi uygularken sorumluluk tamamen size aittir doğacak zaralardan vs vs. Artık başlayabiliriz;

Ben Apache yi kafes içinde çalıştırmak için 3 temel yöntem biliyorum. Önce bunlara kısaca bir göz atalım;

1. Klasik chroot yaklaşımları


Zor ve zahmetlidir ( genellikle ) aşağıdaki yapıyı chroot içinde oluşturmanız gerektirir

* C kütüphanesi
* Pekçok diğer kütüphane (libssl? libm? libmysqlclient?)
* Çözümleyici dosyalar (/etc/nsswitch.conf, /etc/resolv.conf)
* Kullanıcı dosyaları (/etc/passwd, /etc/group)
* log dosyaları için ayrı bir klasör
* Program tarafında kullanılacak modül dosyaları (for Apache: mod_php and other modules)

2. Mod-security nin chroot fonksiyonu

Basit, ancak kılavuzdaki kurulum belgesi kaynak koddan kurulmuş bütün dosyaları tek dizin içinde toplayan bir apache sunucusuna uygun. Dosyaları değişik konumlara dağılmış bir sunucuda uygulaması zor.

3. Mod_Chroot yaklaşımı


Basit hızlı ve kolay. Yalnızca chroot işlemine odaklanmış sade bir modül. Ek hiç bir dosyanın kopyalanmasına gerek kalmaz ( 1 - 2 istisnai durum olabilir :) )

Mod-security ve Mod_chroot u kısaca kıyaslarsak

* mod_chroot uzak istemcilerle iletişim kurmaz.
* mod_chroot yalnızca bir kere hafıza ayırır, başlangıçta.
* mod_chroot istekleri yakalamaz kendi işi ile uğraşır :)

Kurulum

Kuruluma başlamadan önce aşağıdaki sistemlerden birini kullanıyorsanız hazır paketlerden kurulum yapabilecek şanslı kişilerdensiniz :)
Apache Dinamik modülleri ile mod_chroot kurulumu için birkaç basit adım gerekiyor.

1. Kodu indirin ve açın

wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
tar zxvf mod_chroot-0.5.tar.gz


2. Kendi sunucunuza uygun kaynak kod klasörüne gidin ( örneğin mod_chroot-0.5/src/apache20/ ) ve

apxs -cia mod_chroot.c

komutunu root olarak çalıştırın.

Not: Bazı headerlara ihtiyaç duyabilirsiniz eğer debian kullanıyorsanız apache2-prefork-dev veya
apache2-threaded-dev paketlerinden birini kurmanız gerekmekte.

Not 2: apsx fedora üzerinde apache-dev paketi ile gelmekte Dinamik modül olarak mod_chroot kurmak için bunu indirin.

Ayarlar

Sunucunuzun konfigürasyon dosyasında ( httpd.conf ) Apache için root olarak kabul edeceğiniz dizini ChrootDir direktifi ile belirtin ve DocumentRoot unuzu buna göre ayarlayın, Örneğin:

ChrootDir /var/www
DocumentRoot /


( Eğer DocumentRoot u /var/www şeklinde bırakırsanız sunucu /var/www/var/www dizinide arayacaktır ana dizininizi )

Apache 2.x için Özel Ayar Notları

Apache 2 deki MPM (multi-processing modules) yapısından dolayı pid dosyası chroot un içinde yer almalı Bunun için;

1. Pid dosyası için özel bir klasör yaratılmalı

mkdir -p /var/www/var/run
chown -R root.root /var/www/var/run


2. apachectl nin mutluluğu için gerçek pid dosyası ile arada bir sembolik bağ kurulmalı

ln -s /var/www/var/run/httpd.pid /var/run/httpd.pid

3. ve son olarak httpd.conf a chroot direktifinden önce

PidFile /var/run/httpd.pid

satırı eklenmeli. Sonuç olarak yapılandırma dosyanız şuna benzemeli

PidFile /var/run/httpd.pid
ChrootDir /var/www
DocumentRoot /
... diğer MPM direktifleri (LockFile? ScoreBoardFile?)


Yalnızca pid dosyasını jail içine almak yeterli olmalı ancak Apachenin özelleşterilebilirliğini düşünecek olursak kullanıcıya göre değişiklik gösteren istisnalar her zaman olabilir. mod_chroot tarafından etkilenen bütün MPM lerin tam listesi için buraya bakın adresine bakın.


Modül Sıralaması


mod_chroot Apache nin bütün işi bittikten sonra çağırılmalı bunun için modül listesinin en başına eklenmeli ( Apache modülleri yazım sırasının tersine yükler ) . Eğer modülü dinamik olarak derlediyseniz.

LoadModule chroot_module /usr/lib/httpd/modules/mod_chroot.so

satırlarını modül listesinin en başına ekleyin. Tabi burada kullandığınız dağıtıma bağlı olarak mod_chroot.so dosyasının tam yolunu yazmalısınız (apsx bu direktifi ( büyük ihtimalle ) modül listenizin en sonuna eklemiş olacak buradan kes-yapıştır yapabilirsiniz).

Evet buraya kadar mod_chroot un kurulum ve ayarlarını bitirdik. Ancak;

Başlamadan Önce

Apache yi chroot içinde çalıştırmak bir takım problemlere sebep olabilir.

Bilinen problemler ve çözümleri için okumaya devam edin :)

Apache yi Yeniden Başlatmak

'apachectl reload', 'apachectl graceful' veya 'kill -HUP apache_pid' komutlarını kullandığınız günleri unutun. Apache bunları yapmak için konfigürasyon dosyasını okumak log dosyalarına yazmak ve modüllerini yeniden yüklemek isteyecek ancak kafesinin dışına çıkamayacaktır. Tabi bu sorunu çözmek için gerekli dosyaları kafesin içine yerleştirebilirsiniz ancak bu durumda da chroot yapmanızın bir anlamı kalmaz :)

Sözü fazla uzatmadan çözümü söyleyeyim bundan sonra apacheyi durdurup başlatmak için yalnız iki komut kullanıyoruz. apachectl stop' ve 'apachectl start'

Veritabanları

Eğer veritabanı sunucunuz yalnız Unix soketlerini dinliyorsa onu 127.0.0.1 i de dinlemesi için ayarlamalısınız.

PHP mail() fonksiyonu


Unix altında php nin mail() fonksiyonu sendmail programının çalıştırılabilir haline ihtiyaç duyar. Bu sorunu aşmak için birkaç alternatif metod olmasına karşın ben smtp ile direkt olarak mail gönderen bir sınıf kullanmanızı önereceğim ( örneğin http://pear.php.net/package/Mail gibi).

Paylaşımlı Kütüphaneler Meselesi


Paylaşımlı kütüphaneler programlara çalışma zamanında bağlanan kütüphanelerdir. Bir programın kullandığı paylaşımlı kütüphanelerin tam listesine ldd /programın/tam/yolu şeklinde erişebilirsiniz.

Normal şartlarda bu kütüphaneler başlangıç sırasında ld.so tarafından otomatik olarak yüklenirler, mod_chroot un bu durumla ilgili bir sorunu yoktur. Ancak bazen programlar çalışmaya başladıktan sonrada bu kütüphaneleri dlopen() ve dlsym() fonksiyonları ile çağırabilirler. İşte bu durum chroot ortamı içinde size sorun yaratabilir.

Bununla ilgi şu ana kadar 2 durum raporlanmıştır. Çözüm olarak bu dosyaları chroot yapmadan önce elle yüklemeyi seçebilirsiniz. Bunun için ayar dosyanıza LoadFile direktifi ile beraber dosya adını eklemelisiniz.

1- DNS Lookup problemi için

LoadFile /lib/libnss_dns.so.2

direktifini eklemeniz gerekmektedir

2- Apache 2.0 mpm_worker modülünü Linux 2.6 çekirdeği üzerinde kullanıyorsanız GNU libc libgcc_s.so.1 kütüphanesini pthread_cancel fonksiyonu çağırıldığında yüklemeye çalışacaktır. Çözüm için:

LoadFile /lib/libgcc_s.so.1

direktifini eklemeniz gerekmektedir.

Sanal Sunucular Konusu

mod_chroot sanal sunucularla kesinlikle problemsiz ( tabi başka bir probleminiz yoksa ) çalışmaktadır. Ancak daha öncede belirtildiği gibi her bir Sanal Sunucu için ayrı bir ChrootDir direktifi kullanamazsınız yani şunu yapMAMANIZ gerekir


ServerName birinci.ornek.com
ChrootDir /var/www/bir_ornek_klasoru
DocumentRoot /

ServerName ikinci.ornek.com
ChrootDir /var/www/ikinci_ornek_klasoru
DocumentRoot /


Bunu yerine aşağıdaki biçimde bir yapılandırma oluşturmalısınız.

ChrootDir /var/www
ServerName birinci.ornek.com
DocumentRoot /birinci_ornek_klasoru

ServerName ikinci.ornek.com
DocumentRoot /ikinci_ornek_klasoru

Not: Bütün işlemleri başarıyla tamamlasanız bile apache başlangıç sırasında

Warning: DocumentRoot [/biricini_ornek_klasoru] does not exist

gibi bir hata verebilir. Bunu dikkate almayın :)


Diğer sorunlar ve destek için
modchroot@core.segfault.pl listesini kullanbilirsiniz. ( Üyelik için modchroot-subscribe@core.segfault.pl adresine boş bir posta atın )

Son olarak http://core.segfault.pl/~hobbit/mod_chroot/install.html adresinde daha detaylı bir kurulum kılavuzu bulabilirsiniz.



Pazar, Temmuz 23, 2006

Mayk Hammır nasıl Yazılır

Tost ve Çay blogundaki linkleri kurcalarken gördüm. mod-chroot la uğraşmaya başlamadan biraz kafa dağıtalım ;)

Afif Yesari, Muzaffer Ulukaya takma adıyla 200 kadar polisiyeye imza atarak bir rekorun sahibi oldu. Başlangıcından bugüne dek, Cumhuriyet döneminde Türkiye’de yazılan polisiye metinlerin toplamından çok daha fazladır “Afif Yesari”nin kaleminden çıkanlar. Bu nedenle, Mayk Hammer’i tanıtma hakkını da ona vermek gerekir:

“New York’lu ve kafadan müselleh bi polis hafiyesinin akla mantığa sığmaz deli saçmalı serüvenlerine ve eskilerine taş çıkartan yenilerini eklediğim bu detektif romanlarını şöyle yazıyordum; Patron, ressama para vermemek için yabancı dergilerden ve jiletle kesip oyduğu ve ayrı ayrı harf ve resimleri yan yana yapıştırarak hazırladığı ve kompozisyonunu da aynı yöntemle yaptığı kapakları bana veriyor ve ben de romanı bana verilen kapağa göre uyduruyordum. Örneğin kitabın adı ‘Genç Kızlar Cehennemi’ ve bir de şöyle bir resim; iri kıyım hayvan gibi bir herif, bir piknik sepeti başına çömelmiş gibi ve sarışın bir kızı, ağaçların arkasından kötü kötü dikizliyor... Ve demek oluyor ki, aşk, kin, ırza tecavüz, intikam, entrika ve fiilen tasallutta bulunma gibi olayların yanı sıra, kan ve heyecan ve bir kaç da cinayet bu kapağın hakkıdır.

Kapağı alıp eve geliyor, bir kahve, bir cıgara içiyor ve New York Şehir Rehberini önüme açarak kafadan gayri müselleh detektifi daha da çileden çıkaracak serüvenlere koşturuyordum. Ve bu 92-96 sayfalık cep kitaplarından her birini, üç günde tamamlayıp vermek zorundaydım. Bu iş için New York Şehir Rehberinden faydalanıyordum çünkü ben New York’a hiç gitmemiştim. Beş yıl süreyle bu kitaplardan bir çok yazdım ve çok da satıldı ve kimse de şikayetçi olmadı. Serüvenlerini ürettiğim detektifi uyduran yazar, uydurduğu detektiften daha üşütüktü ve bu nedenle detektif de ipe sapa gelmez bir hergelenin tekiydi. Ben, herife az bir şey çeki düzen verdim, bayağı adama döndü, daha insancıl oldu ve doktor o sıralar bana içkiyi yasakladığı için ben de ona viskiyi bıraktırdım. Böylece bu kitaplardan 200 kadar yazdım. Üşütük detektifin yazarı Spillane, o tarihte henüz 7 tane kadar Mayk yazmıştı ve 200’e yaklaşık kitabın adını taşıdığından haberi yoktu ve hala da bilmez.

Neyse bu da haberin tam kaynağı.

Cuma, Temmuz 21, 2006

En tehlikeli Cracker

Daha önce bir yerlerde okumuşsunuzdur belki ama ben yeni karşılaştım kendileriyle. http://johnny.ihackstuff.com ile google ı çok etkili bir crack aracına dönüştürebilirsiniz. Ayrıca arama için kullandığı tekniklerde oldukça öğretici.