Configurant i personalitzant els accesos al servidor FTP de FreeBSD

Configurant i personalitzant els accesos al servidor FTP de FreeBSD

Ací un resum pràctic per a configurar un servidor FTP amb usuaris de l'FTP però que no puguen accedir a la shell ni a qualsevol ruta, per a evitar-nos problemes.

FreeBSD té un servidor senzill al seu sistema base anomenat ftpd. Aquest article explica com configurar-ho i personalitzar-ho. Existeixen molts ports a FreeBSD sobre FTP (servidors diversos d'FTP o d'SFTP o d'FTPS, clients de terminal o amb gui, etc). Però en aquest article nomès configurarem de manera clàssica el servidor que ve instal·lat al sistema base.

El protocol FTP no és un protocol segur (quan parlem de compartir informació sensible i privada) però de vegades necessitem un servei FTP senzill a una LAN, ja siga per a usuaris autenticats o usuaris anònims. A continuació vaig a explicar com crear un usuari el qual no tindrà accès a la shell del sistema, i també com podem configurar l'accès a l'FTP d'aquest usuari per a que siga redirigit automàticament a una determinada ruta, com si es tractès d'una gàbia en cas de que no vullguem que puga eixir d'eixe directori per motius de seguretat.

Donaré per sentat que ja tens un servidor FTP instal·lat a FreeBSD. Si vols saber com es fa a FreeBSD, tens la pàgina del manual oficial de FreeBSD o pots cercar-ho al cercador DuckDuckGo perquè hi ha molta documentació de com muntar servidors FTP.

CREEM EL(s) NOSTRE(s) USUARI(s)
Una vegada hem instal·lat el nostre servidor FTP i està corrent, començarem creant els usuaris en el sistema operatiu de lamanera clàssica i ja li anirem donant totes les opcions que vullguem mitjançant l'ordre:

adduser

Una vegada tindrem creat l'usuari, amb la seua shell, la seua contrasenya, etc, ja podrem continuar configurant els paràmetres a l'FTP de FreeBSD. Començarem tancant-li la porta als usuaris d'FTP per a que no puguen accedir d'una altra manera més que via FTP al port 21.

CONTROLANT QUE ELS USUARIS NOMÈS ACCEDISQUEN VIA FTP
A continuació, mirem on està "nologin":

[root@benicassim /home/joan]# whereis nologin
nologin: /usr/sbin/nologin /usr/share/man/man8/nologin.8.gz

Aa afegirem /usr/sbin/nologin al fitxer de les shells, que quedaria així:

[root@benicassim /home/joan]# cat /etc/shells
# $FreeBSD: releng/11.1/etc/shells 59717 2000-04-27 21:58:46Z ache $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/tcsh
/usr/local/libexec/git-core/git-shell
/usr/local/bin/bash
/usr/local/bin/rbash
/usr/sbin/nologin

Finalment editarem la configuració de l'usuari que hem creat i li direm que no farà servir cap shell del sistema, i ho farem dient-li la del nologin que acabe d'afegir en el pas anterior:

[root@benicassim /home/joan]# chpass usuarioX
#Changing user information for usuarioX.
Login: usuarioX
Password: $6$7A3KpCIsy9s5NFb/$LzpM7qtcK.YNnRZa5IaodZ9j4eFDPrhe8FkVzrNcX64h3Asl.5
ab7zDyGlAdY2kS0Xfqss.jxa8DFW1ZLl8zJ.
Uid [#]: 1004
Gid [# or name]: 1004
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/usuarioX Shell: /usr/sbin/nologin
Full Name: User &
Office Location:
Office Phone:
Home Phone:
Other information:

CONTROLANT A QUINA RUTA ON PODRAN ACCEDIR ELS USUARIS
Molt bé, ja tenim un usuari que no té shell. Ara també configurarem el fitxer ftpchroot, que es llegit pel dimoni ftpd al principi després d'autenticar-se l'usuari. Cada línea de ftpchroot correspon a un usuari o grup. Allí li direm quines són les restriccions que volem per als nostres usuaris. Per exemple, si volem que el nostre usuari nomès estiga al seu home i no puga eixir a directoris superior, editarem /etc/ftpchroot amb:

usuarioX /home/usuarioX

En canvi, si volem que quan accedisca via FTP accedisca al directori arrel del nostre servidor web (per exemple per a un usuari webmaster) farem:

usuarioX /usr/local/www

Si volem afegir informacions complementaris al nostres usuaris FTP, podem editar el fitxer /etc/ftpwelcome que es mostra abans d'accedir a l'FTP, i el fitxer /etc/ftpmotd que es mostra immediatament quan accedim correctament.

Configurant i personalitzant els accesos al servidor FTP de FreeBSD

CONTROLANT QUI ACCEDEIX I QUI NO ACCEDEIX
Per acabar, que sàpigues que si volem que alguns usuaris del sistema operatiu no puguen accedir via FTP, afegirem els seus noms al fitxer /etc/ftpusers. D'aquesta manera, podem tenir un servidor FTP nomès per als familiars, per a un script que tenim funcionant 24x7, per a dos desenvolupadors que necessiten treballar a un directori del servidor, etc.

Aquest ha segut un resum senzill de com tenir un servidoret FTP amb un cert tipus de control d'usuaris. Encara que l'sFTP via port 22 és més segur, a vegades necessitem un clàssic FTP al port 21, per això cal afilar bé totes les mesures de seguretat que puguem donar-li.

AUDITANT ELS ACCESOS, CÀRREGUES I DESCÀRREGUES DE L'FTP
Per a no anar a cegues, i tenir un servidor FTP obert on desconeixem què pot estar passant i qui pot estar accedint, podem anar revisant els logs regularment o fer-nos scripts per tenir resums concrets de quins usuaris accedeixen al servidor, o quins fitxers s'han pujat o s'han descarregat, o quins usuaris han segut els que han esborrat alguns fitxers, etc.

Afegirem la següent línia al fitxer /etc/rc.conf per a que execute aquest paràmetre a l'arranc:

ftpd_flags="-l"

I ara ja podrem veure els logs en temps real tail -f apuntant a /var/log/xferlog, tal i com ens diu l'ajuda del manual de ftpd(8):

-l Each successful and failed ftp(1) session is logged using syslog
with a facility of LOG_FTP. If this option is specified twice,
the retrieve (get), store (put), append, delete, make directory,
remove directory and rename operations and their filename
arguments are also logged. By default, syslogd(8) logs these to
/var/log/xferlog.

Tens més informació a:
- File Transfer Protocol (FTP)
- Arxiu FTPCHROOT (FreeBSD Manuals)

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.