Continut:
- Introducere
- elementele De Bază
- Active FTP
- Active FTP Exemplu
- Pasivă FTP
- Pasivă FTP Exemplu
- Alte Note
- Sumar
- Anexa 1: Configurare de Comun Servere FTP
- Anexa 2: Firewall Configuration Guide
Introducere
Una dintre cele mai frecvent observate întrebări atunci când se ocupă cu firewall-uri șialte problemele de conectivitate la Internet este diferența betweenactive și pasiv FTP și cum cel mai bine pentru a sprijini una sau ambele dintre ele., Să sperăm că următorul text va ajuta pentru a clarifica unele theconfusion asupra modului de a sprijini FTP într-un firewall mediu.
aceasta poate să nu fie explicația definitivă, așa cum susține titlul, cu toate acestea, am auzit suficient feedback bun și am văzut acest document legat în suficiente locuri pentru a ști că destul de puțini oameni au considerat că este util. Sunt mereu în căutarea de modalități de a îmbunătăți lucrurile, deși, și dacă găsiți ceva care nu este destul de clar sau are nevoie de mai multe explicații, vă rugăm să-mi spuneți!, Adăugările recente la acest document includ exemple de sesiuni FTP active și pasive de linie de comandă. Aceste exemple de sesiune ar trebui să ajute lucrurile să fie mai clare. Ele oferă, de asemenea, o imagine frumoasă în ceea ce se întâmplă în spatele scenei în timpul unei sesiuni FTP. Acum, la informații…
elementele de bază
FTP este un serviciu bazat exclusiv pe TCP. Nu există nici o componentă UDP toFTP. FTP este un serviciu neobișnuit prin faptul că utilizează două porturi, un port „date” și un port „comandă” (cunoscut și sub numele de portul de control)., În mod tradiționalacestea sunt portul 21 pentru portul de comandă și portul 20 pentru portul de date. Confuzia începe cu toate acestea, când constatăm că în funcție demodul, portul de date nu este întotdeauna pe portul 20.
Active FTP
În modul activ FTP client se conectează de la o întâmplare unprivilegedport (N > 1023) la serverul FTP comanda port, portul 21. Apoi, clientul începe să asculte portul N + 1 și trimite comanda FTP PORTN+1
către serverul FTP., Serverul se va conecta apoi înapoi la portul de date specificat de theclient din portul său de date local, care este portul 20.,21 la porturile > 1023 (Serverul răspunde toclient de control a port)
Când o trase afară, conexiunea apare, după cum urmează:
PORT 1027
., Serverul trimite apoi anACK înapoi la portul de comandă al Clientului la Pasul 2. În pasul 3 serverinițiază o conexiune pe portul său local de date la portul de date clientspecified anterior. În cele din urmă, clientul trimite un ACK înapoi așa cum se arată în step4.
principala problemă cu modul activ FTP cade de fapt pe clientside. Clientul FTP nu face conexiunea reală la portul de date al serverului-pur și simplu îi spune serverului ce port ascultă și serverul se conectează înapoi la portul specificat al clientului., From theclient firewall side acest lucru pare a fi un sistem exterior inițierea aconnection la un client intern-ceva care este de obicei blocat.
exemplu FTP activ
mai jos este un exemplu real al unei sesiuni FTP active. Singurele lucruri care au fost modificate sunt numele serverului, adresele IP și numele de utilizator. În acest exemplu, o sesiune FTP este inițiată de testbox1.slacksite.com (192.168.150.80), o cutie de linux care rulează standard FTP client linie de comandă, pentru a testbox2.slacksite.com (192.168.150.90), o cutie de linux care rulează ProFTPd 1.2.2RC2., Steagul de depanare (-d
) este utilizat cu clientul FTP pentru a arăta ce se întâmplă în spatele scenei. Totul în roșu este ieșirea de depanare care arată comenzile FTP reale trimise la server și răspunsurile generate de aceste comenzi. Ieșirea normală a serverului este afișată în negru, iar intrarea utilizatorului este cu caractere aldine.
există câteva lucruri interesante de luat în considerare despre acest dialog. Observați că atunci când comanda PORT
este emisă, specifică un port pe sistemul client (192.168.150.80), mai degrabă decât pe server., Vom vedea comportamentul opus atunci când folosim FTP pasiv. În timp ce suntem pe această temă, o notă rapidă despre formatul comenzii PORT
. După cum puteți vedea în exemplul de mai jos este formatat ca o serie de șase numere separate prin virgule. Primii patru octeți sunt adresa IP, în timp ce ultimii doi octeți cuprind portul care va fi utilizat pentru conexiunea de date. Pentru a găsi portul real, înmulțiți al cincilea octet cu 256 și apoi adăugați al șaselea octet la total. Astfel, în exemplul de mai jos numărul portului este ( (14*256) + 178), sau 3762., O verificare rapidă cu netstat
ar trebui să confirme aceste informații.
FTP pasiv
pentru a rezolva problema serverului care inițiază conexiunea la client a fost dezvoltată o metodă diferită pentru conexiunile FTP. Acest wasknown ca modul pasiv, sau PASV
, după comandă utilizate de către theclient spune server-ul este în modul pasiv.
În modul pasiv FTP client inițiază ambele conexiuni la server,rezolvarea problemei de firewall-urile de filtrare a datelor primite portconnection la client la server., La deschiderea unei conexiuni FTP, clientul deschide două porturi aleatoare neprivilegiate local (N > 1023 andN+1). Primul port de contact serverul pe portul 21, dar în loc de thenissuing un PORT
comandă și permite server pentru a connectback sale port de date, clientul va emite PASV
comandă. Rezultatul este că serverul apoi se deschide o randomunprivileged port (P > 1023) și trimite P
inapoi la client, ca răspuns la PASV
comandă., Clientul inițiază apoi conexiunea de la portN + 1 la portul P de pe server pentru a transfera date.,pentru clientul’scontrol port)
Când trase, un modul pasiv conexiune FTP se pare ca acest lucru:
PASV
comandă., Serverul răspunde apoi la Pasul 2 cuPORT 2024
, spunând clientului ce port ascultă pentru conexiunea de date. În pasul 3, Clientul inițiază conexiunea de date de la portul său de date la portul de date specificat al serverului. În cele din urmă,serverul trimite înapoi un ACK la Pasul 4 către portul de date al clientului.
în timp ce modul pasiv FTP rezolvă multe dintre problemele din partea clientului,se deschide o serie întreagă de probleme pe partea de server. Biggestissue este necesitatea de a permite orice conexiune la distanță la porturile numerotate mari on server., Din fericire, mulți daemoni FTP, inclusiv popularul WU-Ftppermite administratorului să specifice o serie de porturi pe care le va folosi serverul FTP. Consultați Anexa 1 Pentru mai multe informații.
a doua problemă implică sprijinirea și depanarea clienților care acceptă (sau nu) modul pasiv. De exemplu, utilitarul FTP de linie de comandă furnizat cu Solaris nu acceptă passivemode, necesitând un client FTP terț, cum ar fi ncftp.
Notă: Acest lucru nu mai este cazul-utilizați opțiunea -p
cu clientul Solaris FTP toenable passive mode!,cu popularitatea masivă a World Wide Web, mulți oameni preferăutilizați browserul web ca client FTP. Majoritatea browserelor acceptă numaimodul pasiv atunci când accesați URL-uri ftp://. Acest lucru poate fi bun sau răuîn funcție de ce sunt configurate serverele și firewall-urile.
exemplu FTP pasiv
mai jos este un exemplu real al unei sesiuni FTP pasive. Singurele lucruri care au fost modificate sunt numele serverului, adresele IP și numele de utilizator. În acest exemplu, o sesiune FTP este inițiată de la testbox1.slacksite.com (192.168.150.,80), o cutie de linux care rulează standard FTP client linie de comandă, pentru a testbox2.slacksite.com (192.168.150.90), o cutie de linux care rulează ProFTPd 1.2.2RC2. Steagul de depanare (-d
) este utilizat cu clientul FTP pentru a arăta ce se întâmplă în spatele scenei. Totul în roșu este ieșirea de depanare care arată comenzile FTP reale trimise la server și răspunsurile generate de aceste comenzi. Ieșirea normală a serverului este afișată în negru, iar intrarea utilizatorului este cu caractere aldine.,
observați diferența în comandaPORT
din acest exemplu, spre deosebire de exemplul FTP activ. Aici, vom vedea un port fiind deschis pe server (192.168.150.90) sistem, mai degrabă decât clientul. Consultați discuția despre formatul comenzii PORT
de mai sus, în secțiunea exemplu FTP activ.,un cititor, Maarten sjouw, a subliniat că FTP-ul activ nu va funcționa atunci când este utilizat împreună cu un dispozitiv nat (Network Address Translation) din partea clientului, care nu este suficient de inteligent pentru a modifica informațiile despre adresa IP din pachetele FTP.
Sumar
graficul De mai jos ar trebui să ajute adminii amintiți-vă cum fiecare FTP modul în care funcționează:
Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023
Un rezumat rapid de argumente pro și contra de activ vs pasiv FTP este, de asemenea, în scopul:
FTP Active este benefic pentru FTP server admin, dar dăunătoare pentru partea de client admin., Serverul FTP încearcă să facă conexiuni la porturi înalte aleatorii ale clientului, care ar fi aproape sigur blocate de un firewall din partea clientului. FTP pasiv este benefic pentru client, dar în detrimentul administratorului serverului FTP. Clientul va face ambele conexiuni la server, dar una dintre ele va fi la un port de mare aleatoare, care ar fi aproape sigur blocat de un firewall pe partea de server.din fericire ,există oarecum un compromis., Deoarece administratorii care rulează servere FTP vor trebui să-și facă serverele accesibile celui mai mare număr de clienți, aproape sigur vor trebui să suporte FTP pasiv. Expunerea porturilor de nivel înalt pe server poate fi redusă la minimum prin specificarea unei game de porturi limitate pentru utilizarea serverului FTP. Astfel, totul, cu excepția acestei game de porturi, poate fi firewalled pe partea serverului. În timp ce acest lucru nu elimină toate riscurile pentru server, îl scade enorm. Consultați Anexa 1 Pentru mai multe informații.,
O referință excelent pe cât de diverse protocoale de internet muncă și theissues implicate în firewall ele pot fi găsite în O ‘ reilly andAssociates carte, Construirea de Internet, Firewall-uri, 2nd Ed, de BrentChapman și Elizabeth Zwicky.
Notă 2012: această carte este foarte veche și informațiile conținute în aceasta pot fi depășite!