Quan desenrotllem aplicacions web, el normal és començar en un entorn local, executant-les en el nostre propi ordinador. Ací provem que el codi funciona correctament, ja siga amb un servidor senzill en Node.js, amb Apache/PHP, o amb qualsevol altra tecnologia.
No obstant això, treballar només en local té un límit: l’aplicació només està disponible per a nosaltres. El següent pas és portar-la a un entorn real en Internet, on qualsevol persona puga accedir a través d’una adreça IP o un nom de domini. Este procés es coneix com el desplegament o passe a producció.
Hui dia, el desplegament pot fer-se de diferents formes. En qualsevol cas, el desplegament no és només “pujar arxius”: també implica configurar, mantindre i assegurar el servidor, i en molts casos automatitzar el procés amb Git i pipelines d’integració contínua (CI/CD).
En este mòdul aprendrem els passos bàsics per a posar en marxa un servidor remot i desplegar una aplicació web real, partint de l’opció més versàtil i pròxima a la realitat professional: un VPS amb Linux i Node.js.
El desplegament en servidors remots permet que una aplicació web siga accessible a nivell mundial.
Este pas requerix d’alguns elements previs que hem de tindre preparats:
En primer lloc, hem de comptar amb alguna ubicació pública (accessible des de qualsevol lloc) on instal·lar el servidor i la(s) web(s). Depenent de les característiques del projecte en si, i de les possibilitats econòmiques de l’empresa, existixen diverses opcions, que veurem a continuació.
En segon lloc, hem de disposar d’algun mecanisme per a enviar i descarregar informació d’eixa ubicació, com per exemple una connexió SSH i/o una connexió FTP. D’esta manera, podrem, entre altres coses, pujar el contingut de la web a l’allotjament, o els canvis que anem realitzant en un futur, i per SSH instal·lar el programari que necessitem (servidors web, SGBD, FTP, etc.)
A l’hora de triar l’allotjament dels nostres projectes web, existixen diferents opcions, unes més costoses i altres més assequibles. En general, salve per a empreses fortes que disposen de la infraestructura adequada, se sol acudir a empreses especialitzades en allotjament web per a situar estos projectes. Elles s’encarreguen així del manteniment del servidor, mesures de seguretat, i altres elements com ara la disponibilitat, que es garantix mitjançant un acord del nivell de servici (Service Level Agreement, SLA). Vegem alguns exemples típics.
Quan el projecte és d’envergadura, i la companyia té suficient solvència econòmica, es pot optar per contractar un servidor dedicat, és a dir, un equip maquinari exclusiu per a ús de l’empresa en qüestió. Com diem, en alguns casos este servidor està en les pròpies instal·lacions de l’empresa, amb la seua IP pròpia, i és l’empresa qui s’encarrega de mantindre’l, reiniciar-lo i configurar la seguretat en el seu accés. En altres ocasions, es delega esta tasca en una empresa especialitzada en allotjaments web, amb el corresponent SLA acordat.
Els servidors dedicats oferixen un alt rendiment i seguretat, ja que no es compartixen recursos amb altres usuaris. No obstant això, solen ser més costosos i requerixen coneixements tècnics per a la seua configuració i administració.
Com a exemples d’empreses d’allotjament que oferixen estos servidors dedicats podem nomenar, entre altres, a Acens, OVH, o IONOS 1&1. Els preus mitjans tendixen a començar al voltant dels 70 - 90 euros al mes, encara que pot haver-hi altres ofertes més econòmiques.
En l’altre extrem, podem trobar-nos amb projectes que requerisquen de pocs recursos. Parlem de projectes amb poques bases de dades, poca necessitat d’espai per a emmagatzematge, i pocs requisits d’amplada de banda o connexions simultànies. En estos casos, algunes empreses d’allotjament també oferixen la possibilitat d’utilitzar un espai xicotet en un servidor, que ens limita molt unes certes coses, com ara l’amplada de banda, nombre de bases de dades disponibles, espai en disc… Fins i tot ens limita el llenguatge o llenguatges a utilitzar, sent PHP el més habitual.
En comparació amb els servidors dedicats, presenten més problemes de seguretat. Això es deu a la naturalesa mateixa de com funcionen estos dos tipus de servidors i com es gestionen els recursos i la seguretat en cadascun d’ells. Per exemple, si altres usuaris tenen alguna vulnerabilitat de seguretat en el seu lloc web, un atacant podria intentar aprofitar-la per a accedir a altres llocs en el mateix servidor.
També trobem nombroses empreses que oferixen este tipus d’allotjament, com IONOS 1&1, Servage, Hostalia… Depenent de les característiques que oferisquen (nombre de bases de dades, amplada de banda, emmagatzematge, etc), els preus poden rondar entre 3 i els 7 o 8 euros al mes, per a esta mena de servici.
Com a situació intermèdia entre les dos anteriors, està l’opció de contractar un servidor privat virtual (VPS, Virtual Private Server). Consistix a simular que es disposa d’un servidor dedicat, però internament del que es disposa és d’una part d’un equip, amb el seu propi disc dur, memòria RAM dedicada, processadors, etc. D’esta manera, podem instal·lar qualsevol tipus de programari que necessitem (tenint únicament en compte els requisits de nombre de processadors, RAM i espai disponible), però el cost és molt de menor que el d’un servidor dedicat, en compartir-lo amb altres webs que utilitzen un VPS sobre el mateix equip.
Moltes de les empreses que podríem citar en els dos casos anteriors oferixen este tipus de servici, com per exemple OVH, Hostalia o IONOS 1&1. El preu sol rondar els 10 euros al mes, encara que en alguns casos s’oferixen preus més competitius per a uns certs tipus bàsics de VPS.
Per la seua versatilitat, en este tema ens basarem en esta última opció. Com a empresa d’allotjament, explicarem com registrar-nos i utilitzar un VPS amb OVH, auque els passos a seguir amb qualsevol altra empresa d’hosting seran més o menys similars.
Com hem comentat abans, explicarem els passos a seguir per a contractar un VPS bàsic amb l’empresa OVH, per exemple, i veurem quines característiques oferix dit VPS. Per a començar, hem d’accedir a la web de l’empresa.
Com contractarem un producte, haurem de registrar-nos des de la Àrea de client en la part superior, triant després l’opció de Crear un compte. Si ja som clients, podem loguearnos des d’esta mateixa secció de Àrea de client.
Per a triar el VPS a contractar, anem a la secció Bare Metall Cloud > Contractar > Servidors Privats Virtuals del menú superior de la pàgina principal (una vegada ens hem logueado)
Veurem els diferents plans de VPS oferits:
Triarem l’opció més bàsica i econòmica. Si fem clic en el botó corresponent de Contractar, es mostraran les opcions per a configurar la nostra instància de VPS.
Permet triar quina distribució de sistema operatiu preinstal·lar. Podem triar entre diferents, com Linux Debian, CentOS, Ubuntu… També s’oferixen algunes distribucions amb interfície gràfica incorporada, com KUbuntu o Windows Server.
Si contractem el VPS, ens demanarà que especifiquem algunes opcions més, com la nostra localització (Europa), o el sistema operatiu a instal·lar. En el nostre cas, utilitzarem una distribució Debian. En general no és recomanable utilitzar l’última, ja que algunes ferramentes, com MongoDB, solen tardar a actualitzar-se a estes últimes versions.
Una vegada completat el registre, i passat un temps, rebrem un e-mail de confirmació amb les dades per a accedir al VPS. A través de l’àrea de client de la pàgina web, al qual s’accedix amb l’usuari i contrasenya que indiquem en registrar-nos, podrem gestionar alguns aspectes: reinstal·lar el VPS, ampliar les seues capacitats, associar un nom de domini, etc.
Inicialment s’assignarà un nom de domini amb un codi aleatori, seguint el patró vps-xxxxxx.vps.ovh.net, sent XXXXXX el codi que se’ns haja assignat. Podem, a més, contractar altres noms de domini i associar-los al nostre VPS, com veurem a continuació.
En la secció de Inici podem consultar, entre altres coses, quina adreça IP se’ns ha assignat (IPv4 i IPv6), el nom del VPS, i en la part esquerra hi ha una sèrie d’opcions per a, per exemple, reiniciar el servidor, o reinstal·lar-lo de nou (en el cas que alguna instal·lació haja resultat defectuosa i necessitem tornar a començar, per exemple).
Un pas habitual si desenvoluparem una aplicació web amb una certa visibilitat és contractar un nom de domini associat, de manera que puguem accedir a l’aplicació amb este nom de domini.
Des de la pròpia plataforma d’OVH podem contractar el domini, amb diferents extensions (.és, .com, .net, .org, .eu…). Podem, no obstant això, utilitzar el nom de domini vps-xxxxxx.vps.ovh.net que ens han assignat, per a fer webs d’ús privat o restringit. També podem contractar un domini .ovh si busquem un preu econòmic. Estos dominis se solen oferir entre 1 i 3 euros a l’any, aproximadament.
Des de la secció de Web Cloud en la nostra àrea de clients podem contractar el domini.
Buscarem primer el domini que volem comprar (per exemple, maycalle.ovh), i la plataforma ens informarà de si està disponible i el seu preu anual. Una vegada seleccionat el domini en qüestió, els següents passos són:
Quan ja tinguem contractat el domini amb les opcions que hàgem triat, hem de associar el domini al VPS. En la secció Web Cloud de la nostra àrea de clients existix una subsecció Dominis, on podem veure els dominis que tenim contractats. Fent clic en un d’ells veurem la seua configuració actual.
En la pestanya de Redirecció veurem el domini amb la IP actualment assignada. Esta IP correspon a una pàgina de benvinguda per defecte d’OVH. Fem clic en el botó de configuració a la dreta de la IP, i triem modificar registre. Assignem la que tenim assignada al nostre VPS.
A més, hem d’anar a la secció Zona DNS i modificar els registres A (Address Rècord) perquè el nostre domini apunte a la IP del nostre VPS.
Passats uns dies tindrem disponible el domini (si no és així, haurem de contactar amb OVH a través del suport del panell de client perquè ho refresquen). Podem comprovar-ho fent ping a este domini, i veient que la IP a la qual intenta connectar correspon amb la nostra.
ping maycalle.ovh
PING maycalle.ovh (92.222.22.170): 56 data bytes...
NOTA: si passades 24 o 48 hores seguim sense tindre associada la IP al nostre domini, seguint la documentació oficial d’OVH, hem d’acudir a la mateixa secció de dominis vista abans, però en lloc d’anar a Redirecció, hem d’anar a la secció Zona DNS, i fer clic en el botó Editar en mode text de la part dreta. Apareixerà un quadre per a editar la configuració de DNS manualment, però n’hi ha prou que enviem esta configuració sense més per a sol·licitar que es propague.
Afegir subdominis
Si volem afegir subdominis d’un contractat (per exemple, proves.maycalle.ovh), bastaria amb accedir a este mateix panell de redireccions i polsar el botó de Crear una redirecció en la part dreta. Posarem el nom del subdomini:
Després indicarem a què ho redirigirem (podem redirigir a una web, o a un servidor). En este cas, redirigiríem al nostre servidor VPS:
Després, triem el mètode de redirecció (per IP), i finalment especifiquem l’adreça IP, que serà la que se’ns ha assignat per al VPS. Després d’este pas, confirmarem les dades i quedarà el subdomini registrat en les redireccions.
Existixen diferents maneres d’accedir al VPS per a pujar arxius, descarregar-los o instal·lar programari, entre altres coses. Analitzarem ací algunes de les més habituals i còmodes.
El protocol SSH (Secure Shell) permet connectar-nos de manera segura i xifrada al nostre servidor Linux (VPS) des de Windows.
A través de SSH podrem executar comandos en el servidor, instal·lar programes, modificar configuracions o consultar registres, com si treballàrem directament en el propi servidor.
Una forma rudimentària, però útil, d’accedir al servidor, és a través d’un terminal per SSH (Secure Shell).
Per a això, hem d’obrir la terminal de Windows i escriure el següent comando, indicant el nom del VPS indicat en el correu de confirmació.
ssh root@vps-xxxxxxxx.vps.ovh.net
En el cas de tindre un domini contractat i ja enllaçat amb el VPS (per exemple, maycalle.ovh), podem connectar així:
ssh root@maycalle.ovh
Observa que s’anteposa l’usuari a la direcció del VPS, separats per una arrova.
La primera vegada que et connectes, el client SSH (el teu ordinador) et preguntarà si confies en la empremta digital (*fingerprint) del servidor.
Això no és un error, és una mesura de seguretat per a evitar atacs de suplantació (man-in-the-middle). L’empremta digital del servidor identifica de manera única a la teua VPS. Si algun dia tornes a connectar-te i SSH t’avisa que la clau ha canviat, això podria indicar un problema de seguretat o una reinstal·lació del servidor.
Escriu yes
i polsa Enter.
SSH guardarà la clau del servidor en el teu equip (en l’arxiu C:\Users\<el teu_usuari>\.ssh\known_hosts
) i ja no tornarà a preguntar la pròxima vegada que connectes.
A continuació, et demanarà la contrasenya de l’usuari root (la que vas rebre per correu en contractar el VPS). En escriure-la no es mostraran caràcters en pantalla, però s’està introduint correctament. Polsa Enter per a accedir.
Una vegada dins, i des del terminal, podrem instal·lar el programari que necessitem (servidors web, servidors de bases de dades, etc), i també detindre o reiniciar estos servicis, com veurem més avant.
També és possible utilitzar algun client SSH que recorde les dades de la connexió per a no haver-los de que indicar cada vegada. En el cas de Windows i Linux, podem utilitzar OpenSSH, per exemple. En el cas específic de Windows disposem de Solar Putty, que permet, entre altres coses, tindre diverses pestanyes de terminal obertes. Pel que fa a sistemes Mac, podem emprar la ferramenta Termius, per exemple. El principal avantatge d’estes ferramentes és simplement el recordar les dades de la connexió per a no haver-los de que posar cada vegada, però podem connectar per SSH amb un simple terminal del sistema operatiu.
NOTA: Des de Windows 10 i Windows 11, ja no és necessari instal·lar programes externs: el sistema inclou el client OpenSSH de manera nativa.
Encara que les primeres connexions al VPS solen fer-se amb l’usuari root, en la pràctica no es recomana usar-lo diàriament. L’usuari root té control total del sistema, i qualsevol error (esborrar un arxiu o canviar un permís incorrecte) pot afectar a tot el servidor. En entorns professionals, l’habitual és treballar amb un usuari normal amb permisos d’administració mitjançant sudo
.
Seguix els següents passos per a crear un usuari amb permisos de sudo:
adduser alumne
usermod -aG sudo alumne
ssh alumne@vps-xxxxxxxx.vps.ovh.net
sudo
quan necessites permisos d’administrador. Per exemple:sudo apt update
Una vegada comprovat que el teu usuari amb permisos de sudo funciona correctament, és recomanable bloquejar l’accés directe de l’usuari root, especialment en entorns professionals o servidors en producció.
Per a fer-ho, edita la configuració del servici SSH:
sudo nano /etc/ssh/sshd_config
PermitRootLogin prohibit-password
sudo systemctl reload ssh
A partir d’eixe moment, ja no serà possible iniciar sessió directament com root per SSH. Només els usuaris autoritzats amb privilegis de sue podran fer tasques d’administració.
Encara que podem accedir al servidor introduint la contrasenya de l’usuari root, la forma més segura i professional de fer-ho és mitjançant autenticació amb clau SSH. Este mètode usa un parell de claus (una pública i una privada) que permet connectar-se sense necessitat d’escriure contrasenyes, evitant atacs per força bruta.
Quan connectes, el servidor verifica que la teua clau privada coincidix amb la seua clau pública associada, i et permet entrar automàticament.
Pas 1. Generar el parell de claus:
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
ssh-keygen -t rsa -b 4096 -C "tu_email@ejemplo.com"
C:\Users\<el teu_usuari>\.ssh\
:
dir ~/.ssh
Pas 2. Copiar la clau pública al VPS:
Hem de copiar el contingut de l’arxiu id_ed25519.pub
dins de /root/.ssh/authorized_keys
en el servidor.
Podem fer-ho de dos formes:
ssh-copy
(si està disponible): ssh-copy-id root@vps-xxxxxxxx.vps.ovh.net
id_ed25519.pub
amb el Bloc de notes.mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Pas 3. Connectar-se al VPS sense contrasenya
Una vegada copiada la clau, ja pots accedir sense escriure la contrasenya. SSH usarà la teua clau privada automàticament i no demanarà la contrasenya.
ssh root@vps-xxxxxxxx.vps.ovh.net
Pas 4. Desactivar l’accés per contrasenya
Una vegada verificat que la connexió amb clau funciona correctament, pots desactivar l’accés per contrasenya per a reforçar la seguretat del VPS.
nano /etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication no
sue systemctl restart ssh
A partir d’eixe moment, només es podrà accedir amb clau SSH.
NOTA: Si accedim al mateix VPS des de diversos equips (per exemple, l’ordinador de classe i el portàtil personal), hem de repetir este procés en cada un. El VPS emmagatzemarà totes les claus públiques autoritzades, una per línia, en l’arxiu
/root/.ssh/authorized_keys
.
Una de les formes més còmodes i professionals de treballar amb la teua VPS és mitjançant Visual Studio Code i la seua extensió Remote - SSH. Esta opció permet connectar-te al servidor i editar, compilar o desplegar codi directament en el VPS, sense haver de pujar arxius manualment per FTP. És la forma de treball més habitual en entorns de desenvolupament web i en equips DevOps.
Seguix els següents passos per a instal·lar l’extensió:
ssh alumne@vps-xxxxxxxx.vps.ovh.net
.A continuació, seguix estos passos per a configurar l’accés en VS Code:
C:\Users\<el teu_usuari>\.ssh\config
Host vps-ovh
HostName vps-xxxxxxxx.vps.ovh.net
User root
IdentityFile C:\Users\<el teu_usuari>\.ssh\id_ed25519
AddKeysToAgent yes
ForwardAgent no
Ara podràs connectar amb només escriure ssh vps-ovh
des de la terminal o seleccionar-ho des de VS Code.
Per a connectar-te i treballar en remot des de VS Code, seguix estos passos:
Remote-SSH: Connect to Host...
i tria vps-ovh.SSH: vps-ovh
Una vegada connectat:
Els canvis es guarden en el VPS, no en el teu equip local.
Per a desconnectar-te, polsa F1 → Remote-SSH: Close Remote Connection, o tanca la finestra.
Si alguna cosa falla:
Exercici 1. Accés inicial i configuració segura del VPS
Accedix al VPS de OVHCloud i deixa-ho configurat per a treballar de manera segura durant la resta del curs: accés sense contrasenya, usuari amb permisos de sue, bloqueig de l’accés root i connexió des de VS Code.
Seguix els següents passos:
- Accedix al VPS com root i verifica que pots executar comandos bàsics (ls, apt update)
- Crea un usuari amb permisos d’administració
- Comprova que pots iniciar sessió i usar
sudo whoami
(ha de retornar root)- Configura l’accés per clau SSH
- Genera un parell de claus SSH
- Còpia la teua clau pública al VPS per a l’usuari nou
- Assegura’t de poder accedir sense escriure la contrasenya
- (Opcional) Bloqueja l’accés remot de root
- Configura VSCode per a treballar amb el VPS
- Instal·la l’extensió
Remote - SSH
en VSCode- Crea o edita
C:\Users\<el teu_usuari>\.ssh\config
com s’explica en els apunts (apartat 4.3)- Connecta’t des de VSCode i obri
/var/www
- Crega un arxiu
prova.txt
i verifica la seua existència en la terminal remota
Si tenim oberta una sessió SSH, podem emprar la ferramenta git per a descarregar aplicacions que tinguem pujades a algun repositori tipus GitHub, BitBucket o similar. Per a això, n’hi ha prou que:
git
, si no ho hem fet ja:sudo apt install git
git config --global user.email el_teu_email@domini.com
git config --global user.name el_teu_nick_en_github
git clone
, seguida de la URL del repositori a clonar:git clone url_repositori_git
NOTA: es crearà una subcarpeta amb el nom del repositori en qüestió.
git pull
, des de la carpeta del projecte en si:git pull
Exercici 2:
Instal·la git en el teu VPS i configura-ho amb les teues credencials
Connectar un repositori local amb un repositori remot utilitzant VSCode
Si no tenim cap repositori remot disponible, podem utilitzar VS Code per a connectar un repositori local amb un repositori remot. Este procés implica els següents passos:
git init
en la terminal.git add
en el terminal.git commit -m "missatge"
en el terminal.git remalnom add origin URL_DE EL_REPOSITORI
, ja que esta operació específica no té una interfície directa en VS Code.git push
, enviant els teus canvis locals a la branca remota que acabes de crear.Per a qualsevol nova modificació que es realitze en el projecte local, és important seguir un procés sistemàtic per a assegurar-se que els canvis es registren i se sincronitzen correctament amb el repositori remot:
Una altra via d’accés, aprofitant la connexió SSH citada anteriorment, consistix a utilitzar un client gràfic que suport SFTP (SSH File Transfer Protocol). SFTP utilitza la sessió SSH i per tant xifra credencials i dades: és segur sempre que uses SFTP (no FTP) i no et connectes com root.
Un client SFTP permet veure de manera gràfica el sistema d’arxius remot. D’esta manera podem navegar fins a qualsevol carpeta i pujar o descarregar arxius.
Alguns client habituals són: FileZilla (multiplataforma), WinSCP (Windows) o Cyberduck (macOS/Windows). FileZilla pot descarregar-se des del seu web oficial.
Des del gestor de llocs de FileZilla (botó de la cantonada superior esquerra) podem configurar una nova connexió.
Crea una nova entrada, amb els següents paràmetres:
Per a usar autenticació amb clau privada (recomanat):
En connectar, veurem en el panell dret el sistema d’arxius del servidor, i en l’esquerre l’el nostre local. D’esta manera és senzill pujar i descarregar arxius.
Una alternativa per a transferir fitxers és instal·lar un servidor FTP en el VPS i crear usuaris restringits (chroot) que només puguen operar en carpetes concretes. FTP no xifra credencials ni dades, per la qual cosa no ha d’usar-se en Internet excepte per compatibilitat amb sistemes heretats (és a dir, clients o aplicacions antigues que només suporten FTP) i sempre sobre FTPS/*TLS.
Un servidor FTP lleuger i comú en Linux és vsftpd. Si ho uses, aplica mesures de seguretat: desactivar accés anònim, chroot per a usuaris, FTPS obligatori i control de permisos. Preferiblement, utilitza sempre SFTP (ve amb SSH).
Accedix al VPS, i des d’escriu el següent comando per a instal·lar el servidor:
sudo apt update
sudo apt install -y vsftpd
sudo systemctl enable --now vsftpd
systemctl enable --now vsftpd
: arranca el servici i el configura perquè arranque automàticament en reiniciar.Després de la instal·lació, podem iniciar i detindre el servidor amb systemctl per a controlar el servici (start/stop/restart/status).
Per a editar la configuració del servidor, hem d’editar l’arxiu /etc/vsftpd.conf
.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
Algunes opcions de configuració interessants:
anonymous_enable=NO
local_enable=YES
write_enable=NO
chroot_local_user=YES
allow_writeable_chroot=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
anonymous_enable=NO
: no permetre usuaris anònims (ningú sense compte).local_enable=YES
: permetre comptes del sistema (usuaris que creguem).write_enable=YES
: per defecte no permetre pujades; canvia a YES només si efectivament es permetran.chroot_local_user=YES
: tancar a l’usuari en la seua carpeta (chroot).allow_writeable_chroot=NO
: vsftpd exigix que la carpeta chroot no siga escribible per l’usuari (més a baix explique com fer-ho segur).ssl_enable=YES
, force_local_data_ssl=YES
i force_local_logins_ssl=YES
: forçar FTPS/TLS per a xifrar la connexió si decidixes exposar FTP en Internet.pasv_enable=YES
, pasv_min_port=40000
, pasv_max_port=40100
: rang de ports passius; si el teu VPS està darrere de NAT/Encaminador, este rang ha d’obrir-se en el firewall/encaminador.Després d’editar, reinicia el servidor:
sudo systemctl restart vsftpd
L’objectiu és crear usuaris que puguen transferir fitxers però no obrir una consola *SSH ni eixir de la seua carpeta.
Pas 1. Crear un grup per a comptes FTP
Per a identificar millor als usuaris que accedixen per FTP, podem crear un grup, la qual cosa facilita la gestió de permisos i polítiques. Cridarem al grup, per exemple, ftpusers:
sudo groupadd ftpusers
Pas 2. Crear un usuari sense shell (sense accés per consola)
Crearem l’usuari usuarioftp1:
# crear usuari sense shell (no podrà obrir terminal/ssh)
sudo useradd -M -d /srv/ftp/usuarioftp1 -s /usr/sbin/nologin -G ftpusers usuarioftp1
sudo passwd usuarioftp1
En algunes distribucions, vsftpd comprova que el shell estiga llistat en /etc/shells
. Si el login falla en usar nologin, afig /usr/sbin/nologin
a /etc/shells
:
echo "/usr/sbin/nologin" | sudo tee -a /etc/shells
Pas 3. Crear l’estructura de carpetes segura
Vsftpd demana que el directori arrel del chroot no siga escribible per l’usuari. Per això:
# crear directoris
sudo mkdir -p /srv/ftp/usuarioftp1/uploads
# L'arrel del chroot: propietat root, no escribible per l'usuari
sue chown root:root /srv/ftp/usuarioftp1
sue chmod 755 /srv/ftp/usuarioftp1
# Subcarpeta escribible per l'usuari: ací puja fitxers
sudo chown usuarioftp1:ftpusers /srv/ftp/usuarioftp1/uploads
sudo chmod 750 /srv/ftp/usuarioftp1/uploads
Amb els comandos anteriors, l’usuari queda tancat en /srv/ftp/usuarioftp1
(no pot eixir) i només pot escriure en uploads/
. Això evita que esborre arxius del sistema o obtinga permisos no desitjats.
Per a connectar des del client a este servidor FTP, utilitzem el client FileZilla comentat anteriorment. En este cas, des del Gestor de llocs creem una nova connexió FTP, amb l’usuari que hàgem afegit prèviament.
En connectar, veurem que estem restringits a la carpeta que s’ha assignat a este usuari.
Esta manera d’accedir i pujar arxius és més segura, al no poder alterar el contingut de carpetes externes a la indicada en la configuració. Podem emprar este mètode per a pujar arxius com a imatges, vídeos, etc.