Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Döküman: "HTTP server için Transparent proxy kurmak"

Konu, 'Bilgi Güvenliği' kısmında RaiST tarafından paylaşıldı.

  1. RaiST

    RaiST Daimi Üye

    Kayıt:
    24 Temmuz 2002
    Mesajlar:
    1,932
    Beğenilen Mesajlar:
    0
    Meslek:
    linuxrocker
    Şehir:
    krynn
    2. bir döküman yazıyorum. Dökümanlarda genel olarak teorik bilgi veriyorum.. daha fazla bilgi ve pratik bilgiler için linklere bakınız.

    Burda, HTTP veya herhangi bir başka servis için , transparent - hayalet proxy kurmayı göstereceğim.

    Şimdi herşeyden önce bunun ne olduğunu anlayalım:

    Bilindiği gibi http sunucular port 80 üzerinde çalışan servislerdir. Günümüzde siz bir http sunucuyu iyi bir koruma olmadan internete hizmet vercek şekilde ayarlarsanız, işin sonu pek hayırlı olmaz.
    Alınması gereken güvenlik önlemleri vardır. Bunlardan biri squid proxy kullanarak bir transparent proxy kurmaktır. Böylece kötü niyetli kişiler doğrudan HTTP server programı ile muhattab olamaz. Önünde geçmesi gereken bir squid vardır.

    Elimizde 3 tane makinamız olsun.

    * A bilgisayarı. - Internette herhangi bir yerde bulunan üzerine Mozilla web browser yüklü bir bilgisayar.

    * B bilgisayarı bizim ağımızın firewall görevini üstlenen bir Linux. 2.4 kernele sahip ve Netfilters desteği kernelda verilmiş. IPtables arabırımızım buluyor. IP'si

    * C bilgisayarımız ise http sunucumuz.

    A bilgisayarımız , C bilgisayarında bir http isteğinde bulunacak. Tabiki yaptığımız ayarlamalardan dolayı, isteği içeren paket B firewalldan geçecek.

    B firewallumzuda , iptables yüklü olduğunu söylemiştik.
    İlk önce tam olarak ne yapacağımıza bakalım.
    Yapcağımız, B firewall üzerinde IPTables'a özel bir iki kural yazıp,
    http sunucumuza 80 portundangelen datayı doğrudan http sunucusunun 80 portuna göndermek yerine ilk önce squid proxyimize yönlendirmek.

    Bu yönlendirmeyi PRE_Routing zincirinde yapmamız gerekmektedir.
    IPTables ile standart olarak 5 tane ön tanımlı zincir gelmektedir
    (pre_routing , forward, post routing, localin , localout)

    Bizim yapcağımız işlemin adı NAT'tır (yani network address translation )

    firewall linux makinasındaki IPTables'a vermemiz gereken komutlar şöyledir.

    Komutları vermeden önce 2 çeşit yol vardır:
    Squid proxy firewall makinada kurulu olabilir veyada http server makinada olabilir. iki durum içinde komutlari göreceğiz.

    Eğer Squid Proxy, firewall üzerinde ise:
    Konsolda:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to
    3128

    Burda iptables'a -t ile NAT yapması gerektiğini, -A ile PREROUTING zincirinde işlem yapılması gerektiğini, -p ile tcp bilgisi içeren dataları, --dport ile tcp port 80 e gelen dataları seçmesini ve
    local makinedeki 3128 portuna yönlendirmesi gerektiğini söyledik. burda 3128 de squid imiz varsa,
    http servera port 80 için gelecek olan bütün datalar, http server yerine firewall makinadaki 3128 portundaki squide yönlendirilecke ve squid daha sonra tekrar http servera göndercektir.
    (Tabi squid için de ayarlar yapılması gerekiyor)

    SQUID başka bir makinada veyada http serverda kurulu ise:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 1.2.3.4:3128

    Burda yukardaki komuta göre değişiklik -j bölümünde REDIRECT yerine DNAT kullanmamız. Redirect sadece local makinadaki bir porta yönlendirme yapabilir ama DNAT yani dest. network. addr. translation ile Paketin IP headırında destination bölümünü değiştirebiliriz.

    Yukardaki ile paralel şekilde burdada http servera gelen istekler, belirttiğimiz IP'deki bilgisayardakı SQUIDe gidecektir.

    Böylece transparent bir proxy kurmuş olduk
    (Tabi ki squid ayarlarının yapılması lazım)

    Böylece http server ile client arasında firewallın dışında birde transparent proxy kurarak güvenlik seviyesini iyice arttırdık..

    Firewallı geçebilen bir şahıs http serverdan önce, squid ile muhattab olmak zorunda olacaktır bu şekilde.

    Ayrıca squid bizim için bir cache proxy olarak da çalışacaktır. Gerekli gördüğünde cachedeki datayı doğrudan kendi gönderecektir.

    Yorumlarınızı, fikirlerinizi bekliyorum


    Daha fazla bilgi icin:

    http://www.linux.org.tr/belgeler/squid/proxy.html

    http://www.google.com/search?hl=tr&...ansparent+proxy&btnG=Google'da+Ara&lr=lang_tr