ZyXEL routers, Port redirection en FTP.
referentie Z111B
Bij Port Redirection kan een router een inkomend pakketje verwijzen naar een bepaald IP adres terwijl tegelijkertijd ook de poort wordt veranderd. De meeste ZyXEL routers ondersteunen geen Port Redirection. Verzoeken gericht aan het publieke IP-adres en een port kunnen alleen doorgestuurd worden naar een IP-adres, zonder dat de poort kan worden gewijzigd. Deze routers ondersteunen ook geen HTTP URL redirection. Verzoeken gericht aan verschillende URL's op het publieke IP-adres worden doorgestuurd naar hetzelfde IP-adres, zonder dat de poort kan worden gewijzigd.
Uitzonderingen zijn de ZyWALL 5, 35 en 70, waarbij Port Redirection kan worden ingesteld met behulp van de webinterface (onder NAT). Voor een actueel overzicht van de mogelijkheden van de verschillende ZyXEL routers zie het Produktoverzicht
van ZyXEL routers.
Voor het instellen van een Port Redirectionregel zie:Port Redirection op een ZyWALL 35
Nu kunnen veel soorten servers (en cliënts) worden aangepast zodat port redirection van de router meestal niet noodzakelijk is. Een aantal veelvoorkomende situaties worden in dit document behandeld:
Bij FTP naar of van een computer welke achter een ZyXEL router zit doen zich de volgende problemen voor:
- ZyXEL routers herkennen de initialisatie van een FTP sessie op poort 21 als wat het is: een FTP sessie. Ze herkennen dit niet als het verzoek binnen komt op een andere poort dan 21. Dit stelt beperkingen aan een ZyXEL of ZyWALL router welke voor een FTP server geplaatst wordt. Hier werkt alleen "active" FTP.
- FTP gebruikt niet alleen vaststaande poorten 20 en 21, maar voor de uiteindelijke overdracht van gegevens ook poorten die door de FTP cliënt of server vrij kunnen worden gekozen in het bereik van 1024 tot 65355. De gegevens welke poorten er precies worden gebruikt wordt als onderdeel van een pakket informatie doorgelaten door de firewall, zonder dat de firewall hieruit kan lezen via welke poort de informatie gaat lopen.
De firewall moet voor de FTP sessie op de gebruikte poorten worden aangepast. Dit betekent dat de gebruiker van te voren moet weten welke poort er gebruikt gaat worden. Het enige alternatief is het opengooien van de firewall door álle poorten in het bereik open te zetten. Dit is niet aan te bevelen.
Ter illustratie: wat gebeurt er tijdens een FTP sessie?
Er zijn twee vormen van FTP: Active en Passive. Het verschil tussen active en passive FTP is dat bij een active ftp sessie de server de overdracht initieert, bij een passive FPT sessie laat hij dit over aan de cliënt. De sessies werken als volgt:
Active FTP

De cliënt stuurt een verzoek tot het openen van een FTP-sessie naar de server, gericht aan poort 21. Afzender is een willekeurige poort tussen de 1024 en de 65535, poort X. De firewall van de server laat poort 21 door, zoals aangegeven. De ZyXEL herkent dat dit een FTP-sessie is, en weet daardoor zeker dat hij straks ook via poort 20 verkeer door moet laten. De cliënt geeft de server aan op welke poort hij de gegevens wil hebben: poort Y Ook poort Y ligt tussen de 1024 en 65355.

De server geeft nu naar poort X een signaal dat de data eraan komt.

De server zendt nu de gevraagde gegevens vanaf de eigen poort 20 naar poort Y. Deze poort moet openstaan in de firewall van de cliënt.

