Protocol HTTP: Funcionament, Seguretat i Configuració

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en catalán con un tamaño de 11,51 KB

Hyper Text Transfer Protocol (HTTP)

Creat el 1990 pel CERN.
Funciona sobre xarxes TCP/IP.
Inicialment, un mètode per compartir informació científica a nivell internacional a baix cost i ràpidament.
Existeix la versió segura HTTPS.

Ports utilitzats

  • HTTP: 80
  • HTTPS: 443

Com funciona HTTP

Arquitectura client-servidor

  1. L'usuari especifica al client web l'adreça de la pàgina que vol consultar.
  2. Format: http://adreça[:port][recurs]
  3. El client descodifica la informació, diferenciant:
  • Protocol d'accés
  • IP o nom de domini
  • Port
  • Recurs
El client estableix una connexió (socket) amb el servidor i sol·licita la pàgina (request). El servidor envia la pàgina en qüestió (o codi d'error). El client web interpreta el codi HTML rebut (response del servidor). Es tanca la connexió.
HTTP és un protocol sense estat, per tant, poden passar dues coses:
  1. Si el servidor troba el recurs, l'envia.
  2. Si no, envia un codi d'error (404 Page not found).
S'allibera la connexió sempre quan s'acaba.
Per cada objecte que es transfereix, s'utilitza una connexió TCP diferent.
Exemple: Una pàgina amb dues imatges són tres connexions.
Correcció de la falta de memòria amb cookies (galetes).

Mètodes HTTP

  • GET: Obté informació del servidor. Aquesta és l'operació que s'executa cada vegada que es fa clic sobre un enllaç i s'accedeix a una pàgina web.
  • POST: Envia informació des del client web al servidor, per exemple, les dades introduïdes en un formulari web.
  • HEAD: Similar al GET, però només es demana informació relativa a la capçalera de la pàgina.
CLIENT: /index.html http/1.0
SERVIDOR: HTTP/1.0 200 OK

Els tipus MIME

MIME: Multipurpose Internet Mail Extensions. Indica el tipus de contingut de l'arxiu que s'està transferint entre servidor i client.
  • Text/html: arxius de text que contenen HTML.
  • Video/mpeg: arxius amb vídeo, format MPEG.
  • Image/*.: Arxius d'imatges en qualsevol format.
IANA – RFC 2048
HTTP utilitza MIME amb diferents objectius:
  1. Informar al client del tipus de dades que rep amb 'Content-Type'.
  2. Permetre la negociació del contingut.
  3. Encapsular més d'un tipus d'element amb MIME multipart. Exemple: multipart/form-data.

Cas pràctic

Els tipus MIME es poden referenciar des de tres llocs diferents:
  1. Des del servidor: indicaria al client quin tipus de dades transmet. Configuració del servidor web.
  • Apache: DefaultType text/plain
Des de la pàgina web: al codi HTML.
  • Marca form o objecte, atribut enctype.
  • meta http-equiv
Des del navegador web: indicant quins tipus admet.
  • Variable HTTP_ACCEPT

El servidor web

Programari que, fent ús del protocol HTTP, atén les peticions dels navegadors o clients web.
Les sol·licituds als servidors web es fan:
  • Amb les URL a la barra d'adreces.
  • Fent clic als enllaços web de les pàgines.
El servidor web ofereix pàgines estàtiques i també dinàmiques (PHP, CGI, Java).
URL: Uniform Resource Locator
  • http://www.aulasmx.com/SX/web/index.html
  • Protocol: http, https, ftp, ftps...
  • :// separador
  • Servidor: adreça IP o nom del servidor FQDN
  • Ruta al recurs: directoris i subdirectoris
  • Recurs: plana web, imatge...
Servidors web més utilitzats: IIS, Apache.

El client web

Aplicació que permet la visualització de pàgines web allotjades en servidors web, capaç d'interpretar codi HTML.
El contingut web és molt variat, per tant, el navegador necessita complements que funcionen de manera transparent per a l'usuari.
  • Javascript
  • PDF
  • Àudio i vídeo

Configuració del servidor web Apache

Arxius de configuració: /etc/httpd/httpd.conf
  • ServerRoot: directori on es troba instal·lat el servidor Apache.
  • TimeOut: temps màxim d'espera de peticions.
  • Port: port en què està escoltant el servidor.
  • ServerAdmin: correu de l'administrador web.
  • ServerName: nom del servidor.
  • DocumentRoot: directori on es troben la majoria dels documents HTML.
  • Allow: especifica qui (IP, nom de domini, mask) pot accedir a un directori concret. Ex. All.
  • Deny: al contrari d'allow, especifica qui no pot accedir.
  • AccessFlieName: arxiu de control d'accés.
  • ErrorLog: fitxer log amb els errors ocorreguts.
  • NameVirtualHost: nom de màquines virtuals.
  • VirtualHost: per aplicar configuracions específiques a màquines virtuals.

Referències web

Directives de configuració

http://www2.tiendalinux.com/docs/manuales/redhat/rhl-rg-es-7.1/s1-configuration-config.html

Exemple de httpd.conf

Hosts Virtuals

Autenticació en Apache

Quan un servidor Apache rep una petició, primer comprova que la petició estigui autoritzada.
  1. Autenticació: comprova la identitat de l'usuari. És realment qui diu ser? L'usuari presenta les seves credencials (usuari i contrasenya).
    1. Autenticació bàsica o simple: sense xifrar.
    2. Digest: xifrat.
  2. Autorització: Té l'usuari accés al recurs demanat?
  • .htaccess o <Directory>
Control d'accés: té la màquina accés al recurs?
  • <Directory> <Files> .htaccess

Control d'accés

L'usuari realitza una petició HTTP al servidor.
El servidor decideix si atén o no en base a la màquina origen.
Directives Allow i Deny.
Sintaxi: Allow from adreça
Adreça: IP o FQDN
Exemple:
  • Deny from 240.17.200.123
  • Deny from servidor.aulaSMX.com

El servidor web segur

Un servidor web és segur si garanteix que la comunicació client-servidor es produeix amb autenticació i confidencialitat.
SSL: Secure Socket Layer, protocol que s'encarrega d'establir una comunicació segura i codificada entre servidor i navegador web. Treballa conjuntament amb HTTP creant un nou protocol, HTTPS.
El protocol HTTPS es basa en dos tipus de criptografia:
  • Criptografia simètrica o de clau compartida: s'utilitza la mateixa clau secreta tant per xifrar com per desxifrar.
  • Criptografia asimètrica o de clau pública-privada.

Criptografia asimètrica o de clau pública-privada

Signatura digital

Porció de codi que s'afegeix a un missatge per tal de garantir al destinatari qui és el remitent i que la seva informació no ha estat alterada.
  1. L'usuari A aplica un algorisme hash sobre el missatge.
  2. A transforma el hash en una signatura digital amb la seva clau privada.
  3. A envia a B les dades, la signatura i el certificat digital.
  4. B aplica hash a les dades rebudes i genera un valor hash.
  5. B utilitza la clau pública d'A i el valor hash per comprovar la signatura.
Certificat digital: és el conjunt de caràcters afegits a un document que acrediten l'autor del document (autenticació) i garanteixen la integritat de les dades.
Es pot aconseguir a través d'una autoritat certificadora (CA).
Són CA: La fàbrica de moneda i timbre, Verisign...

Com funciona SSL

El protocol SSL fa que tot l'intercanvi d'informació realitzat en una connexió es porti a terme de manera segura mitjançant l'encriptació. A més a més, proporciona:
  • Confidencialitat: xifrant la informació.
  • Integritat del missatge: controla possibles modificacions voluntàries o accidentals.
  • Autenticació del servidor: assegura la identitat del servidor amb el certificat del servidor.
  • Autenticació del client: amb certificat del client.
Una clau de sessió que s'utilitza per a cada transacció (128 bits).
La comunicació es realitza en dues fases:
  • Fase de salutació: handshaking, el client i el servidor s'identifiquen mitjançant l'intercanvi de claus públiques i s'autentifiquen utilitzant certificats digitals.
  • Fase de comunicació: intercanvi de dades, usualment amb encriptació simètrica.

Activar la seguretat a Apache

  1. Activació des de webmin.
  • Servidors → Apache → Configuració global → Mòduls
  • /etc/Apache2/ports.conf (ports d'escolta)
Creació d'un host virtual.
  • Carpeta: var/www/ssl/htdocs
Obtenció del certificat.
  • Opcions SSL
  • Convertim el nostre servidor en CA.
  • Descarregar i instal·lar: Apache2-ssl.tar.gz
  • sudo wget http://librarian.launchpad.net/7477840/Apache2-ssl.tar.gz
  • Descomprimir i copiar ssleay.cnf a /usr/share/Apache2.
  • Copiar Apache2-ssl-certificate a /usr/sbin.
  • Crear directori /etc/Apache2/ssl.
  • Afegeix permís d'execució a l'ordre Apache2-ssl-certificate i executa.
Instal·lar el certificat.
  • cd /etc/Apache2/ssl
  • sudo mkdir miCA
  • sudo mkdir miCA/private
  • sudo cp apache.pem miCA/private/cakey.pem
  • sudo cp apache.pem miCA/cacert.pem
  • Crea el fitxer miCA/serial amb contingut '01'.
Certificats per a Webmin.
  • Opcions SSL i indica els camins als certificats.
Comprova el funcionament.

Suggerències de seguretat per a Apache

  1. És precís determinar quins mòduls han d'estar activats i quins no.
  2. El servidor ha de revelar el mínim d'informació sobre ell mateix.
  3. L'administrador ha de ser el propietari dels directoris de configuració, arxius executables, històrics i de continguts.
  4. Els arxius i directoris amb informació global del servidor han d'estar en mode de només lectura.
  5. L'executable Apache2, per defecte, té permís 755 i hauria de passar a 700 (chmod 700 /usr/bin/Apache2).
  6. S'han de controlar les dades que estan disponibles.
  7. DocumentRoot ha de tenir permisos de només lectura.

Entradas relacionadas: