Android

Slik konfigurerer du ftp-server med vsftpd på debian 9

Linux - FTP Server Setup (vsftpd)

Linux - FTP Server Setup (vsftpd)

Innholdsfortegnelse:

Anonim

FTP (File Transfer Protocol) er en standard nettverksprotokoll som brukes til å overføre filer til og fra et eksternt nettverk. Bruk SCP eller SFTP for sikrere og raskere dataoverføringer.

Det er mange open source FTP-servere tilgjengelig for Linux. De mest populære og mest brukte er PureFTPd, ProFTPD og vsftpd.

Denne veiledningen forklarer hvordan du installerer og konfigurerer vsftpd (Very Secure Ftp Daemon) på Debian 9. vsftpd en stabil, sikker og rask FTP-server. Vi vil også vise deg hvordan du konfigurerer vsftpd for å begrense brukere til deres hjemmekatalog og kryptere hele overføringen med SSL / TLS.

Forutsetninger

Brukeren du er logget inn som, må ha sudo-rettigheter for å kunne installere pakker.

Installerer vsftpd på Debian 9

Vsftpd-pakken er tilgjengelig i Debian-depotene. Installasjonen er ganske grei:

sudo apt update sudo apt install vsftpd

vsftpd-tjenesten starter automatisk etter at installasjonsprosessen er fullført. Bekreft det ved å skrive ut tjenestestatusen:

sudo systemctl status vsftpd

Produksjonen vil se noe slik ut nedenfor, og viser at vsftpd-tjenesten er aktiv og kjører:

● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

Konfigurere vsftpd

Vsftpd-serveren kan konfigureres ved å endre vsftpd.conf filen, funnet i /etc katalogen.

De fleste av innstillingene er godt dokumentert i konfigurasjonsfilen. For alle tilgjengelige alternativer, besøk den offisielle vsftpd-siden.

I de følgende seksjoner vil vi gå over noen viktige innstillinger som er nødvendige for å konfigurere en sikker vsftpd-installasjon.

Start med å åpne vsftpd konfigurasjonsfil:

sudo nano /etc/vsftpd.conf

1. FTP-tilgang

Finn de local_enable og local_enable direktivene, og bekreft konfigurasjonens samsvar med linjene nedenfor:

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

Dette sikrer at bare de lokale brukerne kan få tilgang til FTP-serveren.

2. Aktivering av opplastinger

Fjern write_enable innstillingen write_enable for å tillate endringer i filsystemet, for eksempel å laste opp og slette filer.

/etc/vsftpd.conf

write_enable=YES

3. Chroot fengsel

For å forhindre at FTP-brukere får tilgang til filer utenfor hjemmekatalogene, fjerner du chroot innstillingen.

/etc/vsftpd.conf

chroot_local_user=YES

Som standard for å forhindre et sikkerhetsproblem, vil når chroot er aktivert, vsftpd nekte å laste opp filer hvis katalogen som brukerne er låst i, kan skrives.

Bruk en av metodene nedenfor for å tillate opplasting når chroot er aktivert.

  • Metode 1. - Den anbefalte metoden for å tillate opplasting er å holde chroot aktivert og konfigurere FTP-kataloger. I denne opplæringen vil vi opprette en ftp katalog inne i brukerhjemmet som vil fungere som chroot og en skrivbar uploads for å laste opp filer.

    /etc/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    Metode 2. - Et annet alternativ er å legge til følgende direktiv i konfigurasjonsfilen vsftpd. Bruk dette alternativet hvis du må for å gi skrivbar tilgang til brukeren til hjemmekatalogen.

    /etc/vsftpd.conf

    allow_writeable_chroot=YES

4. Passive FTP-tilkoblinger

vsftpd kan bruke hvilken som helst port for passive FTP-tilkoblinger. Vi vil spesifisere minimums- og maksimumsområdet for porter og senere åpne området i brannmuren vår.

Legg til følgende linjer i konfigurasjonsfilen:

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Begrense brukerpålogging