Als laatste zendt de cliënt vanaf poort Y een bevestiging van ontvangst terug naar de server.
Deze methode kan tot problemen leiden aan de kant van de cliënt, als van te voren poort
en poort
in de firewall niet open zijn gezet. Je kunt natuurlijk de firewall open zetten voor alle mogelijke waardes van Y, maar waarvoor heb je dan nog een firewall? dan kun je net zo goed de firewall weggooien.
De cliënt dient dus van te voren de waarde van X en Y te weten en goed in te stellen in de firewall.
Het alternatief: passieve FTP
In dit proces worden drie niet-standaard poorten gebruikt welke in het bereik van 1024 tot 65355 liggen: X, Y en Z.
Daarbij is Y = X+1

De cliënt opent de FTP sessie, maar geeft aan dat dit een PASSIEVE sessie is.
Dit is weer gericht op poort 21.
Tegelijkertijd geeft de cliënt aan dat hij het signaal om met de overdracht te beginnen zal richten tot poort Y.

De server geeft aan welke poort hij gaat gebruiken om de gegevens vanaf te zenden. Dit is poort Z
.

De cliënt geeft nu aan wanneer er kan worden gezonden. Dit bericht wordt verzonden vanaf poort Y naar poort Z.
Dit is de reden waarom passive FTP met een ZyXEL router niet zal werken: de router herkent dit tweede contact van de kant van de cliënt niet als FTP-contact, omdat het niet gericht is naar poort 21 !

Als laatste zendt de server vanaf poort
de gevraagde gegevens naar poort
.
Ook hier bestaat het bijkomende probleem dat de waarden van X, Y en Z van te voren op de juiste plaats in de firewalls open moeten worden gezet. Anders blokkeert de firewall het verkeer. .
Samenvattend: bij een FTP sessie naar een server achter een ZyXEL firewall:
- Gebruik Active FTP
- gebruik alleen poort 21 om FTP verzoeken naar toe te richten.
Deze kan worden ingesteld om (tegelijkertijd) ook naar andere poorten te luisteren. De procedure wordt beschreven achter de link:
Microsoft Knowledge Base Article - 149605 How to Change the TCP Port for IIS Services
Zoek naar "Advanced for multiple Port settings".
Deze kan ingesteld worden om (tegelijkertijd) ook naar andere poorten te luisteren. Dit wordt beschreven onder de link:
http://httpd.apache.org/docs-2.1/en/vhosts/examples.html
en wel onder de volgende kopjes:
- Running different sites on different ports.
- Mixed port-based and ip-based virtual hosts
Het bovenstaande vereist uiteraard nog wel dat "de" server die op poort 80 luistert verkeer voor de domeinen op de andere server(s) doorstuurt naar de(zelfde) URL met juiste poort (er achter).
De reden waarom je de andere poort er bij wil hebben is dat daardoor de server lokaal ook op de originele poort bereikbaar blijft.
Als alternatief kan "de" server als proxy worden ingesteld en de pagina's van de juiste server afhalen en doorgeven. Maar dat is waarschijnlijk een grotere inspanning.
Het aanpassen van de RDP-poort staat beschreven op de link:
Microsoft Knowledge Base Article - 187623 How to Change Terminal Server's Listening Port.
Helaas kan in dit geval de poort alleen gewijzigd worden en niet een extra poort worden toegevoegd.
Voorbeeld van het instellen op een ZyWALL 35
De onderstaande afbeelding is afkomstig van een ZyWALL 35, een van de routers waarbij het wél mogelijk is Port Redirection in te stellen.
Dit kan alleen worden ingevoerd met behulp van de Web Configurator
De juiste instellignen kunnen worden ingevoerd achter de optie NAT:

Zie de bijpassende documentatie en Help optie voor een overzicht van wat waar dien te worden ingevuld. Bedenk wel het volgende:
De firewall doet wat rules betreft niets met het originele portnummer (WAN-zijde) maar gebruikt alleen het ge-re-directe portnummer (LAN-zijde).
Relevante links:
FTP testen van buiten af.
Lijst met veel gebruikte poorten
De veiligheid van routers
Web Configurator