[linux-programlama] control panel

---------

From: Php (php@kakalak.org)
Date: Sun 16 Feb 2003 - 13:12:14 EET

  • Next message: Appak Han: "[linux-programlama] Squid.log analizi..."

    Merhaba,

    Guvenlikle ilgili bir sorum olacak. Belki programlamaya da
    girebilir bu soru :)

    Production web serverlar uzerinde kullanilmak uzere
    bir kontrol panel hazirladim. Mantik olarak soyle calisiyor:

    1. pgsql uzerinde sadece tek kullanici tarafindan gorulebilecek
    sekilde konfigure edilmis bir veritabani var.

    2. Bu veritabani uzerinde yapisi kabaca
    COMMAND
    PARAMETER1
    PARAMETER2
    ...
    seklinde bir tablo var (diger tablolar kullanicilar/domainler
    ile ilgili kurulum bilgilerini iceriyor)

    3. ssl arkasindaki bir php script ile kullanici islemlerini
    yaptiriyorum ve yeni kullanici acilmasi, domain acilmasi
    silinmesi, parola degistirilmesi gibi islemleri buraya
    daha onceden belirledigim sayisal opcode'lar ile yaziyorum.

    4. Server uzerinde daemon olarak calisan bir php script
    daha var. Bu script 3-4 saniyede bir veritabanini
    kontrol ediyor, eger yeni bir COMMAND eklenmisse
    geregini yapiyor ve konfigurasyon dosyalarina yansitiyor.

    ---------------
    bu sistemin muhtemel zayifliklarini soyle cikardim:
    --------------

    a. User authentication: useri cok iyi tanimak ve
    session stealing gibi basit metodlara pabuc
    birakmamak gerekiyor. Bu konuda php/apache/ssl
    uclusune guveniyorum. Bu konuda yazilmis
    ornek scriptleri ve dokumantasyonu bolca okudum.
    Oradan sorun cikacagini sanmam

    b. Veritabanina baska turlu ulasim: pgsql sadece
    localhost'a bagli. Ve tanimladigim veritabanina
    sadece tek kullanici ulasabiliyor. Ayrica super
    user sifresini gizli tutuyorum ve herhangi bir
    script icinde kullanmiyorum.

    c. Veritabanina bogus command yazdirma:
    her seviyede, gerek client gerek daemon tarafinda
    gelen opcode'u kati bir switch statement icerisinden
    geciriyorum. Veritabanindan gelen hicbir string
    asla dogrudan baska bir sql, eval ya da exec
    icinde kullanilmiyor. Gerek veritabanina gonderirken
    gerek retrieve ederken add_slashes ve buffer uzunlugu
    kontrollerini yapiyorum. Silinecek userlerin
    belirli bir gruba ait olup olmadigina bakiyorum.

    d. daemon olarak calisan script modification:
    daemon olacak calisan script tum ftp tree'lerinin
    disinda. owner'i root ve sadece 0400

    e. yetkili user olusturma:
    yeni acilan tum kullanicilar belli bir gruba otomatikman
    baglaniyor. Ve bu grup proftpd ile belli bir tree icine
    hapsediliyor. Ayrica shell olarak /bin/false veriyorum

    f. client php scripti yine herkesin ftp agacinin disinda
    ayri bir ssl virtual host olarak tanimli. Diger
    dosyalarin aksine owner'i apache ve sadece
    "0400" set edilmis durumda.

    Bunlar haricinde dikkat etmem gereken baska
    nokta var mi? Cunku bu script user ekleme/silme
    ftp sifresi degistirme, name server cfg
    dosyalarina dogrudan erisim gibi onemli
    isler yapiyor.

    Saygilar.


  • Next message: Appak Han: "[linux-programlama] Squid.log analizi..."

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.