Inhoud:

  • Inleiding
  • De Basis
  • Actieve FTP
  • Actieve FTP-Voorbeeld
  • Passieve FTP
  • Passieve FTP-Voorbeeld
  • Overige Opmerkingen
  • Samenvatting
  • Bijlage 1: de Configuratie van Gangbare FTP-Servers
  • Bijlage 2: Firewall Configuratie

Inleiding

Een van de meest voorkomende vragen bij het omgaan met firewalls andere problemen met de Internetverbinding is het verschil betweenactive en passieve FTP en hoe u het beste de ondersteuning van één of beide ofthem., Hopelijk zal de volgende tekst helpen om een deel van de verwarring op te helderen over hoe FTP te ondersteunen in een firewall omgeving.

Dit is misschien niet de definitieve verklaring, zoals de titel beweert, maar ik heb genoeg goede feedback gehoord en gezien dat dit document op genoeg plaatsen gelinkt is om te weten dat heel wat mensen het nuttig vonden. Ik ben altijd op zoek naar manieren om dingen te verbeteren, en als je iets vindt dat niet helemaal duidelijk is of meer uitleg nodig heeft, laat het me weten!, Recente toevoegingen aan dit document omvatten de voorbeelden van zowel actieve als passieve opdrachtregel FTP sessies. Deze sessie voorbeelden moeten helpen om dingen een beetje duidelijker te maken. Ze geven ook een mooi beeld van wat er achter de schermen gebeurt tijdens een FTP sessie. Nu, op naar de informatie…

de basis

FTP is een uitsluitend op TCP gebaseerde dienst. Er is geen UDP component toFTP. FTP is een ongewone service in die zin dat het twee poorten gebruikt, een ‘data’ poort en een ‘command’ poort (ook bekend als de controle poort)., Traditioneel zijn deze poort 21 voor de commandopoort en poort 20 voor de dataport. De verwarring begint echter wanneer we ontdekken dat, afhankelijk van de mode, de data poort niet altijd op poort 20 staat.

actieve FTP

