Originally posted by: n0cmonkey
I'm going to answer these points out of order. But first, I want you to know that I do believe this is all subjective, so there is no correct answer really. My criteria isn't flawed, it's just my opinion.
When I said it was flawed, I was trying to point out that certain things can be quantified, and certain things cannot. Whether an english-language ruleset is capable of improving security is subjective. A featureset is not.
As many systems as PF: Pf runs on OpenBSD, FreeBSD, and NetBSD. That's 3 operating systems. Netfilter runs on Linux. (IPF has FreeBSD, NetBSD, Solaris, and HP-UX I believe

) So we have roughly 50 hardware archs, and 3 OSes for Pf.
50 archs? Are you kidding me? Linux will run on way more architectures than all of the BSDs combined. Its goal is portability remember. NetBSD has the most supported processors architectures it would seem, but it still doesn't stack up to linux considering linux will run on any platform with a
GCC port. In total it is easily more architectures than the BSDs. As the BSDs are merely variants of one another that have split off one another at one point or another, you can hardly call them completely separate OSes, anymore than I could call Linux 2.4 a separate OS from 2.6. As I would like to avoid a semantical argument regarding at what point an OS begins and ends, I'll concede they are separate enough to not call one operating system. Even still, 3 "operating systems" that are close variants of one another and some indeterminate number of architectures -- you listed 50 architectures, but NetBSD which is by far the most portable BSD only lists some 15 processor types it will run on. Each architecture is a variant of the processor type.
The language matters to me. If it's difficult for me to understand, it will be harder for me to write a good ruleset for it. If I write a bad ruleset, the security benefits are nil.
Well, to me personally as a developer, I have no issues understanding the method used to create it. Granted, you ARE speaking to someone who was in the midst of writing the basis for a perl script that would convert PF-style syntax into netfilter rules when his drive crashed.
IPTables/netfilter/whatever it will be called tomorrow (

) has a nasty configuration language.
No more than say, cron IMO. By the way, it has ALWAYS been called Netfilter, people mistake it for "iptables" which is merely the command used to add/delete/update firewall rules. The entire package of packet filter + cli management tools is called Netfilter.
I don't like it. A lot of that is probably due to the fact I was used to IPF and Pf before I had to touch it. So yes, there is bias.
I can respect that.
I think I've read that IPTables isn't a truely L3 firewall. It can look at the silly things like MAC addresses and whatnot.
Depends. If you load any extra modules, no, it is a L3/4 firewall.
I don't think that belongs in a firewall.
I've had people on several forums (
and usenet) basically call me an idiot for saying that a proxy is not a firewall, and several 'experts' came and 'corrected' my view of it. The question really is do you consider *just* a packet filter a firewall. I believe there is some information that should be used that exists solely at the network and protocol layers (L3/4), but in essence I do tend to agree with you, though I would define the separation of layers differently.
Also, IIRC, it can look at some payload?
Again, as Nothinman said, IF you load that module.
What's that doing in a simple firewall?
Busily dropping Code Red hits and the like so I don't have to put up with grepping the logs myself and blackholing those IPs.
I've also read that IPTables doesn't do true state checking. Now that might have changed since the last time I read that. Does it check the sync IDs now?
Yes, it does true state checking as far as I'm aware. It doesn't HAVE to though, if you don't want it to.
Pf is truely a thing of beauty.
No disagreement on it from me there, but I would disagree that it is the most feature-rich and lean firewall out there. Iptables can be configured to be so FAR simpler than PF IME.
EDIT:
I'd be very interested to see what others have to say on this as well (this means at least spidey, and JackMDS!

), so feel free to chime in.