Ubuntu'da FTP Sunucusu Nasıl Kurulur ve Yapılandırılır


FTP (Dosya Aktarım Protokolü), bir ağ üzerinden iki bilgisayar arasında dosya yüklemek/indirmek için kullanılan nispeten eski ve en çok kullanılan standart bir ağ protokolüdür. Ancak FTP orijinal haliyle güvenli değildir, çünkü verileri kullanıcı kimlik bilgileriyle (kullanıcı adı ve şifre) birlikte şifreleme olmadan iletir.

Uyarı: FTP kullanmayı planlıyorsanız, FTP bağlantısını SSL/TLS ile yapılandırmayı düşünün (bu konuda ele alınacaktır) sonraki makale). Aksi takdirde SFTP gibi güvenli FTP kullanmak her zaman daha iyidir.

Önerilen Okuma: CentOS 7'de FTP Sunucusu Nasıl Kurulur ve Güvenli Hale Getirilir

Bu eğitimde, bir FTP sunucusunun (VSFTPD tam anlamıyla "Çok Güvenli FTP Programı") nasıl kurulacağını, yapılandırılacağını ve güvenliğinin nasıl sağlanacağını göstereceğiz. Ubuntu, FTP güvenlik açıklarına karşı güçlü bir güvenliğe sahiptir.

Adım 1: Ubuntu'da VsFTP Sunucusunun Kurulumu

1. Öncelikle sistem paketi kaynakları listesini güncellememiz ve ardından VSFTPD ikili paketini aşağıdaki gibi kurmamız gerekiyor:

sudo apt-get update
sudo apt-get install vsftpd

2. Kurulum tamamlandıktan sonra, hizmet başlangıçta devre dışı bırakılacaktır, bu nedenle, onu ortalama bir süre için manuel olarak başlatmamız ve ayrıca bir sonraki sistem önyüklemesinden otomatik olarak başlatılmasını etkinleştirmemiz gerekir:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Ardından, sunucuda UFW güvenlik duvarı etkinse (varsayılan olarak etkin değildir), 21 ve 20 bağlantı noktalarını açmanız gerekir. Uzak makinelerden FTP hizmetlerine erişime izin vermek için FTP servislerinin dinlediği yere yeni güvenlik duvarı kurallarını aşağıdaki gibi ekleyin:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Adım 2: Ubuntu'da VsFTP Sunucusunu Yapılandırma ve Güvenliğini Sağlama

4. Şimdi FTP sunucumuzu kurmak ve güvenliğini sağlamak için birkaç yapılandırma gerçekleştirelim, ilk önce /etc/vsftpd/vsftpd.conf gibi orijinal yapılandırma dosyasının yedeğini oluşturacağız. Bu yüzden:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Daha sonra vsftpd yapılandırma dosyasını açalım.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Bu değerlerle aşağıdaki seçenekleri ekleyin/değiştirin:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Şimdi /etc/vsftpd.userlist kullanıcı listesi dosyasına göre kullanıcılara FTP erişimine izin vermek/reddetmek için VSFTPD'yi yapılandırın.

Varsayılan olarak, userlist_file=/etc/vsftpd.userlist'te listelenen kullanıcıların, userlist_enable=YES olması durumunda userlist_deny=YES seçeneğiyle oturum açma erişiminin reddedileceğini unutmayın. .

Ancak userlist_deny=NO seçeneği, varsayılan ayarın anlamını değiştirir, dolayısıyla yalnızca kullanıcı adı userlist_file=/etc/vsftpd.userlist'te açıkça listelenen kullanıcılara izin verilecektir. FTP sunucusuna giriş yapın.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Önemli: Kullanıcılar FTP sunucusunda oturum açtıklarında, chroot edilmiş bir hapishaneye yerleştirilirler; bu, FTP oturumu için ana dizin görevi görecek yerel kök dizindir. sadece.

Daha sonra, aşağıda açıklandığı gibi chroot edilmiş jail (yerel kök) dizininin nasıl ayarlanacağına dair iki olası senaryoya bakacağız.

6. Bu noktada, FTP kullanıcılarını Ana dizinleriyle sınırlamak için aşağıdaki iki seçeneği ekleyelim/değiştirelim/yorumları kaldıralım.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES seçeneği, yerel kullanıcıların oturum açtıktan sonra varsayılan olarak ana dizinleri olan bir chroot hapishanesine yerleştirileceği anlamına gelir.

