Date: Sat, 7 Jul 2001 11:38:49 -0700 From: "Crist J. Clark" <cristjc@earthlink.net> To: Axel Scheepers <ascheepe@surf.iae.nl> Cc: freebsd-security@FreeBSD.ORG Subject: Re: Firewall and ftp service Message-ID: <20010707113849.C408@blossom.cjclark.org> In-Reply-To: <20010707153247.A78448@surf.iae.nl>; from ascheepe@surf.iae.nl on Sat, Jul 07, 2001 at 03:32:47PM %2B0200 References: <20010707153247.A78448@surf.iae.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jul 07, 2001 at 03:32:47PM +0200, Axel Scheepers wrote: I'll say it again, FTP is eeeevul. > Hi everybody, > I hope I'm not being really off topic with this one but > it's been troubling me for a while now. > I'm looking for a way to provide acces to an ftpserver, my current > network layout looks like this: > > Cable Modem ------> Gateway ---------> http/ftp server > | > | > +------------> private http/ftp/sql server > | > | > +------------> my workstation > > The gateway does natd and ipf since the other servers have private > adresses. natd(8) and ipf(8) or natd(8) and ipfw(8)? I'd recommend either using, natd(8) and ipfw(8) or ipnat(8) and ipf(8), and not mixing and matching. There are sometimes reasons to run ipf(8) and ipfw(8) at the same time, but when you need to proxy FTP, there is too much room for confusion and weird interactions. > The problem now is that whenever I connect to my > ftp servers from the outside, the server is unable to set up a > data connection, because it wants to connect on a port > 1024, which > is blocked by my firewall(and I want to leave it that way). > Natd does the following: > natd -redirect_port tcp 192.168.0.5:20 20 -redirect_port 192.168.0.5:21 21 > which redirects the traffic to my public ftp server. > > As I see it there can be 2 problems with this setup; > 1) The server wants to initiate the data connection at a port > 1024 and/or > 2) The server still somehow reports 192.168.0.5 as its address to the clients. > > I have tried to connect with the option passive is off, which I thought > should force the server to stay on port 21 for tha data connection, but > it didn't work. :( OK, one more time on how FTP generally works. Everyone knows the client connects to the server on port 21. That's easy. Now as for the data connection, there are two modes, PORT (active) and PASV (passive). In PORT, the client tells the server what port it will be listening on and the _server_ then (usually) connects to the _client_ with a source port of 20 and the arbitrary high port ("ephermeral") the client gave the server as the destination. In PASV, the server tells the client what port it will be listening on, usually an arbitrary high, ephermeral port, and the client then connects with a ephemeral port source to the ephemeral destination. And we should point out that in both modes the server and client are passing not only the port number back and forth, but actually the IP address to connect to as well. So, the moral of the story is that FTP is an absolute bitch to work with if you have a firewall or NAT'ing gateway between the client and server. You need an application layer proxy for the connection. Redirection alone will not cut it. > Can/will somebody help on getting this done the proper way ? > I just want to use ipfilter, if possible, and I don't like to install > a ftp proxy for this. Oops. You are really using ipf(8). IPFilter has an FTP proxy built-in. However, use ipnat(8) and not natd(8) with ipf(8). -- Crist J. Clark cjclark@alum.mit.edu To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010707113849.C408>