Activitats

El protocol HTTP

L’objectiu d’aquesta activitat és comprendre el funcionament general del protocol HTTP.

  1. Llisteu els ports usats pel protocol HTTP del fitxer de llistat de ports d’un sistema Linux (usualment /etc/services).
  2. Useu les ordres de monitoratge del trànsit TCP (nmap, netstat, ss i iptraf, entre d’altres) per observar els ports oberts en el client i el servidor.
  3. Monitoreu el trànsit de xarxa d’una connexió HTTP utilitzant una eina tipus Wireshark. Utilitzeu l’opció follow tcp stream per monitorar la conversa.

1. Llistat dels ports.

  • Els fitxers del servei. Llistar del fitxer de serveis els ports corresponents al servei http. Usualment, en els sistemes Linux aquest fitxer és el /etc/services. Al llistat podreu observar multitud de ports relacionats amb HTTP. De totes maneres els ports més usuals són el 80 per a http, el 8080 per al servei de proxy i el 423 per a https.
[root@dhcppc1 ~]# cat /etc/services | grep http
#       http://www.iana.org/assignments/port-numbers
http           80/tcp       www www-http    # WorldWideWeb HTTP
http           80/udp       www www-http    # HyperText Transfer Protocol
https          443/tcp                      # MCom
https          443/udp                      # MCom
webcache       080/tcp                      # WWW caching service
webcache       8080/udp                     # WWW caching service

2. Ordres de monitoratge.

  • Iptraf. Observar el tràfic TCP d’una connexió HTTP amb
    iptrafic
[root@portatil ~]# iptraf 
+++ imatge

  • Utilitat netstat
[root@dhcppc1 ~]# netstat -tnv c
Active Internet connections (w/o servers) 
Proto Recv-Q Send-Q Local Address        Foreign Address         State

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address        Foreign Address         State

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q  Local Address        Foreign Address         State
tcp        0      0  ::ffff:127.0.0.1:80  ::ffff:127.0.0.1:42326  TIME_WAIT
tcp        0      0  ::ffff:127.0.0.1:80  ::ffff:127.0.0.1:42327  TIME_WAIT 

Com es pot observar del llistat anterior, el client ha fet una connexió des del seu port dinàmic 42327 al port 80 del servidor. Les opcions de

netstat -tnvc

serveixen per indicar que monitoritzi únicament connexions tcp, mostri el número de port i s’executi contínuament per tal de monitoritzar el tràfic.

  • Utilitat ss. Podem llistar els ports amb l’ordre
    ss

    .

[root@dhcppc1 ~]# ss -nta
State     Recv-Q Send-Q      Local Address:Port      Peer Address:Port
LISTEN         0      0      127.0.0.1:8000                        *:*
LISTEN         0      0      127.0.0.1:2208                        *:*
LISTEN         0      0               *:111                        *:*
LISTEN         0      0             *:43288                        *:*
LISTEN         0      0      127.0.0.1:2207                        *:*
TIME-WAIT      0      0     127.0.0.1:51479               127.0.0.1:80

Fixeu-vos que les connexions al port 80 apareixen com a TIME-WAIT, que ja s’han realitzat. Per fer aparèixer la connexió com a ESTABLISHED caldria atrapar just el moment de la petició/resposta entre client i servidor. Recordeu que un cop feta la resposta el servidor usualment tanca la connexió.

  • Utilitat nmap. Podem llistar l’estat del port on escolta el servidor httpd:
