vsftpd ile Güvenli ve Yüksek Performanslı FTP Sunucusu Kurulumu

Kutay Utku
6 dk okuma

FTP (File Transfer Protocol), ağ üzerinden dosya transferi yapmak için en eski ve yaygın kullanılan protokollerden biridir. vsftpd (Very Secure FTP Daemon) ise güvenlik odaklı, hızlı ve kararlı bir FTP sunucusu yazılımıdır. Bu yazıda, Rocky Linux 8.4 üzerinde vsftpd yapılandırmasını detaylıca inceleyecek, her bir ayarın anlamını ve önemini açıklayacağız.

vsftpd Nedir ve Neden Kullanılır?

vsftpd, Unix benzeri sistemler için geliştirilmiş açık kaynak kodlu bir FTP sunucusudur. “Very Secure” (Çok Güvenli) ön ekiyle başlamasının nedeni, güvenlik zafiyetlerine karşı özel olarak tasarlanmış olmasıdır. vsftpd’nin temel amaçları:

  • Güvenli dosya transferi sağlamak
  • Yüksek performans ve stabilite sunmak
  • Kolay yapılandırma imkanı tanımak
  • Ölçeklenebilirlik sağlamak

Ne Zaman Kullanılır?

  • Web sunucularına dosya yüklemek için
  • Ekip içi dosya paylaşımı için
  • Yedekleme sistemleri için
  • İç ağda dosya transferi için
  • Otomatik dosya senkronizasyonu için

vsftpd Yapılandırma Ayarlarının Detaylı İncelenmesi

1. Kimlik Doğrulama ve Erişim Kontrolleri

anonymous_enable=NO

Anonim FTP erişimini devre dışı bırakır. Güvenlik için kritik bir ayardır. Anonim erişim açık olduğunda, herhangi biri kullanıcı adı ve şifre olmadan sunucunuza bağlanabilir. Üretim ortamlarında bu seçenek her zaman NO olarak ayarlanmalıdır.

local_enable=YES

Yerel sistem kullanıcılarının FTP üzerinden giriş yapmasına izin verir. Sistemde kayıtlı kullanıcıların kendi kimlik bilgileriyle bağlanmasını sağlar.

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

Bu üç ayar birlikte çalışarak beyaz liste (whitelist) yönetimi sağlar:

  • userlist_enable=YES: Kullanıcı listesi kontrolünü aktif eder
  • userlist_file: İzin verilen/reddedilen kullanıcıların listelendiği dosyayı belirtir
  • userlist_deny=NO: Sadece listedeki kullanıcıların erişimine izin verir (beyaz liste modu)

2. Dosya ve Dizin İzinleri

write_enable=YES

FTP yazma komutlarının kullanımına izin verir. Bu ayar NO ise kullanıcılar sadece dosya indirebilir, yükleyemez veya değiştiremez.

local_umask=022

Yeni oluşturulan dosya ve dizinler için varsayılan izin maskesini belirler. 022 değeri:

  • Dosyalar için: 644 (rw-r–r–)
  • Dizinler için: 755 (rwxr-xr-x)
    izinleri anlamına gelir.
allow_writeable_chroot=YES

Chroot hapishanesi içinde yazma izni verir. Güvenlik için kullanıcıları kendi ana dizinlerine hapsederken (chroot), aynı zamanda dosya yazmalarına da izin verir.

3. Kullanıcı Hapishanesi (Chroot) Ayarları

chroot_local_user=YES

Yerel kullanıcıları kendi ana dizinlerine hapseder. Bu güvenlik önlemi sayesinde kullanıcılar sadece kendi dizinleri içinde hareket edebilir, sistemin diğer bölümlerine erişemez.

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

Kullanıcıya özel FTP dizin yapısı oluşturur:

  • Her kullanıcı için /home/kullaniciadi/ftp dizinini FTP kök dizini yapar
  • Dinamik olarak kullanıcı adını yol adresine ekler

4. Bağlantı ve Port Ayarları

listen=NO
listen_ipv6=YES

IPv6 dinleme modunu aktif eder. Modern ağlarda IPv6 desteği önemlidir. listen=NO ayarı, vsftpd’nin standalone modda değil, inetd/xinetd üzerinden çalışmasını sağlar.

connect_from_port_20=YES

Aktif FTP modu için PORT 20’yi kullanır. Aktif FTP bağlantılarında veri transferi için port 20 kullanılır.

pasv_min_port=40000
pasv_max_port=40001