Ayrıca VSFTPD'nin güvenlik nedeniyle varsayılan olarak chroot jail dizininin yazılabilir olmasına izin vermediğini de anlamalıyız, ancak bu ayarı devre dışı bırakmak için allow_writeable_chroot=YES seçeneğini kullanabiliriz.

Dosyayı kaydedin ve kapatın. Daha sonra yukarıdaki değişikliklerin etkili olması için VSFTPD hizmetlerini yeniden başlatmamız gerekir:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Adım 3: Ubuntu'da VsFTP Sunucusunu Test Etme

7. Şimdi aşağıdaki gibi useradd komutuyla bir FTP kullanıcısı oluşturarak FTP sunucusunu test edeceğiz:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Daha sonra aaronkilik kullanıcısını /etc/vsftpd.userlist dosyasında echo komutu ve tee komutu ile aşağıdaki gibi açıkça listelememiz gerekiyor:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Şimdi yukarıdaki yapılandırmalarımızın gerektiği gibi çalışıp çalışmadığını test etme zamanı geldi. Anonim girişleri test ederek başlayacağız; FTP sunucusunda anonim oturum açmalara izin verilmediğini aşağıdaki çıktıdan açıkça görebiliriz:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Sonra, /etc/vsftpd.userlist dosyasında listelenmeyen bir kullanıcıya oturum açma izni verilip verilmeyeceğini test edelim; bu, aşağıdaki çıktıya göre doğru değil :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Şimdi /etc/vsftpd.userlist dosyasında listelenen bir kullanıcının, sonrasında gerçekten ana dizinine yerleştirilip yerleştirilmediğini belirlemek için son bir test gerçekleştireceğiz. giriş yapmak. Ve bu, aşağıdaki çıktıdan doğrudur:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Uyarı: allow_writeable_chroot=YES seçeneğinin ayarlanması çok tehlikeli olabilir, özellikle kullanıcıların yükleme izni varsa güvenlik açısından olası sonuçları olabilir veya dahası, kabuk erişimi. Yalnızca ne yaptığınızı tam olarak biliyorsanız kullanın.

Bu güvenlik etkilerinin VSFTPD'ye özgü olmadığını, yerel kullanıcıları chroot hapishanelerine koymayı teklif eden diğer tüm FTP arka plan programlarını da etkileyebileceğini unutmamalıyız.

Bu nedenle aşağıdaki bölümde, bir kullanıcı için farklı, yazılamayan bir yerel kök dizin ayarlamanın daha güvenli bir yöntemini anlatacağız.

Adım 4: Ubuntu'da FTP Kullanıcı Ana Dizinlerini Yapılandırma

11. Şimdi VSFTPD yapılandırma dosyasını bir kez daha açın.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

ve aşağıda gösterildiği gibi # karakterini kullanarak güvenli olmayan seçeneği yorumlayın:

#allow_writeable_chroot=YES

Daha sonra, kullanıcı için alternatif yerel kök dizini oluşturun (aaronkilik, sizinki muhtemelen aynı değildir) ve diğer tüm kullanıcıların bu dizine yazma izinlerini devre dışı bırakarak gerekli izinleri ayarlayın:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Ardından, yerel kök altında, kullanıcının dosyalarını depolayacağı, uygun izinlere sahip bir dizin oluşturun:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Daha sonra VSFTPD yapılandırma dosyasına aşağıdaki seçenekleri karşılık gelen değerleriyle ekleyin/değiştirin:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Dosyayı kaydedin ve kapatın. Ve VSFTPD hizmetlerini en son ayarlarla yeniden başlatın:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Şimdi son bir kontrol yapalım ve kullanıcının yerel kök dizininin, Home dizininde oluşturduğumuz FTP dizini olduğundan emin olalım.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Bu kadar! Bu kılavuz hakkındaki düşüncelerinizi aşağıdaki yorum formunu kullanarak paylaşmayı veya konuyla ilgili önemli bilgileri bize iletmeyi unutmayın.

Son olarak, Ubuntu 16.04/16.10'da SSL/TLS bağlantılarını kullanarak bir FTP sunucusunun güvenliğini nasıl sağlayacağımızı açıklayacağımız bir sonraki makalemizi kaçırmayın, o zamana kadar her zaman TecMint'i takip etmeye devam edin.