Ftp Server Kurulumu - 1 : Vsftp Kurulumu ve Yapılandırılması

Bu yazı dizimizde Google Cloud üzerinde vsftpd ile FTP server kurulumunu ve yönetimini inceleyeceğiz.

Ftp Server Kurulumu - 1 : vsftp Kurulumu ve Yapılandırılması

Ftp Server Kurulumu - 2 : FTP Kullanıcı Yönetimi

ADIM 1 - Google Cloud Hesabından Yeni Bir Sanal Makine Oluşturma ve Bağlanma

$ ssh -i .ssh/id_rsa ssonmez@<IP_Adresi>

ADIM 2 - Kurulum Yapma

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vsftpd -y

ADIM 3 - Local Firewall Kuralları

$ sudo ufw status
# OUTPUT : Firewall kapalı

Status: inactive

# OUTPUT : Firewall açık

Status: active

To Action  From
-- ------  ----
OpenSSH ALLOW   Anywhere
OpenSSH (v6)   ALLOW   Anywhere (v6)
$ sudo ufw allow 20/tcp             # for FTP
$ sudo ufw allow 21/tcp             # for FTP
$ sudo ufw allow 990/tcp            # for TSL
$ sudo ufw allow 40000:50000/tcp    # for Passive Ports
$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
990/tcp                    ALLOW       Anywhere
20/tcp                     ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
40000:50000/tcp            ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
20/tcp (v6)                ALLOW       Anywhere (v6)
21/tcp (v6)                ALLOW       Anywhere (v6)
990/tcp (v6)               ALLOW       Anywhere (v6)
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)

ADIM 4 - Yeni FTP Kullanıcısı Ekleme

# Yeni kullanıcı ekleme
$ sudo adduser <username>
# Kullanıcı için ftp dizini oluşturma
$ sudo mkdir /home/<username>/ftp
$ sudo chown nobody:nogroup /home/<username>/ftp
$ sudo chmod a-w /home/<username>/ftp
$ sudo ls -la /home/<username>/ftp

total 8
4 dr-xr-xr-x  2 nobody nogroup 4096 Aug 24 21:29 .
4 drwxr-xr-x 3 <username>  <username>   4096 Aug 24 21:29 ..
$ sudo mkdir /home/<username>/ftp/files
$ sudo chown <username>:<username> /home/<username>/ftp/files
$ sudo ls -la /home/<username>/ftp

total 12
dr-xr-xr-x 3 nobody nogroup 4096 Aug 26 14:01 .
drwxr-xr-x 3 <username>  <username>   4096 Aug 26 13:59 ..
drwxr-xr-x 2 <username>  <username>   4096 Aug 26 14:01 files

ADIM 5 - FTP Ayarlarının Yapılması

$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.orig
$ sudo nano /etc/vsftpd.conf
# FTP aktifleştirme
listen=YES

# Bilinmeyen kaynaklara erişimi kapatma
anonymous_enable=NO

# Lokal kaynaklara erişimi açma
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_umask=0012

# FTP dosya yolu
user_sub_token=$USER
local_root=/home/$USER/ftp

# İzin verilern kullanıcıların çekileceği dosya yolu
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

# Passive Port Ayarlamaları
# Buraya hostun public ip adresinin girilmesi gerekmektedir.
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=<ip_address>
$ echo "<username>" | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist
# Çıktı
serhat
$ sudo systemctl restart vsftpd

ADIM 6 - Google Cloud Firewall Ayarlarının Yapılması

AD          :   FTP-Rule-1
Ag          :   Default
Öncelik     :   1000
Yön         :   Giriş
Eylem       :   İzin Ver
Hedefler    :   Ağdaki tüm örnekler
Kaynak filt :   IP Aralıkları
IP Aralık   :   0.0.0.0/0
Protokoller :   tcp:21
---
AD          :   FTP-Rule-2
Ag          :   Default
Öncelik     :   1000
Yön         :   Giriş
Eylem       :   İzin Ver
Hedefler    :   Ağdaki tüm örnekler
Kaynak filt :   IP Aralıkları
IP Aralık   :   0.0.0.0/0
Protokoller :   tcp:20
---
AD          :   FTP-Rule-TSL
Ag          :   Default
Öncelik     :   1000
Yön         :   Giriş
Eylem       :   İzin Ver
Hedefler    :   Ağdaki tüm örnekler
Kaynak filt :   IP Aralıkları
IP Aralık   :   0.0.0.0/0
Protokoller :   tcp:990
---
AD          :   FTP-Rule-PassivePorts
Ag          :   Default
Öncelik     :   1000
Yön         :   Giriş
Eylem       :   İzin Ver
Hedefler    :   Ağdaki tüm örnekler
Kaynak filt :   IP Aralıkları
IP Aralık   :   0.0.0.0/0
Protokoller :   tcp:40000-50000
---

ADIM 7 - FTP Giriş Kontrolü

# Google Cloud üzerinden aldığımız public IP adres girilecek
$ ftp <ip_address>
Connected to <ip_address>.
220 (vsFTPd 3.0.3)

# FTP kullanıcı adı girilecek
Name (<ip_address>:serhat): serhat
331 Please specify the password.

# Parola giriyoruz
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

# ls ile dosyaları listeliyoruz.
# Burada bir sorun varsa Passive Mode ayalarları kontrol edilmelidir.
ftp> ls
227 Entering Passive Mode (35,227,17,158,175,27).
150 Here comes the directory listing.
drwxr-xr-x    2 1002     1003         4096 May 08 14:14 files
226 Directory send OK.

# Çıkış yapıyoruz.
ftp> bye
221 Goodbye.