LINUXZONE






 >> Hlavní stránka

(1751/28.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(312/14.09.2010)


 >> Bezpečnost

(347/17.09.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(98/16.09.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(229/09.09.2010)


 >> Aktuálně

(564/20.09.2010)


 >> RELAX

(213/28.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Coolhousing




Coolhousing - Vas poskytovatel dedikovanych serveru




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 60
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články









 Nejlepší články









 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (17%)

LIDS (11%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (62%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





Pound - reverse-proxy, loadbalancer a ssl wrapper pre webservery.

S nezastaviteľným rozmachom realizácie webových služieb či už prostredníctvom Apachu alebo iného webservera sa často dostávame na hranicu možnosti realizácie týchto služieb jediným hostom. Chtiac či nechtiac narážame na limity, ktoré v single-hostovej architektúre vyžadujú rozdelenie služby na viacero serverov so zachovaním rovnakého obsahu, čím jednoznačne prichádzame k potrebe zabezpečenia systému, ktorý by realizoval distribúciu požiadaviek klientov na viacero cieľových hostov s možnosťou realizácie ostatnými servermi v prípade výpadku ľubovoľného článku.

Celkom zaujímavým projektom umožňujúcim takúto realizáciu, ktorý sa v poslednej dobe objavil, je Pound. Svojou jednoduchosťou, všestrannosťou a jednoduchou konfigurovateľnosťou je vhodný aj pre začiatočníkov, ktorí sa potrebujú s touto problematikou vysporiadať. Dnes si ukážeme, ako jednoduchým spôsobom realizovať implementáciu či už v testovacích alebo prevádzkových podmienkach.

1. Úvod

Pound je Open Source nástrojom z dielní Roberta Segalla, ktorého úlohou je zabezpečovať podporné služby pre webové servery vďaka viacerým možnostiam implementácie. V prvom prípade je možné Pound nakonfigurovať v úlohe revezného proxyservera, ktorého úlohou je odovzdávať požiadavky jednotlivých klientov jednému alebo viacerým backendovým web serverom. Pri nakonfigurovaní viacerých backend serverov je možné nastavením ich priorít zabezpečovať loadbalancing s čiastočnou optimalizáciou realizácie jednotlivých sessions z rovnakého backendového web servera. Jednotlivé požiadavky prechádzajú filtrovacími pravidlami, kde sa zisťuje ich správnosť, čo má za následok sanitáciu požiadaviek s postúpením výhradne správnych požiadaviek na jednotlivé webservery. V prípade výpadku niektorého z backend serverov sa požiadavky klientov plnia iba na serveroch bežiacich s následným zapojením nedostupného servera v prípade jeho opätovnej dispozície. Navyše je možnosť vykonávať ssl wrapper pre webservery, ktoré túto funkciu implementovanú nemajú, alebo z výkonnostných alebo iných limitov túto službu nemajú aktivovanú. Jednotlivé HTTPS požiadavky klientov sú prostredníctvom poundu dekódované a v plaintext HTTP formáte presmerované na cieľový webserver.

2. Inštalácia

Domovská stránka projektu Pound je k dispozícii na adrese http://www.apsis.ch/pound/, kde je v súčasnosti k dispozícii aktuálna verzia s označením Pound-0.6. Pred inštaláciou je potrebné uistiť sa, že na hoste sú k dispozícii knižnice openssl pre zabezpečenie služieb ssl wrapperu. Pustime sa teda do samotnej inštalácie prípravou zdrojového kódu.

wget http://www.apsis.ch/pound/Pound-0.6.tgz
tar xzvf Pound-0.6.tgz
cd pound

Na rad prichádza určenie implicitného umiestnenia konfiguračného súboru. Keďže pre kompiláciu nie je využitý balík automake, bude potrebné uskutočniť modifikáciu ručne editovaním súboru Makefile, v prípade neštandardného umiestnenia ssl knižníc je potrebné takisto práve v tomto kroku špecifikovať ich správne umiestnenie.

Makefile:44: F_CONF=/etc/pound.conf

V ďalšom kroku môžeme pristúpiť k samotnému procesu kompilácie, distribúcie výsledného kompilátu a vytvoreniu prázdneho konfiguračného súboru

make
make install
touch /etc/pound.conf

kde bude po inštalácii typicky umiestnená binárka pound v adresári /usr/local/bin/

3. Generovanie certifikátu

V prípade, že plánujete Pound použiť taktiež v úlohe ssl wrappera pre poskytované služby, v tomto kroku je potrebné vytvoriť si vlastný certifikát, čo dosiahneme jednoduchým spôsobom štandardným použitím openssl s následným vyplnením jednotlivých identifikačných polí jednoduchým dialógom počas generovania.

openssl req -newkey rsa:1024 \
   -keyout /usr/share/ssl/keys/pound.pem \
   -nodes -x509 -days 365 -out /usr/share/ssl/keys/pound.pem

Certifikát máme úspešne pripravený, môžeme sa teda pustiť do ďalších krokov konfigurácie

4. Konfigurácia

Jednotlivé prevádzkové parametre je možné poundu poskytnúť prostredníctvom konfiguračného súboru (v našom prípade /etc/pound.conf), čo nám zabezpečí prehľadnosť. K dispozícii máme celkovo 14 parametrov umožňujúcich špecifikovať jednotlivé atribúty. Pozrime sa teda na ne.

User pound  
Group pound 
RootJail /var/chroot/pound  

Parametrami User a Group špecifikujeme efektívne UID a GID pod ktorými bude Pound spustený. Pre prípad zvýšenia bezpečnosti je možné zabezpečiť chrootovanie tejto služby prostredníctvom parametra RootJail. Nakoľko Pound k svojej práci nepoužíva prístup k filesystému, v mnohých prípadoch nebude potrebné túto možnosť využívať.

ListenHTTP pound.mojhost.cz,80  
ListenHTTPS pound.mojhost.cz,443 
Certificate  /usr/share/ssl/keys/pound.pem  

Jednotlivé porty, na ktorých je služba Poundu aktivovaná, špecifikujeme parametrami ListenHTTP a ListenHTTPS pre plaintext a ssl prevádzku, spravidla to však budú porty 80 a 443 pre tieto služby vyhradené. Je potrebné špecifikovať rozhranie buď jeho IP adresou alebo DNS názvom s príslušným určením portu oddeleným čiarkou. Možno sa pýtate, prečo čiarkou a nie dvojbodkou, svoje rozhodnutie však autor aurgumentoval využitím tohto znaku v Ipv6 adresách, ktoré by mali byť v budúcich verziách podporované. Pre funkciu ssl wrapperu je potrebné špecifikovať umiestnenie certifikátu, ktorý sme si v prípravnom procese vytvorili.

UrlGroup ".*"
 BackEnd webserver1.mojhost.cz,80,1 
 Session 300 
EndGroup
Alive 30

Backendové servery špecifikujeme každý samostatnou direktívou, kde každý jeden záznam je prezentovaný určením hostu a príslušného portu, na ktorom je služba http prevádzkovaná s následným určením priority tretím parametrom, ktorý môže dosahovať hodnoty od 1 do 9. V prípade väčšieho počtu backend webserverov je možné týmto stanoviť politiku ich vyťaženia. V prípade nedostupnosti niektorého z backend serverov zlyhaním alebo dočasnou stratou spojenia je v určenom intervale, implicitne 30 sekúnd vykonávaná kontrola jeho dispozície pre opätovné zaradenie do zoznamu aktívnych backend serverov. Jednotlivé backenové definície je potrebné zatriediť v závislosti na REGEXP reťazci URL do skupín, čím je možné samostatne diferenciovať napríklad hosty pre poskytovanie grafických dát, zakázať prístup k cieľu celkovo, alebo týmto spôsobom riešiť situáciu odľahčenia rozloženia prevádzky na viacero serverov s ponechaním dynamického obsahu na serveri jedinom. Parameter Session vyjadruje dĺžku časového úseku, ktorý sa od jediného klienta predpokladá za session. V prípade hodnoty 0 je každá požiadavka samostatným sedením, implicitná hodnota je 300. V prípade že v jednotlivých sekciách nešpecifikujeme backend server, znamená to blokovanie prístupu.

ExtendedHTTP  1 
LogLevel 2 

Sadu podporovaných HTTP príkazov je možné ovplyvniť parametrom ExtendedHTTP. V prípade hodnoty 0 sú podporované iba príkazy štandardu HTTP 1.0, ako GET/POST/HEAD, v prípade hodnoty 1 sú povolené aj rozšírené príkazy ako napríklad DELETE/PUT. Logovanie prebieha prostredníctvom služieb syslogu, kde sú zaznamenávané jednotlivé udalosti. V prípade hodnoty 0 parametra LogLevel sa zapisujú výhradne informácie o spustení a ukončení daemonu, v prípade hodnoty 1 sú zapisované aj jednotlivé požiadavky. Možné je zápis rozšíriť aj o zobrazenie backendového servera parametrom 2. Jednotlivé záznamy vyzerajú nasledovne:

http 111.111.111.111 GET /a.htm HTTP/1.0 - HTTP/1.1 200 OK \
   (192.168.1.12:80) 

Za určením klienta nasleduje požiadavka s určením verzie HTTP požiadavky klienta, ktorá je postúpená HTTP požiadavkou vo verzii servera s návratovým kódom s určením príslušného backend hostu.

Konfiguračné parametre máme za sebou, môžeme si ukázať typické spôsoby implementácie.

5. Implementácia

V prvom prípade konfigurácia predstavuje klasický ssl wrapper s reverzným proxy s jediným backend serverom. Pound v tomto prípade plní výhradne úlohu ssl wrappera so sanitizerom jednotlivých HTTP požiadaviek klientov.

ListenHTTPS 111.111.111.111,443
Certificate /usr/share/ssl/keys/pound.pem
UrlGroup ".*"
 BackEnd 192.168.0.10,80,1
 Session 400	
EndGroup

Nasledujúca konfigurácia ukazuje použitie Poundu v úlohe loadbalancera s troma backend servermi s rôznymi prioritami s intervalom kontroly opätovnej dostupnosti 20 sekúnd

ListenHTTP 111.111.111.11,80
Alive 20
User pound
Group pound
RootJail /var/chroot/pound
UrlGroup ".*"
 BackEnd 192.168.0.1,80,1
 BackEnd 192.168.0.2,80,1
 BackEnd 192.168.0.5,80,2
EndGroup

Samozrejme tieto konfigurácie je možné zlúčiť do jedinej, kde dostávame kombinovanú funkčnosť všetkých ponúkaných služieb s diferenciáciou cieľových backenserverov pre jednotlivé služby s možnosťou zákazu prístupu na špecifikované ciele. Dynamický obsah zostáva na jedinom serveri.

ListenHTTPS 111.111.111.111,443
Certificate /usr/share/ssl/keys/pound.pem
ListenHTTP 111.111.111.11,80
Alive 20
User pound
Group pound
RootJail /var/chroot/pound
UrlGroup ".*.(png|jpg|jpeg|gif|)"
 BackEnd 192.168.0.1,80,5
 Session 0
EndGroup
UrlGroup ".*.(php|php3)"
 BackEnd 192.168.0.10,80,5
 Session 600
EndGroup
UrlGroup ".*.zakazane.*"
 Session 0
EndGroup
UrlGroup ".*"
 BackEnd 192.168.0.1,80,1
 BackEnd 192.168.0.2,80,1
 BackEnd 192.168.0.5,80,2
 Session 300
EndGroup

Po finalizácii konfigurácie a otestovaní postačí zabezpečiť automatické spúšťanie poundu modifikovaním inicializačných skriptov, napríklad /etc/rc.d/rc.local

6. Záver

Pound je výkonným prostriedkom zabezpečujúcim rozšírenie zabezpečenia webových služieb ľubovoľných webserverov, či už v homogénnom alebo heterogénnom prostredí. Svojim priamočiarym prístupom s jednoduchou konfigurovateľnosť je vhodný nielen pre pokročilých užívateľov, ale aj pre začiatočníkov, ktorí jeho konfiguráciu jednoducho zvládnu. Vhodný je na implementáciu do všetkých prostredí, kde by boli alternatívne riešenia príliš "veľkým kalibrom"...

Autor: Milan Gigel, 22. 07. 2002, 00:00
Sekce Síťování, Komentářů: 0
Průměrné hodnocení: 0,23

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře







PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama