Ubuntu Server - FTP Kurulumu
Bu yazımda üzerinde ubuntu yüklü olan sunucumuzda ftp işlemlerini nasıl yaparız sorusuna yanıt vermeye çalışacağım. Ama öncesinde size ait hali hazırda bir sunucu olduğunu ve bu sunucuya ssh bağlantısı yapabildiğinizi varsayacağım.
SSH nedir?
Secure Shell 'in kısaltmasıdır. SSH bir uzak sunucu bağlantı protokuludur. Herhangi bir işletim sistemi üzerinde sunucularınıza bağlanabilir ve yönetebilirsiniz. Aşağıdaki komutla sunucunuza bağlanabilirsiniz. Bu komuttan sonra daha önce sunucunuzda tanımlanmış root şifresini girmeniz gerekmektedir.
O halde bir terminal açıp hadi başlayalım.
$ ssh root@SERVER_IP_ADRESINIZ
Bu bağlantı bize root erişimini verdi. Ama takdir edersiniz ki, root olarak sunucuya erişmek yanlışlıkla yapılan hareketlerle tahribe yol açabilir. Bu nedenle;
$ adduser demiremrece
komutu ile "demiremrece" adında bir kullanıcı oluşturuyoruz. Devamında bu kullanıcı için güvenli bir şifre oluşturup, diğer istenen bilgileri pas geçebiliriz.
Standart kullanıcı yetkileriyle bir hesap oluşturduk. Şimdi bu hesabın arzu edildiğinde root olarak işlem yapabilmesini sağlayalım.
$ usermod -aG sudo demiremrece
Bundan sonra çalıştırdığımız komutların başına sudo ekleyerek admin yetkisinde işlem yapabiliriz. Artık sunucuya bu kullanıcıyla ssh bağlantısı yapmamızda hiç bir problem gözükmüyor.
Şimdi sunucuya ftp yapılandırması yapacağız ki Filezilla ya da benzeri bir yazılımla server ile dosya paylaşımı yapabilelim.
FTP (File Transfer Protocol): İstemci (client) ve sunucu (server) arasında dosya transferi yapabilmemiz için oluşturulmuş yaygın olarak kullanılan bir protokoldür.
Vspftpd kurulumu
Vsfptd, unix tabanlı işletim sistemleri üzerinde çalışan bir ftp sunucusudur.
Kurulum için öncelikle paket listesini güncelleyelim ve vsftpd'yi kuralım.
$ sudo apt-get update
$ sudo apt-get install vsftpd
Kurulum işleminden sonra vsftpd konfigürasyon dosyasında değişiklik yapacağimiz için öncelikle bir yedek almamızda fayda var.
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
FTP İzni
FTP, 20 ve 21 numaralı portları kullanır. Dolayısıyla bizim ftp erişimi yapabilmemiz için bu portlara izin vermemiz gerekiyor.
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
bize aşağıdaki gibi bir çıktı verecektir.
$ sudo ufw status
--çıktı--
To Action From
-- ------ ----
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
990/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
80 ALLOW Anywhere
20/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
Gördüğünüz gibi, 20 ve 21 portlarına erişime izin vermiş olduk.
Kullanıcı Erişim Klasörü
FTP yapmamıza olanak sağlayacak vsftpd yi kurduk ve erişime izin verdiğimize göre, artık kullanıcımızın dosyaları kontrol edebileceği bir dizine ihtiyacımız var. Ben genellikle kullanıcı ismi bazlı dizinler ayarlıyorum. Bu yazı serisinde amacımız bir websitesi barındırmak olduğundan :
$ mkdir /var/www/demiremrece
Aynı zamanda kullanıcı adımın da demiremrece olduğuna dikkat edin.
Bu klasörün yükleme ve indirme yapmaya müsait olması için ftp kullanıcısının bu yetkileri sahip olması gerekir.
$ sudo chown demiremrece:demiremrece /var/www/demiremrece
İçine de örnek bir html dosyası atalım.
<html>
<head>
<title>demiremrece.com</title>
</head>
<body>
<h1>Harika! Sayfamız çalışıyor.</h1>
</body>
</html>
Vsftpd Ayarları
$ sudo nano /etc/vsftpd.conf
Aşağıdaki gibi dosyayı değiştirdiğimizde, sadece vsftpd.userlist içerisindeki kullanıcılar ftp erişimine sahip olacak ve dosya yükleyebileceklerdir.
. . .
# Yetkisiz kullanıcılara izin vermiyoruz
anonymous_enable=NO
. . .
# Local kullanıcıların girişine izin veriyoruz
local_enable=YES
. . .
# Kullanıcıya yazma yetkisi veriyoruz.
write_enable=YES
. . .
# FTP ile bağlı kullanıcının kendi dizini dışındaki dosyalara erişimini engelliyoruz.
chroot_local_user=YES
. . .
# Kullanıcıya göre dizin için gerekli.
user_sub_token=$USER
local_root=/var/www/$USER
. . .
# Sadece liste içerisindeki kullanıcılara ftp izni ver
# userlist_enable NO yaparsak sadece liste içerisindeki kullanıcılara izin vermez.
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Bu işlemleri yaptıktan sonra kaydedip vsftpd.conf dosyasından çıkalım. Ardından userlist oluşturalım ve içine ftp izinli kullanıcıları yazalım. Bizim senaryomuzda sadece demiremrece.
$ echo "demiremrece" | sudo tee -a /etc/vsftpd.userlist
Ardından değişikliklerimizin etki edebilmesi için vfstpd'yi yeniden başlatalım.
$ sudo systemctl restart vsftpd
FTP işlemlerini tamamlamış olduk. Test etmek için;
$ ftp -p SERVER_IP_ADRESS
Her şey başarılı bir şekilde gittiyse, aşağıdaki gibi bir çıktı alıyor olmamız lazım.
-- Çıktı --
Connected to SERVER_IP_ADRESS
220 (vsFTPd 3.0.3)
Name (SERVER_IP_ADRESS:default): demiremrece
331 Please specify the password.
Password: KULLANICI_ŞİFRENİZ
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>