Very Secure FTP Daemon (vsftpd), Linux için hafif bir FTP sunucusudur. Bu konu, Linux tabanlı bir Simple Application Server üzerinde vsftpd'nin nasıl kurulup yapılandırılacağını ve bağlantının FileZilla kullanılarak nasıl doğrulanacağını adım adım açıklar.
FTP, kimlik bilgileri dahil olmak üzere verileri düz metin olarak iletir. Şifreleme gerektiren üretim iş yükleri için bunun yerine SFTP veya FTPS kullanmayı düşünün. Bu kılavuz, FTP'nin özel bir gereksinim olduğu kullanım durumları için vsftpd'yi kapsar.
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
Linux tabanlı bir Simple Application Server. Bkz. Basit bir uygulama sunucusu oluşturma
Sunucu için ayarlanmış bir parola. Bkz. Sunucunun parolasını ayarlama veya sıfırlama
Yerel makinenizde yüklü FileZilla. Şu adresten indirin: filezilla-project.org
FTP bağlantısı ve kimlik doğrulama modları
FTP iki bağlantı modunda çalışır:
Aktif mod: İstemci port bilgilerini sunucuya gönderir ve veri bağlantısını sunucu başlatır.
Pasif mod: Sunucu bir port açar ve port bilgilerini istemciye gönderir; ardından bağlantıyı istemci başlatır. Bu kılavuz, güvenlik duvarları ve NAT üzerinden daha iyi çalışan pasif modu yapılandırır.
FTP üç kimlik doğrulama modunu destekler:
| Mod | Güvenlik | Açıklama |
|---|---|---|
| Anonim kullanıcı modu | En düşük | Kullanıcı adı veya parola gerekmez. Yalnızca genel dosya aktarımları için uygundur. Üretim ortamında kullanmaktan kaçının. |
| Yerel kullanıcı modu | Orta | Yerel Linux kullanıcılarına karşı kimlik doğrulaması yapar. Bu kılavuzda ele alınmıştır. |
| Sanal kullanıcı modu | En yüksek | Sistemden izole edilmiş sanal kullanıcılar kullanır. Profesyonel yapılandırma gerektirir. |
Bu kılavuz, yerel kullanıcı modunu (önerilen) ve anonim kullanıcı modunu kapsar.
Adım 1: vsftpd'yi yükleyin
-
vsftpd'nin zaten yüklü olup olmadığını kontrol edin. Uygulama görüntüleriyle dağıtılan bazı sunucularda vsftpd önceden yüklü gelir; yeniden yüklemek çakışmalara neden olabilir.
vsftpd -vÇıktıda bir sürüm numarası görünüyorsa vsftpd zaten yüklüdür:
vsftpd: version 3.0.2vsftpd zaten yüklüyse FTP kimlik bilgilerini uygulama görüntüsü belgelerinden alın ve doğrudan Adım 3: Güvenlik duvarı portlarını açın bölümüne geçin.
-
vsftpd'yi yükleyin. Bu örnekte CentOS 7 kullanılmaktadır. Diğer dağıtımlar için bkz. ECS örneğinde FTP sitesi oluşturma.
sudo yum install -y vsftpdBaşarılı bir ileti kurulumun tamamlandığını onaylar.
Installed: vsftpd.x86_64 0:3.0.2-28.el7 Complete! -
vsftpd'nin önyüklemede otomatik olarak başlamasını etkinleştirin:
sudo systemctl enable vsftpd.service -
vsftpd'yi başlatın:
sudo systemctl start vsftpd.serviceNotHizmet
Job for vsftpd.service failed because the control process exited with error codehatasıyla başlatılamazsa 21 numaralı port zaten kullanılıyor olabilir. İşlemi tanımlamak içinlsof -i:21komutunu çalıştırın, ardından vsftpd'yi yeniden başlatmadan önce durdurmak içinkill -9 <PID>komutunu çalıştırın. -
vsftpd'nin çalıştığını doğrulayın:
sudo netstat -antup | grep ftpFTP hizmet portu çıktıda görünüyorsa vsftpd çalışıyor demektir.
[root@iZbp166dsac66txo49xxx ~]# netstat -antup | grep ftp tcp6 0 0 :::21 :::* LISTEN 53730/vsftpd -
FTP erişimi için özel bir Linux kullanıcısı oluşturun. Bu örnekte
ftptestkullanılmıştır.sudo adduser ftptest -
Kullanıcı için bir parola belirleyin:
sudo passwd ftptestParolayı girmek ve onaylamak için istemleri takip edin.
-
FTP dizinini oluşturun:
sudo mkdir /var/ftp/test -
Dizinin sahipliğini
ftptestkullanıcısına atayın:sudo chown -R ftptest:ftptest /var/ftp/test -
Düzenlemeden önce vsftpd yapılandırma dosyasının yedeğini alın:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak -
Yapılandırma dosyasını düzenlemek için açın:
Notvsftpd'yi
apt install vsftpdile yüklediyseniz yapılandırma dosyası bunun yerine/etc/vsftpd.confkonumundadır.sudo vim /etc/vsftpd/vsftpd.confDüzenleme moduna geçmek için
ituşuna basın. -
Aşağıdaki parametreleri güncelleyin. Bu satırların hiçbirinin
#ile yorum satırı haline getirilmediğinden emin olun ve sondaki boşluklardan kaçının; fazladan boşluklar vsftpd'nin yeniden başlatıldığında hata vermesine neden olur./etc/vsftpd/vsftpd.conf# Disable anonymous login anonymous_enable=NO # Allow local users to log in local_enable=YES # Listen on IPv4 listen=YESIPv6 dinleyicisini devre dışı bırakmak için satırın başına
#ekleyerek yorum satırı yapın:#listen_ipv6=YES -
Dosyanın sonuna aşağıdaki parametreleri ekleyin.
39.105.xx.xxdeğerini sunucunuzun genel IP adresiyle değiştirin./etc/vsftpd/vsftpd.conf# Set the home directory for local users after login local_root=/var/ftp/test # Restrict users to their home directory chroot_local_user=YES # Enable a list of users exempt from the chroot restriction chroot_list_enable=YES # Path to the exemption list file chroot_list_file=/etc/vsftpd/chroot_list # Enable passive mode pasv_enable=YES allow_writeable_chroot=YES # Public IP address of the server pasv_address=39.105.xx.xx # Passive mode port range (high-numbered ports reduce exposure) pasv_min_port=50000 pasv_max_port=50010Kaydetmek ve kapatmak için
Esctuşuna basın, ardından:wqyazıpEntertuşuna basın. -
chroot muafiyet listesi dosyasını oluşturun. Burada listelenen kullanıcılar ana dizinle sınırlı değildir. Muafiyet gerekmese bile dosya gereklidir.
sudo vim /etc/vsftpd/chroot_listDüzenleme moduna geçmek için
ituşuna basın. Gerekirse muaf tutulacak kullanıcı adlarını her satıra bir tane olacak şekilde ekleyin (muafiyet gerekmiyorsa dosyayı boş bırakın). Kaydetmek ve kapatmak içinEsctuşuna basın, ardından:wqyazıpEntertuşuna basın. -
Sistem güvenlik duvarını durdurun. vsftpd, 3. Adımda yapılandırılan Simple Application Server güvenlik duvarı aracılığıyla port erişimini yönetir.
sudo systemctl stop firewalld -
SSH yapılandırmasında parola kimlik doğrulamasını etkinleştirin:
sudo vi /etc/ssh/sshd_configDosyanın sonundaki
PasswordAuthenticationsatırını bulun ve değeriniyesolarak ayarlayın. Kaydetmek ve kapatmak içinEsctuşuna basın, ardından:wq!yazıpEntertuşuna basın.# Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # Override the default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server UseDNS no AddressFamily inet SyslogFacility AUTHPRIV PermitRootLogin yes PasswordAuthentication yes -
Tüm değişikliklerin uygulanması için vsftpd'yi yeniden başlatın:
sudo systemctl restart vsftpd.service -
vsftpd yapılandırma dosyasını açın:
Notvsftpd'yi
apt install vsftpdile yüklediyseniz yapılandırma dosyası bunun yerine/etc/vsftpd.confkonumundadır.sudo vim /etc/vsftpd/vsftpd.confDüzenleme moduna geçmek için
ituşuna basın. -
Aşağıdaki parametreleri ayarlayın. Varsayılan değerler Linux dağıtımına göre değişebilir; düzenlemeden sonra her iki değerin de
YESolduğunu doğrulayın. Bu satırların hiçbirinin#ile yorum satırı haline getirilmediğinden emin olun ve sondaki boşluklardan kaçının./etc/vsftpd/vsftpd.confanonymous_enable=YES anon_upload_enable=YES listen=YES listen_ipv6=NO -
Dosyanın sonuna aşağıdaki parametreleri ekleyin.
39.105.xx.xxdeğerini sunucunuzun genel IP adresiyle değiştirin./etc/vsftpd/vsftpd.conf# Enable passive mode pasv_enable=YES # Passive mode port range pasv_min_port=50000 pasv_max_port=50010 # Public IP address of the server pasv_address=39.105.xx.xxKaydetmek ve kapatmak için
Esctuşuna basın, ardından:wqyazıpEntertuşuna basın. -
Varsayılan FTP dizinine (
/var/ftp/pub) yazma izni verin:sudo chmod o+w /var/ftp/pub/ -
vsftpd'yi yeniden başlatın:
sudo systemctl restart vsftpd.service FileZilla'yı açın.
File > Site Manager yolunu izleyin.
Site Manager iletişim kutusunun sol alt köşesindeki New site (N) seçeneğine tıklayın.
-
Yeni site için bir ad girin ve bağlantıyı yapılandırın:

