Free Proxy Firewall Software

There exist a number of free proxy kits. I like mine, but you may find that another is more complete or better suited to your needs. Here's a quick, non-scientific rundown of some of the others that I know about.

I should mention at this point that I only have real experience of my kit and the fwtk. Comments on the others are from cursory investigations of their code and documentation.

They are:

The TIS FWTK

The old classic. It's fairly complete (though the set of protocols it supports is rather outdated). It has a flexible, if fairly ugly, authentication mechanism. It used to live at http://www.tis.com/fwtk/, but NAI now seem to be denying its existence.

There is a good amount of documentation, patches and extra features available on fwtk.org, but there doesn't seem to be a great deal of work being done currently. It's not free software and the code, while "probably safe" is not terribly pleasant to hack on.

Solsoft NSM

Another product with a long history. The 3.3 release doesn't support a great many protocols, but the code in CVS has a good range of proxies including HTTP, POP-3, telnet, X11, NNTP, Oracle SQL*Net, and NetBIOS. It's released under the GNU GPL. The code quality varies, but generally seems better than that of FWTK. (It helps if you read French, as some of the comments are in that language.) It supports a good range of authentication methods, and has GUI and web administration tools for some functions.

Juniper Firewall Toolkit

Recently released under the Juniper Public Licence (a slightly modified BSD licence). It doesn't support a great number of protocols, but does include a good store-and-forward SMTP gateway (the Obtuse SMTPD), and ping and traceroute proxies.

It seems designed for transparent proxying, and doesn't appear to offer any authentication options. Interestingly, it includes its own simple packet filtering facility called "ipfirewall". I haven't looked at the code, but the Obtuse SMTPD had a reasonable reputation, in the days when MTAs sucked.

T.Rex Proxy Firewall

It's under the "Livermode Public Licence", which looks to have the same sorts of effects as the GNU GPL, except that it has a clause stating that even private modifications must be made available to the "initial developer" upon request. (That makes it non-free, by my reading.) Their site makes an interesting set of claims, including that they have an SQL proxy, and an IPSec implementation (the latter may be for their appliance product). It does support authentication, including with a range of hand-held authenticators.

The unpacked source tree is enormous -- over 70Mb. Upon closer inspection, it includes the (apparently) complete sources of Apache, Analog, logrotate (and, by extension, popt), Perl!, fastresolve, GNU adns, Sleepycat DB, zlib, a C++ STL implementation, Dante, Eric Young's libdes, an SSL-enabled telnet client and server as hacked by Tim Hudson (the other SSLeay guy) and some externally sourced monitoring scripts. Some of the other stuff in there may be derived from other packages too, but that's not entirely clear. I didn't investigate the extent to which these packages had been customised to form an integrated whole.

With all of this set aside, we are left with an FTP proxy, a telnet proxy, a RealAudio proxy, an RPC proxy, a reverse HTTP proxy, store-and-forward-via-sendmail mail gateway, some monitoring and failover tools and some administration utilities. The blurb claims proxies for Lotus Notes, NNTP, gopher, LDAP and tftp. Perhaps I didn't look hard enough, or maybe they use generic TCP or UDP proxies.

I didn't look much at the code, but I did get the impression that it was a great deal larger than it needed to be. For example, the protocol-specific bits of fk's ftp gateway are a little over 1200 lines of code (and I intend to shrink that). T.Rex's FTP gateway is nearly 6000 lines. Even taking into account my fairly dense coding style, and T.Rex's 130-line boilerplate headers on every file, that's still a difference which is hard to explain away.

"fk"

My firewall kit. It has, in my biased opinion, the nicest infrastructure of the proxy kits out there. It also does much more protocol inspection than I have seen any other kit attempt. However, the range of supported protocols is small, and authentication is not available. Comes with some useful tools. Unsurprisingly, it suits my needs rather better than the others. The closest other package is the Juniper Toolkit.

DeleGate

A quirky, but apparently fairly successful package. It supports a pretty broad range of the usual protocols: FTP, HTTP, NNTP, SMTP, etc. Peculiar to DeleGate is the ability to gateway different protocols so, for example, a POP-3 server can be made to present underlying mailboxes via NNTP, and vice-versa.

DeleGate also includes circuit level proxies supporting the Socks V4 and V5 protocols and VSAP, along with TCP and UDP "plugs". It can apparently authenticate users only via ident, and can use SSL or SSH for transport layer security. Multiple DeleGates can be chained in various ways, again with SSL or SSH between them.

It actually does a fair bit of protocol inspection, though this is more aimed at supporting features like cross-protocol gatewaying, "mount"ing servers on top of others, etc.

The code is a bit odd; internally it doesn't seem very modular, and everything gets compiled into one (large!) "delegated" binary. This allows for some neat tricks, but isn't very Unixy, and makes it hard to be confident that you aren't exposing a lot of code which you don't need.

Coming soon...

Equally ill-informed opinions on: