CentOS 7'de Güvenli Dosya Aktarımı için SSL/TLS Kullanarak FTP Sunucusunun Güvenliği Nasıl Sağlanır?


Orijinal tasarımı gereği FTP (Dosya Aktarım Protokolü) güvenli değildir; bu, iki makine arasında iletilen verileri ve kullanıcının kimlik bilgilerini şifrelemediği anlamına gelir. Bu, sunucu güvenliğinin yanı sıra veriler için de büyük bir tehdit oluşturur.

Bu eğitimde CentOS/RHEL 7 ve Fedora'daki bir FTP sunucusunda veri şifreleme hizmetlerinin manuel olarak nasıl etkinleştirileceğini açıklayacağız; SSL/TLS sertifikalarını kullanarak VSFTPD (Çok Güvenli FTP Arka Plan Programı) hizmetlerinin güvenliğini sağlamak için çeşitli adımları uygulayacağız.

Önkoşullar:

  1. CentOS 7'de bir FTP sunucusu kurup yapılandırmış olmalısınız

Başlamadan önce, bu eğitimdeki tüm komutların root olarak çalıştırılacağını unutmayın; aksi takdirde, sunucuyu root hesabını kullanarak kontrol etmiyorsanız, root ayrıcalıkları kazanmak için sudo komutunu kullanın.

1. Adım. SSL/TLS Sertifikası ve Özel Anahtar Oluşturma

1. Şunun altında bir alt dizin oluşturarak başlamamız gerekiyor: /etc/ssl/ burada SSL/TLS sertifikasını ve anahtar dosyalarını saklayacağız. :

mkdir /etc/ssl/private

2. Ardından vsftpd sertifikasını ve anahtarını tek bir dosyada oluşturmak için aşağıdaki komutu çalıştırın; burada kullanılan her bayrağın açıklaması bulunmaktadır.

  1. req – X.509 Sertifika İmzalama İsteği (CSR) yönetimine yönelik bir komuttur.
  2. x509 – X.509 sertifika veri yönetimi anlamına gelir.
  3. gün – sertifikanın geçerli olacağı gün sayısını tanımlar.
  4. yenianahtar – sertifika anahtarı işlemcisini belirtir.
  5. rsa:2048 – RSA anahtar işlemcisi, 2048 bitlik bir özel anahtar oluşturacaktır.
  6. anahtar çıkışı – anahtar depolama dosyasını ayarlar.
  7. out – sertifika depolama dosyasını ayarlar; hem sertifikanın hem de anahtarın aynı dosyada saklandığını unutmayın: /etc/ssl/private/vsftpd.pem.
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ı yanıtlamanızı isteyecektir; senaryonuz için geçerli olan değerleri kullanmayı 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 SSL/TLS Kullanacak Şekilde Yapılandırma

3. Herhangi bir VSFTPD yapılandırması gerçekleştirmeden önce, TLS bağlantılarına ve pasif bağlantı noktalarının bağlantı noktası aralığına izin vermek için 990 ve 40000-50000 bağlantı noktalarını açalım. sırasıyla VSFTPD yapılandırma dosyasında tanımlamak için:

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

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

vi /etc/vsftpd/vsftpd.conf

SSL kullanımını etkinleştirmek için ssl_enable seçeneğini arayın ve değerini YES olarak ayarlayın; ayrıca TSL, SSL'den daha güvenli olduğundan VSFTPD'yi TLS kullanacak şekilde kısıtlayacağız. bunun yerine ssl_tlsv1_2 seçeneğini kullanarak:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Ardından, 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. Daha sonra, anonim kullanıcıların SSL kullanmasını önlemeli, 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 zorlamalıyız:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Ayrıca, FTP sunucusu güvenliğini artırmak için aşağıdaki seçenekleri de ekleyebiliriz. require_ssl_reuse seçeneği YES olarak ayarlandığında, 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 nedenle onu kapatmamız gerekiyor.

require_ssl_reuse=NO

Yine şifreli SSL bağlantıları için VSFTPD'nin hangi SSL şifrelerine izin vereceğini ssl_ciphers seçeneğiyle seçmemiz gerekiyor. Bu, muhtemelen aşağıdaki güvenlik açıklarını keşfettikleri belirli bir şifreyi zorlamaya çalışan saldırganların çabalarını büyük ölçüde sınırlayabilir:

ssl_ciphers=HIGH

8. Şimdi pasif bağlantı noktalarının bağlantı noktası aralığını (min ve maksimum bağlantı noktası) ayarlayın.

pasv_min_port=40000
pasv_max_port=50000

9. İsteğe bağlı olarak, SSL hata ayıklamasına izin verin; bu, openSSL bağlantı teşhisinin debug_ssl seçeneğiyle VSFTPD günlük dosyasına kaydedildiği anlamına gelir:

debug_ssl=YES

Tüm değişiklikleri kaydedin ve dosyayı kapatın. O zaman VSFTPD servisini yeniden başlatalım:

systemctl restart vsftpd

Adım 3: FTP sunucusunu SSL/TLS Bağlantılarıyla test etme

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

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>

Yukarıdaki ekran görüntüsünden, VSFTPD'nin kullanıcının yalnızca şifreleme hizmetlerini destekleyen istemcilerden oturum açmasına izin verebileceğini bildiren bir hata olduğunu görebiliriz.

Komut satırı şifreleme hizmetleri sunmadığından hataya neden olur. Bu nedenle, sunucuya güvenli bir şekilde bağlanmak için FileZilla gibi SSL/TLS bağlantılarını destekleyen bir FTP istemcisine ihtiyacımız var.

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

11. FileZilla, varsayılan olarak SSL/TLS bağlantılarını destekleyen modern, popüler ve en önemlisi çapraz platformlu bir FTP istemcisidir.

FileZilla'yı Linux'a kurmak için aşağıdaki komutu çalıştırın:

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

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

12. Yükleme tamamlandığında (veya zaten yüklediyseniz), onu açın ve Dosya=>Site Yöneticisi'ne gidin veya (Ctrl+S tuşlarına basın) ) aşağıdaki Site Yöneticisi arayüzünü edinmek için.

Yeni bir site/ana bilgisayar bağlantısı ayrıntıları eklemek için Yeni Site düğmesini tıklayın.

13. Ardından, aşağıdaki ekran görüntüsündeki gibi ana bilgisayar/site adını ayarlayın, IP adresini ekleyin, kullanılacak protokolü, şifrelemeyi ve oturum açma türünü tanımlayın (senaryonuz için geçerli olan değerleri kullanı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 tekrar girmek için Bağlan'ı tıklayın ve ardından SSL/TLS bağlantısı için kullanılan sertifikayı doğrulayın ve bir kez Tamam'ı tıklayın. FTP sunucusuna bağlanmak için daha fazlası:

Bu aşamada FTP sunucusuna TLS bağlantısı üzerinden başarıyla giriş yapmamız gerekiyor, daha fazla bilgi için aşağıdaki arayüzden bağlantı durumu bölümünü kontrol edin.

15. Son olarak, dosyaları yerel makineden dosyalar klasöründeki FTP sunucusuna aktarmayı deneyin, görüntülemek için FileZilla arayüzünün alt ucuna bakın. Dosya aktarımlarına ilişkin raporlar.

Bu kadar! Bu eğitimde size gösterdiğimiz gibi SSL/TLS bağlantılarını kullanacak şekilde yapılandırmadığımız sürece, FTP'nin varsayılan olarak güvenli olmadığını her zaman unutmayın. Bu eğitim/konu hakkındaki düşüncelerinizi aşağıdaki geri bildirim formunu kullanarak paylaşın.