Linux - FTP Server Setup (vsftpd)
Inhoudsopgave:
- voorwaarden
- Vsftpd installeren op CentOS 7
- Vsftpd configureren
- 1. FTP-toegang
- 2. Uploads inschakelen
- 3. Chroot-gevangenis
- 4. Passieve FTP-verbindingen
- 5. Aanmelding gebruiker beperken
- 6. Beveiliging van transmissies met SSL / TLS
- Start de vsftpd-service opnieuw
- De firewall openen
- Een FTP-gebruiker maken
- Shell-toegang uitschakelen
- Conclusie
FTP (File Transfer Protocol) is een standaard client-server netwerkprotocol waarmee gebruikers bestanden van en naar een extern netwerk kunnen overbrengen.
Er zijn verschillende open source FTP-servers beschikbaar voor Linux. De meest populaire en meest gebruikte zijn PureFTPd, ProFTPD en vsftpd.
In deze tutorial installeren we vsftpd (Very Secure Ftp Daemon) op CentOS 7. Het is een stabiele, veilige en snelle FTP-server. We laten u ook zien hoe u vsftpd kunt configureren om gebruikers te beperken tot hun thuismap en de volledige overdracht te coderen met SSL / TLS.
Gebruik SCP of SFTP voor veiligere en snellere gegevensoverdracht.
voorwaarden
Zorg ervoor dat u bent aangemeld als een gebruiker met sudo-rechten voordat u doorgaat met deze zelfstudie.
Vsftpd installeren op CentOS 7
Het vsftpd-pakket is beschikbaar in de standaard CentOS-opslagplaatsen. Voer de volgende opdracht uit om deze te installeren:
sudo yum install vsftpd
Nadat het pakket is geïnstalleerd, start u de vsftpd-daemon en schakelt u deze automatisch in tijdens het opstarten:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
U kunt controleren of de vsftpd-service actief is door de status af te drukken:
sudo systemctl status vsftpd
De output ziet er ongeveer zo uit, wat aangeeft dat de vsftpd-service actief is en actief is:
● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Vsftpd configureren
Het configureren van de vsftpd-service omvat het bewerken van het
/etc/vsftpd/vsftpd.conf
configuratiebestand. De meeste instellingen zijn goed gedocumenteerd in het configuratiebestand. Ga voor alle beschikbare opties naar de officiële vsftpd-pagina.
In de volgende secties zullen we enkele belangrijke instellingen bespreken die nodig zijn om een veilige vsftpd-installatie te configureren.
Begin met het openen van het vsftpd configuratiebestand:
sudo nano /etc/vsftpd/vsftpd.conf
1. FTP-toegang
We geven alleen toegang tot de FTP-server voor de lokale gebruikers, vinden de
anonymous_enable
en
local_enable
richtlijnen en verifiëren uw configuratieovereenkomst met de onderstaande regels:
anonymous_enable=NO local_enable=YES
2. Uploads inschakelen
write_enable
instelling
write_enable
om wijzigingen in het bestandssysteem toe te staan, zoals het uploaden en verwijderen van bestanden.
3. Chroot-gevangenis
Voorkom dat FTP-gebruikers toegang krijgen tot bestanden buiten hun homedirectory door de
chroot
richtlijn niet op te geven.
chroot_local_user=YES
Wanneer chroot is ingeschakeld, weigert vsftpd standaard bestanden te uploaden als de map waarin gebruikers zijn vergrendeld, schrijfbaar is. Dit is om een beveiligingslek te voorkomen.
Gebruik een van de onderstaande methoden om uploads toe te staan wanneer chroot is ingeschakeld.
-
Methode 1. - De aanbevolen methode om uploaden toe te staan, is chroot ingeschakeld te houden en FTP-mappen te configureren. In deze zelfstudie maken we een
/etc/vsftpd/vsftpd.confftpmap in de startpagina van de gebruiker die als chroot fungeert en een beschrijfbareuploadsvoor het uploaden van bestanden.user_sub_token=$USER local_root=/home/$USER/ftpMethode 2. - Een andere optie is om de volgende richtlijn toe te voegen aan het vsftpd-configuratiebestand. Gebruik deze optie als u uw gebruiker schrijfbare toegang tot zijn thuismap moet verlenen.
/etc/vsftpd/vsftpd.confallow_writeable_chroot=YES
4. Passieve FTP-verbindingen
vsftpd kan elke poort gebruiken voor passieve FTP-verbindingen. We specificeren het minimum en maximum bereik van poorten en openen later het bereik in onze firewall.
Voeg de volgende regels toe aan het configuratiebestand:
/etc/vsftpd/vsftpd.conf
pasv_min_port=30000 pasv_max_port=31000
5. Aanmelding gebruiker beperken
Om alleen bepaalde gebruikers toe te staan in te loggen op de FTP-server, voegt u de volgende regels toe na de
userlist_enable=YES
:
userlist_file=/etc/vsftpd/user_list userlist_deny=NO
Als deze optie is ingeschakeld, moet u expliciet opgeven welke gebruikers kunnen inloggen door de gebruikersnamen toe te voegen aan het bestand
/etc/vsftpd/user_list
(één gebruiker per regel).
6. Beveiliging van transmissies met SSL / TLS
Om de FTP-transmissies te coderen met SSL / TLS, moet u een SSL-certificaat hebben en de FTP-server configureren om het te gebruiken.
U kunt een bestaand SSL-certificaat gebruiken dat is ondertekend door een vertrouwde certificeringsinstantie of een zelfondertekend certificaat maken.
In deze zelfstudie genereren we een zelfondertekend SSL-certificaat met behulp van de opdracht
openssl
.
De volgende opdracht maakt een 2048-bits privésleutel en een zelfondertekend certificaat dat 10 jaar geldig is. Zowel de privésleutel als het certificaat worden in hetzelfde bestand opgeslagen:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
Nadat het SSL-certificaat is gemaakt, opent u het vsftpd-configuratiebestand:
sudo nano /etc/vsftpd/vsftpd.conf
Zoek de richtlijnen
rsa_cert_file
en
rsa_private_key_file
, wijzig hun waarden in het pad van het
pam
bestand en stel de
ssl_enable
op
YES
:
rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES
Tenzij anders aangegeven, gebruikt de FTP-server alleen TLS om beveiligde verbindingen te maken.
Start de vsftpd-service opnieuw
Als u klaar bent met bewerken, ziet het vsftpd-configuratiebestand (exclusief opmerkingen) er ongeveer zo uit:
/etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES
Sla het bestand op en start de vsftpd-service opnieuw om de wijzigingen door te voeren:
De firewall openen
Om poort
21
(FTP-opdrachtpoort), poort
20
(FTP-gegevenspoort) en
30000-31000
(bereik van passieve poorten) te openen, geeft u de volgende opdrachten uit:
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
Laad de firewallregels opnieuw door te typen:
Een FTP-gebruiker maken
Om onze FTP-server te testen, maken we een nieuwe gebruiker.
- Als u al een gebruiker hebt die FTP-toegang wilt verlenen, slaat u de eerste stap over. Als u
allow_writeable_chroot=YESin uw configuratiebestandallow_writeable_chroot=YESslaat u de derde stap over.
-
Maak een nieuwe gebruiker met de naam
newftpuser:sudo adduser newftpuserVervolgens moet u het gebruikerswachtwoord instellen:
sudo passwd newftpuserVoeg de gebruiker toe aan de lijst met toegestane FTP-gebruikers:
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_listMaak de FTP-mapstructuur en stel de juiste machtigingen in:
sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftpZoals besproken in de vorige sectie, kan de gebruiker zijn bestanden uploaden naar de map
ftp/upload.
Op dit moment is uw FTP-server volledig functioneel en moet u verbinding kunnen maken met uw server via elke FTP-client die kan worden geconfigureerd om TLS-codering te gebruiken, zoals FileZilla.
Shell-toegang uitschakelen
Bij het aanmaken van een gebruiker heeft de gebruiker standaard SSH-toegang tot de server.
Om shell-toegang uit te schakelen, maken we een nieuwe shell die eenvoudigweg een bericht afdrukt waarin de gebruiker wordt verteld dat hun account beperkt is tot alleen FTP-toegang.
Voer de volgende opdrachten uit om de shell
/bin/ftponly
maken en uitvoerbaar te maken:
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
Voeg de nieuwe shell toe aan de lijst met geldige shells in het bestand
/etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Wijzig de gebruikersshell in
/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Gebruik dezelfde opdracht om de shell te wijzigen voor andere gebruikers die u alleen FTP-toegang wilt geven.
Conclusie
In deze tutorial hebt u geleerd hoe u een veilige en snelle FTP-server op uw CentOS 7-systeem installeert en configureert.
ftp centosHoe apache virtuele hosts op centos 7 in te stellen
In deze zelfstudie geven we stapsgewijze instructies voor het instellen van virtuele Apache-hosts op een CentOS 7-server. Met Apache Virtual Hosts kunnen meerdere websites op één webserver worden uitgevoerd.
Hoe nginx serverblokken op centos 7 in te stellen
Met Nginx Server Blocks kunt u meer dan één website op één machine uitvoeren. In deze zelfstudie leggen we uit hoe u Nginx-serverblokken instelt op CentOS 7.
Hoe ssh-toetsen op centos in te stellen 7
In deze zelfstudie wordt uitgelegd hoe u SSH-sleutels op CentOS 7-systemen kunt genereren. We laten u ook zien hoe u een op SSH-sleutel gebaseerde verificatie instelt en verbinding maakt met uw externe Linux-servers zonder een wachtwoord in te voeren.







