Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Unix a Internet 7. Webový server

Podobné prezentace


Prezentace na téma: "Unix a Internet 7. Webový server"— Transkript prezentace:

1 Unix a Internet 7. Webový server
Obsah: WWW, webový server, URI (URL+URN) HTTP protokol (GET, POST) HTTPS, SNI přesměrování, virtuální servery dynamické stránky, skriptování, CGI Apache, reverzní proxy © Milan Keršláger

2 WWW server Tim Berners-Lee (1989)
laboratoře CERN – návrh hypertextového systému 1990 – první klient a server klient WorldWideWeb, později nazván Nexus zobrazuje stránky používá tehdy nový HTTP protokol serverová část – CERN httpd odešle na požadavek klientovi data nejprve se lavinovitě rozšířil Gopher od roku 1995 již WWW

3 WWW World Wide Web dnes označení pro službu
původně název prvního webového prohlížeče Nexus „celosvětová pavučina“ používá model klient-server klient – používán uživatelem server – dodává klientovi vyžádaná data dokumenty identifikovány pomocí URI komunikace protokolem HTTP metody HTTP protokolu: GET, POST, HEAD, ...

4 URI (1) Uniform Resource Identifier
jednoznačná identifikace dokumentu v Internetu skládá se z URL a URN URL (Uniform Resource Locator) schéma a doménové jméno: URN (Uniform Resource Name) cesta a další parametry: /over/there/index.dtb?type=animal&name=n arwhal#nose

5 URI (2) schéma – definuje jméno, typ a další formu zbytku URI
schéma – definuje jméno, typ a další formu zbytku URI login:heslo – umožňuje autentizaci typicky se nepoužívá (vynechává se) doména – doménové jméno port – číslo portu implicitně je http, tj. 80, https je 443, ftp je 21 atd. path – cesta k dokumentu adresáře, název souboru query – umožňuje předat stránce data (metoda GET) anchor – značka uvnitř stránky, kam se nastavit

6 HTTP Hypertext Transfer Protocol
verze 0.9 (původní), 1.0 a 1.1 (aktuální RFC 2616) GET / HTTP/1.0 Host: za GET je URN cesta k souboru, název, parametry vždy alespoň lomítko (hlavní stránka) ukončení prázdným řádkem odpověď hlavička a vlastní data pro popis obsahu dat využívá MIME typy

7 Metody HTTP způsoby získání odpovědi GET
běžné získání stránky, součástí jen hlavička parametry součástí URN (omezení max. délkou) POST součástí dotazu je i tělo, ve kterém mohou být data data označena MIME typem (jako odpovědi) HEAD jako GET, ale není odesláno tělo PUT, DELETE, TRACE – typicky nepodporováno

8 Nejnutnější komunikace
GET / HTTP/1.0 Host: HTTP/ OK Content-Type: text/html Obsah HTML stránky Dotaz klienta Odpověď serveru: hlavička tělo dokumentu Poznámka: horizontálním oddělovačem je prázdný řádek (Enter bez znaku)

9 Hlavička odpovědi každá položka má vlastní řádek
některé definované položky HTTP/ OK Content-Type Date Server Cache-Control uživatelské položky začínají na X-

10 Záznam HTTP přenosu telnet www.pslib.cz 80 Trying 10.200.0.18...
Connected to Escape character is '^]'. GET / HTTP/1.0 Host: HTTP/ OK Date: Wed, 22 Sep :46:10 GMT Server: Apache/2.2.3 (CentOS) X-Powered-By: PHP/5.1.6 Set-Cookie: PHPSESSID=g0ml14v2g4ss7sli2m69gsmhm4; path=/ Expires: Thu, 19 Nov :52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Connection: close Content-Type: text/html ...obsah HTML dokumentu (v prohlížeči „zobrazit zdrojový kód“)

11 HTTPS HTTP Secure zabezpečený HTTP přenos používá standardně port 443
vložena transparentní SSL/TLS mezivrstva šifrování/dešifrování je prováděno transparentně prohlížeč → HTTP → zašif. → přenos → dešif. → webový server z hlediska aplikace/serveru je komunikace stejná využití asymetrické šifry a elektronického podpisu protistrana může prokázat svoji identitu obvykle ji prokazuje server, ale může i klient přenos důvěry od certifikační autority na protistranu

