Subject: Re: ftpd per host connection limit
To: dieter <dieter.R@pandora.be>
From: Luke Mewburn <lukem@NetBSD.org>
List: netbsd-users
Date: 12/20/2003 11:20:32
--RE3pQJLXZi4fr8Xo
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Dec 18, 2003 at 09:06:31PM +0000, dieter wrote:
  | I have written some patches to ftpd for making it possible to limit
  | the number of connections per host. This is because some people
  | make 5, 10 or even 30(!) connections to speed up their download,
  | not caring about other ftp users. Before I send-pr this or patch
  | my server, I'd like to hear all possible comments one could have.
  |=20
  | The patches are at
  | 	http://gaosu.rave.org/~dieter/NetBSD/ftpd/
  | or in one tar.gz:
  | 	http://gaosu.rave.org/~dieter/NetBSD/ftpd-lph.tar.gz
  |=20
  | This code replaces the /var/run/ftpd.pids<class> files with a db
  | file which stores pid-remotehost pairs. I then check if the number
  | of connections from a host is higher than a limitperhost directive
  | and if so deny the login.

It's a good start, but I think the functionality needs to be more flexible.
At a minimum, we should be able to specify an optional "prefixlen",
which for IPv4 defaults to 32 (single host):
	limitpernet	<class>	<number> [<prefix>]
For example,
	limitpernet guest 41 24
would mean that a maximum of 41 simultaneous connections could occur
for any given /24 (i.e, 256 IP addresses).  Your code would need to be
reworked to store a 4 byte IPv4 address and 1 byte prefix or 4 byte
mask, instead of the existing hostname.  The code should support IPv6
too, so we'd need 16 bytes for address and 1 byte for the prefix length.

Have you researched how other ftp servers allow this sort of
functionality to be configured?


Luke.

--RE3pQJLXZi4fr8Xo
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (NetBSD)

iD8DBQE/45XQpBhtmn8zJHIRAvusAKCTWYgSiR3fNnBTozLGAzhY/EXjvwCbBdIr
l/2LR7dopCuVLSVLINtyIVk=
=GAnd
-----END PGP SIGNATURE-----

--RE3pQJLXZi4fr8Xo--