Kiszolgálók üzemeltetése Iványi Péter
HTTP • FTP (File Transzfer Protokoll) – Információ csere két gép között, TCP/IP-t használva – Nemt úl könnyű, egyszerűbb módszer kellett az információ megosztásra • Kiegészítés: Archie, Gopher, WAIS
• 1990-1992 – CERN (European Central for High-Energy Physics) • Eredeti HTTP implementáció
– A felhasználó a szerver file-jait kéri le • Célja: szöveges adatok egyszerű továbbítása
HTTP • 1993 – National Centre for Super-Computing Applications (NCSA) • • • •
Követi az ötletet, nem csak szöveget akarnak továbbítani MOSAIC, első web browser HTML (Hyper Text Markup Language)
HTTP Szerver • HTTP szerver specifikációja – CERN is definiálta – NCSA is definiálta – Mind a kettő „public domain” és szabad specifikáció
Apache szerver • NCSA specifikációt használja • 1994-ben az NCSA nem kezeli tovább a specifikációt – Felhasználók informális csoportja megosztja egymással a fejlesztéseket, javításokat
• „A Patchy” szerver – Később: Apache szerver
• Formális szervezetté alakult később: – Apache Server Project (www.apache.org)
Apache szerver • Nyílt forráskódú – Biztonságosabb (!?)
• Sok szolgáltatása van a szervernek • Hatalmas installációs bázis (kétszer több gépen van installálva mint a következő web szerver)
Windows és Linux Web szerver
HTTP működése • A kliens (Mozilla, Internet Explorer, stb) kérést intéz a szerver 80-as portjához – URL segítségével (Uniform Resource Locator)
• A szerver a 80-as porton hallgatózik és – fogadja a kérést, – egy új proceszust indít,
• Az új processzus – Ellenőrzi, hogy a konfiguráció szerint engedélyezett-e a kérés
HTTP működése • Ha nem engedélyezett a kérés – Hibaüzenetet küld vissza
• Ha engedélyezett a kérés – Beolvassa file-t – Visszaküldi a tartalmát a kliensnek – A processzust felszabadul, további kéréseket tud kiszolgálni
• A kliens fogadja a visszaküldött információt
Mit lehet küldeni? • • • • • •
Szöveget Képet Hangot Videot Könyvtár listát Futtatható kódot
URL http://www.ibm.com/docs/internal/fizetesek.dat • Protokoll • Web szerver neve • File elérési útvonal
Mi itt a probléma?
A biztonság
URL //<user>:<password>@
:<port>/ • RFC 1738 szerint – Bármelyik vagy mind elhagyható – A két per jel (//) azt jelenti hogy igazodik az általános Internet sémához
Biztonság • Amit a HTTP szerver elérhet – File rendszer biztonsági szint – Konfigurációs beállítás
Szerver státusz kód • Miután a szerver megkapta a teljes kérést, a szerver visszaküld egy státusz kódot • 100 sorozat – Információs üzenetek
• 200 sorozat – A kliens kérése sikeresen befejeződött
• 300 sorozat – A kérés át lett irányítva
• 400 sorozat – Hiba volt a kliens oldalán
• 500 sorozat – Hiba volt a szerver oldalán
Metódusok • Megadja, hogy a kért objektumon milyen műveletet hajtsunk végre • GET: az objektum lekérése • HEAD: az objektumhoz tartozó fejléc lekérése • POST: a kérésben levő input adat elküldése a szervernek • PUT: létrehozza, megváltoztatja a file-t a szerveren
Metódusok • • • •
DELETE: eltávolítja a kért objektumot OPTIONS: információt kér a kommunikációról TRACE: debuggoláshoz használható CONNECT: SSL Tunneling-re használható
• A biztonság miatt mindig figyelembe kell venni mely metódusokat engedélyezzük!!!
URL ismét • Tehát a következő kérés után http://www.butterthlies.com/
• A szerver 80-as portjára a következő érkezik GET / HTTP/1.1 Host: www.butterthlies.com
Apache
Apache • httpd program • conf – Konfigurációs file-ok
• htdocs – HTML file-ok, web oldalak
• logs – Log file-ok, bejegyzések
• cgi-bin – CGI scriptek, programok vagy shell scriptek
Apache futtatása • Ne root és ne nobody-ként futtassuk • Legyen saját felhasználója • Például: – groupadd webuser – useradd -g webuser webuser
• Ne lehessen ilyen felhasználóként belépni • Csak azokat a file-okat birtokolja, amik a külvilág számára is olvasható
Apache konfigurálás • • • •
Igen komplex konfigurációs file-t lehet létrehozni Ilyen komplex file installálódik fel NE EZT módosítsuk!!! Kezdjük az elejéről, és úgy építsük fel a file-t!
httpd.conf .htaccess
Apache konfigurálás • User és csoport beállítása: User webuser Group webuser
• Apache szervert futtató gép neve: Servername valami.domain.hu
• Web site, file-ok helye DocumentRoot /usr/share/htdocs
• Konfigurációs és log file-ok helye ServerRoot /usr/share/
Apache konfigurálás • Hiba bejegyzések helye ErrorLog error.log
• Kérések rögzítése TransferLog
access.log
• Futó szerver processzusának azonosítója PidFile
apache.pid
• Milyen porton várja a szerver a kéréseket? Listen
80
Apache alap ServerName www.index.hu Listen 80 User webuser Group webuser DocumentRoot /usr/local/www/site/htdocs ServerRoot /usr/local/www/site/ TransferLog /usr/local/www/site/logs/access.log ErrorLog /usr/local/www/site/logs/error.log PidFile /usr/local/www/site/logs/httpd.pid
Konfigurációs file • Két fő rész – Értékadó direktívák – Csoportosító (container) direktívák
• Azt határozzák meg, hogy az Apache hogyan működjön • Kb. 150 lehetőség
Direktívák • Szintakszis: direktíva
argumentum
• Direktíva: kis- és nagybetű nem számít • Argumentum: érzékeny kis- és nagybetűre
Container • A konfigurációs file-t szervezi, felosztja • Szintakszisa:
• Tartalmaz további direktívákat
Kontextusok • Mire vonatkozik a beállítás? – A kontextustól függőek a beállítások – Bizonyos beállítások csak a Szerver szinten működnek – Szerver • Globális beállítások
– Könyvtár – Virtuális host – htaccess
/ docs private
Listen 9.243.1.34:8080 DocumentRoot /www/jcvapsvr/htdocs DefaultType text/plain HostNameLookups Off DirectoryIndex index.html Options FollowSynLinks AllowOverride None order allow, deny allow from all order deny, allow deny from all allow from 9.19.0.0/255.255.0.0
http://myserver/docs/private/fizetes.dat
Hozzáférés megtagadva a könyvtárhoz és minden alkönyvtárhoz!
De vannak további Directory bejegyzések
Listen 9.243.1.34:8080 DocumentRoot /www/jcvapsvr/htdocs DefaultType text/plain HostNameLookups Off DirectoryIndex index.html Options FollowSynLinks AllowOverride None order allow, deny allow from all order deny, allow deny from all allow from 9.19.0.0/255.255.0.0
http://myserver/docs/private/fizetes.dat
A docs könyvtárhoz és alkönyvtárakhoz teljes hozzáférés!!!
Listen 9.243.1.34:8080 DocumentRoot /www/jcvapsvr/htdocs DefaultType text/plain HostNameLookups Off DirectoryIndex index.html Options FollowSynLinks AllowOverride None order allow, deny allow from all order deny, allow deny from all allow from 9.19.0.0/255.255.0.0
http://myserver/docs/private/fizetes.dat
Csak korlátozott hozzáférés, bizonyos IP címekről
Listen 9.243.1.34:8080 DocumentRoot /www/jcvapsvr/htdocs DefaultType text/plain HostNameLookups Off DirectoryIndex index.html Options FollowSynLinks AllowOverride None order allow, deny allow from all order deny, allow deny from all allow from 9.19.0.0/255.255.0.0
http://myserver/docs/private/fizetes.dat Options FollowSynLinks AllowOverride None
http://myserver/docs/private/fizetes.dat Options FollowSynLinks AllowOverride None order allow, deny allow from all
http://myserver/docs/private/fizetes.dat
Összfűződnek a direktívák - Az alkönyvtárak direktívái felülírják a fő könyvtár értékeit - Ha két direktíva is vonatkozik egy könyvtárra az utólsó az érvényes
Options FollowSynLinks AllowOverride None order allow, deny allow from all order deny, allow deny from all allow from 9.19.0.0/255.255.0.0
Javaslatok • szekció – Csak akkor használjuk, ha nagyon kell
• szekció – Csak akkor használjuk, ha nagyon kell
• szekcióval szinte minden megoldható – Lehetőleg minimális számú szekció legyen – .htaccess file-t csak akkor használjuk ha megosztott konfigurációt akarunk • Ugyanazon az útvonalon ne használjuk /www/.htaccess /www/html/.htaccess
Hibakezelés • Hiba esetén mi történjen, mi jelenjen meg ErrorDocument error-code "document" ErrorDocument 500 http://foo.example.com/cgi-bin/tester ErrorDocument 404 /cgi-bin/bad_urls.pl ErrorDocument 401 /subscription_info.html ErrorDocument 403 "Sorry can't allow you access today"
Modulok • Az Apache szerver alap funkcionalitását kiegészítő elemek – Hozzáad olyan funkciókat amelyek az alap rendszernek nem részei – Például: • SSL: Secure Sockets Layer
• Modul hozzáadásával a konfigurációs file-ba direktívák is kerülhetnek
Handler • Egy végrehajtandó akció (tevékenység) belső Apache reprezentációja – Akció amit egy file esetén végre kell hajtani – Alap esetben a file-okat visszaküldjük, de speciális esetben a file-t kezelni (handle) kell
• Példa: – html file-ok esetén a footer.pl script fut le Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html
Amikor az üzlet beindul • Több web site-ra volna szükség • Például – Marketing – Vevők web oldala – Stb.
• Megoldások – Egy Apache szerver, több virtuális site – Több Apache szerver, mindegyiken egy web site
Név alapú Virtual Host • A preferált módszer • A neveknek regisztráltnak kell lennie • A NameVirtualHost a kulcs direktíva, vagyis az IP cím nevek alapján lesz felosztva
NameVirtualHost 192.168.123.2 ServerName www.butterthlies.com ServerAdmin [email protected] DocumentRoot /var/www/htdocs/vevok ErrorLog /var/www/logs/error_log ServerName sales.butterthlies.com ServerAdmin [email protected] DocumentRoot /var/www/htdocs/sales ErrorLog /var/www/logs/error_log
Ezt küldi vissza a szerver
NameVirtualHost • Port is megadható • Szerver szintű konfiguráció • A ServerName direktíva által megadott nevet küldi vissza
IP cím alapú Virtual host ServerName www.butterthlies.com ServerAdmin [email protected] DocumentRoot /var/www/htdocs/vevok ErrorLog /var/www/logs/error_log ServerName sales.butterthlies.com ServerAdmin [email protected] DocumentRoot /var/www/htdocs/sales ErrorLog /var/www/logs/error_log
Virtual host • A név alapú és IP cím alapú virtuális hosztok keverhetők • Port alapú is lehet ServerName www.butterthlies.com ... ServerName sales.butterthlies.com ...
Autentikáció • Azonosítás elvileg egyszerű – Kliens elküldi az URL-t – A szerver visszaküldi • "Authentication Required" (code 401) • realm
– Kliens • Ellenőrzi, hogy létezik-e a realm-ben a név és jelszó • Ha nem, bekéri a felhasználót és jelszót
– A kliens elküldi a felhasználó nevet és jelszót az Apache-nak – Az Apache ellenőrzi • hozzáfér-e a dokumentumhoz
Autentikáció • A név és jelszó páros egy „valóságban” (realm) érvényes • Nincs titkosítás, egyszerű szövegként küld mindent – SSL egy megoldás
• Felhasználók és csoportok is vannak
Példa AuthType Basic realm AuthName darkness AuthUserFile /usr/www/APACHE3/ok_users/sales AuthGroupFile /usr/www/APACHE3/ok_users/groups require valid-user Csoportok és a hozzátartozó felhasználók Könnyű elgépelni!!!!
direktorok:
bill joe ben
Jelszavak • htpasswd program • File: bill:$1$Pd$E5BY74CgGStbs.L/fsoEU0 ben:$1$/S$hCyzbA05Fu4CAlFK4SxIs0
• Titkosít – crypt – MD5
• Sajnos Windows alatt nincs titkosítás
allow – Engedi a file-hoz, könyvtárhoz való hozzáférést – Szintakszis: allow from host host – Directory-ba vagy .htaccess-ba kerülhet – Példa: allow from all allow from 192.168.56.111 allow from 192.168.56.0/255.255.255.0
deny – Tíltja a file-hoz, könyvtárhoz való hozzáférést – Szintakszis: deny from host host – Directory-ba vagy .htaccess-ba kerülhet – Példa: deny from all deny from 192.168.56.111 deny from 192.168.56.0/255.255.255.0
Order allow, deny • Először minden allow direktívát kiértékelünk – Legalább az egyiknek igaznak kell lennie vagy a kérést elutasítja a szerver
• Ezután a deny direktívákat értékeli ki – Ha van illeszkedés akkor a kérést elutasítja a szerver
• Ha egy kérés egyikre sem illeszkedik, akkor automatikusan elutasítja a kérést a szerver
Order deny, allow • Először a deny direktívákat értékeljük ki – Ha van egyezés akkor elutasítjuk, kivéve ha illeszkedik az allow szekcióban levő direktívára
• Ha a kérés nem illeszkedik sem a deny, sem az allow direktívákra, akkor a kérés engedélyezett
Order, allow, deny Order: megváltoztathatja a hozzáférést Order deny,allow
.htaccess • Konfigurációs file-ban történő beállítás miatt mindig újra kell indítani a szervert • .htaccess – Újraindítás nélkül lehet a hozzáférést kontrollálni – Minden hozzáférés során beolvasásra kerül
• Melyik file tartalmazza a beállításokat? AccessFileName .myaccess
.htaccess • Kérés: /usr/www/APACHE3/site/htdocs/salesmen/index.html
• Keresési sorrend: /.myaccess /usr/.myaccess /usr/www/APACHE3/.myaccess /usr/www/APACHE3/site/.myaccess /usr/www/APACHE3/site/htdocs/.myaccess /usr/www/APACHE3/site/htdocs/salesmen/.myaccess
.htaccess • A sok keresés lassítja a hozzáférést • Gyorsítás például AllowOverride none
• Nem engedi hogy a .htaccess file felülírjon korábbi definíciókat
MIME • MIME – Multipurpose Internet Mail Extension
• mod_mime.c Module biztosítja – Alap esetben a kiterjesztésből tudja a típust
• DefaultType – Alap esetben milyen dokumentumnak értelmezze a visszaküldött adatot