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
1993 HTTP 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)
Nyílt forráskódú Biztonságosabb (!?) Apache szerver 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
Szöveget Képet Hangot Videot Könyvtár listát Futtatható kódot Mit lehet küldeni?
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>@<host>:<port>/<url-path> RFC 1738 szerint Bármelyik vagymind 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
httpd program conf Konfigurációs file-ok htdocs Apache 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
Két fő rész Értékadó direktívák Konfigurációs file 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: <container-nev> 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 <Directory /> Options FollowSynLinks AllowOverride None </Directory> <Directory /docs> order allow, deny allow from all </Directory> <Directory /docs/private> order deny, allow deny from all allow from 9.19.0.0/255.255.0.0 </Directory>
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 <Directory /> Options FollowSynLinks AllowOverride None </Directory> <Directory /docs> order allow, deny allow from all </Directory> <Directory /docs/private> order deny, allow deny from all allow from 9.19.0.0/255.255.0.0 </Directory>
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 <Directory /> Options FollowSynLinks AllowOverride None </Directory> <Directory /docs> order allow, deny allow from all </Directory> <Directory /docs/private> order deny, allow deny from all allow from 9.19.0.0/255.255.0.0 </Directory>
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 <Directory /> Options FollowSynLinks AllowOverride None </Directory> <Directory /docs> order allow, deny allow from all </Directory> <Directory /docs/private> order deny, allow deny from all allow from 9.19.0.0/255.255.0.0 </Directory>
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 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 Ö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
<Location> szekció Javaslatok Csak akkor használjuk, ha nagyon kell <Files> szekció Csak akkor használjuk, ha nagyon kell <Directory> 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 <VirtualHost www.butterthlies.com> ServerName www.butterthlies.com ServerAdmin sales@butterthlies.com DocumentRoot /var/www/htdocs/vevok ErrorLog /var/www/logs/error_log </VirtualHost> Ezt küldi vissza a szerver <VirtualHost sales.butterthlies.com> ServerName sales.butterthlies.com ServerAdmin sales@butterthlies.com DocumentRoot /var/www/htdocs/sales ErrorLog /var/www/logs/error_log </VirtualHost>
Port is megadható NameVirtualHost Szerver szintű konfiguráció A ServerName direktíva által megadott nevet küldi vissza
IP cím alapú Virtual host <VirtualHost 192.168.56.101> ServerName www.butterthlies.com ServerAdmin sales@butterthlies.com DocumentRoot /var/www/htdocs/vevok ErrorLog /var/www/logs/error_log </VirtualHost> <VirtualHost 192.168.56.110> ServerName sales.butterthlies.com ServerAdmin sales@butterthlies.com DocumentRoot /var/www/htdocs/sales ErrorLog /var/www/logs/error_log </VirtualHost>
Virtual host A név alapú és IP cím alapú virtuális hosztok keverhetők Port alapú is lehet <VirtualHost 192.168.123.2:80> ServerName www.butterthlies.com... <VirtualHost 192.168.123.2:8080> 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 <Directory /usr/www/apache3/salesmen> AuthType Basic realm AuthName darkness AuthUserFile /usr/www/apache3/ok_users/sales AuthGroupFile /usr/www/apache3/ok_users/groups require valid-user </Directory> Csoportok és a hozzátartozó felhasználók Könnyű elgépelni!!!! direktorok: bill joe ben
htpasswd program File: Jelszavak 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 <Directory /> AllowOverride none </Directory> 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