Obsah:
- Úvod
- Základy
- Aktivní FTP
- Aktivní FTP Příklad
- Pasivní FTP
- Pasivní FTP Příklad
- Další Poznámky
- Shrnutí
- Dodatek 1: Konfigurace Běžné FTP Servery
- Dodatek 2: Firewall Configuration Guide
Úvod
Jedním z nejčastěji otázek při jednání s firewally a dalšími problémy s připojením k Internetu je rozdíl betweenactive a pasivní FTP a jak nejlépe podporovat jeden nebo oba z nich., Doufejme, že následující text pomůže vyčistit některé zkonfuze o tom, jak podporovat FTP v prostředí firewallu.
Toto nemusí být definitivní vysvětlení, jak název tvrdí, nicméně, slyšel jsem dost dobrou zpětnou vazbu a viděl tento dokument souvisí dost místa, aby věděl, že poměrně málo lidí, zjistili, že je užitečné. Vždy hledám způsoby, jak věci zlepšit, a pokud najdete něco, co není zcela jasné nebo potřebuje více vysvětlení, dejte mi prosím vědět!, Nedávné přírůstky do tohoto dokumentu zahrnují příklady aktivních i pasivních relací FTP příkazového řádku. Tyto příklady relace by měly pomoci, aby se věci trochu jasnější. Poskytují také pěkný obrázek o tom, co se děje v zákulisí během relace FTP. A teď k informacím…
základy
FTP je výhradně služba založená na protokolu TCP. TOFTP není součástí UDP. FTP je neobvyklá služba v tom, že využívá dva porty, port „data“ a port „command“ (také známý jako řídicí port)., Tradičně se jedná o port 21 pro příkazový port a port 20 pro dataport. Zmatek však začíná, když zjistíme, že v závislosti na nichrežim datový port není vždy na portu 20.
Aktivní FTP
V aktivním režimu FTP klient se připojuje z náhodného unprivilegedport (N > 1023) k FTP serveru příkaz port, port 21. Poté klient začne poslouchat port N + 1 a odešle příkaz FTP PORTN+1
na ftp server., Server se poté připojí zpět k zadanému datovému portu klienta z místního datového portu, kterým je port 20.,21 do přístavů > 1023 (Server odpoví toclient je řídící port)
Když se protahuje, připojení se zobrazí následující:
PORT 1027
., Server pak odešle anACK zpět do příkazového portu klienta v kroku 2. V kroku 3 serverinituje připojení na místním datovém portu k datovému portu, který klientspecifikoval dříve. Nakonec klient odešle ACK zpět, jak je uvedeno v kroku 4.
hlavní problém s aktivním režimem FTP skutečně spadá na stranu klienta. FTP klient neprovádí skutečné připojení k datovému portu serveru-jednoduše řekne serveru, na jakém portu poslouchá a server se připojí zpět k zadanému portu klienta., Z theclient side firewall se zdá, že se jedná o vnější systém iniciující připojení k internímu klientovi-něco, co je obvykle blokováno.
aktivní příklad FTP
níže je skutečným příkladem aktivní relace FTP. Jediné, co bylo změněno, jsou názvy serverů, IP adresy a uživatelská jména. V tomto příkladu FTP session je zahájena od testbox1.slacksite.com (192.168.150.80), linux box běží standardní FTP příkazového řádku klienta, testbox2.slacksite.com (192.168.150.90), linuxový stroj ProFTPd 1.2.2RC2., Příznak ladění (-d
) se používá u FTP klienta k zobrazení toho, co se děje v zákulisí. Vše v červené barvě je ladicí výstup, který zobrazuje skutečné příkazy FTP odesílané na server a odpovědi generované z těchto příkazů. Normální výstup serveru je zobrazen černě a vstup uživatele je tučně.
o tomto dialogu je třeba zvážit několik zajímavých věcí. Všimněte si, že když je vydán příkaz PORT
, určuje port v systému klienta (192.168.150.80), spíše než server., Při použití pasivního FTP uvidíme opačné chování. Zatímco jsme na toto téma, rychlá poznámka o formátu příkazu PORT
. Jak vidíte v níže uvedeném příkladu, je formátován jako série šesti čísel oddělených čárkami. První čtyři oktety jsou IP adresa, zatímco poslední dva oktety obsahují port, který bude použit pro datové připojení. Chcete-li najít skutečný port, vynásobte pátý oktet 256 a poté přidejte šestý oktet k celkovému počtu. V příkladu pod číslem portu je tedy ( (14*256) + 178), nebo 3762., Tato informace by měla potvrdit Rychlá kontrola pomocí netstat
.
Pasivní FTP
s cílem vyřešit problém serveru, inicializace připojení, klientovi jiný způsob pro připojení FTP byl vyvinut. To bylo známé jako pasivní režim, nebo PASV
, po příkazu použitémclient říct serveru, že je v pasivním režimu.
V pasivním režimu FTP klient iniciuje připojení k serveru,řešení problému firewally filtrování příchozí data portconnection klienta od serveru., Při otevření připojení FTP klient lokálně otevře dva náhodné neprivilegované porty (n > 1023 andN+1). První portu kontaktuje server na portu 21, ale místo thenissuing PORT
příkaz a umožňuje serveru connectback, aby jeho data port, klient vydá PASV
příkaz. Výsledkem je, že server, pak se otevře randomunprivileged port (P > 1023) a odešle P
zpět klientovi v reakci na PASV
příkaz., Klient pak iniciuje připojení z portN + 1 do portu P na serveru pro přenos dat.,aby klient’scontrol port)
Když upozorňují, pasivní režim FTP připojení vypadá takto:
PASV
příkaz., Server pak odpoví v kroku 2 sPORT 2024
, říká klient, který port je poslech administrace datové připojení. V kroku 3 pak klient iniciuje datapřipojení z datového portu na zadaný datový port serveru. Nakonec server odešle ACK v kroku 4 do datového portu klienta.
Zatímco pasivní režim FTP řeší mnoho problémů ze strany klienta,otevírá celou řadu problémů na straně serveru. Biggestissue je potřeba povolit jakékoli vzdálené připojení k vysokým číslovaným portům na serveru., Naštěstí mnoho démonů FTP, včetně populárního Wu-Ftpdovolit administrátorovi určit řadu portů, které FTP serverbude používat. Viz dodatek 1 pro více informací.
druhý problém zahrnuje podporu a řešení problémů klientů, kteří podporují (nebo nepodporují) pasivní režim. Jako příklad, nástroj command line FTP poskytovaný Solaris nepodporuje passivemode, což vyžaduje FTP klienta třetí strany, například ncftp.
Poznámka: Toto již neplatí-použijte volbu -p
s pasivním režimem Solaris FTP client toenable!,
s obrovskou popularitou World Wide Web, mnoho lidí dává přednostpoužívat svůj webový prohlížeč jako FTP klient. Většina prohlížečů podporujepasivní režim při přístupu k FTP:// URL. To může být buď dobré nebo špatnév závislosti na tom, co jsou servery a brány firewall nakonfigurovány tak, aby podporovaly.
pasivní příklad FTP
níže je skutečným příkladem pasivní Relace FTP. Jediné, co bylo změněno, jsou názvy serverů, IP adresy a uživatelská jména. V tomto příkladu je spuštěna Relace FTP z testbox1.slacksite.com (192.168.150.,80), linux box se standardním FTP příkazového řádku klienta, testbox2.slacksite.com (192.168.150.90), Linux box se systémem ProFTPd 1.2.2rc2. Příznak ladění (-d
) se používá u FTP klienta k zobrazení toho, co se děje v zákulisí. Vše v červené barvě je ladicí výstup, který zobrazuje skutečné příkazy FTP odesílané na server a odpovědi generované z těchto příkazů. Normální výstup serveru je zobrazen černě a vstup uživatele je tučně.,
Všimněte si rozdílu v příkazu PORT
v tomto příkladu na rozdíl od aktivního příkladu FTP. Zde vidíme, že se na serveru (192.168.150.90) otevírá port, spíše než klient. Podívejte se na diskusi o formátu příkazu PORT
výše v sekci Active FTP Example.,
Další Poznámky
čtenáři, Maarten Sjouw, poukázal na to, že aktivní FTP nebude fungovat při použití v kombinaci s na straně klienta NAT (Network Address Translation) zařízení, které není dost chytrý na to, aby změnila IP adresu info v FTP pakety.
Shrnutí
následující tabulka by měla pomoci správci vzpomeňte si, jak každý režim FTP funguje:
Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023
rychlý přehled, výhody a nevýhody aktivní vs. pasivní FTP je také v pořadí:
Aktivní FTP je prospěšné pro FTP server admin, ale škodí straně klienta admin., FTP server se pokouší navázat spojení s náhodnými vysokými porty na klientovi, což by téměř jistě bylo zablokováno firewallem na straně klienta. Pasivní FTP je prospěšné pro klienta, ale škodlivé pro správce FTP serveru. Klient provede obě připojení k serveru, ale jeden z nich bude k náhodnému vysokému portu, který by téměř jistě zablokoval firewall na straně serveru.
naštěstí existuje poněkud kompromis., Protože Administrátoři provozující FTP servery budou muset zpřístupnit své servery co největšímu počtu klientů, budou téměř jistě muset podporovat pasivní FTP. Expozice portů na vysoké úrovni na serveru může být minimalizována zadáním omezeného rozsahu portů pro použití FTP serveru. Takže vše kromě tohoto rozsahu portů může být firewalled na straně serveru. I když to nevylučuje veškeré riziko pro server, ohromně ho snižuje. Viz dodatek 1 pro více informací.,
vynikající referenci o tom, jak fungují různé internetové protokoly a jaké jsou zapojeny do jejich firewallu, najdete v knize O ‚ Reilly andAssociates, Building Internet Firewalls, 2nd Ed, brentchapman a Elizabeth Zwicky.
Poznámka 2012: tato kniha je velmi stará a informace v ní obsažené mohou být zastaralé!