Pasif FTP için port aralığını belirler. Pasif FTP modunda, sunucu belirtilen port aralığında rastgele bir port açarak veri transferi yapar. Dar bir aralık (40000-40001) güvenlik duvarı yapılandırmasını kolaylaştırır.

5. Loglama ve Mesajlaşma

xferlog_enable=YES
xferlog_std_format=YES

Transfer log kayıtlarını aktif eder:

  • Tüm dosya yükleme ve indirme işlemlerini loglar
  • Standart FTP log formatını kullanır
dirmessage_enable=YES

Dizin mesajlarını aktif eder. Kullanıcılar bir dizine girdiğinde, o dizindeki .message dosyasının içeriğini görür.

6. Güvenlik ve Performans

ls_recursive_enable=YES

Özyinelemeli dizin listeleme (ls -R) özelliğini kontrol eder. Büyük dizinlerde performans sorunlarına neden olabileceğinden, içeriği fazla olan sunucularda NO yapılması önerilir.

pam_service_name=vsftpd

PAM (Pluggable Authentication Modules) kimlik doğrulamasını kullanır. Sistem kullanıcı hesaplarıyla entegre çalışmasını sağlar.

Kurulum ve Yapılandırma Adımları

1. vsftpd Kurulumu

sudo dnf install vsftpd -y
sudo systemctl enable vsftpd
sudo systemctl start vsftpd

2. Güvenlik Duvarı Ayarları

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=40000-40001/tcp
sudo firewall-cmd --reload

3. Kullanıcı Dizinleri Oluşturma

sudo mkdir -p /home/kullanici/ftp
sudo chown -R kullanici:kullanici /home/kullanici/ftp
sudo chmod 750 /home/kullanici/ftp

4. Kullanıcı Ekleme

echo "kullanici" | sudo tee -a /etc/vsftpd.userlist

En İyi Uygulamalar ve Güvenlik Önerileri

1. SSL/TLS Şifreleme

vsftpd’yi SSL/TLS ile şifrelemek için:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

2. Brute-Force Koruması

fail2ban ile FTP brute-force saldırılarına karşı koruma sağlayın.

3. Düzenli Güncellemeler

vsftpd ve sistem paketlerini düzenli olarak güncelleyin.

4. Log İzleme

FTP loglarını düzenli olarak kontrol edin ve anormal aktiviteleri izleyin.

5. Kullanıcı Kotası

Disk kotası uygulayarak kullanıcıların fazla alan kullanmasını engelleyin.

Sık Karşılaşılan Sorunlar ve Çözümleri

1. Bağlantı Zaman Aşımı

  • Pasif port aralığını güvenlik duvarında açtığınızdan emin olun
  • NAT/Port yönlendirme ayarlarını kontrol edin

2. Yazma İzin Hatası

  • allow_writeable_chroot=YES ayarını kontrol edin
  • Kullanıcı dizin izinlerini doğrulayın

3. Kimlik Doğrulama Hatası

  • /etc/vsftpd.userlist dosyasında kullanıcı adının doğru yazıldığından emin olun
  • PAM yapılandırmasını kontrol edin

Performans Optimizasyonu

1. Önbellek Ayarları

download_enable=YES
dirlist_enable=YES

2. Bağlantı Limiti

max_clients=100
max_per_ip=5

3. Zaman Aşımı Ayarları

idle_session_timeout=600
data_connection_timeout=120

Sonuç

vsftpd, güçlü güvenlik özellikleri, yüksek performansı ve esnek yapılandırma seçenekleriyle hem küçük ölçekli hem de kurumsal düzeyde FTP ihtiyaçlarını karşılayabilen mükemmel bir çözümdür. Doğru yapılandırıldığında, güvenli ve kararlı bir dosya transfer ortamı sağlar.

Bu rehberde öğrendiğiniz ayarları kendi ihtiyaçlarınıza göre uyarlayarak, hem güvenli hem de verimli bir FTP sunucusu oluşturabilirsiniz. Unutmayın ki güvenlik tek seferlik bir yapılandırma değil, sürekli bir süreçtir. Düzenli güncellemeler, log izleme ve güvenlik kontrolleri ile sisteminizin güvenliğini sürekli olarak sağlamalısınız.

Not: Bu yapılandırma Rocky Linux 8.4 üzerinde test edilmiştir, ancak diğer RHEL tabanlı dağıtımlarda da benzer şekilde çalışacaktır. Üretim ortamında uygulamadan önce test ortamında denemeler yapmanız önerilir.

💬 Yorum Bırak