Parametre Değer Name Özel bir site adı. Örnek: test-01.Protocol FTP Host Sunucunun genel IP adresi (örnek: 121.43.XX.XX)Port 21 Logon type Anonymous (anonim mod için) veya Normal (yerel kullanıcı modu için) Yerel kullanıcı modu için Logon type seçeneğini Normal olarak ayarlayın ve FTP kullanıcı adı ile parolasını girin.
Connect seçeneğine tıklayın.
/etc/vsftpd/vsftpd.conf: ana yapılandırma dosyası/etc/vsftpd/ftpusers: bu dosyadaki kullanıcılara FTP erişimi reddedilir (engel listesi)/etc/vsftpd/user_list: bu dosyadaki kullanıcılara FTP erişimine izin verilir (izin listesi)
Adım 2: Erişim modunu yapılandırın
Aşağıdaki modlardan birini seçin. Daha iyi güvenlik için yerel kullanıcı modu önerilir.
Yerel kullanıcı modu (önerilen)
Anonim kullanıcı modu
Anonim mod, herkesin parola olmadan bağlanmasına olanak tanır. Bunu yalnızca üretim dışı ortamlardaki genel dosya aktarımları için kullanın.
Adım 3: Güvenlik duvarı portlarını açın
FTP trafiğine izin vermek için Simple Application Server güvenlik duvarında gelen kurallar ekleyin. Pasif mod, 21 numaralı portu ve pasif port aralığını gerektirir. Talimatlar için bkz. Güvenlik duvarını yönetme.
| Uygulama türü | Protokol | Port aralığı |
|---|---|---|
| FTP | TCP | 21 |
| Özel | TCP | pasv_min_port–pasv_max_port (örnek: 50000/50010) |
Güvenlik duvarı kuralları artık yapılandırılmıştır.
Adım 4: FTP bağlantısını doğrulayın
FTP sunucusuna erişilebildiğini onaylamak için FileZilla'yı kullanın.
Bu örnekte FileZilla 3.64.0 kullanılmıştır. Arayüz diğer sürümlerde farklılık gösterebilir.
Bağlandıktan sonra dosya yüklemek, indirmek veya silmek için FileZilla'yı kullanın. Arayüz dört bölüme ayrılmıştır:

| Bölüm | Açıklama |
|---|---|
| ① | Bağlantı durumu, komutlar ve görev sonuçları |
| ② | Yerel makine: dizin ve dosya listesi |
| ③ | Uzak sunucu: FTP dizin listesi. Anonim modda varsayılan dizin /pub şeklindedir. |
| ④ | Aktarım kuyruğu ve görev günlükleri |
vsftpd yapılandırma referansı
/etc/vsftpd dizini üç temel dosya içerir:
Oturum açma kontrol parametreleri
| Parametre | Açıklama |
|---|---|
anonymous_enable=YES |
Anonim kullanıcıları kabul eder |
no_anon_password=YES |
Anonim kullanıcılar için parola istemini atlar |
anon_root= |
Anonim kullanıcılar için ana dizin |
local_enable=YES |
Yerel kullanıcıları kabul eder |
local_root= |
Yerel kullanıcılar için ana dizin |
İzin parametreleri
| Parametre | Açıklama |
|---|---|
write_enable=YES |
Tüm kullanıcıların dosya yüklemesine izin verir |
local_umask=022 |
Yerel kullanıcı yüklemeleri için dosya izin maskesi |
file_open_mode=0666 |
Yüklenen dosya izinlerine umask uygular |
anon_upload_enable=NO |
Anonim kullanıcıların dosya yüklemesine izin verir |
anon_mkdir_write_enable=NO |
Anonim kullanıcıların dizin oluşturmasına izin verir |
anon_other_write_enable=NO |
Anonim kullanıcıların dosyaları değiştirmesine veya silmesine izin verir |
chown_username=lightwiter |
Anonim kullanıcılar tarafından yüklenen dosyalara atanan sahip |