Sådan installeres og konfigureres FTP-server i Ubuntu
FTP (File Transfer Protocol) er en relativt gammel og mest anvendt standardnetværksprotokol, der bruges til at uploade/downloade filer mellem to computere over et netværk. Imidlertid FTP ved sin oprindelige usikkerhed, fordi den overfører data sammen med brugerlegitimationsoplysninger (brugernavn og adgangskode) uden kryptering.
Advarsel: Hvis du planlægger at bruge FTP, skal du overveje at konfigurere FTP-forbindelse med SSL/TLS (vil dække i næste artikel). Ellers er det altid bedre at bruge sikker FTP, såsom SFTP.
I denne vejledning viser vi, hvordan du installerer, konfigurerer og sikrer en FTP-server (VSFTPD i sin helhed "Very Secure FTP Daemon") i Ubuntu for at have en stærk sikkerhed mod FTP-sårbarheder.
Trin 1: Installation af VsFTP-server i Ubuntu
1. Først skal vi opdatere listen over kilder til systempakker og derefter installere VSFTPD binær pakke som følger:
$ sudo apt-get update $ sudo apt-get install vsftpd
2. Når installationen er afsluttet, deaktiveres tjenesten oprindeligt, derfor er vi nødt til at starte den manuelt i mellemtiden og også aktivere den til at starte automatisk fra næste systemstart:
------------- On SystemD ------------- # systemctl start vsftpd # systemctl enable vsftpd ------------- On SysVInit ------------- # service vsftpd start # chkconfig --level 35 vsftpd on
3. Hvis du derefter har UFW-firewall aktiveret (det er ikke aktiveret som standard) på serveren, skal du åbne porte 21 og 20, hvor FTP-dæmoner lytter, for at give adgang til FTP-tjenester fra eksterne maskiner og derefter tilføje de nye firewallregler som følger:
$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp $ sudo ufw status
Trin 2: Konfiguration og sikring af VsFTP-server i Ubuntu
4. Lad os nu udføre et par konfigurationer for at opsætte og sikre vores FTP-server, først opretter vi en sikkerhedskopi af den oprindelige konfigurationsfil /etc/vsftpd/vsftpd.conf sådan:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Lad os derefter åbne vsftpd-konfigurationsfilen.
$ sudo vi /etc/vsftpd.conf OR $ sudo nano /etc/vsftpd.conf
Tilføj/rediger følgende muligheder med disse værdier:
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. Konfigurer nu VSFTPD til at tillade/nægte FTP-adgang til brugere baseret på brugerlistefilen /etc/vsftpd.userlist.
Bemærk, at brugere, der er angivet i userlist_file =/etc/vsftpd.userlist, som standard nægtes loginadgang med userlist_deny = YES
mulighed, hvis userlist_enable = YES
.
Men indstillingen userlist_deny = NO
drejer betydningen af standardindstillingen, så kun brugere, hvis brugernavn er udtrykkeligt angivet i userlist_file =/etc/vsftpd.userlist, får lov til at logge ind 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
Vigtigt: Når brugere logger ind på FTP-serveren, placeres de i en rodet fængsel, dette er den lokale rodmappe, der kun fungerer som deres hjemmemappe til FTP-sessionen.
Dernæst vil vi se på to mulige scenarier for, hvordan du indstiller kataloget med rodfængsel (lokal rod), som forklaret nedenfor.
6. På dette tidspunkt, lad os tilføje/ændre/fjerne kommentar til disse to følgende muligheder for at begrænse FTP-brugere til deres hjemmekataloger.
chroot_local_user=YES allow_writeable_chroot=YES
Indstillingen chroot_local_user = YES
betyder vigtigst af alt, at lokale brugere placeres i en chroot-fængsel, deres hjemmekatalog som standard efter login.
Og vi skal lige så godt forstå, at VSFTPD ikke tillader, at chroot-fængselsmappen kan skrives, som standard af sikkerhedsmæssige årsager, men vi kan dog bruge muligheden allow_writeable_chroot = YES til at deaktivere denne indstilling.
Gem filen, og luk den. Derefter skal vi genstarte VSFTPD-tjenester for at ovenstående ændringer skal træde i kraft:
------------- On SystemD ------------- # systemctl restart vsftpd ------------- On SysVInit ------------- # service vsftpd restart
Trin 3: Test af VsFTP-server i Ubuntu
7. Nu vil vi teste FTP-serveren ved at oprette en FTP-bruger med kommandoen useradd som følger:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik $ sudo passwd aaronkilik
Derefter skal vi eksplicit liste brugeren aaronkilik i filen /etc/vsftpd.userlist med ekkokommandoen og tee-kommandoen som nedenfor:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist $ cat /etc/vsftpd.userlist
8. Nu er det tid til at teste, at ovenstående konfigurationer fungerer efter behov. Vi begynder med at teste anonyme logins; Vi kan tydeligt se nedenstående output, at anonyme logins ikke er tilladt 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. Lad os derefter teste, om en bruger, der ikke er anført i filen /etc/vsftpd.userlist, får tilladelse til login, hvilket ikke er sandt fra den følgende output:
# 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. Nu udfører vi en afsluttende test for at afgøre, om en bruger, der er anført i filen /etc/vsftpd.userlist, faktisk er placeret i hans/hendes hjemmekatalog efter login. Og dette gælder fra nedenstående output:
# 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: Indstilling af indstillingen allow_writeable_chroot = YES
kan være så farlig, at det har mulige sikkerhedsmæssige konsekvenser, især hvis brugerne har uploadtilladelse eller mere, shelladgang. Brug det kun, hvis du nøjagtigt ved, hvad du laver.
Vi skal bemærke, at disse sikkerhedsimplikationer ikke er specifikke for VSFTPD, de kan også påvirke alle andre FTP-dæmoner, der tilbyder at placere lokale brugere i chroot-fængsler.
Af denne grund vil vi i afsnittet nedenfor forklare en mere sikker metode til at indstille en anden ikke-skrivbar lokal rodmappe til en bruger.
Trin 4: Konfigurer FTP-brugermapper i Ubuntu
11. Åbn nu VSFTPD-konfigurationsfilen igen.
$ sudo vi /etc/vsftpd.conf OR $ sudo nano /etc/vsftpd.conf
og kommenter den usikre mulighed ved hjælp af #
-tegnet som vist nedenfor:
#allow_writeable_chroot=YES
Opret derefter den alternative lokale rodmappe til brugeren (aaronkilik, din er muligvis ikke den samme) og indstil de krævede tilladelser ved at deaktivere skrivetilladelser til alle andre brugere til denne mappe:
$ sudo mkdir /home/aaronkilik/ftp $ sudo chown nobody:nogroup /home/aaronkilik/ftp $ sudo chmod a-w /home/aaronkilik/ftp
12. Opret derefter en mappe under den lokale rod med de relevante tilladelser, hvor brugeren gemmer sine filer:
$ sudo mkdir /home/aaronkilik/ftp/files $ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files $ sudo chmod -R 0770 /home/aaronkilik/ftp/files/
Bagefter skal du tilføje/ændre nedenstående indstillinger i VSFTPD-konfigurationsfilen med deres tilsvarende værdier:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Gem filen, og luk den. Og genstart VSFTPD-tjenesterne med de seneste indstillinger:
------------- On SystemD ------------- # systemctl restart vsftpd ------------- On SysVInit ------------- # service vsftpd restart
13. Lad os nu udføre en sidste kontrol og sørge for, at brugerens lokale rodmappe er den FTP-mappe, vi oprettede i hans hjemmekatalog.
# 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 at dele din mening om denne vejledning via nedenstående kommentarformular eller muligvis give os vigtige oplysninger om emnet.
Sidst men ikke mindst, gå ikke glip af vores næste artikel, hvor vi vil beskrive, hvordan du sikrer en FTP-server ved hjælp af SSL/TLS-forbindelser i Ubuntu 16.04/16.10, indtil da, skal du altid være tunneleret til TecMint.