Het opzetten van een multi-user FTP server om verschillende zelf gehoste websites te kunnen beheren vanop afstand, of als multi-user drive met elk zijn verschillende directory. Als NAS in een lokaal netwerk is het beter om met samba-shares te werken, maar voor op afstand is een ftp server de ideale oplossing.
In deze tutorial wordt uitgelegd hoe je verschillende users kan aanmaken en mappen toewijzen.
Er zijn 2 opties, manueel in onderstaande uitleg , of via programma scripts die alles in paar seconden uitvoeren , vooral interessant indien je als beheerder enkele websites runt en verschillende ftp locaties kan toewijzen op snelle en efficiënte manier. De software is geschreven onder de GNU licentie en vrij te downloaden en te gebruiken. Er zijn 3 stukken software waarmee je alles in no time kunt configureren.
Software install& configure vsftpd
install_vsftpd. Dit script controleert de installatie (via de programmabeheerder uitgevoerd) of doet zelf de installatie van vsftpd. Het zal ook de admin user en alle benodigde configuraties, mappen en files aanmaken die nodig zijn voor een multi user opzet.
add new users Met dit script maak je in no time extra users en chrooted ftp mappen aan die dan ook kunnen geïntegreerd worden bij de apache2 server indien je die zou gebruiken om websites te draaien.
remove users Dit script kan users en de gehele opzet van een ftp plaats die toegewezen was aan een user verwijderen en die user volledig van het systeem verwijderen.
Onderstaand het sh script voor de gemakkelijke installatie en beheer van vsftpd.
Om de software te kunnen gebruiken dien je wel de root rechten of admin rechten te hebben van de PC.
Je moet eerst de install uitgevoerd hebben vooraleer de andere 2 te kunnen gebruiken !!!!!
Het maakt niet uit of vsftp reeds is geinstalleerd, enkel worden dan de configuraties aangepast.
(de software is geschreven in de bash shell en vrij van virussen/spyware of andere rommel)
Om de scripts te starten, open de terminal en geef in: ./ filename.sh (filename is 1 van de 3 scriptnamen)
Manuele installatie Vsftpd
1 Installeer via de programmabeheerder Vsftpd server, of via de terminal sudo apt install vsftpd .De rest werkt het snelst via de Terminal maar moet goed opgevolgd worden.
Volgende stappen zijn nodig om de server te laten werken als multi-user server
Maak de extra users aan in het systeem
Wijs de home/user/ftp directory toe aan die nieuwe user
Verander de rechten van die map naar de nieuwe user indien nodig
Maak de userlist file aan voor vsftpd
Maak een nieuwe conf file aan met de juiste instellingen
Test en klaar
Maak de user aan en de map van de website
# run with root privilege
sudo -i
#aanmaken user voor website 1 zonder home directory aan te maken
sudo useradd user1
#aanmaken paswoord
sudo passwd user1
#primaire groep ftp toewijzen aan user1
usermod -g user1 ftp
# verander naar de user1
sudo su user1
#aanmaken ftp directory voor user1
mkdir -p /home/$USER/ftp
configureer en maak vsftpd userlist en userconfdir
# ga terug naar de hoofd admin user
sudo su adminuser
#maak de user aan in de userlist
# de adminuser is de admin user naam van de pc waarop de server draait
sudo mkdir -p /etc/vsftpd/
echo "#userlistfile" > /etc/vsftpd/vsftpd_userlist
echo "user1
adminuser" >> /etc/vsftpd/vsftpd_userlist
sudo chown -R root:root /etc/vsftpd/vsftpd_userlist
vsftpd.conf file aanpassen
#config file is te vinden op /etc/vsftpd.conf
#maak eerst een veiligheids copy
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# maak nieuwe conf file aan (open bestaande vsftpd.conf)
sudo xed /etc/vsftpd.conf
# delete alles in de file en vervang door onderstaande en save
use_localtime=YES
listen=YES
listen_ipv6=NO
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=NO
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
dirlist_enable=YES
pasv_enable=YES
pasv_max_port=40050
pasv_min_port=40000
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/vsftpd_userlist
write_enable=YES
download_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
virtual_use_local_privs=NO
#user_config_dir=/etc/vsftpd/userconfdir/
pam_service_name=vsftpd
local_umask=012
controleer of de rechten van de file user/groep = root:root , zoniet pas aan
sudo chown root:root
Controle van de uitgevoerde actie’s
cat /etc/vsftpd.conf
cat /etc/vsftpd/vsftpd_userlist
id user1
# poorten controleren die in gebruik zijn
less /etc/services
#zoek het ip adres van de pc
$ ip a | grep "inet "
# of via ip addr | grep inet
ip adrr | grep inet
#of via ifconfig | grep inet
ifconfig | grep inet
#na alle configuraties de server herstarten
systemctl restart vsftpd.service
commando’s om de server te bedienen
status van de server opvragen = systemctl status vsftpd
restart ftp server = systemctl start vsftpd of systemctl restart vsftpd
stop vsftpd server = systemctl stop vsftpd
auto opstarten on boot = systemctl enable vsftpd
auto opstart on boot niet uitvoeren = systemctl disable vsftpd
#ftp server testen
#via de verkenner "andere lokaties"
ftp://username@IP_ADDR or ftp://username@DOMAIN_NAME
#lokaal via terminal controleren van de werking server=
ftp -p ipadres
#username
#password
#bye to exit
#via filezilla = ipadres user password is de gemakkelijkste manier om te verbinden met de server
Firewall instellingen aanpassen.
#om de firewall te starten gebruik gufw in Linux Mint
#firewall settings vsftpd via terminal
sudo ufw status verbose
sudo ufw allow 20,21,990/tcp
sudo ufw allow 40000:40050/tcp
# extra info
sudo systemctl status ufw.service # controle
sudo ufw enable # start up
sudo ufw disable # shut down
#to see last blocked ip's check the log file
xdg-open /var/log/ufw.log