Diferència entre revisions de la pàgina «Practica VSFTPD»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 28 revisions intermèdies del mateix usuari que no es mostren)
Línia 16: Línia 16:
 
L''''usuari ''anonymous''''' és un usuari només del servei FTP. Per tant, no cal crear-lo, sinó simplement activar-lo en la configuració del servei FTP.
 
L''''usuari ''anonymous''''' és un usuari només del servei FTP. Per tant, no cal crear-lo, sinó simplement activar-lo en la configuració del servei FTP.
  
 +
 +
== Objectius ==
 +
Volem configurar el servei FTP del nostre servidor que disposi de:
 +
* Usuari '''anonymous''': pot descarregar (només) elements d'una carpeta pública del servidor (/var/ftp).
 +
* '''Usuaris privilegiats''': (zeus, mercuri) que poden llegir i escriure de la '''carpeta compartida /var/www/html''' per treballar en grup.
 +
* '''Usuaris no-privilegiats''': (james, maceo) del sistema poden entrar per FTP al seu ''home directory'' (i no poden veure res més, engabiats).
 +
 +
<br>
  
 
== Configuració del servidor ==
 
== Configuració del servidor ==
Línia 23: Línia 31:
  
 
=== Part I Server ===
 
=== Part I Server ===
# Crea l'usuari “james” al servidor.
+
# Activa el compte ''anonymous'' del servidor FTP.
# Activa el compte anonymous del servidor FTP.
 
 
# Esbrina quina és la carpeta per defecte on escriu l'usuari anonymous.
 
# Esbrina quina és la carpeta per defecte on escriu l'usuari anonymous.
# Crea una '''carpeta pública a <code>/var/ftp</code>''' on tothom (tant ''anonymous'' com els usuaris de sistema) pugui llegir però no escriure.
+
# Crea la '''carpeta pública <code>/var/ftp</code>''' on tothom (tant ''anonymous'' com els usuaris de sistema) pugui llegir però no escriure.
# Crea una '''carpeta privada a <code>/var/ftp-priv</code>''' on només podran llegir i escriure els usuaris registrats al servidor (no el "anonymous").
+
#: '''Modifica la configuració perquè la carpeta pública <code>/var/ftp</code> sigui la carpeta on va a parar l'usuari ''anonoymous''.'''
#:Pista: caldrà que creis un grup "lacetania" i atorguis els permisos necessaris perquè això funcioni.
+
# Crea 2 nous usuaris al servidor:
# Els usuaris han de tenir accés directe a la carpeta pública i a la privada mitjançant links simbòlics des del seu ''home directory''.
+
#* Usuari "zeus".
 +
#* Usuari amb el teu nom (o "mercuri").
 +
# Activa la directiva que permet als usuaris del sistema entrar al servei FTP.
 +
# Crea una '''carpeta compartida a <code>/var/www/html</code>''' on només podran llegir i escriure els usuaris registrats al servidor (no el "anonymous").
 +
#:Pista: caldrà que creis un grup "web" i atorguis els permisos necessaris perquè això funcioni.
 +
# Crea ''links'' simbòlics des dels diferents ''home directories'' cap a la carpeta compartida i la carpeta pública. Així posarem fàcil als usuaris d'accedir-hi.
 
# Cal tenir un usuari administrador (funky) capaç de realitzar qualsevol operació sobre les carpetes.
 
# Cal tenir un usuari administrador (funky) capaç de realitzar qualsevol operació sobre les carpetes.
  
 
Mostra el resultat al professor tal i com ho tens ara.
 
Mostra el resultat al professor tal i com ho tens ara.
  
