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 ederuserlist_file: İzin verilen/reddedilen kullanıcıların listelendiği dosyayı belirtiruserlist_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/ftpdizinini 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=YESayarını kontrol edin- Kullanıcı dizin izinlerini doğrulayın
3. Kimlik Doğrulama Hatası
/etc/vsftpd.userlistdosyası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.