Hvordan installere og konfigurere FTP-server i Ubuntu


FTP (File Transfer Protocol) er en relativt gammel og mest brukte standard nettverksprotokoll som brukes til å laste opp/laste ned filer mellom to datamaskiner over et nettverk. Imidlertid FTP av sin opprinnelige usikre, fordi den overfører data sammen med brukerlegitimasjon (brukernavn og passord) uten kryptering.

Advarsel: Hvis du planlegger å bruke FTP, bør du vurdere å konfigurere FTP-tilkobling med SSL/TLS (vil dekke i neste artikkel). Ellers er det alltid bedre å bruke sikker FTP som SFTP.

Foreslått lesing: Hvordan installere og sikre FTP-serveren i CentOS 7

I denne opplæringen vil vi vise hvordan du installerer, konfigurerer og sikrer en FTP-server (VSFFTPD i sin helhet "Very Secure FTP Daemon") i Ubuntu for å ha en kraftig sikkerhet mot FTP-sårbarheter.

Trinn 1: Installere VsFTP Server i Ubuntu

1. Først må vi oppdatere systempakkekildelisten og deretter installere VSFTPD binær pakke som følger:

sudo apt-get update
sudo apt-get install vsftpd

2. Når installasjonen er fullført, vil tjenesten bli deaktivert i utgangspunktet, derfor må vi starte den manuelt i mellomtiden og også aktivere den til å starte automatisk fra neste systemoppstart:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Deretter, hvis du har UFW-brannmur aktivert (den er ikke aktivert som standard) på serveren, må du åpne portene 21 og 20 hvor FTP-demonene lytter, for å tillate tilgang til FTP-tjenester fra eksterne maskiner, legg deretter til de nye brannmurreglene som følger:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Trinn 2: Konfigurere og sikre VsFTP Server i Ubuntu

4. La oss nå utføre noen få konfigurasjoner for å konfigurere og sikre FTP-serveren vår, først vil vi lage en sikkerhetskopi av den originale konfigurasjonsfilen /etc/vsftpd/vsftpd.conf som f.eks. så:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

La oss deretter åpne vsftpd-konfigurasjonsfilen.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Legg til/endre følgende alternativer med disse verdiene:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Nå, konfigurer VSFFTPD for å tillate/nekte FTP-tilgang til brukere basert på brukerlistefilen /etc/vsftpd.userlist.

Merk at som standard nektes brukere oppført i userlist_file=/etc/vsftpd.userlist påloggingstilgang med userlist_deny=YES alternativet hvis userlist_enable=YES .

Men alternativet userlist_deny=NO vrider betydningen av standardinnstillingen, slik at bare brukere hvis brukernavn er eksplisitt oppført i userlist_file=/etc/vsftpd.userlist vil få lov til å logge på FTP-serveren.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Viktig: Når brukere logger på FTP-serveren, blir de plassert i et chrooted fengsel, dette er den lokale rotkatalogen som vil fungere som deres hjemmekatalog for FTP-økten bare.

Deretter vil vi se på to mulige scenarier for hvordan du setter chrooted jail (lokal rot) katalog, som forklart nedenfor.

6. På dette tidspunktet, la oss legge til/endre/fjerne kommentarer til disse to følgende alternativene for å begrense FTP-brukere til hjemmekatalogene deres.

chroot_local_user=YES
allow_writeable_chroot=YES

Alternativet chroot_local_user=JA betyr viktig at lokale brukere vil bli plassert i et chroot-fengsel, deres hjemmekatalog som standard etter pålogging.

Og vi må også forstå at VSFTPD ikke tillater at chroot jail-katalogen kan skrives, som standard av sikkerhetsgrunner, men vi kan bruke alternativet allow_writeable_chroot=YES for å deaktivere denne innstillingen.

Lagre filen og lukk den. Da må vi starte VSFTPD-tjenester på nytt for at endringene ovenfor skal tre i kraft:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Trinn 3: Testing av VsFTP Server i Ubuntu

7. Nå skal vi teste FTP-serveren ved å opprette en FTP-bruker med kommandoen useradd som følger:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Deretter må vi eksplisitt liste brukeren aaronkilik i filen /etc/vsftpd.userlist med echo-kommandoen og tee-kommandoen som nedenfor:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Nå er det på tide å teste at konfigurasjonene ovenfor fungerer etter behov. Vi vil begynne med å teste anonyme pålogginger; vi kan tydelig se fra utdataene nedenfor at anonyme pålogginger ikke er tillatt på FTP-serveren:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. La oss deretter teste om en bruker som ikke er oppført i filen /etc/vsftpd.userlist vil få tillatelse til å logge på, noe som ikke stemmer fra utdataene som følger :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Nå skal vi utføre en siste test for å finne ut om en bruker som er oppført i filen /etc/vsftpd.userlist, faktisk er plassert i hjemmekatalogen hans/hennes etter Logg Inn. Og dette er sant fra utgangen nedenfor:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Advarsel: Å angi alternativet allow_writeable_chroot=YES kan være så farlig at det har mulige sikkerhetsimplikasjoner, spesielt hvis brukerne har opplastingstillatelse, eller mer så, shell-tilgang. Bruk den bare hvis du vet nøyaktig hva du gjør.

Vi bør merke oss at disse sikkerhetsimplikasjonene ikke er spesifikke for VSFTPD, de kan også påvirke alle andre FTP-demoner som tilbyr å sette lokale brukere i chroot-fengsler.

På grunn av denne grunn vil vi i avsnittet nedenfor forklare en sikrere metode for å sette en annen ikke-skrivbar lokal rotkatalog for en bruker.

Trinn 4: Konfigurer FTP-brukerhjemmekataloger i Ubuntu

11. Nå åpner du VSFTPD-konfigurasjonsfilen en gang til.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

og kommenter det usikre alternativet ved å bruke #-tegnet som vist nedenfor:

#allow_writeable_chroot=YES

Deretter oppretter du den alternative lokale rotkatalogen for brukeren (aaronkilik, din er muligens ikke den samme) og setter de nødvendige tillatelsene ved å deaktivere skrivetillatelser for alle andre brukere til denne katalogen:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Deretter oppretter du en katalog under den lokale roten med de riktige tillatelsene der brukeren vil lagre filene sine:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Etterpå, legg til/endre alternativene nedenfor i VSFTPD-konfigurasjonsfilen med deres tilsvarende verdier:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Lagre filen og lukk den. Og start VSFTPD-tjenestene på nytt med de siste innstillingene:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. La oss nå utføre en siste sjekk og sørge for at brukerens lokale rotkatalog er FTP-katalogen vi opprettet i hjemmekatalogen hans.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Det er det! Husk å dele din mening om denne veiledningen via kommentarskjemaet nedenfor eller muligens gi oss viktig informasjon om emnet.

Sist, men ikke minst, ikke gå glipp av vår neste artikkel, der vi vil beskrive hvordan du sikrer en FTP-server ved hjelp av SSL/TLS-tilkoblinger i Ubuntu 16.04/16.10, inntil da, følg alltid TecMint.