pure-ftpd, Centos 7 e utenti virtuali

A volte, sopratutto in queste tranquille giornate estive, mi illudo che una semplice operazione quale installare e mettere in sicurezza un server ftp sul mio pc con Centos 7, possa essere un'operazione da 5 minuti, seguendo beceramente una guida e spegnendo il cervello. L'operazione *DEVE essere facile, anche perchè il mio scopo non è "installare un server ftp" ma utilizzarlo per altri servizi (la cui installazione/configurazione già mi sta facendo perdere un sacco di tempo).

Ovviamente, quando ho fretta e faccio le cose più semplici a tutta velocità e senza prestare la dovuta attenzione, "sbaglio" sempre, andando a sommare errori su errori. Insomma, dopo 15 anni ad a̶m̶m̶i̶n̶i̶s̶t̶r̶a̶r̶e̶ smanettare su sistemi *nix, ancora non ho capito che il cervello va sempre tenuto acceso.

Dopo il fantastico preambolo vediamo come, in 5 (CINQUE) minuti, installare pure-ftpd, avviarlo (ma va?), utilizzare solo un utente virtuale (non quelli "veri" di unix, o l'utente anonimo), limitarlo a una sua cartella e proteggere ftp da accessi indesiderati.

L'rpm si installa via yum dal repository epel, questa la versione che utilizzo io in questo momento:

Il file di configurazione è
/etc/pure-ftpd/pure-ftpd.conf
e vado a modificarlo in questo modo:

1) Niente utilizzo del solo utente anonimo (anni fa da qualche parte avevo letto che è impossibile mettere al sicuro un server ftp che faccia login, per cui l'unico modo per usarlo in maniera corretta è quella dell'utente anonimo, vabbè).
2) Non voglio usare l'utente anonimo.
3) Dove sta il file col database dei miei utenti virtuali.
4) Non uso l'autenticazione PAM (voglio usare gli utenti virtuali).
5) Non uso l'autenticazione Unix (voglio usare gli utenti virtuali).

In Centos 7 mi ritrovo questo utente ftp.

Non so dire chi lo abbia creato, quello che so è che NON lo utilizzo per questa configurazione ma vado a crearne un altro chiamato ftpgab, con gruppo ftpgab.

Questo utente non ha shell e non ha home per ovvi motivi di sicurezza.

L'idea ora è di creare un utente virtuale che si mappa sui permessi di questo utente reale. Andrò poi ad assegnare i permessi ftpgab.ftpgab alla directory che sarà la home (/repo/v_user/ftp/) del mio utente virtuale.

Cambio dei permessi.

Creazione dell'utente virtuale  "upload" mappato sull'utente reale ftpgab, con home /repo/v_user/ftp.

Creazione del db degli utenti.

Cancellazione di un utente (nel caso servisse).

Cambio password.

Elenco dei miei utenti virtuali.

Ora aggiungo un paio di regole iptables per filtrare la porta ftp, permettendo le connessioni solo da determinati indirizzi ip:

NOTE:

1)
pure-pw va a lavorare sui file /etc/pure-ftpd/
pureftpd.pdb
pureftpd.passwd

Il .passwd è un file di testo tipo /etc/passwd con i dati degli utenti virtuali.
Il .pdb è uguale a .passwd ma in formato data e viene generato dal comando pure-pw mkdb.

(man pure-pw per avere maggiori informazioni)

2)
Il -m finale in tutti i comandi (pure-pw) dati in precedenza fa si che non si debba rigenerare il file .pdb (tramite pure-pw mkdb) ogni volta che si modifica il file .passwd tramite pure-pw.

A questo indirizzo qualche informazione aggiuntiva sugli utenti virtuali:
https://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users


Cosa può far perdere un sacco di tempo?

1) Spegnere il cervello e seguire questa guida
https://www.raspberrypi.org/documentation/remote-access/ftp.md
che FUNZIONA perfettamente su raspbian ed è sostanzialmente identica a quella che ho scritto qui sopra, tranne per il fatto che su Centos 7 ci sono default differenti di pure-ftpd.

In particolare, se si segue questa guida questo sarà il primo errore quando ci si prova a connettere da un client

ovvero, manca il file /etc/ftpusers.
Ok, è un baco: il file lo si può semplicemente creare con touch e il fatto che ci sia questo controllo è dovuto al fatto che PAM, per pure-ftpd dice così:

In italiano, nella riga 1: "controlla il file ftpusers e assicurati che gli utenti in esso contenuti NON possano loggarsi".

Io però non voglio usare PAM e neppure gli utenti reali per cui tutto questo non mi serve a nulla: dovrò invece andare a  configurare correttamente /etc/pure-ftpd/pure-ftpd.conf  specificando di non utilizzare PAM, laddove invece in raspian è già configurato così.

2) Pensare di poter utilizzare l'utente già pronto (almeno sulla mia Centos 7) "ftp" per mappare gli utenti virtuali.

Cazzo, l'utente c'è, è perfetto, mi risparmia 20 secondi di comandi shell, perchè non usarlo?
Perchè poi, quando ci si prova a connettere con l'utente virtuale che si mappa su questo utente reale, non ci si riesce con questo log

Questo il motivo
https://help.ubuntu.com/community/PureFTP
ovvero l'utente ftp ha un id < 1000 e... quando l'ho letto si è accesa la lampadina.

Print Friendly, PDF & Email