Kako namestiti in konfigurirati strežnik FTP v Ubuntuju
FTP (File Transfer Protocol) je razmeroma star in najpogosteje uporabljen standardni omrežni protokol, ki se uporablja za nalaganje/nalaganje datotek med dvema računalnikoma prek omrežja. Vendar FTP s svojo prvotno negotovostjo prenaša podatke skupaj z uporabniškimi poverilnicami (uporabniško ime in geslo) brez šifriranja.
Opozorilo: Če nameravate uporabljati FTP, razmislite o konfiguraciji povezave FTP s SSL/TLS (to bo opisano v naslednjem članku). V nasprotnem primeru je vedno bolje uporabiti varen FTP, kot je SFTP.
V tej vadnici bomo prikazali, kako namestiti, konfigurirati in zaščititi strežnik FTP (VSFTPD v celoti\"Zelo varen FTP Daemon \") v Ubuntuju, da ima močno zaščito pred ranljivostmi FTP.
1. korak: Namestitev strežnika VsFTP v Ubuntu
1. Najprej moramo posodobiti seznam virov sistemskega paketa in nato namestiti binarni paket VSFTPD, kot sledi:
$ sudo apt-get update $ sudo apt-get install vsftpd
2. Ko se namestitev konča, bo storitev sprva onemogočena, zato jo moramo vmesno zagnati ročno in ji omogočiti tudi samodejni zagon ob naslednjem zagonu sistema:
------------- On SystemD ------------- # systemctl start vsftpd # systemctl enable vsftpd ------------- On SysVInit ------------- # service vsftpd start # chkconfig --level 35 vsftpd on
3. Nato, če imate na strežniku omogočen požarni zid UFW (privzeto ni omogočen), morate odpreti vrata 21 in 20, kjer poslušajo demoni FTP, da omogočite dostop do storitev FTP z oddaljenih računalnikov, nato dodajte novi požarni zid določa na naslednji način:
$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp $ sudo ufw status
2. korak: Konfiguriranje in zaščita strežnika VsFTP v Ubuntuju
4. Izvedimo nekaj konfiguracij za nastavitev in zaščito našega FTP strežnika, najprej bomo ustvarili varnostno kopijo izvirne konfiguracijske datoteke /etc/vsftpd/vsftpd.conf tako:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Nato odprimo konfiguracijsko datoteko vsftpd.
$ sudo vi /etc/vsftpd.conf OR $ sudo nano /etc/vsftpd.conf
S temi vrednostmi dodajte/spremenite naslednje možnosti:
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. Zdaj konfigurirajte VSFTPD, da uporabnikom dovoli/zavrne dostop do FTP na podlagi datoteke s seznamom uporabnikov /etc/vsftpd.userlist.
Upoštevajte, da je privzeto uporabnikom, navedenim na userlist_file =/etc/vsftpd.userlist, onemogočen dostop do prijave z možnostjo userlist_deny = YES
, če userlist_enable = YES
.
Možnost userlist_deny = NO
zaviha pomen privzete nastavitve, zato se bodo lahko na strežnik FTP prijavili samo uporabniki, katerih uporabniško ime je izrecno navedeno v userlist_file =/etc/vsftpd.userlist.
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
Pomembno: Ko se uporabniki prijavijo v strežnik FTP, so postavljeni v chrooted zapor, to je lokalni korenski imenik, ki bo deloval kot njihov domači imenik samo za sejo FTP.
Nato bomo preučili dva možna scenarija, kako nastaviti chrooted zaporniški imenik (lokalni korenski imenik), kot je razloženo spodaj.
6. Na tej točki dodajte/spremenite/razkomentirajte ti dve možnosti, da uporabnike FTP omejimo na njihove domače imenike.
chroot_local_user=YES allow_writeable_chroot=YES
Možnost chroot_local_user = YES
pomembno pomeni, da bodo lokalni uporabniki po prijavi privzeto nameščeni v zapor chroot.
Moramo tudi razumeti, da VSFTPD privzeto iz varnostnih razlogov ne dovoljuje zapisovanja v zaporniški imenik chroot, vendar pa lahko to nastavitev onemogočimo z možnostjo allow_writeable_chroot = DA.
Datoteko shranite in zaprite. Nato moramo znova zagnati storitve VSFTPD, da začnejo veljati zgornje spremembe:
------------- On SystemD ------------- # systemctl restart vsftpd ------------- On SysVInit ------------- # service vsftpd restart
3. korak: Testiranje strežnika VsFTP v Ubuntuju
7. Zdaj bomo strežnik FTP preizkusili z ustvarjanjem uporabnika FTP z ukazom useradd, kot sledi:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik $ sudo passwd aaronkilik
Nato moramo uporabnika aaronkilik izrecno navesti v datoteki /etc/vsftpd.userlist z ukazom echo in tee kot spodaj:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist $ cat /etc/vsftpd.userlist
8. Zdaj je čas, da preizkusimo, kako zgornje konfiguracije delujejo po potrebi. Začeli bomo s testiranjem anonimnih prijav; iz spodnjega izhoda jasno vidimo, da anonimne prijave na strežniku FTP niso dovoljene:
# 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. Nato preizkusimo, ali bo uporabnik, ki ni naveden v datoteki /etc/vsftpd.userlist, dobil dovoljenje za prijavo, kar ne drži iz izhoda, ki sledi:
# 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. Zdaj bomo izvedli končni preizkus, da ugotovimo, ali je uporabnik, naveden v datoteki /etc/vsftpd.userlist, dejansko po prijavi v svoj domači imenik. In to velja iz spodnjega izhoda:
# 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
Opozorilo: Nastavitev možnosti allow_writeable_chroot = YES
je lahko tako nevarna, da ima lahko varnostne posledice, še posebej, če imajo uporabniki dovoljenje za nalaganje ali več, dostop do lupine. Uporabite ga le, če natančno veste, kaj počnete.
Upoštevati moramo, da te varnostne posledice niso specifične za VSFTPD, lahko pa vplivajo tudi na vse druge demone FTP, ki ponujajo lokalne uporabnike v zaporih chroot.
Zaradi tega bomo v spodnjem razdelku razložili varnejši način nastavitve drugega nepisljivega lokalnega korenskega imenika za uporabnika.
Korak 4: Konfigurirajte imenike domačih uporabnikov FTP v Ubuntuju
11. Zdaj še enkrat odprite konfiguracijsko datoteko VSFTPD.
$ sudo vi /etc/vsftpd.conf OR $ sudo nano /etc/vsftpd.conf
in komentirajte nezaščiteno možnost z znakom #
, kot je prikazano spodaj:
#allow_writeable_chroot=YES
Nato ustvarite nadomestni lokalni korenski imenik za uporabnika (aaronkilik, vaš verjetno ni isti) in nastavite zahtevana dovoljenja tako, da vsem drugim uporabnikom onemogočite dovoljenja za pisanje v tem imeniku:
$ sudo mkdir /home/aaronkilik/ftp $ sudo chown nobody:nogroup /home/aaronkilik/ftp $ sudo chmod a-w /home/aaronkilik/ftp
12. Nato v lokalnem korenu ustvarite imenik z ustreznimi dovoljenji, kamor bo uporabnik shranil svoje datoteke:
$ sudo mkdir /home/aaronkilik/ftp/files $ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files $ sudo chmod -R 0770 /home/aaronkilik/ftp/files/
Nato dodajte/spremenite spodnje možnosti v konfiguracijski datoteki VSFTPD z njihovimi ustreznimi vrednostmi:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Datoteko shranite in zaprite. In znova zaženite storitve VSFTPD z nedavnimi nastavitvami:
------------- On SystemD ------------- # systemctl restart vsftpd ------------- On SysVInit ------------- # service vsftpd restart
13. Zdaj pa opravimo končno preverjanje in se prepričajmo, da je uporabnikov lokalni korenski imenik imenik FTP, ki smo ga ustvarili v njegovem domačem imeniku.
# 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
To je to! Ne pozabite deliti svojega mnenja o tem vodniku prek spodnjega obrazca za komentar ali nam morda posredovati pomembnih informacij v zvezi s temo.
Nenazadnje ne zamudite naslednjega članka, kjer bomo opisali, kako zaščititi strežnik FTP s povezavami SSL/TLS v Ubuntu 16.04/16.10, do takrat pa vedno bodite pozorni na TecMint.