innehåll:
- introduktion
- grunderna
- aktiv FTP
- aktiv FTP exempel
- passiv FTP
- passiv FTP exempel
- andra anteckningar
- sammanfattning
- bilaga 1: konfiguration av vanliga FTP-servrar
- bilaga 2: brandväggskonfigurationsguide
introduktion
en av de vanligaste frågorna när det gäller brandväggar ochandra Internet-anslutningsproblem är skillnaden mellanaktiv och passiv FTP och hur man bäst kan stödja antingen eller båda av dem., Förhoppningsvis kommer följande text att bidra till att rensa upp en del avförvirring om hur man stöder FTP i en brandväggad miljö.
det här kanske inte är den definitiva förklaringen, eftersom titeln hävdar, men jag har hört tillräckligt bra feedback och sett det här dokumentet länkat på tillräckligt många ställen för att veta att en hel del personer har funnit det vara användbart. Jag letar alltid efter sätt att förbättra saker men, och om du hittar något som inte är helt klart eller behöver mer förklaring, låt mig veta!, Senaste tillägg till detta dokument inkluderar exempel på både aktiva och passiva kommandorads FTP-sessioner. Dessa sessionsexempel bör bidra till att göra saker lite tydligare. De ger också en fin bild i vad som händer bakom kulisserna under en FTP-session. Nu till informationen…
grunderna
FTP är en TCP-baserad tjänst uteslutande. Det finns ingen UDP-komponent toFTP. FTP är en ovanlig tjänst genom att den använder två portar, en ”data” – port och en ”command” – port (även känd som kontrollporten)., Traditionelltdessa är port 21 för kommandoporten och port 20 för dataporten. Förvirringen börjar dock, när vi upptäcker att beroende påläge är dataporten inte alltid på port 20.
aktiv FTP
i aktivt läge FTP ansluter klienten från en slumpmässig unprivilegedport (n> 1023) till FTP-serverns kommandoport, port 21. Sedan, theclient börjar lyssna till port N+1 och skickar FTP-kommandot PORTN+1
till FTP-servern., Servern kommer sedan att ansluta tillbaka tillklientens angivna dataport från sin lokala dataport, som är port 20.,20 till portar > 1023 (Server svarar toclients kontrollport)
När den dras ut visas anslutningen enligt följande:
PORT 1027
., Servern skickar sedan anACK tillbaka till klientens kommandoport i steg 2. I steg 3 serverinitierar en anslutning på sin lokala dataport till dataporten klientenspecificeras tidigare. Slutligen skickar klienten en ACK tillbaka som visas i step4.
huvudproblemet med active mode FTP faller faktiskt på klientsidan. FTP-klienten gör inte den faktiska anslutningen till dataporten på servern – det berättar helt enkelt servern vilken port den lyssnar på ochservern ansluter tillbaka till den angivna porten på klienten., Från denklienta brandväggen verkar detta vara ett externt system som initierar en anslutning till en intern klient-något som vanligtvis är blockerat.
aktiv FTP exempel
nedan är ett faktiskt exempel på en aktiv FTP-session. Det enda som har ändrats är servernamn, IP-adresser och användarnamn. I det här exemplet initieras en FTP-session från testbox1.slacksite.com (192.168.150.80), en linux-låda som kör standard FTP kommandoraden klient, till testbox2.slacksite.com (192.168.150.90), en linux-låda som kör ProFTPd 1.2.2rc2., Felsökningen (-d
) används med FTP-klienten för att visa vad som händer bakom kulisserna. Allt i rött är felsökningsutmatningen som visar de faktiska FTP-kommandona som skickas till servern och svaren som genereras från dessa kommandon. Normal serverutgång visas i svart och användarinmatning är i fetstil.
det finns några intressanta saker att tänka på om den här dialogrutan. Observera att när kommandotPORT
utfärdas anger det en port på klienten (192.168.150.80), snarare än servern., Vi kommer att se motsatt beteende när vi använder passiv FTP. Medan vi är i ämnet, en snabb anteckning om formatet för kommandotPORT
. Som du kan se i exemplet nedan formateras den som en serie med sex nummer åtskilda med kommatecken. De första fyra oktetterna är IP-adressen medan de två sista oktetterna omfattar den port som ska användas för dataanslutningen. För att hitta den faktiska porten multiplicera den femte oktetten med 256 och lägg sedan till den sjätte oktetten till summan. Således i exemplet under portnumret är ( (14*256) + 178), eller 3762., En snabbkontroll med netstat
bör bekräfta denna information.
passiv FTP
för att lösa problemet med servern som initierar anslutningen tillklienten utvecklades en annan metod för FTP-anslutningar. Detta varkänt som passivt läge, eller PASV
, efter kommandot som används avklienten för att berätta för servern att det är i passivt läge.
i passivt läge FTP initierar klienten båda anslutningarna till servern och löser problemet med brandväggar som filtrerar inkommande dataportanslutning till klienten från servern., När du öppnar en FTP-anslutning öppnar klienten två slumpmässiga, oprivilegierade portar lokalt (n > 1023 ochn+1). Den första porten kontaktar servern på port 21, men istället för dåutfärda ettPORT
– kommando och låta servern ansluta till sin dataport, kommer klienten att utfärda kommandot PASV
. Resultatet av detta är att servern sedan öppnar en randomunprivileged port (P > 1023) och skickar P
tillbaka till klienten som svar på kommandot PASV
., Kunden initierar anslutningen från portN+1 till port P på server för att överföra data.,klientens port)
När det dras ser en passiv FTP-anslutning ut så här:
PASV
kommandot., Servern svarar sedan i steg 2 medPORT 2024
och berättar för klienten vilken port den lyssnar påför dataanslutningen. I steg 3 initierar klienten dataanslutningen från dataporten till den angivna serverdataporten. Slutligen skickar servern tillbaka ett ACK i steg 4 till klientens dataport.
medan passivt läge FTP löser många av problemen från klientsidan, öppnar det en hel rad problem på serversidan. Biggestissue är behovet av att tillåta någon fjärranslutning till hög numrerade portar på servern., Lyckligtvis många FTP-demoner, inklusive den populära WU-Ftptillåta administratören att ange en rad portar som FTP serverkommer att använda. Se bilaga 1 för mer information.
det andra problemet innebär att stödja och felsöka klienter som (eller inte) stöder passivt läge. Som ett exempel stöder THECOMMAND line FTP-verktyget som tillhandahålls med Solaris inte passivemode, vilket kräver en FTP-klient från tredje part, till exempel ncftp.
OBS! Det här är inte längre fallet–använd-p
– alternativet med Solaris FTP-klient som kan användas i passivt läge!,
med den massiva populariteten hos World Wide Web föredrar många attAnvänd sin webbläsare som en FTP-klient. De flesta webbläsare stöder barapassivt läge när du öppnar ftp: / / webbadresser. Detta kan antingen vara bra eller dåligtberoende på vad servrarna och brandväggarna är konfigurerade för att stödja.
passivt FTP-exempel
nedan är ett faktiskt exempel på en passiv FTP-session. Det enda som har ändrats är servernamn, IP-adresser och användarnamn. I det här exemplet initieras en FTP-session från testbox1.slacksite.com (192.168.150.,80), en linux-låda som kör standard FTP kommandoraden klient, till testbox2.slacksite.com (192.168.150.90), en linux-låda som kör ProFTPd 1.2.2rc2. Felsökningen (-d
) används med FTP-klienten för att visa vad som händer bakom kulisserna. Allt i rött är felsökningsutmatningen som visar de faktiska FTP-kommandona som skickas till servern och svaren som genereras från dessa kommandon. Normal serverutgång visas i svart och användarinmatning är i fetstil.,
Lägg märke till skillnaden i kommandotPORT
I det här exemplet i motsats till det aktiva FTP-exemplet. Här ser vi en port som öppnas på servern (192.168.150.90), snarare än klienten. Se diskussionen om formatet för kommandotPORT
ovan, i avsnittet Active FTP Example.,
övriga anmärkningar
en läsare, Maarten Sjouw, påpekade att aktiv FTP inte kommer att fungera när den används tillsammans med en klient-side nat (Network Address Translation) enhet som inte är smart nog att ändra IP-adress info i FTP-paket.
sammanfattning
Följande diagram ska hjälpa administratörer att komma ihåg hur varje FTP-läge fungerar:
Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023
en snabb sammanfattning av fördelarna och nackdelarna med aktiv vs passiv FTP är också i ordning:
aktiv FTP är till nytta för FTP-serverns administratör, men skadlig för klientsidans administratör., FTP-servern försöker göra anslutningar till slumpmässiga höga portar på klienten, vilket nästan säkert skulle blockeras av en brandvägg på klientsidan. Passiv FTP är fördelaktigt för klienten, men skadligt för FTP – Server admin. Klienten kommer att göra båda anslutningarna till servern, men en av dem kommer att vara till en slumpmässig hög port, som nästan säkert skulle blockeras av en brandvägg på serversidan.
lyckligtvis finns det något av en kompromiss., Eftersom administratörer som kör FTP-servrar måste göra sina servrar tillgängliga för det största antalet kunder, kommer de nästan säkert att behöva stödja passiv FTP. Exponeringen av högnivåportar på servern kan minimeras genom att ange ett begränsat portintervall för FTP-servern att använda. Således kan allt förutom detta sortiment av portar vara brandväggigt på serversidan. Även om detta inte eliminerar all risk för servern, det minskar det oerhört. Se bilaga 1 för mer information.,
en utmärkt referens om hur olika internetprotokoll fungerar och de frågor som är inblandade i brandväggarna kan hittas i O ’ Reilly ochassociates bok, bygga Internet brandväggar, 2nd Ed, av BrentChapman och Elizabeth Zwicky.
notera 2012: den här boken är mycket gammal och informationen däri kan vara föråldrad !