MikoAndras.hu

Mikó András

Squid autentikációs modul

A squid egy gyorstárral ellátott web-proxy, ami támogatja többek között a HTTP, HTTPS, FTP protokollokat. Csökkenti a sávszélesség-igényt és javítja a válaszidőket a gyakran látogatott oldalak újraküldésével. Kiterjedt hozzáférés-kezeléssel rendelkezik, ezért jó szerver-optimalizáló tényező. A legtöbb elérhető operációs rendszeren fut, beleértve a Windows-t és GNU GPL licensszel rendelkezik.

Moduláris felépítésű, és nagyon egyszerű felületet alkalmaz a segédekkel való kommunikációra.

Az egyik feladatom az volt, hogy egy squid képes legyen hozzáférési adatokat olvasni egy postfixadmin-nal létrehozott adatbázisból. Ezt az eszközt rendszergazdák használják postfix-on tárolt levelesládák beállítására.

A feladat nem lett volna nehéz, ha lett volna alkalmas squid-modul. Szerencsétlenségemre, de a biztonságosság szerencséjére, a postfixadmin md5crypt algoritmust használ a jelszavak adatbázisban való tárolására. Ezt a FreeBSD-nél fejlesztették ki, és a unix crypt(3) funkciót váltotta ki sok modern rendszerben. És a squid-ben nem szerepelt támogatás. Azt is meg kell említenem, hogy alapértelmezett támogatás az adatbázisból való azonosításra sem szerepel.

A megoldásom egy korábbi segédre – a mysql_auth-ra – épül, amit Hegedűs Ervin készített.

Ahogy a név is mutatja, ezzel lehetővé válik mysql adatbázis használata azonosítási célra. A jelszavak tárolása egyszerű szövegként vagy a mysql-ben beépített password() funkció által generált formában lehetséges. A szükséges módosítás a meglévő képességek kibővítése az md5crypt funkció támogatásával, és egy erőbedobással az md5-tel is.

A project a freshmeat.net szerverein van, az én oldalamról elérhető a legutóbbi napló (angolul), a modul módosított honlapja, mint ahogy a 0.8.6-os verzió forráskódja.

Eddigi verzióim:

Ha csodálkoznál, miként tudtam módosítani egy C-ben megírt modult webfejlesztő létemre, a fő indokaim:

  • A squid olyan egyszerű felületen kommunikál a segédekkel, amilyenen csak lehet
  • A PHP nyelv a C-ből származik, ezért sok helyen csak szintaktikai különbség van
  • Kaptam segítséget barátoktól, hogy milyen eszközökkel teszteljem a lefordított modult
  • Végül, de nem utolsó sorban, a squid-dev [at] squid-cache [dot] org levelezőlista igencsak aktív közreműködése

Egyszerű kommunikáció:

Minden squid-segéd egy végtelen ciklus. Készakarva. Ha szükség van egy segédre, a squid indít egyet, majd a felé használt csatornát elmenti. Amennyiben egy segéd lehal, a squid egyszerűen indít egy újat.

Egy autentikációs modul tesztelésére a legjobb módszer, ha indítunk egyet parancssorban. Szóközzel elválasztott felhasználónév jelszó párossal kell etetni, melynek ellenőrzése után ERR-t vagy OK-t kell visszaadnia a kimeneten. Ennél egyszerűbb már nem is lehet, mivel nincs utólagos ellenőrzés arra vonatkozóan, hogy mi nem stimmel, a squid-et csak annyi érdekli, hogy a pár érvényes vagy sem.

Szintaktikai különbségek:

PHP szintaktikája sok tekintetben ugyanaz, mint a C, a mögöttes logika azonban már nem.

Segítő barátok:

Sok segítséget kaptam barátoktól a fejlesztés során. Az első egy tényleges produktív-teszt környezet használatához való hozzáférés volt, telepített squid-del. Ez elengedhetetlen volt a használható kód készítéséhez. A második a kód-felülvizsgálatok voltak, ezek biztosítottak arról, hogy nem esem a rossz megszokások hibáiba.

Squid fejlesztői levelezőlista:

A levelezőlista tagjai nagyon segítőkészek voltak az első alkalomtól kezdve, és azóta is. Egy remek közösség, egy remek alkalmazás fejlesztéséhez.

A fejlesztés során debian etch rendszert használtam, vim-et a kódszerkesztéhez és valgrind-et a lefordított modul teszteléséhez.

, , , ,

Comments are currently closed.