[root@dhcppc1 ~]# nmap localhost 
Starting Nmap 4.20 ( http://insecure.org ) at 2008-06-07 14:50 CEST
Interesting ports on localhost (127.0.0.1): 

Not shown: 1692 closed ports

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
443/tcp  open  https
8000/tcp open http-alt

Nmap finished: 1 IP address (1 host up) scanned in 0.116 seconds 

3. Monitorar el trànsit HTTP amb Wireshark.

Si s’utilitza Wireshark per monitorar el trànsit d’una connexió HTTP es poden observar els ports del client (dinàmic) i del servidor (80), el tipus de tràfic TCP, la connexió TCP de tres vies, la petició GET del client i la resposta del servidor. Podeu obtenir una captura del Wireshark del fitxer següent:

Si se selecciona algun dels elements de la conversa TCP i s’activa l’opció contextual Follow TCP stream es pot veure tot el diàleg TCP en text pla:

Podeu consultar també altra documentació d’instal·lació, com per exemple:

M08-SXI Serveis de xarxa i internet

The Linux Documentation Project

Internet Engineering Task Force

Apache

Instal·lació i configuració del servidor HTTP Apache en el sistema operatiu Linux

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar un servidor HTTP en un sistema operatiu Linux Debian amb el programari Apache.

  1. Instal·leu el servidor HTTP Apache.
  2. Descriviu els components que el formen: fitxers executables, fitxers de configuració, de documentació i de monitoratge.
  3. Comproveu l’estat del servei HTTP, activeu-lo i desactiveu-lo.
  4. Monitoreu les activitats realitzades pel servidor Apache mitjançant el registre de logs del sistema. Identifiqueu el PID del procés del servidor.
  5. Configureu la pàgina web principal amb un exemple.
  6. Comproveu el funcionament del servidor amb la comanda telnet i obtingeu la pàgina web principal.

1. Instal·lació del servidor HTTP Apache

Instal·lem el servidor amb la comanda apt-get:

root@server:~# apt install apache2
S'està llegint la llista de paquets… Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet
El paquets següents s'han instal·lat automàticament i ja no serà necessaris:
  python-dbus python-gi python-wicd rfkill wicd-daemon wicd-gtk wireless-tools
Empreu «apt autoremove» per a suprimir-los.
S'instal·laran els següents paquets extres:
  apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
Paquets suggerits:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom
S'instal·laran els paquets NOUS següents:
  apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
0 actualitzats, 8 nous a instal·lar, 0 a suprimir i 164 no actualitzats.
S'ha d'obtenir 2189 kB d'arxius.
Després d'aquesta operació s'empraran 7567 kB d'espai en disc addicional.
Voleu continuar? [S/n]

Podem obtenir una informació detallada del programari Apache instal·lat (versió, arquitectura, dependències, etc.) amb la comanda dpkg:

root@server:~# dpkg -s apache2
Package: apache2
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 599
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Architecture: amd64
Version: 2.4.38-3+deb10u3
Replaces: apache2.2-bin, apache2.2-common, libapache2-mod-proxy-uwsgi (<< 2.4.33)
Provides: httpd, httpd-cgi
Depends: apache2-bin (= 2.4.38-3+deb10u3), apache2-data (= 2.4.38-3+deb10u3), apache2-utils (= 2.4.38-3+deb10u3), lsb-base, mime-support, perl:any, procps
Pre-Depends: dpkg (>= 1.17.14)
Recommends: ssl-cert
Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser
Breaks: libapache2-mod-proxy-uwsgi (<< 2.4.33)
Conflicts: apache2.2-bin, apache2.2-common
Conffiles:
 /etc/apache2/apache2.conf 20589b50379161ebc8cb35f761af2646
...

2. Components

Podem classificar els components en 3 categories:

  1. Fitxers executables
  2. Fitxers de configuració
  3. Fitxers de documentació

A través del paquet de la instal·lació podem observar quins són els fitxers executables, de configuració i de documentació, simplement aplicant algun filtre:

  • Executables:
root@server:~# dpkg -L apache2 | grep bin/
/usr/sbin/a2enmod
/usr/sbin/a2query
/usr/sbin/apache2ctl
/usr/sbin/a2disconf
/usr/sbin/a2dismod
/usr/sbin/a2dissite
/usr/sbin/a2enconf
/usr/sbin/a2ensite
/usr/sbin/apachectl
root@server:~# 

Podem incloure també els scripts:

root@server:~# dpkg -L apache2 | grep init.d/
/etc/init.d/apache-htcacheclean
/etc/init.d/apache2
root@server:~#
  • Configuració:
root@server:~# dpkg -L apache2 | grep etc/apache2 
/etc/apache2
/etc/apache2/apache2.conf
/etc/apache2/conf-available
/etc/apache2/conf-available/charset.conf
/etc/apache2/conf-available/localized-error-pages.conf
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/conf-enabled
/etc/apache2/envvars
/etc/apache2/magic
/etc/apache2/mods-available
/etc/apache2/mods-available/access_compat.load
/etc/apache2/mods-available/actions.conf
/etc/apache2/mods-available/actions.load
/etc/apache2/mods-available/alias.conf
...
  • Documentació:
root@server:~# dpkg -L apache2 | grep share/
/usr/share/apache2
/usr/share/apache2/apache2-maintscript-helper
/usr/share/apache2/ask-for-passphrase
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/a2enmod
/usr/share/bug
/usr/share/bug/apache2
/usr/share/doc
/usr/share/doc/apache2
/usr/share/doc/apache2/NEWS.Debian.gz
/usr/share/doc/apache2/PACKAGING.gz
/usr/share/doc/apache2/README.Debian.gz
/usr/share/doc/apache2/README.backtrace
/usr/share/doc/apache2/README.multiple-instances
/usr/share/doc/apache2/changelog.Debian.gz
/usr/share/doc/apache2/changelog.gz
/usr/share/doc/apache2/copyright
/usr/share/doc/apache2/examples
/usr/share/doc/apache2/examples/apache2.monit
/usr/share/doc/apache2/examples/secondary-init-script
/usr/share/doc/apache2/examples/setup-instance
...

Els directoris importants de la instal·lació són:

  • Directori dels fitxers de configuració: /etc/apache2/.
  • Directori de publicació de les pàgines web: /var/www/html/.
  • Directori del registre de logs: /var/log/apache2/.

3. Estat del servei

Per saber l’estat del servei i quines opcions tenim:

root@server:~# /etc/init.d/apache2
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}
root@server:~# 

Les accions més bàsiques que es poden fer són:

  • start: inicia el servei.
  • stop: atura el servei.
  • reload: recarrega els fitxers de configuració.
  • restart: reinicia el servei.
  • status: mostra l’estat del servei.

Per al correcte funcionament del servidor hem de comprovar que el servei està actiu i executant-se (running):

root@server:~# /etc/init.d/apache2 status
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-09-07 21:29:24 CEST; 14min ago
     Docs: https://httpd.apache.org/docs/2.4/
 Main PID: 2349 (apache2)
    Tasks: 55 (limit: 1138)
   Memory: 8.8M
   CGroup: /system.slice/apache2.service
           ├─2349 /usr/sbin/apache2 -k start
           ├─2351 /usr/sbin/apache2 -k start
           └─2352 /usr/sbin/apache2 -k start

de set. 07 21:29:24 server.ioc.cat systemd[1]: Starting The Apache HTTP Server...
de set. 07 21:29:24 server.ioc.cat apachectl[2338]: AH00558: apache2: Could not reliably determine the server's fully qu…message
de set. 07 21:29:24 server.ioc.cat systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
root@server:~# 

4. Monitorització

Els fitxers de monitorització dels serveis bàsics es troben usualment en el directori /var/log. Algun programari, com és el cas, opta per crear una carpeta dins d’aquesta estructura i així, els fitxers de log estan a /var/log/apache2.

root@server:~# ls /var/log/apache2
access.log  error.log  other_vhosts_access.log
root@server:~#

El servidor Apache manté diversos fils (threads) per poder atendre millor a les diferents peticions de pàgines web de forma independent. Hi ha un procés principal, que s’especifica quan comprovem l’estat del servei. Per poder veure la resta de processos associats i l’usuari que els executa:

root@server:~# ps uax | grep apache2
root      2349  0.0  0.4   8428  4328 ?        Ss   21:29   0:00 /usr/sbin/apache2 -k start
www-data  2351  0.0  0.6 754604  6080 ?        Sl   21:29   0:00 /usr/sbin/apache2 -k start
www-data  2352  0.0  0.6 754604  6080 ?        Sl   21:29   0:00 /usr/sbin/apache2 -k start
root      3128  0.0  0.0   6092   892 pts/0    S+   21:54   0:00 grep apache2
root@server:~#

Si es vol veure el nombre complet de processos associats al servei i en forma d’arbre (dependència entre ells), es pot fer amb la comanda pstree:

root@server:~# pstree -p | grep apache2
           |-apache2(2349)-+-apache2(2351)-+-{apache2}(2382)
           |               |               |-{apache2}(2383)
           |               |               |-{apache2}(2384)
           |               |               |-{apache2}(2385)
           |               |               |-{apache2}(2386)
           |               |               |-{apache2}(2387)
           |               |               |-{apache2}(2388)
...  

5. Configuració de la pàgina web principal

Per tal de configurar la pàgina principal del servidor Apache cal crea un fitxer anomenat index.html (de fet, ja existeix un per defecte) a la carpeta /var/www/html/. Per exemple amb el següent codi HTML:

<html>
    <head>
        <title>Pàgina principal</title>
    </head>
    <body>
        <h1>Pàgina principal</h1>
        <p>Servidor Apache</p>
    </body>
</html>

La pàgina web principal es pot comprovar fàcilment amb un navegador des del mateix servidor introduint-li la següent URL:

http://localhost

6. Comprovació del funcionament del servidor amb la comanda telnet

Amb la petició GET es pot observar com s’obté la pàgina demanada.

root@server:~# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /index.html HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 08 Sep 2020 04:48:29 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Mon, 07 Sep 2020 20:01:44 GMT
ETag: "a8-5aebeb015df61"
Accept-Ranges: bytes
Content-Length: 168
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

<html>
    <head>
        <title>Pàgina principal</title>
    </head>
    <body>
        <h1>Pàgina principal</h1>
        <p>Servidor Apache</p>
    </body>
</html>
Connection closed by foreign host.
root@server:~# 

Configuració d'una seu virtual basada en noms amb Apache

L’objectiu d’aquesta activitat és aprendre a configurar una seu virtual basada en noms amb Apache.

Creeu tres seus virtuals per a un mateix domini amb diferent TLD, que proporcionin el mateix lloc web però en diferents idiomes:

  1. .cat: en català
  2. .es: en castellà
  3. .com: en anglès

Primer de tot, en no disposar del servei DNS executant-se, cal modificar primer el fitxer /etc/hosts i afegir la línia:

172.16.0.1      www.ioc.cat www.ioc.es www.ioc.com

Per a cada seu virtual cal crear un fitxer de configuració per a cada un. En aquest cas són:

  1. /etc/apache2/sites-available/ioc-cat.conf
  2. /etc/apache2/sites-available/ioc-es.conf
  3. /etc/apache2/sites-available/ioc-en.conf

I el contingut de cada fitxer és:

  • /etc/apache2/sites-available/ioc-cat.conf
<VirtualHost *:80>
    ServerName www.ioc.cat
    DocumentRoot /var/www/html/cat
</VirtualHost>
  • /etc/apache2/sites-available/ioc-es.conf
<VirtualHost *:80>
    ServerName www.ioc.es
    DocumentRoot /var/www/html/es
</VirtualHost>
  • /etc/apache2/sites-available/ioc-en.conf
<VirtualHost *:80>
    ServerName www.ioc.com
    DocumentRoot /var/www/html/en
</VirtualHost>

Les pàgines web principals de cada seu virtual són:

  1. /var/www/html/cat/index.html
  2. /var/www/html/es/index.html
  3. /var/www/html/en/index.html

Cal habilitar els llocs virtuals amb la comanda a2ensite i reiniciar el servidor.

a2ensite ioc-cat
a2ensite ioc-es
a2ensite ioc-en
/etc/init.d/apache2 restart

La comanda a2ensite el que fa és afegir un enllaç simbòlic des de la carpeta /etc/apache2/sites-enabled al fitxer en qüestió (que es troba a /etc/apache2/sites-available). D’aquesta manera es pot tenir una multitud de seus virtuals, però només activades aquelles desitjades. La comanda per deshabilitar un lloc virtual és a2dissite i el que fa bàsicament és eliminar aquest enllaç simbòlic.

Amb aquset sistema es controlen les seus virtuals per separat, i en el cas de voler modificar alguna, per exemple, només es deshabilita aquella seu (i la resta continuarien operatives).

Referències

Apache Virtual Host documentation

Configuració d'una seu virtual basada en IP amb Apache

L’objectiu d’aquesta activitat és aprendre a configurar una seu virtual basada en IP amb Apache.

Creeu 2 noves IP, cadascuna d’elles lligada a una seu virtual diferent. Opcionalment li podeu assignar un nom de domini.

Afegim les noves IP a la que ja teníem:

root@server:~# ip address add 10.0.2.11/24 dev enp0s3
root@server:~# ip address add 10.0.2.12/24 dev enp0s3
root@server:~# ip address show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:5f:62:59 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.9/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 71645sec preferred_lft 71645sec
    inet 10.0.2.11/24 scope global secondary enp0s3
       valid_lft forever preferred_lft forever
    inet 10.0.2.12/24 scope global secondary enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5f:6259/64 scope link 
       valid_lft forever preferred_lft forever
root@server:~# 

En no disposar del servei DNS executant-se, cal modificar el fitxer /etc/hosts per tal que tingui el següent aspecte:

root@server:~# echo "127.0.0.1        localhost" > /etc/hosts
root@server:~# echo "10.0.2.11        www1.ioc.cat" >> /etc/hosts
root@server:~# echo "10.0.2.12        www2.ioc.cat" >> /etc/hosts
root@server:~# cat /etc/hosts
127.0.0.1        localhost
10.0.2.11        www1.ioc.cat
10.0.2.12        www2.ioc.cat
root@server:~#

Creem l’estructura de directoris per a les nostres seus virtuals:

mkdir /var/www/web1
mkdir /var/www/web2

Creem el fitxer /var/www/web1/index.html corresponent a la 1a seu virtual amb el següent codi HTML:

<html>
    <head>
        <title>Seu virtual basada en IP1</title>
    </head>
    <body>
        <h1>Seu virtual basada en IP1</h1>
        <p>MP08. Serveis de xarxa i Internet</p>
    </body>
</html>

Creem el fitxer /var/www/web2/index.html corresponent a la segona seu virtual amb el següent codi HTML:

<html>
    <head>
        <title>Seu virtual basada en IP1</title>
    </head>
    <body>
        <h1>Seu virtual basada en IP1</h1>
        <p>MP08. Serveis de xarxa i Internet</p>
    </body>
</html>

Afegim al final del fitxer /etc/apache2/apache2.conf la configuració per a les seus virtuals:

<VirtualHost 10.0.2.11:*>
    DocumentRoot /var/www/web1
    ServerName www1.ioc.cat
</VirtualHost>
<VirtualHost 10.0.2.12:*>
    DocumentRoot /var/www/web2
    ServerName www2.ioc.cat
</VirtualHost>

Reiniciem i comprovem que ha arrancat bé:

root@server:~# systemctl restart apache2
root@server:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-09-08 10:22:42 CEST; 8s ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 6364 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 6368 (apache2)
    Tasks: 55 (limit: 1138)
   Memory: 9.4M
   CGroup: /system.slice/apache2.service
           ├─6368 /usr/sbin/apache2 -k start
           ├─6369 /usr/sbin/apache2 -k start
           └─6370 /usr/sbin/apache2 -k start

de set. 08 10:22:42 server.ioc.cat systemd[1]: Starting The Apache HTTP Server...
de set. 08 10:22:42 server.ioc.cat apachectl[6364]: AH00557: apache2: apr_sockaddr_info_get() failed for server.ioc.cat
de set. 08 10:22:42 server.ioc.cat apachectl[6364]: AH00558: apache2: Could not reliably determine the server's fully qualified 
de set. 08 10:22:42 server.ioc.cat systemd[1]: Started The Apache HTTP Server.

Llistem les seus web virtuals del servidor. Podem veure com a l’apartat VirtualHost configuration es veuen les diferents seus virtuals del servidor:

root@server:~# source /etc/apache2/envvars
root@server:/root# /sbin/apache2 -S
AH00557: apache2: apr_sockaddr_info_get() failed for server.ioc.cat
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
10.0.2.11:*          www1.ioc.cat (/etc/apache2/apache2.conf:229)
10.0.2.12:*          www2.ioc.cat (/etc/apache2/apache2.conf:233)
*:80                   127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ldap-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
root@server:/root# 

Comprovem que funcionen amb un navegador:

Autenticació amb Apache

L’objectiu d’aquesta activitat és compendre els diferents mètodes que proporciona Apache per autenticar-se al servidor i poder accedir a recursos privats.

Protegiu una carpeta al servidor web per tal que només es pugui accedir amb els següents mètodes d’autenticació:

  1. Autenticació bàsica
  2. Autenticació mitjançant PAM
  3. Autenticació amb LDAP

1. Autenticació bàsica

Creem l’usuari amb el qual entrarem al directori protegit:

htpasswd -c /var/www/passwd usuari 

Creem la carpeta privada i afegim un fitxer:

mkdir /var/www/html/privat
touch /var/www/html/privat/arxiu.txt

Afegim el següent codi al fitxer /etc/apache2/sites-available/000-default.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html/privat>
        AuthType Basic
        AuthName "Fitxers restringits"
        AuthBasicProvider file
        AuthUserFile /var/www/passwd
        Require valid-user
    </Directory>
</VirtualHost>

I reiniciem el servidor:

/etc/init.d/apache2 restart

Visualitzem-ho des del navegador:

Vegem com queda un cop entrat l’usuari i la contrasenya:

2. Autenticació mitjançant PAM

Instal·lem els paquets necessaris:

apt-get install libapache2-mod-authnz-external pwauth

Creem la carpeta privada i afegim un fitxer:

mkdir /var/www/html/privatPAM
touch /var/www/html/privatPAM/arxiu.txt

Creem el host virtual privatPAM a /etc/apache2/sites-available/privatPAM.conf:

<IfModule mod_authnz_external.c>
	AddExternalAuth pwauth /usr/sbin/pwauth 
	SetExternalAuthMethod pwauth pipe 
</IfModule>
<Directory /var/www/html/privatPAM> 
	AuthType Basic 
	AuthName "Fitxers restringits PAM" 
	AuthBasicProvider external 
	AuthExternal pwauth 
	Require valid-user 
</Directory> 

Habilitem el lloc perquè funcioni amb PAM i reiniciem el servidor:

a2ensite privatPAM
/etc/init.d/apache2 restart

Comprovem-ho, visualitzant-ho des del navegador:

Vegem com queda un cop entrat l’usuari i la contrasenya:

3. Autenticació amb LDAP

Instal·lem openLDAP:

apt-get install slapd ldap-utils

Reconfigurem openLDAP amb les opcions següents:

  • Nom del domini: ioc.cat
  • Nom de la organització: ioc
  • Contrasenya de l’administrador
  • Motor de la base de dades: MDB
  • Eliminació de la base de dades al purgar: NO
  • Moure la base de dades anterior: SÍ
  • Permetre LDAP v2: NO
dpkg-reconfigure slapd

Creem el grup usuaris ouUsuaris.ldif:

# Unitat organitzativa usuaris
dn: ou=usuaris,dc=ioc,dc=cat
objectClass: organizationalUnit
ou: usuaris

L’afegim amb ldapadd:

ldapadd -x -D cn=admin,dc=ioc,dc=cat -W -f ouUsuaris.ldif

Creem l’usuari usuariLDAP en el fitxer usuariLDAP.ldif:

