FTP ALG
Das Dateiübertragungsprotokoll ist eine weit verbreitete und häufig verwendete Methode zum Austausch von Dateien über IP-Netzwerke. Das FTP ALG überwacht port-, PASV- und 227-Befehle. Bei Bedarf führt es NAT auf der IP, dem Port oder in der Nachrichten- und Toröffnung auf dem Gerät aus.
FTP ALG – Übersicht
Das File Transfer Protocol (FTP) ist eine weit verbreitete und häufig verwendete Methode zum Austausch von Dateien über IP-Netzwerke. Neben der Hauptkontrollverbindung werden auch Datenverbindungen für jede Datenübertragung zwischen dem Client und dem Server hergestellt; und Host, Port und Richtung werden über den Steuerkanal ausgehandelt.
Für den Aktivmodus-FTP scannt der Stateful-Firewall-Service junos OS die Client-zu-Server-Anwendungsdaten auf den PORT-Befehl, der die IP-Adresse und Portnummer, mit der der Server verbunden ist, bereitstellt. Bei FTP im passiven Modus scannt der Stateful Firewall-Service von Junos OS die Client-zu-Server-Anwendungsdaten für den PASV-Befehl und scannt anschließend die Server-zu-Client-Antworten auf die 227-Antwort, die die IP-Adresse und Portnummer enthält, mit der der Client verbunden ist.
FTP stellt die Adressen und Portnummern in ASCII dar. Wenn also Adressen und Ports umgeschrieben werden, kann die TCP-Sequenznummer geändert werden, und danach muss der NAT-Dienst dieses Delta in SEQ- und ACK-Nummern beibehalten, indem er sequenzspezifische NAT auf allen nachfolgenden Paketen ausführt.
Das FTP ALG unterstützt Folgendes:
Automatische Zuweisung von Datenports und Firewall-Berechtigungen für dynamische Datenverbindung
Überwacht die Steuerungsverbindung sowohl im aktiven als auch im passiven Modus
Setzt die Steuerpakete mit den entsprechenden NAT-Adressen und Portinformationen um
Network Address Translation, Protocol Translation (NAT-PT)
TLS (Transport Layer Security) als Sicherheitsmechanismus
IPv6 FTP ALG für Routing
Die PORT/PASV-Anfragen und die entsprechenden 200/227-Antworten in FTP werden verwendet, um den TCP-Port anzukündigen, den der Host für die FTP-Datenverbindung abhört.
Für diese Anfragen und Antworten werden EPRT/EPSV/229-Befehle verwendet. FTP ALG unterstützt bereits EPRT/EPSV/229, jedoch nur für IPv4-Adressen.
In Junos OS Version 10.4 wurden EPRT/EPSV/229-Befehle aktualisiert, um IPv4- und IPv6-Adressen zu unterstützen.
FTP ALG verwendet vorkonfiguriertes Objcache zum Speichern seiner Sitzungscookies. Wenn sowohl IPv4- als auch IPv6-Adressen auf FTP ALG unterstützt werden, wird die Sitzungs-Cookie-Struktur um 256 Bits (32 Bytes) erweitert, um die IPv6-Adresse zu speichern.
FTP ALG-Unterstützung für IPv6
Das FTP ALG überwacht Befehle und Reaktionen auf dem FTP-Steuerungskanal auf syntaktische Korrektheit und öffnet entsprechende Pinholes, um die Einrichtung von Datenkanalverbindungen zu ermöglichen. In Junos OS Version 10.4 unterstützte das FTP ALG nur IPv4-Routing, IPv6-Routing und nur DEN NAT-Modus. In Junos OS Version 11.2 und höher unterstützt das FTP ALG auch die Modi IPv6 NAT und NAT-PT.
Verständnis von FTP-Befehlen
Das FTP ALG überwacht Befehle und Reaktionen auf dem FTP-Steuerungskanal auf syntaktische Korrektheit und öffnet entsprechende Pinholes, um die Einrichtung von Datenkanalverbindungen zu ermöglichen. In Junos OS Version 10.4 unterstützte das FTP ALG das IPv4-Routing und den NAT-Modus sowie nur den IPv6-Routingmodus. In Junos OS Version 11.2 und höher unterstützt das FTP ALG auch die Modi IPv6 NAT und NAT-PT.
PORT-Befehl
Der PORT-Befehl wird im aktiven FTP-Modus verwendet. Der PORT-Befehl gibt die Adresse und die Portnummer an, mit der ein Server verbunden werden soll. Wenn Sie diesen Befehl verwenden, ist das Argument eine Verkettung einer 32-Bit-Internethostadresse und einer 16-Bit-TCP-Portadresse. Die Adressinformationen werden in 8-Bit-Felder unterteilt, und der Wert jedes Feldes wird als Dezimalzahl (in Zeichenfolgendarstellung) übertragen. Die Felder sind durch Kommas getrennt.
Im Folgenden ist ein Beispiel-PORT-Befehl aufgeführt, wobei h1 die höchste 8-Bit-Adresse des Internethosts ist:
PORT h1,h2,h3,h4,p1,p2
PASV-Befehl
Der PASV-Befehl fordert einen Server auf, einen Datenport abzuhören, der nicht der Standarddatenport des Servers ist, und auf eine Verbindung zu warten, anstatt eine andere Verbindung zu initiieren. Die Antwort auf den PASV-Befehl umfasst den Host und die Portadresse, die der Server abhört.
Erweiterte FTP-Befehle
Erweiterte FTP-Befehle bieten eine Methode, mit der FTP die Datenverbindungsendpunktinformationen für andere Netzwerkprotokolle als IPv4 kommunizieren kann. Erweiterte FTP-Befehle sind in RFC 2428 angegeben. In RFC 2428 ersetzen die erweiterten FTP-Befehle EPRT und EPSV jeweils den FTP-Befehlsport und PASV.
EPRT-Befehl
Der EPRT-Befehl ermöglicht die Spezifikation einer erweiterten Adresse für die Datenverbindung. Die erweiterte Adresse muss aus dem Netzwerkprotokoll sowie den Netzwerk- und Übertragungsadressen bestehen.
Das Format von EPRT lautet:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
Parameter |
Beschreibung |
---|---|
net-prt |
Eine von IANA definierte Adressfamilienummer. |
Net-Addr |
Eine protokollspezifische Zeichenfolge der Netzwerkadresse. |
TCP-Port |
Eine TCP-Portnummer, auf der der Host die Datenverbindung abhört. |
Trennzeichen |
Das Trennzeichen muss eines der ASCII-Zeichen im Bereich 33 bis 126 einschließlich sein. Das Zeichen "|" (ASCII 124) wird empfohlen. |
Der folgende Befehl zeigt, wie der Server angeben soll, der eine IPv4-Adresse zum Öffnen einer Datenverbindung zum Host 132.235.1.2 auf TCP-Port 6275 verwendet:
EPRT |1|132.235.1.2|6275|
Der folgende Befehl zeigt, wie der Server angeben soll, der ein IPv6-Netzwerkprotokoll und eine Netzwerkadresse zum Öffnen einer TCP-Datenverbindung am Port 5282 verwendet:
EPRT |2|1080::8:800:200C:417A|5282|
In diesem Modus konzentriert sich FTP ALG nur auf den EPRT-Befehl; es extrahiert die IPv6-Adresse und den Port aus dem EPRT-Befehl und öffnet das Pinhole.
EPSV-Modus
Der EPSV-Befehl fordert, dass ein Server einen Datenport abhört und auf eine Verbindung wartet. Die Antwort auf diesen Befehl enthält nur die TCP-Portnummer der Abhörenverbindung.
Eine Beispielantwortzeichenfolge lautet wie folgt:
Entering Extended Passive Mode (|||6446|)
Der Antwortcode für die Eingabe des passiven Modus mit einer erweiterten Adresse muss 229 sein. Sie sollten den TCP-Port in 229 Payloads extrahieren und ihn zum Öffnen des Pinholes verwenden.
Beispiel: Konfigurieren des FTP-ALG
In diesem Beispiel wird die Konfiguration von NAT-PT für FTP ALG dargestellt.
Anforderungen
Bevor Sie beginnen:
Konfigurieren Sie Proxy-ARP für alle IP-Adressen im Quell-NAT-Pool.
Verstehen Sie die Konzepte hinter ALG für FTP. Siehe FTP ALG Übersicht.
Übersicht
In diesem Beispiel ist die ALG für FTP so konfiguriert, dass der FTP-Datenverkehr zwischen den Clients und dem Server auf der gegenüberliegenden Seite eines Geräts von Juniper Networks ausgetauscht wird.
In diesem Beispiel wird die Konfiguration von NAT-PT für FTP ALG dargestellt.
Konfiguration
- Konfigurieren eines NAT-Quellpools, eines statischen NAT-Pools und eines Regelsatzes
- Konfigurieren der FTP ALG-Sicherheitserweiterung
Konfigurieren eines NAT-Quellpools, eines statischen NAT-Pools und eines Regelsatzes
CLI-Schnellkonfiguration
Um diesen Abschnitt des Beispiels schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für die Netzwerkkonfiguration erforderlich sind, kopieren Und fügen Sie die Befehle auf Hierarchieebene in die [edit]
CLI ein und geben Sie dann aus dem Konfigurationsmodus ein commit
.
set security nat static rule-set rs1 from zone untrust set security nat source rule-set rs-source to zone trust set security nat source rule-set rs-source rule src-nat match source-address 3333::130/128 set security nat source rule-set rs-source rule src-nat match destination-address 40.0.0.211/32 set security nat source rule-set rs-source rule src-nat then source-nat interface set security nat static rule-set rs2 from zone untrust set security nat static rule-set rs2 rule r2 match destination-address 4444::141/128 set security nat static rule-set rs2 rule r2 then static-nat prefix 40.0.0.211/32
Schritt-für-Schritt-Verfahren
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Anweisungen dazu finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im CLI-Benutzerhandbuch.
So konfigurieren Sie einen Quell-NAT-Pool:
Erstellen Sie einen Quell-NAT-, statischen NAT- und Schnittstellen-NAT-Regelsatz.
[edit ] user@host# set security nat source rule-set rs-source from zone untrust user@host# set security nat source rule-set rs-source to zone trust user@host# set security nat source rule-set rs-source rule src-nat match source-address 3333::130/128 user@host# set security nat source rule-set rs-source rule src-nat match destination-address 40.0.0.211/32 user@host# set security nat source rule-set rs-source rule src-nat then source-nat interface user@host# set security nat static rule-set rs2 from zone untrust user@host# set security nat static rule-set rs2 rule r2 match destination-address 4444::141/128 user@host# set security nat static rule-set rs2 rule r2 then static-nat prefix 40.0.0.211/32
Verknüpfen Sie die NAT-PT-Anwendung mithilfe einer Richtlinie.
[edit] user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match source-address any user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match destination-address any user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match application junos-ftp user@host# set security policies from-zone trust to-zone untrust policy ftp-basic then permit
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie den show security nat
Befehl eingeben. Wenn die Ausgabe die beabsichtigte Konfiguration nicht anzeigt, wiederholen Sie die Konfigurationsanweisungen in diesem Beispiel, um sie zu korrigieren.
user@host# show security nat static { rule-set rs2 { from zone untrust; rule r2 { match { destination-address 4444::141/128; } then { static-nat { prefix { 40.0.0.211/32 } } } } } }
[edit] user@host# show security policies from-zone untrust to-zone trust { policy ftp-basic { match { source-address any; destination-address any; application [ junos-ping junos-mgcp junos-ftp junos-rsh junos-h323 ]; } then { permit; } } } default-policy { permit-all; }
Wenn Sie die Konfiguration des Geräts durchgeführt haben, geben Sie aus dem Konfigurationsmodus ein commit
.
Überprüfung
Um zu bestätigen, dass die Konfiguration ordnungsgemäß funktioniert, führen Sie folgende Aufgaben aus:
Überprüfen des NAT-Quellpools, NAT Statischer Pool-Regelsatz
Zweck
Vergewissern Sie sich, dass der NAT-Quellpool und der Regelsatz zur Unterstützung des FTP-ALG ordnungsgemäß funktionieren.
Aktion
Geben Sie im Betriebsmodus den show configuration security nat
Befehl ein.
Überprüfen von FTP-ALGs
Zweck
Überprüfen Sie, ob FTP ALG aktiviert ist.
Aktion
Geben Sie im Betriebsmodus den show security alg status
Befehl ein.
user@host> show security alg status FTP : Enabled
Bedeutung
Die Ausgabe zeigt den FTP ALG-Status wie folgt an:
Aktiviert– Zeigt an, dass FTP ALG aktiviert ist.
Deaktiviert – Zeigt an, dass FTP ALG deaktiviert ist.
Die FTP-ALG ist standardmäßig aktiviert.