=== Part II Server ===
+
=== Part II Server (chroot) ===
# Els usuaris han d'estar bloquejats (engabiats, chroot) dins del seu ''home directory'' i no han de poder remenar els arxius del servidor.
+
Volem "engabiar" els usuaris (chroot) al seus ''home directory'' (perquè no remenin els arxius del servidor). Però no ho volem fer amb tots els usuaris perquè si no, no poden escriure al seu ''home'' i tampoc poden accedir a les carpetes públiques.
#*NOTA: Des d'una certa versió del vsftpd, si engabiem amb chroot no ens deixarà entrar els usuaris que puguin escriure als seus ''home directories''. Per saltar-nos aquesta directiva de seguretat podeu mirar-vos aquest article:
+
# Crea els usuaris "james" i "maceo".
#*:http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/
+
# L'usuari ''anonymous'' ha d'estar engabiat a la carpeta pública.
# Veuràs que els directoris compartits han deixat de funcionar. Busca una manera alternativa de compartir directoris ja que els links simbòlics no funcionen (pista: amb la comanda <code>mount --bind ...</code>).
+
# Activa la directiva d'engabiar usuaris (chroot).
# L'usuari anonymous ha d'estar engabiat a la carpeta pública.
+
#:NOTA: Des d'una certa versió del vsftpd, si engabiem amb chroot no ens deixarà entrar els usuaris que puguin escriure als seus ''home directories''. Tenim 2 solucions possibles:
 +
## Retirar els permisos d'escriptura en els ''home directory''. Prova de canviar aquests permisos per permetre l'entrada a l'usuari.
 +
##* Quin missatge d'error dóna quan no deixa entrar?
 +
##* Quins permisos hem de posar a la carpeta perquè ens permeti entrar?
 +
##* Imagina't que tens un hosting amb aquests clients. Quins problemes creus que comporta assignar aquests permisos? Creus que es pot solucionar d'alguna manera?
 +
## Saltar-nos aquesta directiva de seguretat. Si prefereixes aquesta aproximació, busca la directiva que ho permet.
 +
# Busca com seleccionar els usuaris que vols engabiar (chroot_list) i posa-hi només a "maceo" i "james".
 +
# Crea links als directoris compartits a "maceo". Comprova que al accedir per FTP els ''simbolic links'' no funcionen (i sí que funcionen amb "zeus" perquè no està engabiat).
 +
# Busca una manera alternativa de compartir directoris amb l'usuari "maceo" ja que els links simbòlics no funcionen (pista: amb la comanda <code>mount --bind ...</code>).
 +
<br>
 +
 
 +
== Resum per a la demo ==
 +
La configuració final ha de tenir els següents usuaris:
 +
* anonymous: pot llegir la carpeta pública
 +
* mercuri: pot entrar a les carpetes pública i compartida però només de lectura.
 +
* zeus: pot llegir i escriure les carpetes pública i compartida
 +
* james: engabiat
 +
* maceo: engabiat
 +
 
 
<br>
 
<br>
  
Línia 53: Línia 83:
  
 
== Servidor AWS ==
 
== Servidor AWS ==
Si disposes d'un servidor AWS d'Amazon el configurarem com un servei de ''hosting''. Configura'l de la següent manera:
+
Si disposes d'un servidor AWS d'Amazon el configurarem com un servei de ''hosting''.  
* Usuaris "james" i "profe" tinguin accés al seu espai web però estiguin engabiats.
+
 