in actieve modus FTP verbindt de client vanaf een willekeurige niet-bevoorrechte poort (N > 1023) met de opdrachtpoort van de FTP-server, poort 21. Daarna begint theclient te luisteren naar poort N+1 en stuurt het FTP commando PORTN+1 naar de FTP server., De server zal dan verbinding maken met de opgegeven datapoort van de klant vanaf de lokale datapoort, die poort 20 is.,21 poorten > 1023 (Server reageert toclient de control poort)

  • FTP-server is de haven 20 tot poorten > 1023 (Server initieert dataconnection naar de klant data port)
  • FTP-server is de haven 20 van poorten > 1023 (Client stuurt ack ‘ s toserver de gegevens van de haven)
  • Wanneer is getrokken, wordt de verbinding weergegeven als volgt:

    In stap 1, is de opdrachtgever de opdracht haven contacten van de server opdracht portand zendt het commando

    PORT 1027., De server stuurt vervolgens anACK terug naar de commandopoort van de client in Stap 2. In Stap 3 start de server een verbinding op zijn lokale datapoort met de datapoort die de klant eerder heeft opgegeven. Tenslotte stuurt de client een ACK terug zoals getoond in step4.

    het grootste probleem met actieve modus FTP ligt eigenlijk op de clientzijde. De FTP client maakt niet de daadwerkelijke verbinding met de data poort van de server–het vertelt de server gewoon op welke poort hij luistert en de server verbindt terug met de opgegeven poort op de client., Vanuit de clientzijde firewall lijkt dit een extern systeem te zijn dat een verbinding met een interne client initieert–iets dat meestal geblokkeerd wordt.

    actief FTP voorbeeld

    Hieronder is een echt voorbeeld van een actieve FTP-sessie. De enige dingen die zijn veranderd zijn de servernamen, IP-adressen en Gebruikersnamen. In dit voorbeeld wordt een FTP sessie gestart vanuit testbox1.slacksite.com (192.168.150.80), een linux box met de standaard FTP opdrachtregel client, naar testbox2.slacksite.com (192.168.150.90), een linux box met ProFTPd 1.2.2RC2., De vlag debugging (-d) wordt gebruikt met de FTP-client om te laten zien wat er achter de schermen gebeurt. Alles in het rood is de debug-uitvoer die de werkelijke FTP-commando ’s toont die naar de server worden verzonden en de reacties die van deze commando’ s worden gegenereerd. De normale serveruitvoer wordt in het zwart weergegeven en de gebruikersinvoer is vetgedrukt.

    er zijn een paar interessante dingen te overwegen over dit dialoogvenster. Merk op dat wanneer het PORT commando wordt uitgegeven, het een poort specificeert op het client (192.168.150.80) systeem, in plaats van de server., We zullen het tegenovergestelde gedrag zien wanneer we passieve FTP gebruiken. Nu we het over het onderwerp hebben, een korte opmerking over het formaat van het PORT Commando. Zoals u kunt zien in het voorbeeld hieronder is het geformatteerd als een reeks van zes nummers gescheiden door komma ‘ s. De eerste vier octetten zijn het IP-adres, terwijl de laatste twee octetten de poort vormen die gebruikt zal worden voor de dataverbinding. Om de werkelijke poort te vinden vermenigvuldigt u het vijfde octet met 256 en voegt u het zesde octet toe aan het totaal. Dus in het voorbeeld hieronder is het poortnummer ( (14*256) + 178), of 3762., Een snelle controle met netstat moet deze informatie bevestigen.

    passieve FTP

    om het probleem van de server die de verbinding met de client initieert op te lossen, werd een andere methode voor FTP-verbindingen ontwikkeld. Dit was bekend als passieve modus, of PASV, na het commando dat gebruikt werd door theclient om de server te vertellen dat het in passieve modus is.

    in passieve modus FTP start de client beide verbindingen naar de server,waarmee het probleem van firewalls wordt opgelost die de inkomende datapoort filteren verbinding met de client vanaf de server., Bij het openen van een FTP-verbinding opent de client lokaal twee willekeurige niet-bevoorrechte poorten (N > 1023 andN+1). De eerste poort neemt contact op met de server op poort 21, maar in plaats van dan een PORT commando uit te geven en de server toe te staan terug te verbinden met zijn data poort, zal de client het PASVcommando geven. Het resultaat hiervan is dat de server dan een randomunprivileged poort opent (P > 1023) en P terugstuurt naar de client als antwoord op het PASV Commando., De client start vervolgens de verbinding van portN + 1 naar poort P op de server om gegevens over te dragen.,aan de opdrachtgever’scontrol poort)

  • FTP server poorten > 1023 overal (Client start dataconnection naar willekeurige poort zijn opgegeven door de server)
  • FTP server poorten > 1023 externe poorten > 1023 (Server sendsACKs (en gegevens) van de klant data port)
  • Wanneer getrokken, een passieve FTP-modus verbinding ziet er als volgt uit:

    In stap 1, wordt de client contact maakt met de server op de commando poort en issuesthePASVcommando., De server antwoordt vervolgens in Stap 2 metPORT 2024, waarbij de client wordt verteld naar welke poort hij luistert voor de dataverbinding. In Stap 3 initieert de client vervolgens de dataverbinding van zijn data poort naar de opgegeven server data poort. Tenslotte stuurt de server een ACK terug in Stap 4 naar de data poort van de client.

    terwijl passieve modus FTP veel van de problemen oplost vanaf de client kant,opent het een hele reeks problemen aan de server kant. De biggestissue is de noodzaak om elke externe verbinding naar hoog genummerde poorten op de server toe te staan., Gelukkig kunnen veel FTP daemons, waaronder de populaire WU-FTP, de beheerder toestaan om een reeks poorten aan te geven die de FTP-server zal gebruiken. Zie Bijlage 1 voor meer informatie.

    het tweede probleem betreft het ondersteunen en oplossen van problemen met clients die de passieve modus wel of niet ondersteunen. Als voorbeeld, de opdrachtregel FTP utility geleverd met Solaris ondersteunt geen passivemode, waardoor een derde partij FTP client, zoals ncftp.
    Opmerking: Dit is niet langer het geval–gebruik de -p optie met de Solaris FTP client om passieve modus in te schakelen!,

    met de enorme populariteit van het World Wide Web, gebruiken veel mensen hun webbrowser liever als een FTP-client. De meeste browsers ondersteunen alleen passive mode bij het openen van ftp: / / URL ‘ s. Dit kan goed of slecht zijnafhankelijk van wat de servers en firewalls zijn geconfigureerd om te ondersteunen.

    passief FTP voorbeeld

    Hieronder is een echt voorbeeld van een passieve FTP-sessie. De enige dingen die zijn veranderd zijn de servernamen, IP-adressen en Gebruikersnamen. In dit voorbeeld wordt een FTP sessie gestart vanuit testbox1.slacksite.com (192.168.150.,80), een linux box met de standaard FTP command line client, naar testbox2.slacksite.com (192.168.150.90), een linux box met ProFTPd 1.2.2RC2. De vlag debugging (-d) wordt gebruikt met de FTP-client om te laten zien wat er achter de schermen gebeurt. Alles in het rood is de debug-uitvoer die de werkelijke FTP-commando ’s toont die naar de server worden verzonden en de reacties die van deze commando’ s worden gegenereerd. De normale serveruitvoer wordt in het zwart weergegeven en de gebruikersinvoer is vetgedrukt.,

    merk het verschil op in hetPORT commando in dit voorbeeld in tegenstelling tot het actieve FTP voorbeeld. Hier zien we een poort geopend worden op het server (192.168.150.90) systeem, in plaats van de client. Zie de discussie over het formaat van het PORT commando hierboven, in de actieve FTP voorbeeld sectie.,

    andere opmerkingen

    een lezer, Maarten Sjouw, wees erop dat actieve FTP niet zal werken wanneer deze wordt gebruikt in combinatie met een nat (Network Address Translation)-apparaat aan de client dat niet slim genoeg is om de IP-adresinformatie in FTP-pakketten te wijzigen.

    samenvatting

    de volgende grafiek moet beheerders helpen te onthouden hoe elke FTP-modus werkt:

     Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023

    een snelle samenvatting van de voors en tegens van actieve vs.passieve FTP is ook in orde:

    actieve FTP is gunstig voor de FTP-serverbeheerder, maar schadelijk voor de client-side admin., De FTP-server probeert verbindingen te maken met willekeurige hoge poorten op de client, die vrijwel zeker geblokkeerd zouden worden door een firewall aan de client kant. Passieve FTP is gunstig voor de client, maar nadelig voor de FTP server admin. De client zal beide verbindingen met de server maken, maar één ervan zal naar een willekeurige hoge poort gaan, die vrijwel zeker Geblokkeerd zou worden door een firewall aan de serverzijde.

    gelukkig is er een compromis., Aangezien beheerders die FTP-servers draaien hun servers toegankelijk moeten maken voor het grootste aantal clients, zullen ze vrijwel zeker passieve FTP moeten ondersteunen. De blootstelling van poorten op hoog niveau op de server kan worden geminimaliseerd door een beperkt poortbereik op te geven dat de FTP-server moet gebruiken. Dus, alles behalve dit bereik van poorten kan worden firewall op de server kant. Hoewel dit niet alle risico ‘ s voor de server te elimineren, het vermindert het enorm. Zie Bijlage 1 voor meer informatie.,

    een uitstekende referentie over hoe verschillende internetprotocollen werken en de kwesties die betrokken zijn bij het firewalling ervan is te vinden in het O ‘ Reilly andAssociates book, Building Internet Firewalls, 2nd Ed, door BrentChapman en Elizabeth Zwicky.
    Note 2012: Dit boek is erg oud en de informatie in het boek kan verouderd zijn!

    Geef een reactie

    Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *