Ubuntu'da SSL/TLS Kullanarak Güvenli FTP Sunucusu Kurma


Bu eğitimde, SSL kullanarak bir FTP sunucusunun (VSFTPD "Çok Güvenli FTP Programı" anlamına gelir) güvenliğinin nasıl sağlanacağını açıklayacağız. Ubuntu 16.04/16.10'da /TLS.

CentOS tabanlı dağıtımlar için güvenli bir FTP sunucusu kurmak istiyorsanız şu yazıyı okuyabilirsiniz – CentOS'ta SSL/TLS Kullanarak Bir FTP Sunucusunun Güvenliğini Sağlayın

Bu kılavuzdaki çeşitli adımları izledikten sonra, güvenli veri aktarımı için bir FTP sunucusunda şifreleme hizmetlerini etkinleştirmenin temellerini öğrenmiş olacağız.

Gereksinimler

  1. Ubuntu'da bir FTP Sunucusu Kurmalı ve Yapılandırmalısınız

Daha ileri gitmeden önce bu makaledeki tüm komutların root veya sudo ayrıcalıklı hesap olarak çalıştırılacağından emin olun.

Adım 1: Ubuntu'da FTP için SSL/TLS Sertifikası Oluşturma

1. /etc/ssl/ altında bir alt dizin oluşturarak başlayacağız ve SSL/TLS sertifikasını ve eğer yoksa anahtar dosyalarını depolamak için yok:

sudo mkdir /etc/ssl/private

2. Şimdi aşağıdaki komutu çalıştırarak sertifikayı ve anahtarı tek bir dosyada oluşturalım.

sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

Yukarıdaki komut sizden aşağıdaki soruları cevaplamanızı isteyecektir, senaryonuza uygun değerleri girmeyi unutmayın.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Adım 2: VSFTPD'yi Ubuntu'da SSL/TLS Kullanacak Şekilde Yapılandırma

3. Herhangi bir VSFTPD yapılandırması gerçekleştirmeden önce, UFW güvenlik duvarı etkin olanlar için 990 ve 40000 bağlantı noktalarını açmanız gerekir. TLS bağlantılarının ve pasif bağlantı noktalarının bağlantı noktası aralığının VSFTPD yapılandırma dosyasında sırasıyla ayarlanmasına izin vermek için -50000:

sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status

4. Şimdi VSFTPD yapılandırma dosyasını açın ve içindeki SSL ayrıntılarını tanımlayın:

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

Ardından, ssl_enable seçeneğini ekleyin veya bulun ve SSL kullanımını etkinleştirmek için değerini YES olarak ayarlayın; TLS, SSL'den daha güvenli olduğundan, VSFTPD'yi şu şekilde kısıtlayacağız: ssl_tlsv1 seçeneğini etkinleştirerek bunun yerine TLS'yi kullanın:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Ardından, # karakterini kullanarak aşağıdaki satırları aşağıdaki şekilde yorumlayın:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Daha sonra SSL sertifikasının ve anahtar dosyasının konumunu tanımlamak için aşağıdaki satırları ekleyin:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6. Artık anonim kullanıcıların SSL kullanmasını da önlememiz, ardından tüm anonim olmayan oturum açma bilgilerini veri aktarımı için güvenli bir SSL bağlantısı kullanmaya ve oturum açma sırasında şifreyi göndermeye zorlamamız gerekiyor:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Ayrıca, FTP sunucusuna daha fazla güvenlik özelliği eklemek için aşağıdaki seçenekleri kullanabiliriz. require_ssl_reuse=YES seçeneğiyle, tüm SSL veri bağlantılarının SSL oturumunun yeniden kullanımını göstermesi gerekir; kontrol kanalıyla aynı ana sırrı bildiklerini kanıtlıyorlar. Bu yüzden onu devre dışı bırakmalıyız.

require_ssl_reuse=NO

Ayrıca ssl_ciphers seçeneği ile VSFTPD'nin şifreli SSL bağlantıları için hangi SSL şifrelerine izin vereceğini ayarlayabiliriz. Bu, muhtemelen aşağıdaki güvenlik açıklarını keşfettikleri belirli bir şifreyi zorlamaya çalışan saldırganların çabalarını boşa çıkarmaya yardımcı olacaktır:

ssl_ciphers=HIGH

8. Daha sonra pasif portların port aralığını (min ve max port) tanımlayalım.

pasv_min_port=40000
pasv_max_port=50000

9. SSL hata ayıklamasını etkinleştirmek için, yani openSSL bağlantı teşhisinin VSFTPD günlük dosyasına kaydedilmesi için debug_ssl seçeneğini kullanabiliriz:

debug_ssl=YES

Son olarak dosyayı kaydedin ve kapatın. Ardından VSFTPD hizmetini yeniden başlatın:

systemctl restart vsftpd

Adım 3: Ubuntu'da FTP'yi SSL/TLS Bağlantılarıyla Doğrulayın

10. Yukarıdaki tüm yapılandırmaları gerçekleştirdikten sonra, aşağıdaki gibi komut satırından FTP kullanmayı deneyerek VSFTPD'nin artık SSL/TLS bağlantılarını kullanıp kullanmadığını test edin.

Aşağıdaki çıktıda, VSFTPD'nin yalnızca kullanıcıların (anonim olmayan) şifreleme hizmetlerini destekleyen güvenli istemcilerden oturum açmasına izin verebileceğini bildiren bir hata mesajı var.

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

Komut satırı şifreleme hizmetlerini desteklemediğinden yukarıdaki hataya neden olur. Bu nedenle, şifreleme hizmetlerinin etkin olduğu bir FTP sunucusuna güvenli bir şekilde bağlanmak için FileZilla gibi varsayılan olarak SSL/TLS bağlantılarını destekleyen bir FTP istemcisine ihtiyacımız var.

Adım 4:FTP'ye Güvenli Bir Şekilde Bağlanmak için İstemcilere FileZilla'yı Kurun

FileZilla, SSL/TLS üzerinden FTP'yi ve daha fazlasını destekleyen, güçlü, yaygın olarak kullanılan, platformlar arası bir FTP istemcisidir. FileZilla'yı bir Linux istemci makinesine kurmak için aşağıdaki komutu kullanın.

--------- On Debian/Ubuntu ---------
sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Fedora 22+ --------- 
sudo dnf install filezilla

12. Kurulum tamamlandıktan sonra açın ve Dosya=>Site Yöneticisi'ne gidin veya (Ctrl+S tuşlarına basarak) >Site Yöneticisi arayüzü aşağıdadır.

13. Şimdi ana bilgisayar/site adını tanımlayın, IP adresini ekleyin, kullanılacak protokolü, şifrelemeyi ve oturum açma türünü aşağıdaki ekran görüntüsündeki gibi tanımlayın (senaryonuz için geçerli olan değerleri kullanın):

Yeni bir site/ana bilgisayar bağlantısı yapılandırmak için Yeni Site düğmesini tıklayın.

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Ardından şifreyi girmek için yukarıdaki arayüzden Bağlan'ı tıklayın ve ardından SSL/TLS bağlantısı için kullanılan sertifikayı doğrulayın, ve FTP sunucusuna bağlanmak için bir kez daha Tamam'ı tıklayın:

15. Artık TLS bağlantısı üzerinden FTP sunucusuna başarıyla giriş yapmış olmalısınız, daha fazla bilgi için aşağıdaki arayüzden bağlantı durumu bölümünü kontrol edin.

16. Son olarak, dosyaları yerel makineden dosyalar klasöründeki FTP sunucusuna aktaralım, dosya aktarımlarıyla ilgili raporları görüntülemek için FileZilla arayüzünün alt ucuna bir göz atalım.

Bu kadar! Şifreleme hizmetlerini etkinleştirmeden bir FTP sunucusu kurmanın belirli güvenlik sonuçları doğuracağını her zaman unutmayın. Bu eğitimde açıkladığımız gibi, Ubuntu 16.04/16.10'da güvenliği uygulamak için bir FTP sunucusunu SSL/TLS bağlantılarını kullanacak şekilde yapılandırabilirsiniz.

FTP sunucusunda SSL/TLS kurulumunda herhangi bir sorunla karşılaşırsanız, bu eğitime/konuya ilişkin sorunlarınızı veya düşüncelerinizi paylaşmak için aşağıdaki yorum formunu kullanın.