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
- L'usuari especifica al client web l'adreça de la pàgina que vol consultar.
- Format: http://adreça[:port][recurs]
- El client descodifica la informació, diferenciant:
- Protocol d'accés
- IP o nom de domini
- Port
- Recurs
HTTP és un protocol sense estat, per tant, poden passar dues coses:
- Si el servidor troba el recurs, l'envia.
- 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:
- Informar al client del tipus de dades que rep amb 'Content-Type'.
- Permetre la negociació del contingut.
- 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:
- Des del servidor: indicaria al client quin tipus de dades transmet. Configuració del servidor web.
- Apache: DefaultType text/plain
- Marca form o objecte, atribut enctype.
- meta http-equiv
- 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
- À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
https://collab.itc.virginia.edu/wiki/toolbox/example%20httpd.conf%20file.html
Hosts Virtuals
Autenticació en Apache
Quan un servidor Apache rep una petició, primer comprova que la petició estigui autoritzada.
- Autenticació: comprova la identitat de l'usuari. És realment qui diu ser? L'usuari presenta les seves credencials (usuari i contrasenya).
- Autenticació bàsica o simple: sense xifrar.
- Digest: xifrat.
- Autorització: Té l'usuari accés al recurs demanat?
- .htaccess o <Directory>
- <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.
- L'usuari A aplica un algorisme hash sobre el missatge.
- A transforma el hash en una signatura digital amb la seva clau privada.
- A envia a B les dades, la signatura i el certificat digital.
- B aplica hash a les dades rebudes i genera un valor hash.
- 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
- Activació des de webmin.
- Servidors → Apache → Configuració global → Mòduls
- /etc/Apache2/ports.conf (ports d'escolta)
- Carpeta: var/www/ssl/htdocs
- 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.
- 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'.
- Opcions SSL i indica els camins als certificats.
Suggerències de seguretat per a Apache
- És precís determinar quins mòduls han d'estar activats i quins no.
- El servidor ha de revelar el mínim d'informació sobre ell mateix.
- L'administrador ha de ser el propietari dels directoris de configuració, arxius executables, històrics i de continguts.
- Els arxius i directoris amb informació global del servidor han d'estar en mode de només lectura.
- L'executable Apache2, per defecte, té permís 755 i hauria de passar a 700 (chmod 700 /usr/bin/Apache2).
- S'han de controlar les dades que estan disponibles.
- DocumentRoot ha de tenir permisos de només lectura.