Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch...

23
Allgemeines Protokollbeschreibung Proxyketten Siehe auch Hypertext Transfer Protocol Ingo Blechschmidt <[email protected]> LUGA 6. Juli 2005 Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Transcript of Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch...

Page 1: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Hypertext Transfer Protocol

Ingo Blechschmidt<[email protected]>

LUGA

6. Juli 2005

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 2: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Inhalt

1 AllgemeinesGeschichteVerwendung von HTTP

2 ProtokollbeschreibungTypischer AblaufRequest-MethodenHeader-FelderKeep-Alive

3 ProxykettenNutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

4 Siehe auchIngo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 3: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

GeschichteVerwendung von HTTP

Geschichte

Erster RFC fur HTTP/1.0: RFC 1945, Mai 1996

Erster RFC fur HTTP/1.1: RFC 2616, Juni 1999

Viele weitere RFC bis jetzt

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 4: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

GeschichteVerwendung von HTTP

Verwendung von HTTP

World Wide Web (inkl. Web Services)

Aufbauend:WebDAV (WWW Distributed Authoring and Versioning),Subversion (Versionskontrollsystem)

Ahnlich: SIP (Session Initiation Protocol) u.a. fur VoIP

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 5: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Typischer Ablauf

Wunsch: http://www.pro-linux.de/berichte/Also Verbindung zu www.pro-linux.de:80 per TCP:GET /berichte/ HTTP/1.1Host: www.pro-linux.deConnection: close

HTTP/1.1 200 OKDate: Mon, 04 Jul 2005 18:17:33 GMTServer: ApacheLast-Modified: Sun, 10 Apr 2005 21:20:54 GMTContent-Length: 10883Content-Type: text/html

<!DOCTYPE html[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 6: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Typischer Ablauf

Wunsch: http://www.pro-linux.de/berichte/Also Verbindung zu www.pro-linux.de:80 per TCP:GET /berichte/ HTTP/1.1Host: www.pro-linux.deConnection: close

HTTP/1.1 200 OKDate: Mon, 04 Jul 2005 18:17:33 GMTServer: ApacheLast-Modified: Sun, 10 Apr 2005 21:20:54 GMTContent-Length: 10883Content-Type: text/html

<!DOCTYPE html[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 7: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Typischer Ablauf

Wunsch: http://www.pro-linux.de/berichte/Also Verbindung zu www.pro-linux.de:80 per TCP:GET /berichte/ HTTP/1.1Host: www.pro-linux.deConnection: close

HTTP/1.1 200 OKDate: Mon, 04 Jul 2005 18:17:33 GMTServer: ApacheLast-Modified: Sun, 10 Apr 2005 21:20:54 GMTContent-Length: 10883Content-Type: text/html

<!DOCTYPE html[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 8: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Typischer Ablauf

Wunsch: http://www.pro-linux.de/berichte/Also Verbindung zu www.pro-linux.de:80 per TCP:GET /berichte/ HTTP/1.1Host: www.pro-linux.deConnection: close

HTTP/1.1 200 OKDate: Mon, 04 Jul 2005 18:17:33 GMTServer: ApacheLast-Modified: Sun, 10 Apr 2005 21:20:54 GMTContent-Length: 10883Content-Type: text/html

<!DOCTYPE html[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 9: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Request-Methoden

Request-Methode als erste Zeile des Requests

Generell: Methode Pfad HTTP/1.1

Verfugbare Methoden

GET: Normales Herunterladen einer SeiteHEAD:

”Ich mochte bitte nur die Header.“

POST: Schicken von Daten an den Server (z.B. Formulare)TRACE: Zurucksenden des gesamten Requests (Debugging!)CONNECT: Direkte Weiterleitung auf TCP-Ebene

(SSL, Proxyketten)

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 10: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Header-Felder

Format ahnlich wie bei RFC 822-konformen MailsHeader beginnend mit X-: nicht standardisiert

Oft verwendete Header

Host: Direkte Adressierung (Virtual Hosts!)Date: Datum der Antwort

(nutzlich fur z.B. Zeitsynchronisation)Last-Modified: Datum der letzten AnderungServer: Server-Software (z.B. Apache)User-Agent: Client-Software (z.B. Lynx, ELinks)Content-Length: Lange in Bytes des Antwort-DokumentsContent-Type: MIME-Typ des Antwort-Dokuments

(z.B. text/html, application/xml)

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 11: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Header-Felder

Format ahnlich wie bei RFC 822-konformen MailsHeader beginnend mit X-: nicht standardisiert

Oft verwendete Header

Host: Direkte Adressierung (Virtual Hosts!)Date: Datum der Antwort

(nutzlich fur z.B. Zeitsynchronisation)Last-Modified: Datum der letzten AnderungServer: Server-Software (z.B. Apache)User-Agent: Client-Software (z.B. Lynx, ELinks)Content-Length: Lange in Bytes des Antwort-DokumentsContent-Type: MIME-Typ des Antwort-Dokuments

(z.B. text/html, application/xml)

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 12: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Header-Felder

Format ahnlich wie bei RFC 822-konformen MailsHeader beginnend mit X-: nicht standardisiert

Oft verwendete Header

Host: Direkte Adressierung (Virtual Hosts!)Date: Datum der Antwort

(nutzlich fur z.B. Zeitsynchronisation)Last-Modified: Datum der letzten AnderungServer: Server-Software (z.B. Apache)User-Agent: Client-Software (z.B. Lynx, ELinks)Content-Length: Lange in Bytes des Antwort-DokumentsContent-Type: MIME-Typ des Antwort-Dokuments

(z.B. text/html, application/xml)

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 13: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Typischer AblaufRequest-MethodenHeader-FelderKeep-Alive

Keep-Alive

Fruher, bei HTTP/1.0:Eine TCP-Verbindung fur jeden Request

Nachteil: Standiges Offnen und Schließen vonTCP-Verbindungen ineffizient

Daher, seit HTTP/1.1:Keep-Alive – Offenhalten der Verbindungen

Neuer Header: Connection: close

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 14: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

Nutzen von Proxies

Ublicherweise: Client ↔ Server

Mit Proxies: Client ↔ Proxy ↔ Server

Traffic- und Zeiteinsparungen (Cache!)

Moglichkeit der detaillierten Zugangsbeschrankung

Ausfiltern von invaliden und moglicherweise die Sicherheitkompromittierenden HTTP-Requests

(Aber: Moglicherweise Sicherheitslucken auch in denProxy-Daemonen)

U.U. Erhohung der Anonymitat

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 15: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

Proxies bei HTTP

GET http://www.pro-linux.de/ HTTP/1.1

Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Kurz: Statt dem Pfad die vollstandige URL im Request

Andere Header wie ublich

Ubliche Header-Erganzungen durch Proxies:Via, X-Forwarded-For

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 16: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

CONNECT-Methode

CONNECT www.pro-linux.de:80 HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 Connection established

GET / HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 17: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

CONNECT-Methode

CONNECT www.pro-linux.de:80 HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 Connection established

GET / HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 18: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

CONNECT-Methode

CONNECT www.pro-linux.de:80 HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 Connection established

GET / HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 19: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

CONNECT-Methode

CONNECT proxy:3128 HTTP/1.1Host: proxy:3128

HTTP/1.1 200 Connection established

GET http://www.pro-linux.de/ HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 20: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

CONNECT-Methode

CONNECT proxy1:3128 HTTP/1.1Host: proxy1:3128

HTTP/1.1 200 Connection established

CONNECT proxy2:3128 HTTP/1.1Host: proxy2:3128

HTTP/1.1 200 Connection established

GET http://www.pro-linux.de/ HTTP/1.1Host: www.pro-linux.de

HTTP/1.1 200 OK

[...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 21: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

Funktioniert das denn wirklich?

Ja. :)

$ ./proxychain --listen=8000 -- \proxy1:3128 proxy2:3128 [...]

Im Browser: Setzen der Proxy auf localhost:8000

http://whatismyip.com/,http://www.augustakom.de/speedtest/

Meistens sogar Schleifen moglich:$ ./proxychain --listen=8000 -- \

p1:3128 p2:3128 p3:3128 p1:3128 [...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 22: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Nutzen von ProxiesProxies bei HTTPCONNECT-MethodeProof-of-Concept-Implementierung

Funktioniert das denn wirklich?

Ja. :)

$ ./proxychain --listen=8000 -- \proxy1:3128 proxy2:3128 [...]

Im Browser: Setzen der Proxy auf localhost:8000

http://whatismyip.com/,http://www.augustakom.de/speedtest/

Meistens sogar Schleifen moglich:$ ./proxychain --listen=8000 -- \

p1:3128 p2:3128 p3:3128 p1:3128 [...]

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol

Page 23: Hypertext Transfer Protocol - luga.de fileAllgemeines Protokollbeschreibung Proxyketten Siehe auch Inhalt 1 Allgemeines Geschichte Verwendung von HTTP 2 Protokollbeschreibung Typischer

AllgemeinesProtokollbeschreibung

ProxykettenSiehe auch

Siehe auch

RFC 1945: Hypertext Transfer Protocol – HTTP/1.0

RFC 2616: Hypertext Transfer Protocol – HTTP/1.1

http://freshmeat.net/projects/theguide/:Hitchhiker’s Guide to the Internet

http://m19s28.vlinux.de/iblech/

proxychain-luga-20050706.pl:Proof-of-Concept-Implementierung

Fragen?

Ingo Blechschmidt <[email protected]> Hypertext Transfer Protocol