dn: uid=usuariLDAP,ou=usuaris,dc=ioc,dc=cat
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: usuariLDAP
sn: Cognom LDAP
givenName: Nom
cn: Nom Cognom LDAP
displayName: Nom Cognom LDAP
uidNumber: 10001
gidNumber: 5001
userPassword: usuariLDAP
gecos: Nom Cognom LDAP
loginShell: /bin/bash
homeDirectory: /home/usuari

i l’afegim

ldapadd -x -D cn=admin,dc=ioc,dc=cat -W -f usuariLDAP.ldif

Realitzem una cerca sobre LDAP per comprovar que s’ha creat bé amb ldapsearch:

ldapsearch -x -LLL -b dc=ioc,dc=cat 'uid=usuariLDAP' cn gidNumber

Habilitem el mòdul per a l’autenticació LDAP amb a2enmod:

root@server:~# /sbin/a2enmod ldap authnz_ldap 
Enabling module ldap.
Considering dependency ldap for authnz_ldap:
Module ldap already enabled
Enabling module authnz_ldap.
To activate the new configuration, you need to run:
  systemctl restart apache2
root@server:~# 

Creem el lloc virtual privatLDAP amb el fitxer /etc/apache2/sites-available/privatLDAP.conf:

<Directory /var/www/html/privatLDAP>
    AuthName "Autenticació LDAP"
    AuthType Basic
    AuthBasicProvider ldap
    AuthLDAPURL ldap://www.ioc.cat/dc=ioc,dc=cat?uid?sub?(objectClass=*)
	Require valid-user
	LogLevel debug
</Directory>

Creem la carpeta i habilitem el lloc web virtual.

mkdir /var/www/html/privatLDAP 
/sbin/a2ensite privatLDAP 
/etc/init.d/apache2 restart

Creem la pàgina web al fitxer /var/www/html/privatLDAP/index.html:

<html>
<body>
    Carpeta privada LDAP
</body>
</html>

Realitzem la comprovació amb el navegador:

Un cop autenticats correctament, podem accedir a la pàgina web privada:

Xifrat amb Apache

L’objectiu d’aquesta activitat és aprendre a configurar el servidor Apache per tal que les comunicacions siguin segures amb el protocol HTTPS, és a dir, encriptades per tal que cap persona, amb l’ajuda d’eines de monitoratge del trànsit pugui veure el contingut transmès. Aquesta configuració és vital, sobretot quan es transmeten contrasenyes, però també és fonamental per mantenir la privacitat dels usuaris.

Realitzeu les tasques següents:

  1. Genereu un certificat autosignat amb una validesa d’un any utilitzant l’algorisme RSA de 2048 bits, tot generant els fitxers per a la clau pública i la clau privada.
  2. Modifiqueu el fitxer /etc/apache2/sites-available/default-ssl.conf per tal d’incloure els certificats i que SSL estigui actiu.
  3. Habliliteu el mòdul SSL i el lloc virtual default-ssl.
  4. Mostreu des del client com us connecteu mitjançant https.

1. Generació del certificat autosignat

Generem el certificat autosignat i creem les claus.

root@server:/root# mkdir /etc/apache2/ssl
root@server:/root# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Generating a RSA private key
...........................................................................................................+++++
...+++++
writing new private key to '/etc/apache2/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Catalonia
Locality Name (eg, city) []:Barcelona
Organization Name (eg, company) [Internet Widgits Pty Ltd]:IOC
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ioc.cat
Email Address []:
root@server:/root# 

Mostrem les claus:

root@server:/root# ls /etc/apache2/ssl
apache.crt  apache.key
root@server:/root# 

2. Activació del SSL

Modifiquem el fitxer /etc/apache2/sites-available/default-ssl.conf:

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

3. Hablilitació del lloc virtual

Habilitem el mòdul SSL i el lloc virtual default-ssl:

root@server:~# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
  systemctl restart apache2
root@server:~# a2ensite default-ssl
Enabling site default-ssl.
To activate the new configuration, you need to run:
  systemctl reload apache2
root@server:~# systemctl restart apache2

4. Comprovació amb el client

A la URL cal posar https://. Demanarà d’afegir una excepció si volem continuar (Avançat, Afegeix excepció, Confirma).