12 Využití HTTPS SSL/TLS zajišťuje: privátnost
odposlechnutá data není možné přečíst využíváme šifrování a obtížnosti kryptoanalýzy integritu s daty nebylo při přenosu manipulováno tj. lze detekovat změnu dat při přenosu autenticitu lze určit, od koho zpráva pochází využití principu přenosu důvěry

13 SSL/TLS SSL (Secure Sockets Layer)
původní protokol (Netscape, v2.0 v roce 1995) verze 3.0 v roce 1996 odstraněny bezpečnostní problémy návrhu a impl. TLS (Transport Layer Security) TLS 1.0 (1999), RFC 2246 (vlastně SSL 3.1) útok BEAST (2005), exploit (2011) na šifru CBC TLS 1.1 (2006), RFC 4346 (vlastně SSL 3.2) řeší zranitelnost šifry CBC TLS 1.2 (2008), RFC 5246 (vlastně SSL 3.3) MD5-SHA1 nahrazeno → SHA256

14 Ruční použití SSL/TLS openssl s_client -ign_eof -crlf -connect Trying Connected to Escape character is '^]'. GET / HTTP/1.0 Host: HTTP/ OK Date: Wed, 22 Sep :46:10 GMT Server: Apache/2.2.3 (CentOS) X-Powered-By: PHP/5.1.6 Set-Cookie: PHPSESSID=g0ml14v2g4ss7sli2m69gsmhm4; path=/ Expires: Thu, 19 Nov :52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Connection: close Content-Type: text/html ...obsah HTML dokumentu (v prohlížeči „zobrazit zdrojový kód“)