For å la bare bestemte brukere logge seg på FTP-serveren, legger du til følgende linjer på slutten av filen:

/etc/vsftpd.conf

userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Når dette alternativet er aktivert, må du spesifikt spesifisere hvilke brukere som kan logge på ved å legge til brukernavnene til filen /etc/vsftpd.user_list (en bruker per linje).

6. Sikre overføringer med SSL / TLS

For å kryptere FTP-overføringer med SSL / TLS, må du ha et SSL-sertifikat og konfigurere FTP-serveren til å bruke den.

Du kan bruke et eksisterende SSL-sertifikat signert av en klarert Certificate Authority eller opprette et selvsignert sertifikat.

I denne opplæringen vil vi generere et selvsignert SSL-sertifikat ved å bruke kommandoen openssl .

Følgende kommando oppretter en 2048-bit privat nøkkel og selvsignert sertifikat som er gyldig i 10 år. Både den private nøkkelen og sertifikatet blir lagret i samme fil:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Når SSL-sertifikatet er opprettet, åpner du vsftpd-konfigurasjonsfilen:

sudo nano /etc/vsftpd.conf

Finn rsa_cert_file og rsa_private_key_file direktivene, endre verdiene til pam -filstien og sett ssl_enable direktivet til YES :

/etc/vsftpd.conf

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Hvis ikke annet er spesifisert, vil FTP-serveren bare bruke TLS for å opprette sikre tilkoblinger.

Start vsftpd-tjenesten på nytt

Når du er ferdig med å redigere, skal konfigurasjonen av vsftpd (unntatt kommentarer) se slik ut:

/etc/vsftpd.conf

listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Lagre filen og start vsftpd-tjenesten på nytt for at endringer skal tre i kraft:

sudo systemctl restart vsftpd

Åpne brannmuren

Følg kommandoene for å åpne port 21 (FTP-kommandoport), port 20 (FTP-dataport) og 30000-31000 (passive porter).

sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

For å unngå å være innelåst vil vi også åpne port 22 :

sudo ufw allow OpenSSH

Last inn UFW-reglene på nytt ved å deaktivere og aktivere UFW på nytt:

sudo ufw disable sudo ufw enable

Slik bekrefter du endringene:

sudo ufw status

Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Oppretter FTP-bruker

For å teste FTP-serveren vår vil vi opprette en ny bruker.

  • Hvis du allerede har en bruker som du vil gi FTP-tilgang, hopp over det første trinnet. Hvis du angir allow_writeable_chroot=YES i konfigurasjonsfilen, hopp over det tredje trinnet.
  1. Opprett en ny bruker som heter newftpuser :

    sudo adduser newftpuser

    Legg brukeren til listen over tillatte FTP-brukere:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

    Opprett FTP-katalogtreet og angi riktige tillatelser:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    Som omtalt i forrige seksjon, vil brukeren kunne laste opp filene sine til ftp/upload katalogen.

På dette tidspunktet er FTP-serveren din fullstendig funksjonell, og du bør kunne koble til serveren din ved å bruke en hvilken som helst FTP-klient som kan konfigureres til å bruke TLS-kryptering, for eksempel FileZilla.

Deaktiver Shell Access

Ved opprettelse av en bruker, hvis ikke spesifikt spesifisert, vil brukeren som standard ha SSH-tilgang til serveren.

For å deaktivere skalltilgang, vil vi opprette et nytt skall som ganske enkelt vil skrive ut en melding som forteller brukeren at kontoen deres bare er begrenset til FTP-tilgang.

Lag /bin/ftponly shell og gjør det kjørbart:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Legg det nye skallet til listen over gyldige skjell i filen /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Endre brukerskallet til /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Bruk den samme kommandoen for å endre skallet til alle brukere du vil gi bare FTP-tilgang.

Konklusjon

I denne opplæringen lærte du hvordan du installerer og konfigurerer en sikker og rask FTP-server på Debian 9-systemet.

ftp debian