Instal·lació i configuració del servidor IIS en el sistema operatiu Windows

L’Internet Information Server (IIS) és el servidor web que incorpora la companyia Microsoft en els seus sistemes operatius Windows Server, tot i que també pot funcionar en clients com Windows 10, on és especialment útil per a tasques de desenvolupament.

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar un servidor IIS en un sistema operatiu Windows Server.

Realitzeu les tasques següents:

  1. Instal·leu el servidor IIS.
  2. Comproveu l’estat del servei HTTP, activeu-lo i desactiveu-lo.
  3. Descriviu l’estructura del servidor IIS.
  4. Configureu la pàgina web principal amb un exemple.
  5. Configureu dues seus virtuals basades en noms.

1. Instal·lació del servidor DNS

El procés d’instal·lació pot variar depenent de la versió del servidor.

Primer de tot, cal anar al dashboard de l’administrador del servidor i escollir l’opció d’afegir noves característiques o rols.

Seleccionem:

  • Role-based or featured-based installation
  • El propi servidor

  • Add features
  • Opcions per defecte…
  • Install

Comprovem que s’ha instal·lat. Apareix a sota del menú principal de configuració.

2. Estat del servei

Per saber l’estat del servei cal anar a l’apartat IIS del dashboard i anar a les opcions de serveis (services). Fent botó dret tindrem les opcions d’iniciar, aturar i reiniciar els diferents serveis.

3. Estructura del servidor web

Des de l’administrador del servidor, i dins del IIS, anem a l’apartat de Servers, i clicant el botó dret en el servidor actual, obrim l’administrador del servidor IIS:

A partir d’aquí, s’obre l’administrador del servei IIS, que té la següent estructura:

Si despleguem de l’arbre de l’esquerra l’apartat Sitios, podem veure els diferents llocs web que tenim. En aquest cas, després d’una instal·lació neta, només hi ha la pàgina web per defecte. A la part dreta hi ha les accions que es poden realitzar. És útil la d’explorar, ja que ens porta a la carpeta de publicació, que per defecte és C:\inetpub\wwwroot, i el fitxer inicial és iisstart.htm.

També podem examinar quin aspecte té la pàgina web per defecte:

4. Pàgina principal

Per canviar la pàgina principal, cal modificar el fitxer.

Posem la següent pàgina iisstart.htm, per exemple, amb el següent codi HTML:

<html>
    <head>
        <title>Institut Obert de Catalunya</title>
    </head>
    <body>
        <h1>Institut Obert de Catalunya</h1>
        <p>MP08. Serveis de xarxa i Internet</p>
    </body>
</html>

Si comprovem la pàgina, veiem que efectivament es canvia:

5. Creació de seus virtuals basades en noms

Per no haver d’instal·lar un servidor DNS utilitzarem el fitxer hosts. Aquest fitxer està situat a la carpeta C:\Windows\System32\drivers\etc en un sistema Windows. Utilitzarem el domini ioc.cat i les seus web1 i web2.

C:\Users\Administrador>echo 127.0.0.1        localhost > C:\Windows\System32\drivers\etc\hosts

C:\Users\Administrador>echo 10.0.2.15        web1.ioc.cat >> C:\Windows\System32\drivers\etc\hosts

C:\Users\Administrador>echo 10.0.2.15        web2.ioc.cat >> C:\Windows\System32\drivers\etc\hosts

C:\Users\Administrador>type C:\Windows\System32\drivers\etc\hosts
127.0.0.1        localhost
10.0.2.15        web1.ioc.cat
10.0.2.15        web2.ioc.cat

C:\Users\Administrador>

Creem l’estructura de carpetes per a les dues seus virtuals:

mkdir C:\inetpub\web1
mkdir C:\inetpub\web2

I creem les pàgines web per a cada seu virtual.

La configuració IIS és la següent: des de Sitios, triem Agregar sitio web.

Un cop creats, podem comprovar la configuració:

Finalment, comprovem les diferents seus virtuals:

Anar a la pàgina següent:
Exercicis