15 SNI Server Name Indication problém virtuálních serverů a HTTPS
server se prokazuje certifikátem šifrování zahájeno ihned po navázání spojení certifikát obsahuje jméno serveru ( název serveru je však sdělen serveru později položka Host: v protokolu HTTP/1.0 SNI umožňuje sdělit jméno serveru dříve tj. ještě před výměnou certifikátů podpora ve všech prohlížečů, nyní i pro servery SNI je rozšíření TLS protokolu

16 Aliasy vlastnost webového serveru
normálně URN odpovídá adresářům u serveru alias umožňuje mapovat URN na odlišná umístění skrývá interní adresářovou strukturu u serveru výhodné pro „hezká“ URN SEO optimalizace orientace uživatele (kategorie zboží) umožňuje udělat z URN parametr vyvolání zdání, že obsah jsou statické stránky omezuje riziko manipulace s parametry URN

17 Přesměrování server přenese klienta na jiné URI
v hlavičce je klientovi předáno nové URI HTTP/ Moved Permanently Location: klient přepíše sám sobě adresu v adresním řádku „automatické přenesení na novou adresu“ různé důvody: změna adresy, změna URN struktury atd. též kódy 300, 302, 303, 307

18 Virtuální servery více webových serverů na 1 IP adrese
potíž v tom, že v GET, POST je jen URN klient přeloží jméno na IP adresu a webový server netuší, z jakého to bylo jména řeší HTTP 1.0 → má v požadavku položku Host: webový server se tak dozví URL (doménové jméno) dnes jsou virtuální servery běžné proto nelze používat HTTP 0.9 každý virtuál má svoje vlastní nastavení jiný kořenový adresář, logy, aliasy atd.

19 Statické stránky nejjednodušší obsah webového serveru
stránka je na disku v souboru server stránku beze změny pošle klientovi snadné dosažení vysokého výkonu omezením pouze rychlostí sítě a souborového systému pro snížení režie je podpora v jádře OS využití systémového volání sendfile() webserver jako jaderný modul (TUX web server) vynechání kopírování dat z page cache do userspace ale je to nebezpečné → lighttpd

20 Dynamické stránky stránka generována podle požadavku klienta
podle aktuálního obsahu databáze titulní stránka internetových novin podle zadání klienta požadavek předán jako URN, parametr v GET či POST server musí spustit nějaký program předání parametrů programu skrze CGI rozhraní výstup programu odeslán klientovi dříve samostatné programy dnes skriptovací jazyky, servlety

21 Webový formulář vytvářen prvky HTML jazyka
<FORM ACTION=“URI“ METHOD=GET> <INPUT TYPE=TEXT NAME=x> <INPUT TYPE=SUBMIT> </FORM> prohlížeč zobrazí vstupní pole a tlačítko odeslání pomocí Enter nebo kliku na tlačítko na serveru vyvolána stránka dle URL URN?x=vstup vstup z formuláře předán metodou GET serveru nestavová záležitost

22 CGI Common Gateway Interface
předání dat od klienta k programu u serveru typicky z webového formuláře pomocí proměnných prostředí (metoda GET) jako standardní vstup (POST, PUT) program generuje výstup výstup je webová stránka odeslaná klientovi problém vzniku nového programu snadné přetížené webového serveru FastCGI → program běží trvale

23 Skriptování na serveru
využití skriptovacího jazyka výpočet se odehraje na straně serveru nevyžaduje kompilaci do binární podoby interpret však zdržuje (prodleva při startu) pohodlné pro vývojáře většinu bezpečnostních děr způsobí vývojáři typicky nedostatečná kontrola vstupů oblíbené vkládání skriptu do HTML stránky PHP → multiplatformní ASP → Microsoft Windows

24 PHP PHP: Hypertext Preprocesor
skriptovací jazyk pro webové stránky (1995) interpret dostupný jako: externí program (podobně jako Perl, Python, bash, …) modul do serveru syntaxe převzata z Perlu (podobné C, JavaScriptu) <html> <head><title>PHP Test</title></head> <body> <?php echo 'Hello World'; ?> </body> </html>

25 Skriptování u klienta program uvnitř prohlížeče
kód přepraven do klienta ze serveru kód je součástí webové stránky JavaScript standardní součást webových prohlížečů AJAX → implementace asynchronní komunikace Java, Flash, Silverlight, … často bezpečnostní komplikace

26 Cookies klient (prohlížeč) ukládá informace od serveru
při další návštěvě informaci serveru předá obchází se tím nestavovost HTTP protokolu server ví, kdo k němu (opět) přichází tj. klient se může „přihlásit“, zahájit „relaci“ cookies mají: omezenou platnost (pak je klient smaže) platnost omezenu na URI (již nelze bez omezení) využívají se pro „špehování“ volba „do not track“ → výsměch

27 AJAX

28 Apache nejrozšířenější webový server (viz Netcraft)
původně 1993 v NCSA (Illinoiská univerzita) největším konkurentem je MS IIS Microsoft Internet Information Server ve znaku ptačí pero (indiánský symbol) další význam „a patchy server“ (záplatovaný server) open source software (Apache Software Foundation) vlastní OSS licence (Apache License 2.0) modulární struktura mod_ssl, mod_php, mod_python, …

29 Netcraft.com – market share

30 Netcraft.com – top milion share

31 Démon démon je proces běžící na pozadí bez kontaktu s uživatelem
uzavřeny standardní proudy (stdin, stdout, stderr) používá se „double fork“ → rodičem se stane init zprávy do logu → syslog → /var/log/... správce počítače by měl sledovat (používá je i jádro) zajišťuje nějakou službu (ve Windows: services) terminálové přihlášení ze sítě: sshd sdílení souborů (NFS, Samba, …), WWW server, ... spouštění a zastavování démonů pomocí skriptů např.: /etc/init.d/httpd restart skripty používá při startu proces init

32 Logy od Apache záznam činnosti webového serveru
klasický formát (nebo podle proxy) ukázka RHEL, CentOS, Fedora: /var/log/httpd/* loguje se přístup (hit) pro každý dotaz zvlášť logy chyb v separátním souboru další analýza logů rozlišení hitů podle návštěvníků analýzy návštěvnosti → ukázka též Google Analytics, Bing Webmaster... vlastní záznamy si vytvářejí vložením skriptu do stránky

33 Reverzní proxy cache na straně serveru (nginx, Squid, ...)
drží často poptávané stránky v paměti důležité pro dynamický obsah reálně se dynamická stránka generuje jen občas problémy s aktuálností řešeny lépe, než cache v prohlížeči webový server i rev. cache spravuje jeden správce i jiná využití skrytí skutečného webového serveru rozložení zátěže mezi více webových serverů přidání SSL (seznam.cz), komprese obsahu apod.

34 MIME typy Internet media type (dříve MIME typy):
součást MIME standardu (RFC 2822 z roku 2001) původně pro národní znaky a přílohy v e- mailech HTTP protokol používá MIME typy: image/jpeg, image/gif, image/png, … text/plain, text/html, … application/javascript, application/ogg application/octet-stream (univerzální „binární“ typ) application/x-tar, application/x-shockwave- flash audio/mpeg, audio/ogg, …


Stáhnout ppt "Unix a Internet 7. Webový server"

Podobné prezentace


Reklamy Google