FTP ve Güvenlik Duvarları

 

FTP Protokolü

 

FTP, sık kullanılan protokoller(HTTP, SMTP, DNS vs) arasında en sorunlu protokoldür. Diğer protokoller tek bir TCP/UDP portu üzerinden çalışırken FTP birden fazla ve dinamik portlarla çalışır.  (IRC’deki veri transferi ve iletişim portu gibi). Bu portlardan biri “Command port” diğeri DATA port olarak adlandırılır.

Command portu üzerinden ftp iletişimine ait gerekli temel bilgiler aktarılır. Temel bilgiler; ftp sunucuya gönderilecek kullanıcı adı ve parola bilgileri, ftp sunucuya hangi porttan bağlanılacağı, hangi ftp çeşidinin kullanılacağı gibi bilgiler olabilir.

Data portu ise veri transferi amaçlı kullanılır. 

FTP Çeşitleri 

FTP iki çeşittir: pasif ve aktif FTP. Her ikisinin de farklı amaçlı kullanımları mevcuttur. Hangi FTP çeşidinin kullanılacağı ftp istemcisi tarafından belirlenir.

Aktif FTP 

Bu FTP çeşidinde istemci aktif rol alır. Bilinenin aksine orijinal ftp aktif ftpdir. fakat günümüz internet altyapısında çeşitli sorunlara yol açtığı için pasif ftp daha fazla tercih edilmektedir. Aktif ftp de çıkan sorunlar pasif ftpnin geliştirilmesini sağlamıştır. 

Adım adım Aktif FTP;

 

clip_image002

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)istemci FTP sunucuya Command portundan(21) bağlanır.

2)FTP sunucu gerekli karşılama mesajı ve kullanıcı adı sorgulamasını gönderir.

istemci gerekli erişim bilgilerini girer.

Sunucu erişimi bilgilerini kontrol ederek istemciye yanıt döner.

Eğer erişim bilgileri doğru ise istemciye ftp komut satırı açılır.

Burada istemci veri transferi yapmak istediğinde(ls komutunun çalıştırılması da veri transferi gerçekleştirir)3. adıma geçilir.

İstemci kendi tarafında 1024’den büyük bir port açar ve bunu PORT komutu ile FTP sunucuya bildirir. 

3)FTP sunucusu, istemcinin bildirdiği port numarasından bağlantı kurar ve gerekli aktarım işlemleri başlar.

4) İstemci Onay mesajı gönderir.

Örnek Aktif FTP bağlantısı

 

# ftp -A -d 192.168.100.27

Connected to 192.168.100.27.

220 (vsFTPd 2.0.3)

Name (192.168.100.27: root): huzeyfe

—> USER huzeyfe

331 Please specify the password.

Password:

—> PASS XXXX

230 Login successful.

—> SYST

215 UNIX Type: L8

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

—> EPRT |1|192.168.100.27|58518|

200 EPRT command successful. Consider using EPSV.

—> LIST

150 Here comes the directory listing. 

 

Aktif FTP bağlantısının Sniffer (Wireshark) çıktısı

 

clip_image004

Pasif FTP

 

Pasif FTP, günümüz internet dünyasında kullanılan güvenlik duvarı, nat cihazları gibi trafikte değişiklik yapan sistemlerden kaynaklanan ftp problemlerini sunucu tarafında halledebilmek için çıkarılmış FTP çeşididir. Pasif FTP de istemci pasif roldedir, sunucu aktif roldedir.

 

clip_image006

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Adım adım Pasif FTP:

1)istemci FTP sunucuya Command portundan(21) bağlanır.

2)FTP sunucu gerekli karşılama mesajı ve kullanıcı adı sorgulamasını gönderir.

İstemci gerekli erişim bilgilerini girer.

Sunucu erişimi bilgilerini kontrol ederek istemciye yanıt döner. Eğer erişim bilgileri doğru ise istemci 

FTP istemcisi PASV komutu aracılığı ile sunucudan ek port açmasını bekler. Sunucu yapılandırma dosyasında belirtilen port aralığından bir port açarak bunu istemciye belirtir

3)FTP istemcisi, sunucudan gelen bu porta bağlanarak veri alışverişini başlatır

4)İstemci onay mesajı yollar

Örnek Pasif FTP bağlantısı 

# ftp  -d 192.168.100.27  

Connected to 192.168.100.27.

220 (vsFTPd 2.0.3)

Name (192.168.100.27:root): huzeyfe

—> USER huzeyfe

331 Please specify the password.

Password:

—> PASS XXXX

230 Login successful.

—> SYST

215 UNIX Type: L8

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

—> EPSV

229 Entering Extended Passive Mode (|||35330|)

—> LIST

150 Here comes the directory listing.

 

Pasif FTP bağlantısının Sniffer(Wireshark) çıktısı

 

clip_image008

 

 Güvenlik Duvarlarında Yaşanabilecek FTP Sorunları

 

Zaman zaman arkadaşlarınızın FTP ye bağlanıyorum ama ls çektiğimde bağlantı kopuyor ya da öylesine bekliyor dediğine şahit olmuşsunuzdur. Bu gibi istenmeyen durumlar FTP’nin karmaşık yapısı ve Firewall’ların protokolden anlamamasından kaynaklanır.

Bir Firewall’da HTTP bağlantısını açmak için sadece 80. portu açmanız yeterlidir fakat FTP için 21. portu açmak yetmez.

Bunun sebebi FTP’nin komutların gidip geldiği ve verinin aktığı port olmak üzere iki farklı port üzerinden çalışmasıdır.  İlk port sabit ve bellidir:21. port fakat veri bağlantısının gerçekleştiği port olan diğer port kullanılacak ftp çeşidine (Aktif FTP veya PAsif FTP ) göre değişir ve eğer firewall FTP protokolünden anlamıyorsa genelde sorun yaşanır.

Yeni nesil Firewall’larda bu sıkıntı büyük ölçüde giderilmiş olsa da ara ara eksik yapılandırmalardan aynı hataların yaşandığını görüyoruz.

Linux Iptables’da ftp problemini aşmak için mod ip_conntrack_ftp modülünün sisteme yüklenmesi gerekir. OpenBSD Packet Filter ise bu tip aykırı protokoller için en uygun yapı olan proxy mantığını kullanır. FTP için ftp-proxy, upnp için upnp proxy, sip için sip-proxy vs.

Aktif FTP ve Güvenlik Duvarı

 

FTP istemcinin önünde bir Firewall varsa istemci kendi tarafında port açsa bile bu porta izin Firewall tarafından verilmeyeceği için problem yaşanacaktır.

 

clip_image010

 Internet Explorer varsayılan durumda Aktif FTP yapmaya çalışır. Pasif FTP yapmaya zorlamak için aşağıdaki adımlar takip edilmelidir;

clip_image012

Pasif FTP ve Güvenlik Duvarı

 

Pasif FTP de ftp sunucu ek port açsa bile önünde bir firewall varsa Firewalldan o porta erişim izni verilmesi gerekir.

 

clip_image014

Huzeyfe ÖNAL