Hvordan installere, konfigurere og sikre FTP-server i CentOS 7 - [Omfattende veiledning]
FTP (File Transfer Protocol) er et tradisjonelt og mye brukt standardverktøy for å overføre filer mellom en server og klienter over et nettverk, spesielt der ingen autentisering er nødvendig (tillater anonyme brukere å koble til en server). Vi må forstå at FTP er usikker som standard, fordi den overfører brukerlegitimasjon og data uten kryptering.
I denne guiden vil vi beskrive trinnene for å installere, konfigurere og sikre en FTP-server (VSFFTPD står for Very Secure FTP Daemon) i CentOS/RHEL 7 og Fedora-distribusjoner.
Merk at alle kommandoene i denne veiledningen vil bli kjørt som root, i tilfelle du ikke opererer serveren med root-kontoen, bruk sudo-kommandoen for å få root-privilegier.
Trinn 1: Installere FTP-server
1. Installering av vsftpd-server er rett frem, bare kjør følgende kommando i terminalen.
# yum install vsftpd
2. Etter at installasjonen er fullført, vil tjenesten først deaktiveres, så vi må starte den manuelt inntil videre og aktivere den til å starte automatisk fra neste systemoppstart også:
# systemctl start vsftpd # systemctl enable vsftpd
3. Deretter, for å tillate tilgang til FTP-tjenester fra eksterne systemer, må vi åpne port 21, hvor FTP-demonene lytter som følger:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
Trinn 2: Konfigurering av FTP-server
4. Nå vil vi gå over til å utføre noen få konfigurasjoner for å sette opp og sikre FTP-serveren vår, la oss starte med å ta en sikkerhetskopi av den originale konfigurasjonsfilen /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Deretter åpner du konfigurasjonsfilen ovenfor og setter følgende alternativer med disse tilsvarende 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. Konfigurer nå FTP for å tillate/nekte FTP-tilgang til brukere basert på brukerlistefilen /etc/vsftpd.userlist
.
Som standard nektes brukere oppført i userlist_file=/etc/vsftpd.userlist
påloggingstilgang med alternativet userlist_deny satt til YES, hvis userlist_enable=YES.
Userlist_deny=NO endrer imidlertid innstillingen, noe som betyr at bare brukere som er eksplisitt oppført i userlist_file=/etc/vsftpd.userlist vil få lov til å logge på.
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
Det er ikke alt, når brukere logger på FTP-serveren, blir de plassert i et chroot'ed-fengsel, dette er den lokale rotkatalogen som vil fungere som deres hjemmekatalog kun for FTP-økten.
Deretter vil vi se på to mulige scenarier for hvordan du chroot FTP-brukere til hjemmekataloger (lokal rot) for FTP-brukere, som forklart nedenfor.
6. Legg nå til disse to følgende alternativene for å begrense FTP-brukere til hjemmekatalogene deres.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user=JA betyr at lokale brukere vil bli plassert i et chroot-fengsel, deres hjemmekatalog etter pålogging som standardinnstillinger.
Og som standard tillater ikke vsftpd at chroot jail-katalogen kan skrives av sikkerhetsgrunner, men vi kan bruke alternativet allow_writeable_chroot=YES for å overstyre denne innstillingen.
Lagre filen og lukk den.
Sikring av FTP-server med SELinux
7. La oss nå sette SELinux-boolen nedenfor for å tillate FTP å lese filer i en brukers hjemmekatalog. Merk at dette først ble gjort ved å bruke kommandoen:
# setsebool -P ftp_home_dir on
Imidlertid har ftp_home_dir
-direktivet blitt deaktivert som standard som forklart i denne feilrapporten: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Nå vil vi bruke semanage-kommando for å sette SELinux-regelen for å tillate FTP å lese/skrive brukerens hjemmekatalog.
# semanage boolean -m ftpd_full_access --on
På dette tidspunktet må vi starte vsftpd på nytt for å gjennomføre alle endringene vi har gjort så langt ovenfor:
# systemctl restart vsftpd
Trinn 4: Testing av FTP-server
8. Nå skal vi teste FTP-serveren ved å opprette en FTP-bruker med kommandoen useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Etterpå må vi legge til brukeren ravi til filen /etc/vsftpd.userlist ved å bruke echo-kommandoen som følger:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Nå er det på tide å teste om innstillingene ovenfor fungerer som de skal. La oss starte med å teste anonyme pålogginger, vi kan se fra skjermbildet nedenfor at anonyme pålogginger ikke er tillatt:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : anonymous 530 Permission denied. Login failed. ftp>
10. La oss også teste om en bruker som ikke er oppført i filen /etc/vsftpd.userlist vil få tillatelse til å logge på, noe som ikke er tilfellet som i skjermbildet nedenfor:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : aaronkilik 530 Permission denied. Login failed. ftp>
11. Gjør nå en siste sjekk om en bruker som er oppført i filen /etc/vsftpd.userlist, faktisk er plassert i hjemmekatalogen hans/hennes etter pålogging:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls
Aktiver bare dette alternativet hvis du nøyaktig vet hva du gjør. Det er viktig å merke seg at disse sikkerhetsimplikasjonene ikke er vsftpd-spesifikke, de gjelder for alle FTP-demoner som tilbyr å sette lokale brukere i chroot-fengsler også.
Derfor vil vi se på en sikrere måte å sette en annen ikke-skrivbar lokal rotkatalog på i neste avsnitt.
Trinn 5: Konfigurer forskjellige FTP-brukerhjemmekataloger
12. Åpne vsftpd-konfigurasjonsfilen igjen og begynn med å kommentere det usikre alternativet nedenfor:
#allow_writeable_chroot=YES
Deretter oppretter du den alternative lokale rotkatalogen for brukeren (ravi
, din er sannsynligvis annerledes) og fjerner skriverettigheter til alle brukere til denne katalogen:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. Deretter oppretter du en katalog under den lokale roten der brukeren vil lagre filene sine:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
Legg deretter til/endre følgende alternativer i vsftpd-konfigurasjonsfilen med disse verdiene:
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. Nok en gang, la oss starte tjenesten på nytt med de nye innstillingene:
# systemctl restart vsftpd
14. Gjør nå en siste test igjen og se at brukerens lokale rotkatalog er FTP-katalogen vi opprettet i hjemmekatalogen hans.
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 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! I denne artikkelen beskrev vi hvordan du installerer, konfigurerer og sikrer en FTP-server i CentOS 7. Bruk kommentarfeltet nedenfor for å skrive tilbake til oss angående denne veiledningen/dele nyttig informasjon om dette emnet.
I den neste artikkelen vil vi også vise deg hvordan du sikrer en FTP-server ved å bruke SSL/TLS-tilkoblinger i CentOS 7, inntil da, hold deg tilkoblet TecMint.