Pardus Sunucu Üzerinde FTP Sunucu (vsftpd) Kurulumu ve Yapılandırması
Pardus (Debian tabanlı) sisteminizde güvenli ve performanslı bir FTP sunucusu kurmak için en popüler ve kararlı çözüm olan vsftpd (Very Secure FTP Daemon) kullanılmaktadır.
Aşağıda, belirttiğiniz yapılandırma bilgilerine (192.168.101.250, pserver, bilisim.local) uygun olarak hazırladığım eğitim makalesi yer almaktadır.
Bu makalede, Pardus sunucunuzu bir dosya paylaşım merkezine dönüştürmek için izlemeniz gereken adımları teknik detaylarıyla ele alacağız.
1. Hazırlık ve Sistem Güncelleme
Kuruluma başlamadan önce sunucunuzun hostname ve ağ yapılandırmasının doğru olduğundan emin olalım.
Hostname ve FQDN Kontrolü:
Bashsudo hostnamectl set-hostname pserver/etc/hostsdosyasını düzenleyerek FQDN tanımını ekleyin:Plaintext127.0.0.1 localhost 192.168.101.250 pserver.bilisim.local pserverSistem Güncelleme:
Bashsudo apt update && sudo apt upgrade -y
2. vsftpd Paketinin Kurulması
Pardus depolarında bulunan vsftpd paketini yüklemek için aşağıdaki komutu çalıştırın:
sudo apt install vsftpd -y
Kurulum sonrası servisin durumunu kontrol edin:
systemctl status vsftpd
3. FTP Yapılandırması (vsftpd.conf)
FTP sunucusunun davranışını belirleyen ana dosya /etc/vsftpd.conf dosyasıdır. Orijinal dosyanın yedeğini alarak işe başlayalım:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
Dosya içerisinde aşağıdaki ayarların aktif (başındaki # işareti kaldırılmış) veya eklenmiş olduğundan emin olun:
| Parametre | Değer | Açıklama |
anonymous_enable | NO | İsimsiz (şifresiz) girişi kapatır. |
local_enable | YES | Yerel kullanıcıların girişine izin verir. |
write_enable | YES | Dosya yükleme ve silme yetkisi verir. |
chroot_local_user | YES | Kullanıcıyı kendi ana dizinine hapseder (güvenlik için). |
local_umask | 022 | Yeni oluşturulan dosyaların izin maskesi. |
Önemli Not: chroot_local_user=YES aktifken kullanıcının ana dizinine yazma yetkisi olması FTP hatasına (500 OOPS) neden olabilir. Bunu aşmak için şu satırı dosyanın en altına ekleyin:
allow_writeable_chroot=YES
4. Kullanıcı Oluşturma ve Yetkilendirme
FTP erişimi için sisteme özel bir kullanıcı ekleyelim:
sudo adduser ftpuser
(Bu aşamada size şifre soracaktır, güçlü bir şifre belirleyin.)
5. Güvenlik Duvarı (UFW) Ayarları
Eğer sunucunuzda ufw aktifse, FTP trafiğine izin vermeniz gerekir:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp # Pasif mod aralığı için
6. Servisi Yeniden Başlatma
Yaptığınız değişikliklerin geçerli olması için servisi yeniden başlatın:
sudo systemctl restart vsftpd
7. Bağlantı Testi
Sunucunuza başka bir bilgisayardan bağlanmak için FileZilla veya WinSCP gibi bir istemci kullanabilirsiniz.
Sunucu (Host):
192.168.101.250veyapserver.bilisim.localKullanıcı Adı:
ftpuserŞifre: (Belirlediğiniz şifre)
Port:
21
Özet Komut Listesi
| İşlem | Komut |
| Kurulum | sudo apt install vsftpd |
| Servis Başlatma | sudo systemctl start vsftpd |
| Otomatik Başlatma | sudo systemctl enable vsftpd |
| Yapılandırma Düzenleme | sudo nano /etc/vsftpd.conf |
IP: 192.168.101.250/24
Hostname: pserver
FQDN: bilisim.local
Tam Adı: pserver.bilisim.local
Pardus Server üzerinde güvenli ve yapılandırılmış bir FTP sunucusu kuracağız. Eğitim amaçlı bir okul/lab ortamı senaryosuna göre hazırlanmıştır.
📌 1️⃣ Senaryo ve Hedef
Okul ağında:
FTP Sunucu IP: 192.168.101.250
Hostname: pserver
FQDN: pserver.bilisim.local
Öğrenciler dosya yükleyip indirebilecek
Her kullanıcı kendi klasörüne erişebilecek
Sistem güvenli olacak
FTP servisi olarak Linux dünyasında en stabil ve güvenli servislerden biri olan:
👉 vsftpd kullanacağız.
📌 2️⃣ Sistem Hazırlığı
🔹 Hostname Ayarlama
sudo hostnamectl set-hostname pserver
🔹 /etc/hosts Düzenleme
sudo nano /etc/hosts
Ekleyin:
192.168.101.250 pserver.bilisim.local pserver
Kontrol:
hostname
hostname -f
📌 3️⃣ FTP Sunucu Kurulumu
🔹 Paket Güncelleme
sudo apt update
sudo apt upgrade -y
🔹 vsftpd Kurulumu
sudo apt install vsftpd -y
Servis kontrolü:
sudo systemctl status vsftpd
Aktif değilse:
sudo systemctl enable vsftpd
sudo systemctl start vsftpd
📌 4️⃣ Temel FTP Yapılandırması
🔹 Konfigürasyon Dosyası
sudo nano /etc/vsftpd.conf
Aşağıdaki ayarları düzenleyin:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
Kaydedin ve çıkın.
📌 5️⃣ FTP Kullanıcısı Oluşturma
Örnek öğrenci hesabı:
sudo adduser ogrenci1
FTP klasörü oluştur:
sudo mkdir -p /home/ogrenci1/ftp/files
Yetkileri düzenle:
sudo chown nobody:nogroup /home/ogrenci1/ftp
sudo chmod a-w /home/ogrenci1/ftp
sudo chown ogrenci1:ogrenci1 /home/ogrenci1/ftp/files
Bu yapı sayesinde:
/home/ogrenci1/ftp
└── files
Öğrenci sadece files klasörüne yazabilir.
📌 6️⃣ Firewall Ayarları
Eğer UFW aktifse:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp
sudo ufw reload
Kontrol:
sudo ufw status
📌 7️⃣ Servisi Yeniden Başlatma
sudo systemctl restart vsftpd
📌 8️⃣ İstemci Bilgisayardan Bağlantı Testi
Windows'tan:
Dosya Gezgini
Adres çubuğuna yaz:
ftp://192.168.101.250
Linux'tan:
ftp 192.168.101.250
GUI istemci olarak:
👉 FileZilla
Bağlantı bilgileri:
Host: 192.168.101.250
Kullanıcı: ogrenci1
Şifre: (oluşturduğunuz)
Port: 21
📌 9️⃣ Eğitim Ortamı İçin Ek Güvenlik (Önerilir)
⚠ FTP şifreleri düz metin gönderir. Gerçek ortamda FTPS kullanmanız önerilir.
SSL aktif etmek için:
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem \
-out /etc/ssl/private/vsftpd.pem
/etc/vsftpd.conf içine ekleyin:
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
📌 1️⃣0️⃣ Servis Mimarisi (Ağ Diyagramı)
Öğrenci PC
│
│ FTP (21)
▼
Switch
│
▼
pserver.bilisim.local
192.168.101.250
(vsftpd)
📌 1️⃣1️⃣ Kontrol Komutları
sudo systemctl status vsftpd
sudo ss -tulnp | grep 21
📌 1️⃣2️⃣ Olası Hatalar ve Çözümleri
| Hata | Çözüm |
|---|---|
| 530 Login incorrect | Kullanıcı şifresini kontrol edin |
| Connection refused | Firewall açık mı kontrol edin |
| 500 OOPS chroot | allow_writeable_chroot=YES ekleyin |
📌 1️⃣3️⃣ Eğitim Senaryosu Örneği
✔ Her öğrenciye ayrı kullanıcı
✔ Ortak paylaşımlı klasör
✔ Öğretmen için full erişim
✔ FTP log takibi
Log dosyası:
/var/log/vsftpd.log
🎯 Sonuç
Bu makalede:
Pardus üzerinde FTP server kurduk
Kullanıcı bazlı erişim sağladık
Güvenlik ayarları yaptık
Eğitim ortamı için optimize ettik
Harika! FTP trafiğini şifrelemek, kullanıcı adı ve şifrelerin ağ üzerinden açık metin (clear text) olarak gitmesini engellemek için kritik bir adımdır. Bu işleme FTPS (FTP over SSL/TLS) diyoruz.
İşte eğitim makalenizin devamı niteliğindeki SSL/TLS ile Güvenli FTP Yapılandırması bölümü:
8. SSL/TLS Sertifikası Oluşturma ve Yapılandırma
Pardus sunucunuzda verilerin şifrelenmesi için kendinden imzalı (self-signed) bir SSL sertifikası oluşturacağız.
8.1. SSL Sertifikası Üretme
Aşağıdaki komutla 365 gün geçerli, 2048-bit anahtar uzunluğuna sahip bir sertifika oluşturalım:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem \
-out /etc/ssl/private/vsftpd.pem
Bu komutu çalıştırdığınızda size Ülke (TR), Şehir, Kurum gibi sorular sorulacaktır. FQDN kısmına pserver.bilisim.local yazmanız profesyonel bir yaklaşım olacaktır.
8.2. vsftpd Yapılandırma Dosyasını Güncelleme
Oluşturduğumuz sertifikayı sunucuya tanıtmak için /etc/vsftpd.conf dosyasını tekrar açın:
sudo nano /etc/vsftpd.conf
Dosyanın en altına gidin veya ilgili satırları şu şekilde güncelleyin:
# Sertifika Yolları
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
# SSL/TLS Aktifleştirme
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Güvenli TLS Versiyonları
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Pasif Mod Port Aralığı (Güvenlik Duvarı İçin)
pasv_min_port=40000
pasv_max_port=50000
8.3. Servisi Yeniden Başlatma
Yapılandırmayı sisteme yansıtın:
sudo systemctl restart vsftpd
9. Bağlantı Testi (FileZilla Örneği)
SSL yapılandırmasından sonra standart FTP bağlantısı hata verebilir veya uyarı çıkarabilir. Bağlanırken şunlara dikkat etmelisiniz:
Protokol: FTP - Dosya Aktarım Protokolü
Şifreleme: "TLS üzerinden açık FTP gereksin (Explicit)" seçeneğini seçin.
Sertifika Uyarısı: Bağlanırken "Bilinmeyen Sertifika" uyarısı alacaksınız (kendimiz imzaladığımız için). "Gelecek oturumlar için bu sertifikaya her zaman güven" kutucuğunu işaretleyip tamam deyin.
| Güvenlik Durumu | Durum |
| Bağlantı Türü | TLS 1.2 / 1.3 Şifreli |
| Veri Güvenliği | Dosya içerikleri şifrelenmiş |
| Giriş Güvenliği | Kullanıcı bilgileri şifrelenmiş |
Bu bölümle birlikte FTP sunucunuz profesyonel bir veri yönetim merkezine dönüşecektir. Kullanıcıların sadece kendilerine ayrılan alanları görmesi ve sunucunun disk alanını bitirmemesi için Kota (Quota) ve Dizin Sınırlandırma işlemlerini şu adımlarla gerçekleştirebilirsiniz:
10. Kullanıcı Bazlı Klasör Yetkileri ve Alan Sınırlandırması
Sunucunuzda her öğretmenin veya öğrencinin sadece kendi klasörüne erişmesini ve belirli bir boyuttan (örneğin 5GB) fazla dosya yükleyememesini sağlayalım.
10.1. Kullanıcı Dizin Yapılandırması (Chroot)
Daha önce vsftpd.conf içerisinde chroot_local_user=YES yapmıştık. Şimdi kullanıcıların FTP ile bağlandıklarında görecekleri ana dizini özelleştirelim:
# Kullanıcı için özel bir FTP klasörü oluşturalım
sudo mkdir -p /home/ftpuser/ftp/yuklemeler
# Yetkileri düzenleyelim (Root dizini yazılabilir olmamalıdır)
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
# Yükleme yapılacak klasörün yetkisini kullanıcıya verelim
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/yuklemeler
Ardından /etc/vsftpd.conf dosyasına şu satırı ekleyin:
local_root=/home/ftpuser/ftp
10.2. Disk Kotası (Quota) Kurulumu
Pardus üzerinde disk kullanımını sınırlandırmak için quota paketini kullanalım:
sudo apt install quota quotatool -y
10.3. Disk Yapılandırması
Kotayı etkinleştirmek için /etc/fstab dosyasında ilgili diskin yanına usrquota eklemelisiniz:
Dosyayı açın:
sudo nano /etc/fstabKök dizin (
/) satırını bulun ve şu şekilde düzenleyin:UUID=... / ext4 errors=remount-ro,usrquota 0 1Değişikliği sisteme tanıtın:
Bashsudo mount -o remount / sudo quotacheck -cum / sudo quotaon -v /
10.4. Kullanıcıya Kota Tanımlama
ftpuser kullanıcısına 5GB (5000000 KB) sınır koymak için:
sudo setquota -u ftpuser 5000000 5500000 0 0 /
5000000 (Soft Limit): Kullanıcı bu sınıra geldiğinde uyarı alır.
5500000 (Hard Limit): Bu sınırdan sonra kesinlikle dosya yükleyemez.
11. Kota Durumunu İzleme
Kullanıcıların ne kadar alan kullandığını raporlamak için şu komutu kullanabilirsiniz:
repquota -as
Eğitim Makalesi İçin Son Notlar:
Bu makale serisi ile bir Pardus sunucusu üzerinde;
Temel FTP kurulumunu,
FQDN ve network yapılandırmasını,
SSL/TLS ile veri güvenliğini,
Quota ile kaynak yönetimini tamamlamış oldunuz.
Yorumlar