Last updated on Eylül 2, 2022
Merhabalar. Değerli okuyucu bugün Linux altyapısına sahip olan Ubuntu Server 20.04 LTS İşletim Sisteminde Vsftpd uygulamasını yükleyerek FileZilla ile sistemimize uzakten bağlanacağız.
VSFTPD Uygulamasının Kurulumu
Proxmox’ta VM’in Kurulması ve Linux Ubuntu Server 20.04 LTS İşletim Sisteminin kurulması
Burada yine önceki yazılarımda yaptığım gibi Proxmox fiziksel sunucusunda yeni bir VM açacağız. Sonrasında o VM’in içine Linux altyapısını kullanan Ubuntu Server 20.04 LTS işletim sistemini entegre edeceğiz. Bu adımı hızlıca geçeceğim çünkü bunu daha önce bir blog yazısında yazmıştım. İncelemek isterseniz buradan yazıya ulaşabilirsiniz.
VM’e Uzaktan Giriş ve Gerekli İlk Komut Satırları
Eğer yeni bir Sanal Makine kuracaksanız yukarıdaki maddeyi ve gerekli linke tıklayarak Linux Ubuntu Server 20.04 LTS İşletim Sistemini nasıl kurulacağını ayrıntılı anlattım. Bu adımı geçtikten sonra uzaktan bağlanmak tekrardan PuTTy uygulamasını kullanacağız. Normalde Windows için genellikle PuTTy gibi uygulamalar tercih edilmektedir. Linux ve MacOS İşletim Sistemleri için SSH komut satırları kullanılmaktadır.
Evet eğer sistemimize giriş yaptıysak diğer blog yazılarımdan farklı olarak uygulamamızı direkt olarak sistemimize kuracağız. Öncelikle şu komut satırını uygulayalım.
sudo apt-get install vsftpd
Kurulumu Tamamlamadan Önceki Önemli İşlemler
Sisteme Kullanıcı Ekleme
evet öncelikle burada yapmamız gereken ilk işlem VSFTPD Uygulamasına uzaktan bağlanmak için bir kullanıcı eklememiz gerekmektedir. Eklememizin sebebi ise mühendislerin sistemi direkt olarak görememesi ile birlikte gelen dış saldırılara bir nevi koruma amaçlamaktadır. Gerekli komut satırları aşağıda verilmiştir.
sudo useradd -m user
passwd user / sudo passwd user
Kullanıcımızı eklediğimize göre şimdi 2. yapacağımız işlem ise /etc klasörünün içine bir adet dosya eklemektir. Gerekli Komut satırları aşağıdadır.
sudo nano /etc/vsftpd_userlist
Dosyayı açtıktan sonra user adlı kullanıcımızı ekliyoruz.
user
dosyayı “CTRL + S” ve “CTRL + X” tuş kombinasyonlarıyla birlikte kapatıyoruz.
Chroot List Klasörünün Oluşturulması
VSFTPD Uygulamasının çalışabilmesi ve özellikle FileZilla Uygulamasıyla uzaktan bağlanırken alınan hatalardan birisi ise Chroot List dosyasının olmaması hatasıdır. Onun çözülmesi için /etc klasörünün içine aşağıdaki şu komut satırı yazılmaktadır.
cd /etc
sudo mkdir vsftpd.chroot_list
Şuana kadar geldiyseniz son üç adım kaldı. 1. olarak VSFTPD Uygulamasını “SSL” ile kullanıp kullanmayacağınızdır. Bu adımı göstereceğim.
Sistemin SSL ile Birlikte Kullanılması
Öncelikle uygulamaya “SSL” eklemek için OpenSSL uygulamasından yardım alacağız. Linux Ubuntu Server 20.04 LTS İşletim Sistemindeki en önemli uygulamalarından birisidir. Bu uygulamayla birlikte ücretsiz bir şekilde sistemi güvenli hale getirebilmektir. İlk başta gerekli “key” ve “crt” dosyalarını birleştirerek “pem” dosyasına aktaracağız. Aslında bunu OpenSSL uygulaması çok başarılı bir şekilde yapıyor. Ekstra bir işleme gerek kalmayacaktır. Aşağıda komut satırını uygulamak yeterli olacaktır.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Bu komut satırını uyguladıktan sonra gerekli bilgileri girerek komut satırını başarılı bir şekilde uygulamamız gerekmektedir. Eğer sistemi “SSL” kullanmadan yapmak istiyorsanız bu adımı direkt olarak geçmelisiniz.
“vsftpd.conf” Klasörünün Ayarı
Bu adıma kadar geldiyseniz gerekli “ufw” komut satırıyla birlikte portların dış dünyaya açılmasından önceki adımdır. Buarada “vsftpd.conf” dosyasını kendime göre düzenledim bunun içeriğini kendinize göre ayarlayabilirsiniz. Aşağıda default olan dosya içeriğini tamamen silmenizi öneriyorum. Daha kolay anlaşılması için tabii ki 🙂
Aşağıda örnek olarak kullandığım dosyanın içeriği aşağıdadır.
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES
chroot_list_enable=YES
user_sub_token= $USER
local_root=/var/www
userlist_enable=YES
userlist_file=/etc/vsftpd_userlist
userlist_deny=NO
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
Yukarıdaki örnek dosya içeriği “FTP” protokolüle göre default olan 21 portunu içermektedir. Başka bir portu kullanabilir miyim? veya başka bir port kullanırsam sistemim dış dünyaya açılır mı? Gibi sorular gelebilir. Araştırıp aşağıdaki komut satırlarını buldum. Eğer sistemi daha güvenli hale getirmek istiyorsanız bunu kullanmanızı öneririm yoksa default bölümünde bir sıkıntı yoktur.
listen_port=201
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES
chroot_list_enable=YES
user_sub_token= $USER
local_root=/var/www
userlist_enable=YES
userlist_file=/etc/vsftpd_userlist
userlist_deny=NO
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
Yukarıdaki komut satırlarını kullanarak başka bir portla dış dünyaya açılabilirsiniz. Bu dosyanın içeriği tamamen “SSL” protokolü ile birlikte hazırlanmıştır. aşağıda ise “SSL” protokolü olmadan dosyanın içeri verilmiştir.
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES
chroot_list_enable=YES
user_sub_token= $USER
local_root=/var/www
userlist_enable=YES
userlist_file=/etc/vsftpd_userlist
userlist_deny=NO
Tüm “vsftpd.conf” dosyalarının içeriğinin sadece bir tanesinin değişmesi size olması lazımdır. Ben burada NGINX uygulamasıyla çalıştırdığım için local_root komut satırın karşılığında “/var/www” bölümünü yazdım. Siz istediğiniz veya mühendisinizin dosyaları nereye atacağına göre bölümünü değiştebilirsiniz. Gelelim Son adım olan gerekli Port numaralarını dış dünyaya gelin birlikte açalım.
Port Numaraların Dış Dünyaya Açılması
Bu bölümde FTP protokolünün portlarını dış dünyaya açacağız. Aşağıdaki komut satırlarıyla birlikte portlarımızı dış dünyaya açacağız. Tabii ki bu portlar genellikle default ayarlara göre düzenlenmiştir. Farklı bir portla çalışacaksanız 21 portunu değiştirmeniz yeterlidir.
sudo ufw enable
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow 990/tcp
Tüm bu ayarlardan sonra VSFTPD Uygulamasının servisini tekrardan başlatmanız yeterlidir.
sudo service vsftpd restart
Test Aşaması
FileZilla Uygulamamızı açıyoruz ve sol üst köşedeki fare imleçin gösterdiği yere tıklıyoruz.
Açılan pencerede yeni oluşturduysanız “New site” butonuna tıklayarak yeni bir FTP giriş bölümü oluşturmanız yeterli olacaktır. Sonrasında Protocol olarak FTP – File Transfer Protocol” Host olarak Sanal Makinenize ait IP adresi, Encryption bölümünde eğer SSL protokolü varsa “Use explicit FTP over TLS if available” Login type olarak ise ben genellikle şifrenin sorulmasını isterim her ihtimale karşı. Son olarak User ismi işletim sistemindeki kurduğumuz kullanıcı adını veya birçok kullanıcı varsa girmek istediğiniz kullanıcı adını yazmanız gerekmektedir. Bunlardan sonra “Connect” butonuna basmanız yeterlidir.
Test aşamamız sorunsuz bir şekilde çözülmüştür. Bununla birlikte dosyaların izinleri ve İşletim Sisteminde oluşturduğumuz ve önceden oluşturulan kullacıların dosyaya olan yetkilerini başka bir Blog yazımda devam edeceğim.
Sonuç olarak VSFTPD Uygulamasını, bir adet VM oluşturarak ve içine bu uygulamayı yükleyerek gerekli ayarları ve dosyalarının eklenmesini sağlayarak FileZilla uygulamasıyla test ettik. Kurulumun tamamını Youtube kanalımda yayınladım. Buradan ve linke tıklayarak kanalımdaki başka videoları da izleyerek destek olabilirsiniz.
Excellent article. I certainly love this website. Keep writing!