* Crea també la carpeta compartida pels dos usuaris com has fet a la pràctica anterior. Ambdós han de poder escriure-hi.
+
Ens caldrà configurar-ho en mode PASSIU ja que si no, el ''firewall'' del router (tant a casa com a l'insti) no permetria la transferència de dades (tot i que sí permetria el login). Llegeix aquest [http://slacksite.com/other/ftp.html article sobre FTP actiu vs passiu] on s'explica.
* Restringeix l'accés per SSH a l'usuari "james".
+
 
 +
Per connectar-nos en mode passiu cal fer la comanda amb -p
 +
$ ftp -p <la_meva_ip_o_domini>
 +
 
 +
També podeu provar de connectar-vos amb Filezilla o altres clients FTP.
 +
 
 +
Guía:
 +
# Instal·la vsFTPd i fes un cop d'ull a l'arxiu de configuració <code>/etc/vsftpd.conf</code>
 +
# Crea un '''usuari "gabi"''' (sense privilegis)
 +
# Configura vsFTPd per permetre usuaris locals però no ''anynomous'' (normalment ja ve així per defecte)
 +
# Obre els '''ports 20, 21 i 8081''' del AWS
 +
# Testeja que "gabi" pot logar-se al sistema
 +
#* Testeja que pot executar cd i pwd (comandes del port 21)
 +
#* Testeja que NO pot rebre dades del port 20: LS, GET, PUT
 +
#* Testeja que l'usuari pot accedir a l'arrel del sistema d'arxius i a les configuracions en <code>/etc</code> (cosa poc interessant per seguretat).
 +
#* Justifica perquè passa això llegint [http://slacksite.com/other/ftp.html aquest article sobre el FTP passiu vs actiu].
 +
# Configura el '''vsFTPd en mode passiu''' com indica [https://www.gosquared.com/blog/fix-ftp-passive-mode-problems-on-amazon-ec2-instances aquest article]
 +
#* Utilitza el '''port 8081''' com a port de transmissió de dades passiu (min i max). El proxy del centre restringeix quasi tots els ports de sortida, i aquest és un dels pocs que deixa lliures.
 +
#*: Des de casa vostra podeu utilitzar altres ports (millor un rang per permetre connexions de més usuaris).
 +
#* NOTA: utilitza ''pasv_address'', ja que ''pasv_addr_resolve'' no funciona.
 +
# '''Engabia l'usuari "gabi"''' (chroot) per més seguretat, així aquest usuari no podrà mirar els arxius de, per exemple, <code>/etc</code>
 +
#: Utilitza la directiva CHROOT comentada més amunt per engabiar l'usuari. Caldrà que donis permisos 555 al ''home directory'' de gabi perquè si no, no deixa entrar.

Revisió de 19:18, 14 nov 2017

L'objectiu de la pràctica és instal·lar un servei FTP per la nostra xarxa local.

La màquina que contindrà el servidor de FTP serà el Ubuntu Server (FUNKYSERVER). Aquesta serà l'encarregada de mantenir l'estructura de fitxers i directoris a oferir als clients, validar les connexions i executar les ordres dels clients.

Recorda que has de realitzar un informe d'aquesta pràctica segons les normes de presentació de treballs del curs.

Introducció[modifica]

El servei FTP utilitza el port 21. Té 2 possibles modes:

  • Actiu (port 20): la iniciativa de transferència la pren el servidor.
  • Passiu (port aleatori no privilegiat): la iniciativa de transferència la pren el client.

Mireu-vos els diagrames d'aquest article sobre mode FTP actiu vs. passiu.


L'usuari anonymous és un usuari només del servei FTP. Per tant, no cal crear-lo, sinó simplement activar-lo en la configuració del servei FTP.


Objectius[modifica]

Volem configurar el servei FTP del nostre servidor que disposi de:

  • Usuari anonymous: pot descarregar (només) elements d'una carpeta pública del servidor (/var/ftp).
  • Usuaris privilegiats: (zeus, mercuri) que poden llegir i escriure de la carpeta compartida /var/www/html per treballar en grup.
  • Usuaris no-privilegiats: (james, maceo) del sistema poden entrar per FTP al seu home directory (i no poden veure res més, engabiats).


Configuració del servidor[modifica]

Per poder-ho dur a terme les tasques heu de tenir molt clar:

  • L'arxiu de configuració és /etc/vsftpd.conf
  • Els permisos i propietari/grup de les carpetes esmentades.

Part I Server[modifica]

  1. Activa el compte anonymous del servidor FTP.
  2. Esbrina quina és la carpeta per defecte on escriu l'usuari anonymous.
  3. Crea la carpeta pública /var/ftp on tothom (tant anonymous com els usuaris de sistema) pugui llegir però no escriure.
    Modifica la configuració perquè la carpeta pública /var/ftp sigui la carpeta on va a parar l'usuari anonoymous.
  4. Crea 2 nous usuaris al servidor:
    • Usuari "zeus".
    • Usuari amb el teu nom (o "mercuri").
  5. Activa la directiva que permet als usuaris del sistema entrar al servei FTP.
  6. Crea una carpeta compartida a /var/www/html on només podran llegir i escriure els usuaris registrats al servidor (no el "anonymous").
    Pista: caldrà que creis un grup "web" i atorguis els permisos necessaris perquè això funcioni.
  7. Crea links simbòlics des dels diferents home directories cap a la carpeta compartida i la carpeta pública. Així posarem fàcil als usuaris d'accedir-hi.
  8. Cal tenir un usuari administrador (funky) capaç de realitzar qualsevol operació sobre les carpetes.

Mostra el resultat al professor tal i com ho tens ara.

Part II Server (chroot)[modifica]

Volem "engabiar" els usuaris (chroot) al seus home directory (perquè no remenin els arxius del servidor). Però no ho volem fer amb tots els usuaris perquè si no, no poden escriure al seu home i tampoc poden accedir a les carpetes públiques.

  1. Crea els usuaris "james" i "maceo".
  2. L'usuari anonymous ha d'estar engabiat a la carpeta pública.
  3. Activa la directiva d'engabiar usuaris (chroot).
    NOTA: Des d'una certa versió del vsftpd, si engabiem amb chroot no ens deixarà entrar els usuaris que puguin escriure als seus home directories. Tenim 2 solucions possibles:
    1. Retirar els permisos d'escriptura en els home directory. Prova de canviar aquests permisos per permetre l'entrada a l'usuari.
      • Quin missatge d'error dóna quan no deixa entrar?
      • Quins permisos hem de posar a la carpeta perquè ens permeti entrar?
      • Imagina't que tens un hosting amb aquests clients. Quins problemes creus que comporta assignar aquests permisos? Creus que es pot solucionar d'alguna manera?
    2. Saltar-nos aquesta directiva de seguretat. Si prefereixes aquesta aproximació, busca la directiva que ho permet.
  4. Busca com seleccionar els usuaris que vols engabiar (chroot_list) i posa-hi només a "maceo" i "james".
  5. Crea links als directoris compartits a "maceo". Comprova que al accedir per FTP els simbolic links no funcionen (i sí que funcionen amb "zeus" perquè no està engabiat).
  6. Busca una manera alternativa de compartir directoris amb l'usuari "maceo" ja que els links simbòlics no funcionen (pista: amb la comanda mount --bind ...).


Resum per a la demo[modifica]

La configuració final ha de tenir els següents usuaris:

  • anonymous: pot llegir la carpeta pública
  • mercuri: pot entrar a les carpetes pública i compartida però només de lectura.
  • zeus: pot llegir i escriure les carpetes pública i compartida
  • james: engabiat
  • maceo: engabiat


Clients[modifica]

Com a clients podeu utilitzar el mateix navegador d'arxius de l'Ubuntu o el de Windows (s'accedeix amb ftp://...). El firefox no serveix perquè només et deixa descarregar i no pujar arxius.

El client de FTP més conegut és el Filezilla. Instal·leu-lo ales màquines client i afegiu algun pantallasso.


Servidor AWS[modifica]

Si disposes d'un servidor AWS d'Amazon el configurarem com un servei de hosting.

Ens caldrà configurar-ho en mode PASSIU ja que si no, el firewall del router (tant a casa com a l'insti) no permetria la transferència de dades (tot i que sí permetria el login). Llegeix aquest article sobre FTP actiu vs passiu on s'explica.

Per connectar-nos en mode passiu cal fer la comanda amb -p

$ ftp -p <la_meva_ip_o_domini>

També podeu provar de connectar-vos amb Filezilla o altres clients FTP.

Guía:

  1. Instal·la vsFTPd i fes un cop d'ull a l'arxiu de configuració /etc/vsftpd.conf
  2. Crea un usuari "gabi" (sense privilegis)
  3. Configura vsFTPd per permetre usuaris locals però no anynomous (normalment ja ve així per defecte)
  4. Obre els ports 20, 21 i 8081 del AWS
  5. Testeja que "gabi" pot logar-se al sistema
    • Testeja que pot executar cd i pwd (comandes del port 21)
    • Testeja que NO pot rebre dades del port 20: LS, GET, PUT
    • Testeja que l'usuari pot accedir a l'arrel del sistema d'arxius i a les configuracions en /etc (cosa poc interessant per seguretat).
    • Justifica perquè passa això llegint aquest article sobre el FTP passiu vs actiu.
  6. Configura el vsFTPd en mode passiu com indica aquest article
    • Utilitza el port 8081 com a port de transmissió de dades passiu (min i max). El proxy del centre restringeix quasi tots els ports de sortida, i aquest és un dels pocs que deixa lliures.
      Des de casa vostra podeu utilitzar altres ports (millor un rang per permetre connexions de més usuaris).
    • NOTA: utilitza pasv_address, ja que pasv_addr_resolve no funciona.
  7. Engabia l'usuari "gabi" (chroot) per més seguretat, així aquest usuari no podrà mirar els arxius de, per exemple, /etc
    Utilitza la directiva CHROOT comentada més amunt per engabiar l'usuari. Caldrà que donis permisos 555 al home directory de gabi perquè si no, no deixa entrar.